Okay, so over the last many months with the Micro I've found some ways to improve a number of calibrations that make the car better / easier / nicer to drive every day.
Improving VE table resolution
The numbers in the VE table are sort of arbitrary. If everything was setup correctly, it could
be that a value of 100 actually represented 100% volumetric efficiency. In the MS code, the fuel delivered at the injectors is equal to "Required Fuel" * VE Table Value * Enrichment corrections. Required fuel is an injector constant that is supposed to be equal to the pulsewidth at 100% VE, however it can be used as a global factor to scale the VE table up and down. After my first round of tuning, I found that the max value in my VE table was ~88. That's a pretty small value for 1.4 bar of boost at ~7K RPM, so I wanted to re-scale the table for a couple of reasons:
1.) The VE table has a minimum increment/decrement value of 1. At idle, a change in 1 VE represented too big of a change and I found that area of the map to be a bit coarse.
2.) The VE table has a maximum allowable value of 255, so with a max value in my calibration at ~90, I wasn't even using half the possible range of the parameter.
Re-scaling is easy by reducing the Req Fuel value. By reducing the "base" pulse-width value, we need to increase the VE value to deliver an equal amount of fuel. So, I chose a Req fuel value of 3 since this would put the maximum value in my table at ~200. The New VE Table value is = Old VE Table value x 200 / Largest Old VE Table Value. My table went from:
So now, for example, at 1000RPM / 35 kPa (idle region) I went from a value of 53 to a value of 119. So now, if I increment this value by 1, its a ~1% change rather than a ~2% change so finer changes can be made to the VE table. Yay!
Increasing VE Table Resolution with Table Switching
The maximum fuel table size is 16x16, however by utilizing the table switching feature in MS, we can essentially double the size to 16x32. It can all be done in software by using MAP pressure as the trigger. This is how I have it setup:
So, essentially at 100kPa MAP, switch to the second VE table. So table 1 will be everything below 100kPa, and table 2 will be everything above 100kPa. I set it up so that the tables overlap, so the top row of the first table are identical as the bottom row of the second table. I did a bunch of tuning and logging and table smoothing and I also used the opportunity to re-scale the axis and came up with the following:
So now, I have more cells available at each operating point. I found overall, This improved all of the part load areas - I have more stable AFR's at almost all out-of-boost driving conditions.
Improved Closed Loop Fueling PID Settings
Updated the EGO control settings. I think it's improved. Not much else to comment here...I'm closing on idle region now also, so this helps with being too rich at idle.
Reducing Number of Squirts
I went back from 4 "squirts" per cycle to 2. This improved idle and low load cruising regions. Essentially, with 4 squirts, the required fuel mass at any operating point is divided into 4 injections. At low load, this value might get small enough that it starts bumping up against the smallest possible opening time of the injector. So, it may be requesting an open time that the injector can't perform which means it may miss an injection and cause a lean misfire condition. Dividing the fuel mass into 2 squirts means the min injector PW is twice as large as with 4 squirts, so there's more margin before getting close to the minimum open time. Changing this value will automatically adjust the Req Fuel value.
Idle Advance and Idle Target
I struggled for a while to get the idle great. What would happen is I'd get it tuned in perfectly at one condition - fully warmed up normal conditions. However, i'd then get wonky idle after a cold start, or after a hot-restart, or during the warm-up period. Sooo I sought a way to improve it. Two major changes...
1.) Utilizing Idle Advance
2.) Increasing closed-loop idle initial values
Idle advance uses a separate ignition value under closed loop idle. As soon as the ECU recognizes and switches into closed loop idle, it changes to this idle advance value. This allowed me to use a more retarded ignition value only under idle which helped stabilize a hunting idle.
I also increased the initial IAC PWM values so that the value is a bit higher than actual stabilized value. This helped prevent the engine from stalling when clutching in and or coming to a stop. This makes the RPM "hang" a little bit when entering idle, but it almost never stalls.
I figured out and setup air-conditioning control and idle up. Details can be found in my wagon journal HERE
That's all for now! Hope this helps some people.