So i'd expect that map to dictate the mixture the ecu wants to see for a given load/rpm. So if you tune it to get a certain lambda at a certain load/rpm, i'd expect it to try to reach those values. Fuel target map.
There is no way for the ECU to verify that the target has been reached; the O2 sensor is narrowband.
ipdown said:
In other words if left as is, (unsigned) 128 would mean that after doing the calculation for the given load and rpm, the calculated value is used as is without correcting it (zero correction). Changing a cell by 1 changes fueling by about 0.2%
If I am understanding this correctly, it is a fuel
trim map. I am hypothesizing that the formula looks roughly like this:
(AMM measurement / 14.7) * (Fuel trim table/128) = desired amount of fuel
I *think* the lambda is used to 'learn' about where that centerpoint (128) on the trim table is.
This is how I would have done it (i.e. PURE SPECULATION):
Let's say the car is idling at 750 RPM with an AMM load of ~30. The lambda is reporting rich, so the ECU continually trims fuel until it hits lean, then bounces back. Each crossover (lean/rich and back) adds 'weight' to the trim measurement. So it learns lambda correction for the point below; we'll say it's -2.
HTML:
x=RPM
y=AMM
750 1000 2250
30 <-2> _ _
40 _ _ _
50 _ _ _
60 _ _ _
70 _ _ _
Later we are cruising down the highway at about 2250 RPM, the AMM is reading 60. Our huge injectors are spraying tons of fuel and we are running super rich. The ECU continually lowers the fuel trim until we hit stoich again. After a few crossovers, the ECU learns this point:
HTML:
x=RPM
y=AMM
750 1000 2250
30 <-2> _ _
40 _ _ _
50 _ _ _
60 _ _ <-8>
70 _ _ _
Now our ECU has two data points to work with. It can then use the blazing fast 8051 CPU to interpolate values in other areas:
HTML:
x=RPM
y=AMM
750 1000 2250
30 <-2> -2 -3
40 -3 -3 -5
50 -4 -5 -7
60 -5 -6 <-8>
70 -6 -8 -10
(these are totally bogus figures, didn't feel like whipping out excel)
Now, our ECU has an idea of how the injectors scale with airflow and RPM. It can then use the calculated scaling factors to
estimate other fueling ratios.
Assuming that AMM output is linear, you would need twice the amount of fuel to establish the same AFR at twice the AMM load. But because of all of the variables involved, the ideal injector pulse width is not linear. Injector opening time, battery voltage, manifold pressure, air temperature, etc. all affect the amount of fuel effectively delivered. So we calculate a scalar to compensate.
Once we know our scalar, we can then calculate injector pulsewidth for AFRs that the narrowband can't verify.
Analogy: You are playing Goldeneye 64 with your buddy. He's got a Klobb (terrible gun) so he runs and hides behind a wall. But his toes are poking just around the edge. You've got a Cougar Magnum (shoots through walls!). You know where his feet are (your frame of reference, stoich/14.7), you know how tall his character is (fuel trim table value) so you can aim for the headshot! (desired AFR). The gun isn't 100% accruate, so you approximate the spread based on your previous shots when you could see the target (ECU-calculated injector trim/scalar). Put it all together, position the crosshair, and Boom! Headshot!
TL;DR: LH2.4 "shoots in the dark" when attempting to achieve AFRs other than 14.7. It uses hard coded values (fuel trim table, injector constants), and derived values (observations from narrowband o2) to estimate injector flow and combustion efficiency. These values are all used to establish fueling values for AFRs that are beyond the O2 sensor's sensitivity range.
Whoa. Didn't mean for that to get so long. Hopefully I'm correct in theory at least...