This article was first published in 2005.
These days more and more
cars are running closed loop at all engine loads. (‘Closed loop’ means that the
output of the oxygen sensor effectively controls the mixtures.) In many cars
this results in the air/fuel ratio always being around 14.7:1. It also means
that making modifications to the air/fuel ratio becomes very difficult – the
system will learn its way around changes made to airflow meter outputs,
increased fuel pressure and so on.
In this story we take a
look at the strategies that were used to modify the high load air/fuel ratios of
a 1999 Toyota Prius, a hybrid petrol/electric car. (They are also strategies of relevance to anyone with a car always in closed loop!) The Prius runs closed loop
all the time – the air/fuel ratio is 14.7:1 from the initial moments after a
cold start, through to idle and then to full load. The upside of this is that
the economy/emissions compromise is kept pretty well as optimal as possible, but
the downside is that the maximum available power from the internal combustion
engine is much lower than it could be.
In the case of my Prius,
which has only a 43kW internal combustion engine and weighs around 1250kg, the
result in one driving circumstance is terrible performance. That circumstance is
when the high voltage battery that feeds the 30kW electric motor gets depleted.
In the real world, that occurs only after holding full throttle for perhaps 40
seconds – so, a top speed event, or climbing a long, steep open road hill.
It’s the latter case which
concerns me – I climb a long and very steep country road hill nearly every time
I drive home.
When the high voltage
battery is down in charge (shown by a warning turtle illuminating on the
dashboard!), the performance is solely dictated by the 1.5-litre, 4000 rpm
redline petrol engine. And the engine is so handicapped by its lean
full-throttle air/fuel ratio that it’s fighting a losing battle. Not only is an
air/fuel ratio (AFR) of 14.7:1 way leaner than is ideal for maximum power, but
the combustion temperatures at this full-load AFR must be very high. I don’t
know for certain, but I suspect that when held in this condition, detonation
occurs and the knock sensor pulls back ignition timing, further increasing the
temp of combustion. The vicious circle results in a full-throttle speed at the
top of my hill that can be as low as 47 km/h...
It needs to be stressed
that in normal driving the Prius is no slug – the combination of petrol and
electric torque makes it respectable off the line and while no performance car,
in normal country road use it is adequate. But not up this hill...
Therefore, the purpose of
the modification was to provide a more power-friendly AFR at very high loads. In
normal use, including at idle and in moderate acceleration, the factory AFR is
So, how to change the AFR
to achieve this outcome? Be warned: the effort took four days and lots of
different techniques, most of which ended in failure. I suspect that the same
may be the case when trying to modify other cars that are always in closed
Oxygen Sensor Simulation
The Prius uses two
narrow-band oxygen sensors. ‘Narrow band’ means that the sensors are designed to
measure mixture strength only around 14.7:1 AFRs. That is, they are not designed
to be able to accurately measure air/fuel ratios of say, 12.5:1. The output of
the sensor is high when the AFR is richer than 14.7:1, and low when the AFR is
leaner than 14.7:1. (For more on oxygen sensors, see The Technology of Oxygen Sensors.)
When the output of the oxy
sensor is high (eg 800 millivolts) the ECU leans out the mixtures. When the
output of the oxy sensor is low (eg 200 millivolts) the ECU richens the mixture.
The result is that in closed loop a car has mixtures (and so an oxy sensor
output) that rises and falls, a bit like a sine wave. The average AFR, however, hovers around
stoichiometric, the chemically correct ratio of air to fuel that ensures best
combustion. (And also allows the cat converter to work most efficiently.)
In the case of the Prius,
as with many cars, one oxy sensor is located in front of the cat converter and
the other after the cat. The ECU compares the waveforms of the oxy sensors to
ensure that the cat converter is still working adequately. The way in which the
waveforms differ is that the voltage fluctuations, and the frequency of those
fluctuations, are lower for the sensor located behind the cat.
My initial idea was to
enrich the mixtures by: (1) replacing the ECU input signals from the oxygen
sensors with artificially simulated signals, and then when the system was in
this condition, (2) change the airflow meter ECU input signal.
However, before the latter
could occur, I needed to successfully replace the oxy sensor input signals
without the ECU realising that it was no longer receiving the correct feedback.
With the help of Silicon Chip magazine’s John Clarke,
this circuit was devised. It spits out an up/down waveform that can be varied
for span (the distance from the top to the bottom of the waveform), offset (what
the centre voltage of the waveform is) and frequency (how many up/down movements
per second). The waveform is more triangular than sine-shaped, but in this
application we didn’t think that would matter.
Two of these devices were
built and then calibrated in frequency, span and offset so that their outputs
matched (as much as possible, anyway) the output of the oxygen sensors. The oxy
sensor outputs were monitored on a Fluke 123 Scopemeter digital oscilloscope,
with the measurement made when the Prius was idling. However, a problem was then
discovered. While the air/fuel ratio didn’t alter when these signals were
switched-in at idle, at higher engine loads the story was quite different. In
those conditions, switching in these simulated signals resulted in the air/fuel
ratio immediately going very rich, eg 11.5:1. (Air/fuel ratios were being
monitored with a Motec air/fuel ratio meter.)
Ignore the Oxy Sensors?
As an experiment, I
initially left the oxy sensors working correctly and just modified the airflow
meter input signal. While I could alter the mixtures in this way, such is the
speed of the Prius ECU learning that the air/fuel ratios reverted back to
standard in literally a few seconds.
The Scopemeter was then
used to measure the front oxy sensor output at load. This waveform (the lower of
the two shown here) looked quite different to the almost symmetrical waveform of
the idling oxy sensor output. Instead of being a bit like a sine wave, it was
very much a square wave – most of the time being spent with the voltage at about
850 millivolts with just very quick dashes down to low voltages! Yes, despite
the fact that this output would appear to indicate that the mixture was rich,
that’s apparently exactly how the Prius ECU liked it – the measured mixtures
were still at 14.7:1.
Another circuit was then
built. It was based on the variable duty cycle test board that is supplied
with the LED Duty Cycle Meter kit now available. Knowing now that the oxygen simulator signal was going to be tricky to get
right, great care was taken that the output of this simulator looked as much as
humanly possible like the measured output of the front oxy sensor at high engine
loads. The rear oxy sensor was temporarily reconnected (I only had one of the
square wave output boards) and the new simulated oxygen sensor signal fed into
the ECU in place of the front oxy sensor.
The result was the same:
I then changed almost every
aspect of the input signal, trying different duty cycles, different frequencies,
etc. Nothing made any difference – the mixtures always went rich. (The exception
was when the signal was kept permanently high – then they went lean.)
Frustrated, I then simply
disconnected the oxygen sensors to see what would happen – there’d be no closed
loop occurring then! What did happen was very interesting – the mixtures went
precisely as rich as they had when I was simulating the sensors with the
different circuits. In other words, none of my simulated oxygen sensor signals
had ever been accepted by the ECU as meaningful (except perhaps at idle).
Luckily, in the case of
this model Prius, no Check Engine light or similar comes on with the oxy sensors
disconnected, although it is certain that some fault codes are lodged. So what
about an alternative – and more primitive – strategy? That is, at times of high
load, simply disconnect the oxy sensors? That would result in rich mixtures, and
testing showed that when the sensors were reconnected, it took only a few
seconds for the ECU to recognise their presence and bring mixtures back to
A prototype of the Simple
Voltage Switch kit (now available from the AutoSpeed shop) was used to monitor airflow meter output voltage. The set-point of
the switch was adjusted so that it triggered only at high loads. The on-board
DPDT relay was used to disconnect the two oxygen sensors when the relay tripped.
In this way, high load mixtures were automatically enriched.
However, in this system the
setpoint of the voltage switch then became critical. Set it too high and you had
to be absolutely nailed to the floor to get the mixtures to go rich. That’s not
really what was wanted, because in that situation having the throttle flat-strap
flattens the high-voltage battery at the maximum rate. Instead what was wanted
was very much like that which occurs in most cars – mixtures gradually sliding
from 14.7 through to mid-13s through to (say) 12.5:1 or richer at full load.
However, set the switch-point too early and there was a clear penalty in fuel
consumption as the mixtures went straight to 11:1.
The solution was to use the
Digital Fuel Adjuster kit. This device allows the alteration of the airflow meter signal either up or down,
based on load sites derived from the actual signal. In other words, it takes the
voltage signal coming from the airflow meter and allows adjustment of this
voltage up or down in very small steps. It interpolates between the steps (ie
smooths the curve of the adjustments) and when no changes are made to the
signal, the input exactly equals the output.
In this case, at
medium/high loads the Digital Fuel Adjuster (DFA) was used to lean-out the
mixtures over the no-oxygen-sensor default of 11:1 to around 13.5:1, to about 12.5:1 at higher loads, and then at full load to
actually set the air/fuel ratios to richer than resulting from the disconnection
of the oxy sensors.
The Final System
So the final system works
in this way:
- Simple Voltage Switch disconnects
the two oxygen signals at a certain high engine load, based on airflow meter
- This results in mixtures
automatically going very rich at all loads above the switch point
- Digital Fuel Adjuster is then used
to set the actual mixtures to provide suitable variation with load above this
This approach results in
the AFR going progressively richer than standard as the load rises above the
switch point. When the driver backs off, the ECU then needs to learn back to
stoichiometric mixtures, which takes about 4-5 seconds.
Despite having access to
the Motec air/fuel ratio meter, the Scopemeter and a top Fluke multimeter, the
humble LED Mixture Meter was an important test tool in the development of this
modification. It shows more quickly and in some cases, more accurately, when the
car is in closed and open loop, and as a bonus also shows the approximate
mixtures. While precise tuning of the air/fuel ratio shouldn’t be carried out
with a ‘dumb’ LED Mixture Meter working off a narrow band oxy sensor (although
see Real World Air/Fuel Ratio Tuning),
a lot of the development of this modification could have been carried out using
the Mixture Meter alone.
For more details see Smart Mixture Meter, Part 1
The on-road performance
results of the alteration to the air/fuel ratio have exceeded my most optimistic
expectations. With two people on-board and in ‘turtle mode’ (ie with the high
voltage battery exhausted), at the top of the long country road hill the Prius
used to be as slow as 47 km/h. Further, the engine could always be felt to be
straining – not running sweetly.
With the revised air/fuel
ratio, the Prius can now do 67 km/h at the top of the same hill. That’s a
stunning 43 per cent faster!
Further, the turtle is less
likely to come on as early because once the engine load is greater than the
switch-point (ie the transition to open loop has occurred), there is more power
available from the petrol engine and so there is less load on the electric
motor. In transient use (after all, the most common need for power is very
short-lived), the engine is sweet and strong.
Economy? It’s very little
changed. I assume that’s because the engine was previously working so hard at
the top of the hill with retarded timing and lean mixtures that its economy in
that situation was poor anyway. In normal use away from the killer hill, the
Prius is using factory mixtures for the vast majority of the time – probably
over 98 per cent of the running time. Emissions? Yes, the CO and HC emissions
will be higher, but the oxides of nitrogen emissions are almost certainly lower.
Either way, in an Australian context, the Prius would have no problems in
passing an emissions test as the change to open loop mixtures occurs only at
very high loads – which aren’t used in the test. Further, the real-world change
in emissions is tiny, because the increased emissions occur for such a small
proportion of the running time.
Lessons for Other Cars
I doubt if any Prius owners
will follow in my footsteps – most Prius owners don’t seem to be much interested
in modification! However, this story has important implications for those
modifying cars that are normally always in closed loop.
Firstly, I couldn’t devise
an oxygen sensor replacement signal that fooled the ECU into thinking it was in
closed loop when it actually wasn’t. Secondly, disconnecting the oxy sensors
might result in a harmless transition to rich mixtures in other cars as well –
it’s the obvious factory safety strategy when the oxy sensor feedback signal is
lost. Fine-tuning of those open-loop mixtures can then be carried out on cars
with voltage outputting airflow meters by using the Digital Fuel Adjuster. The
transition to open-loop can be by the voltage switch working on the airflow
meter signal (before it’s intercepted by the DFA!) or by something as simple as
a throttle switch.
Certainly, the performance
that was realised in this case by using more appropriate high-load mixtures is
More on Closed Loop
'Closed Loop' is the term
given to the ECU behaviour when the oxygen sensor signal is being used to
largely control how much fuel the injectors are adding to the intake. In most
cars the ECU works in closed loop most of the time - when the car is warmed up
and idling, in constant throttle cruise - and so on. With this control strategy
the ECU watches the oxygen sensor output and if the mixtures are getting a bit
rich, it leans them off. If the mixtures are getting a bit lean, it richens them
up. This causes the mixtures to fluctuate rapidly around 14.7:1 air/fuel ratio -
what's called the stoichiometric ratio.
However, an air/fuel of
14.7 doesn't give the best power, so when you put your foot down, in most cars
the ECU forgets all about closed loop and goes instead into an operating system
called 'Open Loop'. This just means that it ignores the output of the oxy
sensor, instead picking the right amounts of fuel from its internal memories.
Typically, with increasing load, the air/fuel ratio outside of closed loop might
jump to 13:1, then 12:1 and then even richer still at 10 or 11:1.
The final common operating
approach is when the injectors are completely stopped - yes, they're actually
switched off sometimes even when the car is driving along! This happens on the
over-run - you're travelling along at 100 km/h, reach an 80 km/h sign and lift
your foot. The ECU will then turn off the injectors until either you reapply the
accelerator or the engine speed drops to near idle revs.
Like all things, these
ideas apply to most cars - not all. Some Porsches, for example, stay in closed
loop all the time - even when the mixtures are richer than 14.7:1. In other
words, the oxygen sensor (a special one) is used to give mixture feedback to the
ECU in all operating conditions. Other cars have a 'lean cruise' system, where
on the open highway the mixtures will gradually lean out to say 15 or 16:1, so
And as we have discussed in
this story, some cars use constant closed loop to keep their mixtures always at
stoichiometric (except on the over-run). For example, the Chrysler Turbo Prowler
is a car that maintains closed loop 14.7:1 mixtures all of the time. (For more
on this engine - Designing a Factory Turbo Engine
The easiest way to find out
what engine management strategies your car has is to fit a Mixture Meter and
watch its behaviour in normal driving.