Lambda Trim - Flat Lines ?
Discussion
OK folks be of history
After much experimentation and data collection and analysis (I was a Six Sigma Black Belt and I love DATA) trying to find why I get poor fuel consumption I have gone through everything normal to no avail.
(ie Temp sensore, injectors, MAF, TPS, Plugs, Leads, Ignition timing and all components, ECU & Chips, tried various MAPS, green tune and white tune, camshaft, vacuum advance full and ported, and more besides, even changed front calipers in case they were binding).
Anyway I was analysing and watching RoverGauge collect data whilst the engine idled on the driveway.
I noticed that the short term Lambda trims, both Odd and Even were all working great and switching around Zero then suddenly one or both flat-lined.
They stayed like that permanently and came back if I touched the throttle the tiniest amount, not even enough to make the engine revs increase. The then carried on switching as normal.
What on earth would cause that ?

After much experimentation and data collection and analysis (I was a Six Sigma Black Belt and I love DATA) trying to find why I get poor fuel consumption I have gone through everything normal to no avail.
(ie Temp sensore, injectors, MAF, TPS, Plugs, Leads, Ignition timing and all components, ECU & Chips, tried various MAPS, green tune and white tune, camshaft, vacuum advance full and ported, and more besides, even changed front calipers in case they were binding).
Anyway I was analysing and watching RoverGauge collect data whilst the engine idled on the driveway.
I noticed that the short term Lambda trims, both Odd and Even were all working great and switching around Zero then suddenly one or both flat-lined.
They stayed like that permanently and came back if I touched the throttle the tiniest amount, not even enough to make the engine revs increase. The then carried on switching as normal.
What on earth would cause that ?
Seen it loads too- its not RoverGauge, its the probe output,It has to do with gas velocity, as the switch speed goes up as the rpm goes up so its not ECU processing power or lambda response times.The ECU measures mixture more on the voltage swing point, not the against the actual voltage by that I mean is if you swing between 0 and 1.4 volts or 0 and .8 volts it will still control the mixture the same way as its looking for the shift around half a volt, so you cant frig the mixture by lowering the lambda output to make it think its lean. That would have been far to easy a way of fixing shunting!
Edited by blitzracing on Monday 27th January 20:52
spitfire4v8 said:
I often see that .. as you say just briefly touching the throttle brings it back to life.
Mixture stays at 14.7afr so I don't know if it's just that the lucas freezes the lambda cycling, or if it's a rovergauge thing.
either way up, what you're seeing is not unique from my experience.
Great observation Jools, really interesting.....got me wondering now....Mixture stays at 14.7afr so I don't know if it's just that the lucas freezes the lambda cycling, or if it's a rovergauge thing.
either way up, what you're seeing is not unique from my experience.
Questions that spring to mind...
1. Is this a "smoking gun" behind other owners posts "my car is running rich" that never really gets solved ?
2. Is it Inputs to ECU freezing or Outputs from RoverGauge freezing ?
3. If answer 2 is "Inputs to ECU freezing", does it really stick at 14.7 and how, if the inputs to the ecu are frozen ?
I am currently experimenting with looking at following:
Hypothesis
For each cycle of the engine 4.6 litres of air are drawn in and a fuel charge is delivered via the injectors. The variable quantity of fuel delivered per cycle is determined by pulse milliseconds on the injectors. (Assuming all other factors are equal, eg fuel temp, fuel pressure differential to manifold pressure ?)
Thus a crude measure of fuel consumption would be amount of fuel delivered per engine revolution.
and so from RoverGauge this becomes
Fuel Delivered per Revolution = PulseWidthMs/Engine Speed
eg 2.75/1000 = 0.00275 ms/rev
I am now experimenting with different hardware/ECU arrangements to see what this reveals.
eg
5AM MAF vs 20AM MAF (I have 5 of these)
Adding and subtracting small amounts Mechanical advance and Vacuum Advance
Full Vacuum vs Ported Vacuum
95 RON vs Super Fuels
White Tune vs Green Tune
Various ECU's (I have 3 of these)
etc
I shall have to have a read up on the "Design of Experiments" to determine what to do.
I will get to the bottom this.....
Below shows relationship of ms of fuel pulse per at various engine speeds.
Edited by blaze_away on Monday 27th January 22:19
It would be an interesting technical exercise but unless you spend many hours a day at idle it won't be the reason for your poor economy .. as soon as any throttle movement is detected the switching begins again.
You've got me doubting my own info about the mixture staying at lambda=1 .. it might be that I just didn't give it long enough for the afr to drift .. because I am observing this on the dyno, and use the lambda trims for mapping part throttle, I always get them switching again by pressing the throttle ..
Maybe you can leave yours running in the flatlining scenario and see exactly what the afr does .. if it remains clamped to lambda =1 then the ecu is still modifying the fuelling despite what rovergauge is reporting. What blitz says suggests he's measured the probe voltage outputs when in the flatlining situation and the voltage no longer swings, suggesting that ecu fuelling changes were suspended.
Not sure I buy the gas velocity theory yet .. if that were true the the flatlining would happen pretty much all the time on idle and that's not my experience.
You've got me doubting my own info about the mixture staying at lambda=1 .. it might be that I just didn't give it long enough for the afr to drift .. because I am observing this on the dyno, and use the lambda trims for mapping part throttle, I always get them switching again by pressing the throttle ..
Maybe you can leave yours running in the flatlining scenario and see exactly what the afr does .. if it remains clamped to lambda =1 then the ecu is still modifying the fuelling despite what rovergauge is reporting. What blitz says suggests he's measured the probe voltage outputs when in the flatlining situation and the voltage no longer swings, suggesting that ecu fuelling changes were suspended.
Not sure I buy the gas velocity theory yet .. if that were true the the flatlining would happen pretty much all the time on idle and that's not my experience.
blitzracing said:
Seen it loads too- its not RoverGauge, its the probe output,It has to do with gas velocity, as the switch speed goes up as the rpm goes up so its not ECU processing power or lambda response times.The ECU measures mixture more on the voltage swing point, not the against the actual voltage by that I mean is if you swing between 0 and 1.4 volts or 0 and .8 volts it will still control the mixture the same way as its looking for the shift around half a volt, so you cant frig the mixture by lowering the lambda output to make it think its lean. That would have been far to easy a way of fixing shunting!
Great stuff Mark. Edited by blitzracing on Monday 27th January 20:52
Regarding the flat lining on the data chart in original post it happened whilst engine was at idle around 950 rpm.
blaze_away said:
....
Hypothesis
For each cycle of the engine 4.6 litres of air are drawn in and a fuel charge is delivered via the injectors. The variable quantity of fuel delivered per cycle is determined by pulse milliseconds on the injectors. (Assuming all other factors are equal, eg fuel temp, fuel pressure differential to manifold pressure ?)
Thus a crude measure of fuel consumption would be amount of fuel delivered per engine revolution.
and so from RoverGauge this becomes
Fuel Delivered per Revolution = PulseWidthMs/Engine Speed
eg 2.75/1000 = 0.00275 ms/rev
....
Interesting project Blaze, good luck with it.Hypothesis
For each cycle of the engine 4.6 litres of air are drawn in and a fuel charge is delivered via the injectors. The variable quantity of fuel delivered per cycle is determined by pulse milliseconds on the injectors. (Assuming all other factors are equal, eg fuel temp, fuel pressure differential to manifold pressure ?)
Thus a crude measure of fuel consumption would be amount of fuel delivered per engine revolution.
and so from RoverGauge this becomes
Fuel Delivered per Revolution = PulseWidthMs/Engine Speed
eg 2.75/1000 = 0.00275 ms/rev
....
Edited by blaze_away on Monday 27th January 22:19
I'm fairly sure, but I may be wrong, that the PulseWidthMs factor in your basic fuel consumption formula may need to reflect the four injector bank (two even, two odd) firings per four stroke cycle (1 camshaft revolution, two crankshaft revolutions). So:
Time for Fuel Delivery per engine cycle = PulseWidthMs x 4 (amount of fuel delivered will depend on injector flow rate, etc)
e.g. 2.75 x 4 = 11 mS/cycle, or 2.75 x 2 = 5.5 mS/revolution
Whereas, a total of 2.75 microS/rev is far too low, taking into consideration typical injector pulse widths (1.8 to 10 mS) and time per revolution:
900 rpm = 66.6 mS
1800 rpm = 33.3 mS
2700 rpm = 22.2 mS
3600 rpm = 16.65 mS
4500 rpm = 13.25 mS
5400 rpm = 11.1 mS
6300 rpm = 9.5 mS
This timing diagram may help:
Note that there is a fuelling calculation interrupt for each spark but the ECU code toggles between (bank) - fuelling and (bank) - non-fuelling and Odd or Even bank under normal running conditions.
Edited by davep on Saturday 15th February 11:12
davep said:
Interesting project Blaze, good luck with it.
I'm fairly sure, but I may be wrong, that the PulseWidthMs factor in your basic fuel consumption formula may need to reflect the four injector bank (two even, two odd) firings per four stroke cycle (1 camshaft revolution, two crankshaft revolutions). So:
Time for Fuel Delivery per Revolution = PulseWidthMs x 4 (amount of fuel delivered will depend on injector flow rate, etc)
e.g. 2.75 x 4 = 11 mS
Whereas, a total of 2.75 microS/rev is far too low, taking into consideration typical injector pulse widths (1.8 to 10 mS) and pulse periods:
900 rpm = 66.6 mS
1800 rpm = 33.3 mS
2700 rpm = 22.2 mS
3600 rpm = 16.65 mS
4500 rpm = 13.25 mS
5400 rpm = 11.1 mS
6300 rpm = 9.5 mS
This timing diagram may help:

Note that there is a fuelling calculation interrupt for each spark but the ECU code toggles between (bank) - fuelling and (bank) - non-fuelling and Odd or Even bank for normal running conditions.
Dave that is a very good point(s) you raise and I will take account in the calculations. From an analysis point of view it doesn't really change the relationship of 'fuel quantity' in milliseconds per rev merely shifts it by a factor of 4, never the less its better to have that x4 factor in there. I was a bit perplexed by how small the number was now seeing as 4 times greater makes it more acceptable.I'm fairly sure, but I may be wrong, that the PulseWidthMs factor in your basic fuel consumption formula may need to reflect the four injector bank (two even, two odd) firings per four stroke cycle (1 camshaft revolution, two crankshaft revolutions). So:
Time for Fuel Delivery per Revolution = PulseWidthMs x 4 (amount of fuel delivered will depend on injector flow rate, etc)
e.g. 2.75 x 4 = 11 mS
Whereas, a total of 2.75 microS/rev is far too low, taking into consideration typical injector pulse widths (1.8 to 10 mS) and pulse periods:
900 rpm = 66.6 mS
1800 rpm = 33.3 mS
2700 rpm = 22.2 mS
3600 rpm = 16.65 mS
4500 rpm = 13.25 mS
5400 rpm = 11.1 mS
6300 rpm = 9.5 mS
This timing diagram may help:
Note that there is a fuelling calculation interrupt for each spark but the ECU code toggles between (bank) - fuelling and (bank) - non-fuelling and Odd or Even bank for normal running conditions.
blaze_away said:
Dave that is a very good point(s) you raise and I will take account in the calculations. From an analysis point of view it doesn't really change the relationship of 'fuel quantity' in milliseconds per rev merely shifts it by a factor of 4, never the less its better to have that x4 factor in there. I was a bit perplexed by how small the number was now seeing as 4 times greater makes it more acceptable.
I'm also puzzled as to why you need to convert milli to microseconds with the /1000 operator? So perhaps 4000 times greater.I haven’t spent much time investigating the closed loop codes as I have a Precat, however these flat lines maybe while the long term trims are being re-calculated which only occurs after idling for about 1 minute above 87°c and with a closed throttle.
Try watching RoverGauge’s main screen and when the short trims freeze quickly switch to the long term trims to see if the long trims are switching instead.
Try watching RoverGauge’s main screen and when the short trims freeze quickly switch to the long term trims to see if the long trims are switching instead.
Thanks to a conversation with Mark yesterday I put together an inline O2 sensor monitor. Mark you are a genius.
Essentially
1.O2 plug off a old engine loom
2. O2 plug off an old Lambda probe
3. A screw multiblock
4. A digital volt meter DVM
5. some crocodile clips and a few bits of wire again off the old loom
(DVM - In an ideal world I would have used an analogue meter as this would show true swings in the signal values whereas a DVM "samples" data coming in to it)

Testing Offside (even) O2 probe.
First switched on the ignition and checked for 12v between earth and heater wire, all good at 12.2 Volts.
Next connected the crocodile clips to earth and signal and started the engine, with RoverGauge hooked up too watching Short-term trim
The DVM sprang into life and started showing all sorts of voltage numbers from 0 to 1.2 (but numbers flashed so fast across the screen I couldn't keep up).
Ten minutes in RoverGauge Short Term Trim on even bank starts to flat-line, also the DVM flat-lined too with DVM showing 0.02v for several seconds. I blipped the throttle and both RoverGauge and the DVM came back to life.
Tested odd side all was well no flat-lining
Replaced the O2 sensor on even side with a used spare and retested both sides.
Both sides on DVM and RoverGauge behaved normally over a further 15 minute engine idle run.
So from here I would say that this info confirms its the inputs into ECU that are flat-lining and not the ECU outputs to RoverGauge.
Not sure what to make of all that yet but at least I have made progress, I think....
Essentially
1.O2 plug off a old engine loom
2. O2 plug off an old Lambda probe
3. A screw multiblock
4. A digital volt meter DVM
5. some crocodile clips and a few bits of wire again off the old loom
(DVM - In an ideal world I would have used an analogue meter as this would show true swings in the signal values whereas a DVM "samples" data coming in to it)
Testing Offside (even) O2 probe.
First switched on the ignition and checked for 12v between earth and heater wire, all good at 12.2 Volts.
Next connected the crocodile clips to earth and signal and started the engine, with RoverGauge hooked up too watching Short-term trim
The DVM sprang into life and started showing all sorts of voltage numbers from 0 to 1.2 (but numbers flashed so fast across the screen I couldn't keep up).
Ten minutes in RoverGauge Short Term Trim on even bank starts to flat-line, also the DVM flat-lined too with DVM showing 0.02v for several seconds. I blipped the throttle and both RoverGauge and the DVM came back to life.
Tested odd side all was well no flat-lining
Replaced the O2 sensor on even side with a used spare and retested both sides.
Both sides on DVM and RoverGauge behaved normally over a further 15 minute engine idle run.
So from here I would say that this info confirms its the inputs into ECU that are flat-lining and not the ECU outputs to RoverGauge.
Not sure what to make of all that yet but at least I have made progress, I think....
stevesprint said:
I haven’t spent much time investigating the closed loop codes as I have a Precat, however these flat lines maybe while the long term trims are being re-calculated which only occurs after idling for about 1 minute above 87°c and with a closed throttle.
Try watching RoverGauge’s main screen and when the short trims freeze quickly switch to the long term trims to see if the long trims are switching instead.
Thanks Steve I will try that when it next occursTry watching RoverGauge’s main screen and when the short trims freeze quickly switch to the long term trims to see if the long trims are switching instead.
davep said:
blaze_away said:
Dave that is a very good point(s) you raise and I will take account in the calculations. From an analysis point of view it doesn't really change the relationship of 'fuel quantity' in milliseconds per rev merely shifts it by a factor of 4, never the less its better to have that x4 factor in there. I was a bit perplexed by how small the number was now seeing as 4 times greater makes it more acceptable.
I'm also puzzled as to why you need to convert milli to microseconds with the /1000 operator? So perhaps 4000 times greater.The 2.5/1000 is to get the equivalent pulse length per revolution as both numbers vary.
Now though it would be
(2.5×4)/1000
Gassing Station | Chimaera | Top of Page | What's New | My Stuff



