O2 swing points
#1
02 swing points Q?
can someone offer an explanation as to why the 02 sensor swing points are not tighter. if i understand correctly(possibly not-that is why i ask) they swing over stoich. .45 mvolts. as high as .95 and as low as .10(?). so it moves fueling richer or leaner than .45 continuously in CL.
why does it need to swing at those numbers? why not tighter to stoich? do the swing points change based upon what the 02 sensor reads? if it reads at .45 mvolts or stoich what does it swing over then?
if one wants to run richer than .45 or 14.7/1 would one move the higher and lower swing points equally to a higher number?
i have info on this saved but i have not located it yet.
why does it need to swing at those numbers? why not tighter to stoich? do the swing points change based upon what the 02 sensor reads? if it reads at .45 mvolts or stoich what does it swing over then?
if one wants to run richer than .45 or 14.7/1 would one move the higher and lower swing points equally to a higher number?
i have info on this saved but i have not located it yet.
#2
Moderator
iTrader: (1)
Join Date: Mar 2002
Location: Chasing Electrons
Posts: 18,401
Likes: 0
Received 215 Likes
on
201 Posts
Car: check
Engine: check
Transmission: check
The reason for the O2 swing and the selection of the swing points is the cat-con. With a 2-way cat the O2 window is a tad on the rich side. A 3-way cat (NOX reducing) the O2 swing is less and held tightly to stoich.
Raising the O2 window makes it richer. When playing with the swing points I tend to keep the same separation between the lean & rich values. As an example I'll move all 3 points up by 50 mV.
RBob.
Raising the O2 window makes it richer. When playing with the swing points I tend to keep the same separation between the lean & rich values. As an example I'll move all 3 points up by 50 mV.
RBob.
#5
Supreme Member
iTrader: (2)
Join Date: Jan 2005
Location: Hurst, Texas
Posts: 9,980
Received 384 Likes
on
328 Posts
Car: 1983 G20 Chevy
Engine: 305 TPI
Transmission: 4L60
Axle/Gears: 14 bolt with 3.07 gears
The reason for the O2 swing and the selection of the swing points is the cat-con. With a 2-way cat the O2 window is a tad on the rich side. A 3-way cat (NOX reducing) the O2 swing is less and held tightly to stoich.
Raising the O2 window makes it richer. When playing with the swing points I tend to keep the same separation between the lean & rich values. As an example I'll move all 3 points up by 50 mV.
RBob.
Raising the O2 window makes it richer. When playing with the swing points I tend to keep the same separation between the lean & rich values. As an example I'll move all 3 points up by 50 mV.
RBob.
The swing points on a TBI Van are set around .600 MV and about .475 MV @ idle.
Keep in mind that most engine modifications effect the swing point. Such as headers, cylinder heads, intake manifold, camshaft, etc.
Last edited by Fast355; 01-18-2007 at 05:10 PM. Reason: Automerged Doublepost
#6
i am new to tuning and i havent been able to understand these o2 points myself. i just did a 305 to 350 swap in my 95 truck and i started with the appropriate bin file for a 95 with a 350 but the oc thresholds are much different. ill atach a pic of the 350 bin and my original 305 bin.you will see the 305 bin has higher o2 voltages. so if these numbers are set from gm based on cat type and o2 sensor location, shouldnt i leave these the same wether its a 305 or 350? i currently have them at the lower values of the 350 bin but maybe like this i am hurting my cat? ive read alot about this and cant realy get an answer to where these should be. thanks.
#7
Member
iTrader: (1)
Join Date: Jun 2006
Location: South Dakota
Posts: 253
Likes: 0
Received 0 Likes
on
0 Posts
Car: 1990 Camaro RS
Engine: 305 TBI (LO3)
Transmission: T-5
Axle/Gears: 3.08
Okay read entire post, how exactly do you tighten up the swing points using tunerpro? What is the setting under to alter the mV to?
Trending Topics
#8
Supreme Member
iTrader: (1)
Join Date: Apr 2004
Location: Browns Town
Posts: 3,178
Likes: 0
Received 3 Likes
on
3 Posts
Car: 86 Monte SS (730,$8D,G3,AP,4K,S_V4)
Engine: 406 Hyd Roller 236/242
Transmission: 700R4 HomeBrew, 2.4K stall
Axle/Gears: 3:73 Posi, 7.5 Soon to break
I did this a bit ago to help me understand (and shift) as well.
This is for $8D mask.
The main purpose was to enable me to offset all three tables and be able to shift them around by using the coolant modifier table only.
I added an offset to all the tables that is equal to the coolant table offset.
Then by changing only the coolant table, all the relationships remain the same but the switching values move together.
I made up a sheet to show the amount of shift that happens and calculates the new table values for you.
Wouldn't upload so here's a link to it.
http://www.wideopenwest.com\~Johnand..._TABLES_8D.xls
Do a save as..., open it in Excell.
Edit the table info at the bottom.
Edit the modifiers at the top with your window value from the bin.
JP
This is for $8D mask.
The main purpose was to enable me to offset all three tables and be able to shift them around by using the coolant modifier table only.
I added an offset to all the tables that is equal to the coolant table offset.
Then by changing only the coolant table, all the relationships remain the same but the switching values move together.
I made up a sheet to show the amount of shift that happens and calculates the new table values for you.
Wouldn't upload so here's a link to it.
http://www.wideopenwest.com\~Johnand..._TABLES_8D.xls
Do a save as..., open it in Excell.
Edit the table info at the bottom.
Edit the modifiers at the top with your window value from the bin.
JP
#9
Supreme Member
iTrader: (2)
Join Date: Jan 2005
Location: Hurst, Texas
Posts: 9,980
Received 384 Likes
on
328 Posts
Car: 1983 G20 Chevy
Engine: 305 TPI
Transmission: 4L60
Axle/Gears: 14 bolt with 3.07 gears
i am new to tuning and i havent been able to understand these o2 points myself. i just did a 305 to 350 swap in my 95 truck and i started with the appropriate bin file for a 95 with a 350 but the oc thresholds are much different. ill atach a pic of the 350 bin and my original 305 bin.you will see the 305 bin has higher o2 voltages. so if these numbers are set from gm based on cat type and o2 sensor location, shouldnt i leave these the same wether its a 305 or 350? i currently have them at the lower values of the 350 bin but maybe like this i am hurting my cat? ive read alot about this and cant realy get an answer to where these should be. thanks.
Last edited by Fast355; 01-18-2007 at 10:12 PM.
#10
so by moving the constants up does this make the computer try and maintain a richer afr in closed loop? or are you trying to find the right constants to hit the 14.7 afr with your header and o2 location? at those numbers are you 14.7 on your wb in closed loop cruising? i dont have a wide band to check my afr. my constants are at the 434mv above 32gms/sec flow right now. like i said, the stock 305 bin file had the o2 constants at 520mv above 32gms/sec flow. i have a single cat. its the original. and my o2 sensor is in the crossover pipe right before the cat. also, when i change these constants do the ve tables have to be retuned because it will try and target a differnt value to maintain 128 blms? thanks.
Last edited by getsideways; 01-18-2007 at 11:02 PM.
#11
Moderator
iTrader: (1)
Join Date: Mar 2002
Location: Chasing Electrons
Posts: 18,401
Likes: 0
Received 215 Likes
on
201 Posts
Car: check
Engine: check
Transmission: check
I found that this paper isn't in the sticky's, so I'll post it here and add it in to the Prom Tuning Guide under the 8063/7747/8746 ECM. It explains a lot of the O2 actions and the tables that are used. Here goes:
ECM Proportional Control
Robert Rauscher
7/9/2000, updated 1/23/02
Copyright 2000, 2002, Robert Rauscher, All Rights Reserved.
This is specific to the 747 ecm. However, the methods and madness
applies to many of the GM ecm's. (Use at your own risk, no guarantee
that any of this is correct).
Note:
Values such as 0x22D are eprom table addresses. These you
can easily change.
Values such as L0004 are RAM variables. These are used by
the ecm during it's processing.
INTRO:
The proportional and integral fuel correction logic is complex. There
is no way that I can cover all aspects of the ecm logic. This paper
is designed to give a working view of what the ecm is trying to
accomplish. I have also covered some changes that can help when
tuning hot street engine.
The proportional PID term starts with the O2 sensor reading, and ends
with a correction to the final calculated PW. The PID proportional term
always works in the opposite direction of the immediate rich/lean O2
sensor reading.
The purpose of the PID proportional controller term is twofold. First,
it is used to attain the desired AFR quickly. Second, it is used to
maintain the switching of the O2 sensor about the desired AFR point.
The PID controller term starts with the O2 Error Term. This is the
amplitude of error (or difference), between the O2 sensor and the
desired O2. This value is used as a lookup index for the actual
proportional error term.
The combination of the proportional term and the INT term is referred
to as the closed loop correction term (CLT). When in open loop, neither
the proportional term or the INT term as used.
There are two filtered O2 sensor values kept by the ECM. One is a fast
filtered value that follows the changing O2 sensor reading closely. The
second is a slow filtered value that lags the changing O2 sensor reading.
AIRFLOW TERM:
The volume of air moving through the engine is used for many of the
PID term lookups. The airflow is defined as grams of air, per second,
per cylinder, that is moving through the engine. The term is abbreviated
as gms/sec.
This term is calculated from the current MAP and current RPM. Volumetric
efficency is not used. In the '747 code, the max value is clipped at
64 gms/sec. The calculation is gms/sec = rpm * map * constant. It is
not the most accurate term, however, it is sufficent.
It is important to realise that it takes a finite amount of time for a
change in the PW to be reflected in the O2 sensor reading. This time
frame is referred to as the 'transport delay'. This delay varies according
to the airflow through the engine.
O2 ERROR BOUNDRY TABLES:
Two tables define the desired O2 sensor upper and lower limits. These
limits are used to decide whether the O2 sensor is either: below, above,
or within the limit window. These are the error boundries. These values
are the actual voltage output of the O2 sensor.
A third table defines the O2 sensor cross point.
The desired O2 Sensor tables are located at: 0x494, 0x499 and 0x49E. The
tables are indexed based on airflow, in gms/second. They are five-line
tables from 0 - 64 gms/sec, every 16 gms/sec.
0x494: Mean R/L Threshold, used to determine (somehow), the direction,
(and speed?), of the O2 sensor. End result is a moving richer, or
moving leaner bit (L000E, b6). Also used to determine the occurance
and an O2 x-count.
0x499: Rich O2 Threshold, used to define upper window boundry for
the O2 Error Term.
0x49E: Lean O2 Threshold, used to define lower window boundry for
the O2 Error Term.
The above table values are converted by: O2mv = TblVal * 4.34
(con't)
----------
!) The slow filtered O2 error term is the delta of the current slow
filtered O2 value and the proper window boundry, upper or lower. This
term is then used to lookup the proportional gain error from another
table.
The lower window boundry is used to calculate the error term whenever
the O2 Sensor is below that value. The upper window boundry is used
whenever the O2 Sensor is above that value.
This error value is then used to lookup various proportional values. If
the Slow Filtered O2 value is within the window, no proportional
correction takes place (prop term = 0).
When at idle, defined by L0002, b7 == 1, the above tables will have
a bias added to them. The effect is to lower the AFR for a more stable
idle. This value is located at: 0x2F7. (remember this one).
The flag at L0008, b1, (rich/lean) is set with a O2 sensor higher than
the upper window boundry. That bit is reset with an O2 sensor lower
than the lower window boundry.
If the O2 sensor is within the window, the bit is not changed.
PROPORTIONAL ERROR TERM:
Once the slow filtered error term is calculated, it is used as a
lookup index into the proportional gain table at: 0x4A8.
Another lookup is done for a proportional multiplier term, indexed
by airflow in gms/sec, at: 0x4C7.
The two above terms are multiplied together, divided by 256 and
the result is used as the adjustment to the CLT term.
The math:
PropTerm = (Gain @ 0x4A8[O2err] * FlowGain @ 0x4C7[gms/sec]) / 256.
This makes the FlowGain (@ 0x4C7), dictate a percentage of the gain
table (@ 0x4A8). The end result will always be lower then the starting
gain term.
To create the CLT, the proportional term is either subtracted, or added
to the INT term. If the O2 sensor is lean, the prop term is added to the
INT. If the O2 sensor is rich, the prop term is subtracted from the INT
term. The result is the CLT term.
The CLT term is then used to adjust the PW calculation.
For highly tuned engines (IE: hot street stuff), the proportional
gains can to too high. The effect is the engine surging under steady
state cruising. Reducing the gain and multiplier values can reduce
this problem. The values in these tables can sometimes be cut in half.
PROPORTIONAL DURATION TERM:
For the proportional duration term, lookups are done using the same
indexes as the prop-gain. The slow filtered O2 error term is used as
a lookup index into the proportional duration table at: 0x4B5.
Another lookup is done for a proportional duration offset term, indexed
by airflow in gms/second, at: 0x4C2.
The results of the lookups are added together for the proportional
duration term.
The prop duration does not change the prop gain except to clear it.
(I hope I get this correct) the prop gain is calc'd 40 times a second
against the current O2 error level. The prop gain can change each time
it is re-calc'd. Same with the prop duration. It is re-calc'd 40 times
a second. If the prop duration timer expires the prop gains are cleared
(zero'd) for that pass. Of course 25 msec later (40 Hz) the prop gains
are re-calc'd and reapplied.
The prop duration timer is cleared whenever an O2 x-cnt occurs.
Now it gets tricky. As long as the prop duration timer has expired AND
the O2 error level is less then that required to move the INT the prop
gains are held at zero. And note in the cal how the prop gains are
very small with a small O2 error level. So how much of a difference
does it make to zero out the gains that are already minor?
Now even if the prop duration timer has expired as long as the O2 error
level is enough to move the INT the prop gains will still be applied.
The end result is that the prop duration has very little effect on
the whole scheme of things.
AFR:
The upper and lower R/L threshold tables can be used to move the
basic AFR. As they form the O2 Error Window, by raising the table values
toward the richer side, the overall engine AFR can be pushed toward
the rich side (lowered AFR).
This is important to understand, these three tables define the overall
AFR when in closed loop. The proportional term is always trying to
move the current O2 sensor toward these table boundries.
(con't)
----------
INTEGRATOR:
The INT seems to follow the proportional term, however, it does not.
The INT moves independent of the proportional term. The INT is updated
whenever an O2 sensor x-count does not occur within a certain timeframe.
Even with the proportional gains set to 0, the INT will still move.
Movement of the INT takes place whenever the slow filtered O2 error
term exceeds the value at: 0x2F4, which is typically 4, along with the
INT delay timer expiring without any x-counts.
As you look at the fueling cal & code it is apparent that the airflow
through the engine is used quite a bit. In the '747 this term as grams
of air per second is not accurate. The calcuation used is quick and
simple. It does provide a usable relative value.
It is interesting to note that the gms/sec term is used to denote two
different items: the airflow (as a transport delay term) and the PW.
The higher the airflow the lower the transport delay and the greater
the PW.
When the gms/sec term is used to lookup the INT delay it is as the
transport delay.
When the gms/sec term is used to lookup the proportional gain
multiplier it is as the PW. The larger the PW the greater the prop
gain required to change the AFR.
The integrator delay is required to prevent overshoot and oscillation
of the fueling. The delay is to give the O2 sensor time to see and
respond to the change in fueling (an INT change). It takes a finite
amount of time for the change in injector PW (change in amount of
fuel) to travel through the engine and out the exhaust. There is also
a delay within the O2 sensor.
The table at $48F, INT delay vs airflow, has less delay as the airflow
increases. If the O2 sensor position is moved further downstream this
delay needs to be increased. This is the transport delay term.
The table at $4CC, INT delay vs O2 error, has a two fold function. The
first is to deal with the response rate of the O2 sensor. With a large
O2 error level the sensor will be at the bottom or top of the ZS shaped
O2 sensor response curve. Large delays are required. As the O2 sensor
starts to get into the upright portion of the response curve the INT
action is sped up.
In the second case this table can also provide a derivative term to
the PID loop. In the case of the ASDZ cal this is true. As the O2
error decreases the INT delay is increased. This effectively stops
the integrator from updating. Thereby putting the brakes on INT
fueling changes.
STOICH:
The value labeled 'stoich' needs to match the O2 sensor AFR switch
point. On the '747, this value is located at: 0x2AA. The value is 147,
for 14.7 AFR.
Conjecture: This stoich value, plus the R/L O2 error boundries, define
the O2 sensor output levels. This ties the O2 sensor calibration into
the PW equation.
As the R/L O2 Error Boundries define actual O2 sensor stoich switch
point in output volts. The 14.7 AFR switch point of the O2 sensor is
now 'calibrated' into the PW calculation.
If a different fuel is used, with say a stoich value of 16.1, by
placing the value of 161 at 0x2AA, the PW is again calibrated for
that fuel. If you now want to command the ecm to change the PW enough
for a 15.3 AFR, by using 153 in the PW calculation, the PW will
be increased the proper amount to produce that AFR (in open loop).
Remember that when in closed loop, the stoich value is used in
the PW calculation. In open loop, the desired AFR is used in the
PW calculation (say, when it's 5 degrees out, and the engine is
first started, the desired AFR might be 9.0).
Another example: Say a new O2 sensor was developed, for gasoline,
that costs $3.00. Good deal. However, the stoich switch point output
voltage is at 625mV, opposed to the current sensors switch point of 450mV.
By changing the R/L O2 error boundry table values, this new O2 sensor
can be calibrated for the PW calculation. Instead of the tables
straddling the 450mV value, set the table values to straddle the new
625mV O2 sensor value.
IDLE:
When in idle, the proportional gain and the proportional duration
use specific values. The prop gain is at: 0x2F9, and the prop duration
is at: 0x2F8. These replace the table lookups at: 0x4C7 and 0x4B5,
respectively.
For a rumpity-rump engine, it helps to set the idle prop term low.
This reduces/eliminates proportional action. This can have the effect
of smoothing the idle.
Also, do not forget about the O2 error bias value at: 0x2F7. This
value can be used to decrease the AFR at idle. Again, for a rumpity
engine, it can calm down the idle.
RESET's:
A proportional gain and duration reset take place whenever the INT is
reset. It is also reset whenever an O2 x-count is logged. The most common
cause of an INT reset, is the BLM 'cell in use' changing. There is an
option to have the INT reset on an accel enrichment (pump shot). An INT
reset is the setting of the integrator to it's mid-point (128). This
is where no integrator fuel correction is made.
Enable 'pump shot' reset of INT is located at: 0x006, b5.
Enable 'BLM change of cell in use' reset of INT is located at: 0x006, b4.
(set to 1 to enable option for reset).
Other causes of an INT reset: DFCO, PE, open loop.
PID:
The PID part of all this is:
Proportional: This is the Proportional Term described above.
Integral: This is the Integrator or INT term mentioned above.
Derivative: There is either not one used, or the resets of the INT
and Proportional Term could be considered. (note that the loop is
slow enough to not require a derivative term).
-eof-
RBob.
ECM Proportional Control
Robert Rauscher
7/9/2000, updated 1/23/02
Copyright 2000, 2002, Robert Rauscher, All Rights Reserved.
This is specific to the 747 ecm. However, the methods and madness
applies to many of the GM ecm's. (Use at your own risk, no guarantee
that any of this is correct).
Note:
Values such as 0x22D are eprom table addresses. These you
can easily change.
Values such as L0004 are RAM variables. These are used by
the ecm during it's processing.
INTRO:
The proportional and integral fuel correction logic is complex. There
is no way that I can cover all aspects of the ecm logic. This paper
is designed to give a working view of what the ecm is trying to
accomplish. I have also covered some changes that can help when
tuning hot street engine.
The proportional PID term starts with the O2 sensor reading, and ends
with a correction to the final calculated PW. The PID proportional term
always works in the opposite direction of the immediate rich/lean O2
sensor reading.
The purpose of the PID proportional controller term is twofold. First,
it is used to attain the desired AFR quickly. Second, it is used to
maintain the switching of the O2 sensor about the desired AFR point.
The PID controller term starts with the O2 Error Term. This is the
amplitude of error (or difference), between the O2 sensor and the
desired O2. This value is used as a lookup index for the actual
proportional error term.
The combination of the proportional term and the INT term is referred
to as the closed loop correction term (CLT). When in open loop, neither
the proportional term or the INT term as used.
There are two filtered O2 sensor values kept by the ECM. One is a fast
filtered value that follows the changing O2 sensor reading closely. The
second is a slow filtered value that lags the changing O2 sensor reading.
AIRFLOW TERM:
The volume of air moving through the engine is used for many of the
PID term lookups. The airflow is defined as grams of air, per second,
per cylinder, that is moving through the engine. The term is abbreviated
as gms/sec.
This term is calculated from the current MAP and current RPM. Volumetric
efficency is not used. In the '747 code, the max value is clipped at
64 gms/sec. The calculation is gms/sec = rpm * map * constant. It is
not the most accurate term, however, it is sufficent.
It is important to realise that it takes a finite amount of time for a
change in the PW to be reflected in the O2 sensor reading. This time
frame is referred to as the 'transport delay'. This delay varies according
to the airflow through the engine.
O2 ERROR BOUNDRY TABLES:
Two tables define the desired O2 sensor upper and lower limits. These
limits are used to decide whether the O2 sensor is either: below, above,
or within the limit window. These are the error boundries. These values
are the actual voltage output of the O2 sensor.
A third table defines the O2 sensor cross point.
The desired O2 Sensor tables are located at: 0x494, 0x499 and 0x49E. The
tables are indexed based on airflow, in gms/second. They are five-line
tables from 0 - 64 gms/sec, every 16 gms/sec.
0x494: Mean R/L Threshold, used to determine (somehow), the direction,
(and speed?), of the O2 sensor. End result is a moving richer, or
moving leaner bit (L000E, b6). Also used to determine the occurance
and an O2 x-count.
0x499: Rich O2 Threshold, used to define upper window boundry for
the O2 Error Term.
0x49E: Lean O2 Threshold, used to define lower window boundry for
the O2 Error Term.
The above table values are converted by: O2mv = TblVal * 4.34
(con't)
----------
!) The slow filtered O2 error term is the delta of the current slow
filtered O2 value and the proper window boundry, upper or lower. This
term is then used to lookup the proportional gain error from another
table.
The lower window boundry is used to calculate the error term whenever
the O2 Sensor is below that value. The upper window boundry is used
whenever the O2 Sensor is above that value.
This error value is then used to lookup various proportional values. If
the Slow Filtered O2 value is within the window, no proportional
correction takes place (prop term = 0).
When at idle, defined by L0002, b7 == 1, the above tables will have
a bias added to them. The effect is to lower the AFR for a more stable
idle. This value is located at: 0x2F7. (remember this one).
The flag at L0008, b1, (rich/lean) is set with a O2 sensor higher than
the upper window boundry. That bit is reset with an O2 sensor lower
than the lower window boundry.
If the O2 sensor is within the window, the bit is not changed.
PROPORTIONAL ERROR TERM:
Once the slow filtered error term is calculated, it is used as a
lookup index into the proportional gain table at: 0x4A8.
Another lookup is done for a proportional multiplier term, indexed
by airflow in gms/sec, at: 0x4C7.
The two above terms are multiplied together, divided by 256 and
the result is used as the adjustment to the CLT term.
The math:
PropTerm = (Gain @ 0x4A8[O2err] * FlowGain @ 0x4C7[gms/sec]) / 256.
This makes the FlowGain (@ 0x4C7), dictate a percentage of the gain
table (@ 0x4A8). The end result will always be lower then the starting
gain term.
To create the CLT, the proportional term is either subtracted, or added
to the INT term. If the O2 sensor is lean, the prop term is added to the
INT. If the O2 sensor is rich, the prop term is subtracted from the INT
term. The result is the CLT term.
The CLT term is then used to adjust the PW calculation.
For highly tuned engines (IE: hot street stuff), the proportional
gains can to too high. The effect is the engine surging under steady
state cruising. Reducing the gain and multiplier values can reduce
this problem. The values in these tables can sometimes be cut in half.
PROPORTIONAL DURATION TERM:
For the proportional duration term, lookups are done using the same
indexes as the prop-gain. The slow filtered O2 error term is used as
a lookup index into the proportional duration table at: 0x4B5.
Another lookup is done for a proportional duration offset term, indexed
by airflow in gms/second, at: 0x4C2.
The results of the lookups are added together for the proportional
duration term.
The prop duration does not change the prop gain except to clear it.
(I hope I get this correct) the prop gain is calc'd 40 times a second
against the current O2 error level. The prop gain can change each time
it is re-calc'd. Same with the prop duration. It is re-calc'd 40 times
a second. If the prop duration timer expires the prop gains are cleared
(zero'd) for that pass. Of course 25 msec later (40 Hz) the prop gains
are re-calc'd and reapplied.
The prop duration timer is cleared whenever an O2 x-cnt occurs.
Now it gets tricky. As long as the prop duration timer has expired AND
the O2 error level is less then that required to move the INT the prop
gains are held at zero. And note in the cal how the prop gains are
very small with a small O2 error level. So how much of a difference
does it make to zero out the gains that are already minor?
Now even if the prop duration timer has expired as long as the O2 error
level is enough to move the INT the prop gains will still be applied.
The end result is that the prop duration has very little effect on
the whole scheme of things.
AFR:
The upper and lower R/L threshold tables can be used to move the
basic AFR. As they form the O2 Error Window, by raising the table values
toward the richer side, the overall engine AFR can be pushed toward
the rich side (lowered AFR).
This is important to understand, these three tables define the overall
AFR when in closed loop. The proportional term is always trying to
move the current O2 sensor toward these table boundries.
(con't)
----------
INTEGRATOR:
The INT seems to follow the proportional term, however, it does not.
The INT moves independent of the proportional term. The INT is updated
whenever an O2 sensor x-count does not occur within a certain timeframe.
Even with the proportional gains set to 0, the INT will still move.
Movement of the INT takes place whenever the slow filtered O2 error
term exceeds the value at: 0x2F4, which is typically 4, along with the
INT delay timer expiring without any x-counts.
As you look at the fueling cal & code it is apparent that the airflow
through the engine is used quite a bit. In the '747 this term as grams
of air per second is not accurate. The calcuation used is quick and
simple. It does provide a usable relative value.
It is interesting to note that the gms/sec term is used to denote two
different items: the airflow (as a transport delay term) and the PW.
The higher the airflow the lower the transport delay and the greater
the PW.
When the gms/sec term is used to lookup the INT delay it is as the
transport delay.
When the gms/sec term is used to lookup the proportional gain
multiplier it is as the PW. The larger the PW the greater the prop
gain required to change the AFR.
The integrator delay is required to prevent overshoot and oscillation
of the fueling. The delay is to give the O2 sensor time to see and
respond to the change in fueling (an INT change). It takes a finite
amount of time for the change in injector PW (change in amount of
fuel) to travel through the engine and out the exhaust. There is also
a delay within the O2 sensor.
The table at $48F, INT delay vs airflow, has less delay as the airflow
increases. If the O2 sensor position is moved further downstream this
delay needs to be increased. This is the transport delay term.
The table at $4CC, INT delay vs O2 error, has a two fold function. The
first is to deal with the response rate of the O2 sensor. With a large
O2 error level the sensor will be at the bottom or top of the ZS shaped
O2 sensor response curve. Large delays are required. As the O2 sensor
starts to get into the upright portion of the response curve the INT
action is sped up.
In the second case this table can also provide a derivative term to
the PID loop. In the case of the ASDZ cal this is true. As the O2
error decreases the INT delay is increased. This effectively stops
the integrator from updating. Thereby putting the brakes on INT
fueling changes.
STOICH:
The value labeled 'stoich' needs to match the O2 sensor AFR switch
point. On the '747, this value is located at: 0x2AA. The value is 147,
for 14.7 AFR.
Conjecture: This stoich value, plus the R/L O2 error boundries, define
the O2 sensor output levels. This ties the O2 sensor calibration into
the PW equation.
As the R/L O2 Error Boundries define actual O2 sensor stoich switch
point in output volts. The 14.7 AFR switch point of the O2 sensor is
now 'calibrated' into the PW calculation.
If a different fuel is used, with say a stoich value of 16.1, by
placing the value of 161 at 0x2AA, the PW is again calibrated for
that fuel. If you now want to command the ecm to change the PW enough
for a 15.3 AFR, by using 153 in the PW calculation, the PW will
be increased the proper amount to produce that AFR (in open loop).
Remember that when in closed loop, the stoich value is used in
the PW calculation. In open loop, the desired AFR is used in the
PW calculation (say, when it's 5 degrees out, and the engine is
first started, the desired AFR might be 9.0).
Another example: Say a new O2 sensor was developed, for gasoline,
that costs $3.00. Good deal. However, the stoich switch point output
voltage is at 625mV, opposed to the current sensors switch point of 450mV.
By changing the R/L O2 error boundry table values, this new O2 sensor
can be calibrated for the PW calculation. Instead of the tables
straddling the 450mV value, set the table values to straddle the new
625mV O2 sensor value.
IDLE:
When in idle, the proportional gain and the proportional duration
use specific values. The prop gain is at: 0x2F9, and the prop duration
is at: 0x2F8. These replace the table lookups at: 0x4C7 and 0x4B5,
respectively.
For a rumpity-rump engine, it helps to set the idle prop term low.
This reduces/eliminates proportional action. This can have the effect
of smoothing the idle.
Also, do not forget about the O2 error bias value at: 0x2F7. This
value can be used to decrease the AFR at idle. Again, for a rumpity
engine, it can calm down the idle.
RESET's:
A proportional gain and duration reset take place whenever the INT is
reset. It is also reset whenever an O2 x-count is logged. The most common
cause of an INT reset, is the BLM 'cell in use' changing. There is an
option to have the INT reset on an accel enrichment (pump shot). An INT
reset is the setting of the integrator to it's mid-point (128). This
is where no integrator fuel correction is made.
Enable 'pump shot' reset of INT is located at: 0x006, b5.
Enable 'BLM change of cell in use' reset of INT is located at: 0x006, b4.
(set to 1 to enable option for reset).
Other causes of an INT reset: DFCO, PE, open loop.
PID:
The PID part of all this is:
Proportional: This is the Proportional Term described above.
Integral: This is the Integrator or INT term mentioned above.
Derivative: There is either not one used, or the resets of the INT
and Proportional Term could be considered. (note that the loop is
slow enough to not require a derivative term).
-eof-
RBob.
Last edited by RBob; 01-19-2007 at 07:32 AM. Reason: Automerged Doublepost
#13
that is a great paper and ive printed it and read it many times to try and let it sink in to my thick skull and i think its getting there. but what is the explanation of why there is so many different values for different bins? im sure cat type and o2 location and other things will affect these values. so why in a stock 305 bin is the values different than a stock 350 bin from same model year truck? i assume the cat type and o2 location is the same, maybe not. if i leave the value at location 48DD in the $0d mask, which is stoich afr at 14.7, than change the o2 constants, am trying to set the constants to maintain the 14.7 with my engine combanation? you paper states:
AFR:
The upper and lower R/L threshold tables can be used to move the
basic AFR. As they form the O2 Error Window, by raising the table values
toward the richer side, the overall engine AFR can be pushed toward
the rich side (lowered AFR).
This is important to understand, these three tables define the overall
AFR when in closed loop. The proportional term is always trying to
move the current O2 sensor toward these table boundries.
and also this:
STOICH:
The value labeled 'stoich' needs to match the O2 sensor AFR switch
point. On the '747, this value is located at: 0x2AA. The value is 147,
for 14.7 AFR.
Conjecture: This stoich value, plus the R/L O2 error boundries, define
the O2 sensor output levels. This ties the O2 sensor calibration into
the PW equation.
As the R/L O2 Error Boundries define actual O2 sensor stoich switch
point in output volts. The 14.7 AFR switch point of the O2 sensor is
now 'calibrated' into the PW calculation.
If a different fuel is used, with say a stoich value of 16.1, by
placing the value of 161 at 0x2AA, the PW is again calibrated for
that fuel. If you now want to command the ecm to change the PW enough
for a 15.3 AFR, by using 153 in the PW calculation, the PW will
be increased the proper amount to produce that AFR (in open loop).
Remember that when in closed loop, the stoich value is used in
the PW calculation. In open loop, the desired AFR is used in the
PW calculation (say, when it's 5 degrees out, and the engine is
first started, the desired AFR might be 9.0).
Another example: Say a new O2 sensor was developed, for gasoline,
that costs $3.00. Good deal. However, the stoich switch point output
voltage is at 625mV, opposed to the current sensors switch point of 450mV.
By changing the R/L O2 error boundry table values, this new O2 sensor
can be calibrated for the PW calculation. Instead of the tables
straddling the 450mV value, set the table values to straddle the new
625mV O2 sensor value.
so by changing the o2 constants without changing the stoich value in the bin, am i acyually changing my target afr? thanks.
AFR:
The upper and lower R/L threshold tables can be used to move the
basic AFR. As they form the O2 Error Window, by raising the table values
toward the richer side, the overall engine AFR can be pushed toward
the rich side (lowered AFR).
This is important to understand, these three tables define the overall
AFR when in closed loop. The proportional term is always trying to
move the current O2 sensor toward these table boundries.
and also this:
STOICH:
The value labeled 'stoich' needs to match the O2 sensor AFR switch
point. On the '747, this value is located at: 0x2AA. The value is 147,
for 14.7 AFR.
Conjecture: This stoich value, plus the R/L O2 error boundries, define
the O2 sensor output levels. This ties the O2 sensor calibration into
the PW equation.
As the R/L O2 Error Boundries define actual O2 sensor stoich switch
point in output volts. The 14.7 AFR switch point of the O2 sensor is
now 'calibrated' into the PW calculation.
If a different fuel is used, with say a stoich value of 16.1, by
placing the value of 161 at 0x2AA, the PW is again calibrated for
that fuel. If you now want to command the ecm to change the PW enough
for a 15.3 AFR, by using 153 in the PW calculation, the PW will
be increased the proper amount to produce that AFR (in open loop).
Remember that when in closed loop, the stoich value is used in
the PW calculation. In open loop, the desired AFR is used in the
PW calculation (say, when it's 5 degrees out, and the engine is
first started, the desired AFR might be 9.0).
Another example: Say a new O2 sensor was developed, for gasoline,
that costs $3.00. Good deal. However, the stoich switch point output
voltage is at 625mV, opposed to the current sensors switch point of 450mV.
By changing the R/L O2 error boundry table values, this new O2 sensor
can be calibrated for the PW calculation. Instead of the tables
straddling the 450mV value, set the table values to straddle the new
625mV O2 sensor value.
so by changing the o2 constants without changing the stoich value in the bin, am i acyually changing my target afr? thanks.
#14
Moderator
iTrader: (1)
Join Date: Mar 2002
Location: Chasing Electrons
Posts: 18,401
Likes: 0
Received 215 Likes
on
201 Posts
Car: check
Engine: check
Transmission: check
that is a great paper and ive printed it and read it many times to try and let it sink in to my thick skull and i think its getting there. but what is the explanation of why there is so many different values for different bins? im sure cat type and o2 location and other things will affect these values. so why in a stock 305 bin is the values different than a stock 350 bin from same model year truck? i assume the cat type and o2 location is the same, maybe not. if i leave the value at location 48DD in the $0d mask, which is stoich afr at 14.7, than change the o2 constants, am trying to set the constants to maintain the 14.7 with my engine combanation? . . .
so by changing the o2 constants without changing the stoich value in the bin, am i acyually changing my target afr? thanks.
so by changing the o2 constants without changing the stoich value in the bin, am i acyually changing my target afr? thanks.
Differences between 305 & 350 cal's may be from chamber design, timing, and heat differences. This is an area where a fly on the wall at GM would be helpful. It may even have to do with fuel mileage.
so by changing the o2 constants without changing the stoich value in the bin, am i actually changing my target afr?
In closed loop the actual AFR is defined by the O2 window. The stoich value will still be used in the PW calculation. The INT/BLM will move to change the PW and the resulting AFR.
RBob.
#16
I feel that there is one point here that has'nt been clearly made concerning O2 sensors. Contrary to popular belief, O2 sensors do not measure AFR but actually measure Lambda or the stoichiometric value of the fuel, any fuel. Whether you are running gasoline or pure Methanol, stoich is stoich and our O2 sensors happen to define stoich as 450mV for whatever fuel is in use. Say for example that for whatever reason you decided to run pure Methanol in your vehicle. Your O2 sensor would still report stoich as 450mV only now the correct stoich value should be 6.45:1 AFR. This is the only value that would need to be changed in the calibration to run this fuel. By moving the O2 thresholds, you are defining where the stoich value reported by the O2 sensor is which is most often determined by the type of O2 sensor used (heated or non-heated) and the placement of the sensor in the exhaust stream. EGT has an effect on the sensors output. I hope this makes sense.
I own an '03 Tahoe that is flex fuel capable. It has a sensor that measures the oxygen content of the fuel itself and reports this value to the PCM. Knowing this value, the PCM can determine alchohol content in the fuel and adjust the stoich AFR accordingly. There is a table in the calibration for "Stoich AFR vs Alchohol Content". That is the only table that is different
(fuel wise) for flex fuels. HTH
I own an '03 Tahoe that is flex fuel capable. It has a sensor that measures the oxygen content of the fuel itself and reports this value to the PCM. Knowing this value, the PCM can determine alchohol content in the fuel and adjust the stoich AFR accordingly. There is a table in the calibration for "Stoich AFR vs Alchohol Content". That is the only table that is different
(fuel wise) for flex fuels. HTH
#17
Member
Join Date: Oct 2005
Location: Dyer, In
Posts: 330
Likes: 0
Received 0 Likes
on
0 Posts
Car: 91 Camaro RS
Engine: 355 Vortec
Transmission: 700r4
Axle/Gears: 3.42
I feel that there is one point here that has'nt been clearly made concerning O2 sensors. Contrary to popular belief, O2 sensors do not measure AFR but actually measure Lambda or the stoichiometric value of the fuel, any fuel. Whether you are running gasoline or pure Methanol, stoich is stoich and our O2 sensors happen to define stoich as 450mV for whatever fuel is in use. Say for example that for whatever reason you decided to run pure Methanol in your vehicle. Your O2 sensor would still report stoich as 450mV only now the correct stoich value should be 6.45:1 AFR. This is the only value that would need to be changed in the calibration to run this fuel. By moving the O2 thresholds, you are defining where the stoich value reported by the O2 sensor is which is most often determined by the type of O2 sensor used (heated or non-heated) and the placement of the sensor in the exhaust stream. EGT has an effect on the sensors output. I hope this makes sense.
I own an '03 Tahoe that is flex fuel capable. It has a sensor that measures the oxygen content of the fuel itself and reports this value to the PCM. Knowing this value, the PCM can determine alchohol content in the fuel and adjust the stoich AFR accordingly. There is a table in the calibration for "Stoich AFR vs Alchohol Content". That is the only table that is different
(fuel wise) for flex fuels. HTH
I own an '03 Tahoe that is flex fuel capable. It has a sensor that measures the oxygen content of the fuel itself and reports this value to the PCM. Knowing this value, the PCM can determine alchohol content in the fuel and adjust the stoich AFR accordingly. There is a table in the calibration for "Stoich AFR vs Alchohol Content". That is the only table that is different
(fuel wise) for flex fuels. HTH
#19
Supreme Member
iTrader: (2)
Join Date: Jan 2002
Location: Moorestown, NJ
Posts: 9,962
Likes: 0
Received 3 Likes
on
3 Posts
Car: 88 Camaro SC
Engine: SFI'd 350
Transmission: TKO 500
Axle/Gears: 9-bolt w/ 3.23's
i am new to tuning and i havent been able to understand these o2 points myself. i just did a 305 to 350 swap in my 95 truck and i started with the appropriate bin file for a 95 with a 350 but the oc thresholds are much different. ill atach a pic of the 350 bin and my original 305 bin.you will see the 305 bin has higher o2 voltages. so if these numbers are set from gm based on cat type and o2 sensor location, shouldnt i leave these the same wether its a 305 or 350? i currently have them at the lower values of the 350 bin but maybe like this i am hurting my cat? ive read alot about this and cant realy get an answer to where these should be. thanks.
#20
im sorry guys, im not grasping it yet. let me ask you a question that might help me. lets say right now my bin file has the rich, lean and r/l mean thresholds at 434mv. and the stoich value at location 48DD is 14.7. lets also say i verified this afr with a wb. now if i only changed all 3 threshold tables to 850mv, which lets say equals 13.0afr. but i leave the stoich value at 48dd at 14.7. what might my afr equal on a wb now? would the o2 mv now be swinging around 850mv? now example 2, what if i left my 3 o2 constant tables at 434mv but changed the afr at 48dd location to 6.5afr. would the o2 data now read as maintaning the 434mv point, but the pw would be mor than doubled to try and maintain the 6.5 afr? thanks for being patient with me guys.
#21
Member
Join Date: Oct 2005
Location: Dyer, In
Posts: 330
Likes: 0
Received 0 Likes
on
0 Posts
Car: 91 Camaro RS
Engine: 355 Vortec
Transmission: 700r4
Axle/Gears: 3.42
#22
Moderator
iTrader: (1)
Join Date: Mar 2002
Location: Chasing Electrons
Posts: 18,401
Likes: 0
Received 215 Likes
on
201 Posts
Car: check
Engine: check
Transmission: check
im sorry guys, im not grasping it yet. let me ask you a question that might help me. lets say right now my bin file has the rich, lean and r/l mean thresholds at 434mv. and the stoich value at location 48DD is 14.7. lets also say i verified this afr with a wb. now if i only changed all 3 threshold tables to 850mv, which lets say equals 13.0afr. but i leave the stoich value at 48dd at 14.7. what might my afr equal on a wb now? would the o2 mv now be swinging around 850mv?
Once in closed loop the ECM will target the 850mV O2 switch point. To accomplish this the INT will rise with the BLM rising shortly thereafter. Once the O2 is switching about the 850mV point the WB will show the (theoretical) AFR of 13.0.
The INT/BLM will need to increase as the PW calculation is targeting 14.7:1 AFR. Once the INT & BLM (which are now > 128) are factored into the PW the correct amount of fuel will be delivered.
now example 2, what if i left my 3 o2 constant tables at 434mv but changed the afr at 48dd location to 6.5afr. would the o2 data now read as maintaning the 434mv point, but the pw would be mor than doubled to try and maintain the 6.5 afr? thanks for being patient with me guys.
Initially the PW will be larger, as it is targeting the 6.5 AFR. Once in closed loop the ECM will target the 434mV O2 switch point. With that the INT & BLM will start to fall until the O2 switch point matches the calibration of 434 mV.
Another way to look at it: during closed loop operation the stoich AFR is used in the PW calculation. This is to create an initial PW. This PW is then modified with the INT & BLM values (and proportional gains), to create the PW used at the injectors.
The feedback from the O2 sensor is used by the ECM to aim at the target AFR. The fueling will be changed (via INT/BLM) to move the PW to the targeted O2 switch point (the window).
The bottom line is that in closed loop operation the ECM is always targeting the O2 switch point(s).
RBob.
Once in closed loop the ECM will target the 850mV O2 switch point. To accomplish this the INT will rise with the BLM rising shortly thereafter. Once the O2 is switching about the 850mV point the WB will show the (theoretical) AFR of 13.0.
The INT/BLM will need to increase as the PW calculation is targeting 14.7:1 AFR. Once the INT & BLM (which are now > 128) are factored into the PW the correct amount of fuel will be delivered.
now example 2, what if i left my 3 o2 constant tables at 434mv but changed the afr at 48dd location to 6.5afr. would the o2 data now read as maintaning the 434mv point, but the pw would be mor than doubled to try and maintain the 6.5 afr? thanks for being patient with me guys.
Initially the PW will be larger, as it is targeting the 6.5 AFR. Once in closed loop the ECM will target the 434mV O2 switch point. With that the INT & BLM will start to fall until the O2 switch point matches the calibration of 434 mV.
Another way to look at it: during closed loop operation the stoich AFR is used in the PW calculation. This is to create an initial PW. This PW is then modified with the INT & BLM values (and proportional gains), to create the PW used at the injectors.
The feedback from the O2 sensor is used by the ECM to aim at the target AFR. The fueling will be changed (via INT/BLM) to move the PW to the targeted O2 switch point (the window).
The bottom line is that in closed loop operation the ECM is always targeting the O2 switch point(s).
RBob.
#23
Supreme Member
iTrader: (2)
Join Date: Jan 2002
Location: Moorestown, NJ
Posts: 9,962
Likes: 0
Received 3 Likes
on
3 Posts
Car: 88 Camaro SC
Engine: SFI'd 350
Transmission: TKO 500
Axle/Gears: 9-bolt w/ 3.23's
Depends on the ECM/PCM. TBI stuff is all AFR based with the O2 voltage (lambda) based. The ECM sets the target to be 14.7 AFR and then goes into closed loop and the P/T fueling is then based off of the O2.
#24
Member
iTrader: (1)
Join Date: Jan 2004
Location: Ventura, Ca
Posts: 319
Likes: 0
Received 0 Likes
on
0 Posts
Car: 69 Camaro
Engine: LS1 converted to LS6
Transmission: 4L70
Axle/Gears: 12bolt 3:42
I know this has been covered before but if I want my car to lean out at idle then richen up when the cam kicks in which parameters would be used? I lowered my constants based on an old Traxion post. Maybe I am the only one but my headaches have been at idle. One issue is leaning it out THEN getting my AFR's to match my commanded AFR's. Same issue with WOT. I want my AFR's to follow my commanded. So I need a leaner AFR for idle then richer at higher RPM's.
#25
ok i sort of understand now let me ask you this. you said this:
Once in closed loop the ECM will target the 850mV O2 switch point. To accomplish this the INT will rise with the BLM rising shortly thereafter. Once the O2 is switching about the 850mV point the WB will show the (theoretical) AFR of 13.0.
The INT/BLM will need to increase as the PW calculation is targeting 14.7:1 AFR. Once the INT & BLM (which are now > 128) are factored into the PW the correct amount of fuel will be delivered.
in this situation would you still adjust the ve tables to try and get 128 blms? you said(Once the INT & BLM (which are now > 128) are factored into the PW the correct amount of fuel will be delivered.) by corect amount of fuel do you mean the correct amount to get 850mv swing point?
if im understanding this. it seems almost impossible to play with o2 switch points without a wb. right now i have my o2 constants at 434mv because thats what was in the stock 350 bin. and my blms are close right now. but how am i to know what afr im maintaining? im just trying to get blms to 128. without a wb, if i wanted to change this to lets say 650mv. my blms would rise. i would have to re-adjust my ve table to get blms back to 128 and i would be right back where i was? how far out in left field am i? thanks.
Once in closed loop the ECM will target the 850mV O2 switch point. To accomplish this the INT will rise with the BLM rising shortly thereafter. Once the O2 is switching about the 850mV point the WB will show the (theoretical) AFR of 13.0.
The INT/BLM will need to increase as the PW calculation is targeting 14.7:1 AFR. Once the INT & BLM (which are now > 128) are factored into the PW the correct amount of fuel will be delivered.
in this situation would you still adjust the ve tables to try and get 128 blms? you said(Once the INT & BLM (which are now > 128) are factored into the PW the correct amount of fuel will be delivered.) by corect amount of fuel do you mean the correct amount to get 850mv swing point?
if im understanding this. it seems almost impossible to play with o2 switch points without a wb. right now i have my o2 constants at 434mv because thats what was in the stock 350 bin. and my blms are close right now. but how am i to know what afr im maintaining? im just trying to get blms to 128. without a wb, if i wanted to change this to lets say 650mv. my blms would rise. i would have to re-adjust my ve table to get blms back to 128 and i would be right back where i was? how far out in left field am i? thanks.
#26
Moderator
iTrader: (1)
Join Date: Mar 2002
Location: Chasing Electrons
Posts: 18,401
Likes: 0
Received 215 Likes
on
201 Posts
Car: check
Engine: check
Transmission: check
I know this has been covered before but if I want my car to lean out at idle then richen up when the cam kicks in which parameters would be used? I lowered my constants based on an old Traxion post. Maybe I am the only one but my headaches have been at idle. One issue is leaning it out THEN getting my AFR's to match my commanded AFR's. Same issue with WOT. I want my AFR's to follow my commanded. So I need a leaner AFR for idle then richer at higher RPM's.
For cruise, different ECMs do things differently. Some set the O2 switch points vs gms/sec airflow, others use MAP (load). I actually prefer the MAP based table.
Regarding the commanded AFR vs actual while in closed loop: you will need to set up the O2 switch points to the closed loop desired AFR. Then that is it. In closed loop the ECM always uses the desired AFR for the calculations.
RBob.
#27
Supreme Member
iTrader: (2)
Join Date: Jan 2005
Location: Hurst, Texas
Posts: 9,980
Received 384 Likes
on
328 Posts
Car: 1983 G20 Chevy
Engine: 305 TPI
Transmission: 4L60
Axle/Gears: 14 bolt with 3.07 gears
Like I said previously, the O2 sensor calibrations are best done by seat of the pants and graphing the integrator. With a steady BLM reading, with a converter ideally you want the a/f ratio cycling slightly above and below stoich. Too much of a swing for too long in either direction causes a noticeable surge and loss of power. The target a/f ratio alows you to alter your a/f ratio a small percentage in either direction. The E10 gasoline used in Texas has a stoichiometric ratio of about 14.1-14.2:1 (depending on the calculation). By ONLY changing the stoichiometric point, I was able to bring the fueling into shape on my stock TBI 350 1991 G20 Van. My 1983 is a bag of worms though with the cam, headers, intake, different heads, much larger injectors, MAF sensor, etc.
#28
Supreme Member
iTrader: (1)
Join Date: Jan 2002
Location: garage
Posts: 4,432
Likes: 0
Received 1 Like
on
1 Post
Engine: 3xx ci tubo
Transmission: 4L60E & 4L80E
Re: O2 swing points
RBob's paper applies to the $8D AUJP code also. The only difference is that one table is RPM based. It is a great write up. Maybe put it under a universal tuning topic? I noticed between the $8D AXXF 305ci bin and $8D AUJP 350ci bin that the AUJP has very high gains for the PROP correction term and tends to cause the AFR to bounce (over-correct) a lot more than the AXXF bin.
#29
Supreme Member
iTrader: (2)
Join Date: Jan 2005
Location: Hurst, Texas
Posts: 9,980
Received 384 Likes
on
328 Posts
Car: 1983 G20 Chevy
Engine: 305 TPI
Transmission: 4L60
Axle/Gears: 14 bolt with 3.07 gears
Re: O2 swing points
RBob's paper applies to the $8D AUJP code also. The only difference is that one table is RPM based. It is a great write up. Maybe put it under a universal tuning topic? I noticed between the $8D AXXF 305ci bin and $8D AUJP 350ci bin that the AUJP has very high gains for the PROP correction term and tends to cause the AFR to bounce (over-correct) a lot more than the AXXF bin.
#30
Member
iTrader: (1)
Join Date: Jan 2004
Location: Ventura, Ca
Posts: 319
Likes: 0
Received 0 Likes
on
0 Posts
Car: 69 Camaro
Engine: LS1 converted to LS6
Transmission: 4L70
Axle/Gears: 12bolt 3:42
Re: O2 swing points
There are a couple of things that I am interested that have not been mentioned in this thread that may affect the final settings. First is running a WBO2 sensor in place of the original. I have a Innovate sensor running in place of the stock sensor with the SAUJP code. The sensors are supposed to have a much faster reaction time. Also I am not nor do I have to have any cats. I am not interested in the OL CL discussion as I will run CL. Anybody have any suggestions on what to set with this setup? I would think that the R/L threashold points should be tightened up by raising the lower boundary and lowering the upper boundary after deciding on what AFR to run the car at for instance say it runs best at 14.1. The next question would be what about the Init Delay. It is mentioned that it has to do with the sensor location. Again does a faster sensor affect this? I am running my sensor in the header collector.
#31
Supreme Member
iTrader: (1)
Join Date: Jan 2002
Location: garage
Posts: 4,432
Likes: 0
Received 1 Like
on
1 Post
Engine: 3xx ci tubo
Transmission: 4L60E & 4L80E
Re: O2 swing points
The INT seems to follow the proportional term, however, it does not.
The INT moves independent of the proportional term. The INT is updated
whenever an O2 sensor x-count does not occur within a certain timeframe.
Even with the proportional gains set to 0, the INT will still move.
The INT moves independent of the proportional term. The INT is updated
whenever an O2 sensor x-count does not occur within a certain timeframe.
Even with the proportional gains set to 0, the INT will still move.
The BPW correction is BPW_CORR1 = (uncorr_BPW * BLM) +/- (INT_CORR +/- PROP_CORR).
Then 1/2 of the PROP_CORR is added to the BPW_CORR1 term later on. This makes the final BPW correction: BPW_CORR2 = BPW_CORR1 +/- (.5*PROP_CORR).
The other difference is that one PROP_DURATION table is RPM based instead of airflow based. This is a table that is used for the amount of time the PROP_TERM is not forced to zero.
Last edited by junkcltr; 10-11-2007 at 08:33 AM. Reason: Corrected table def.
#32
Supreme Member
iTrader: (1)
Join Date: Jan 2002
Location: garage
Posts: 4,432
Likes: 0
Received 1 Like
on
1 Post
Engine: 3xx ci tubo
Transmission: 4L60E & 4L80E
Re: O2 swing points
There are a couple of things that I am interested that have not been mentioned in this thread that may affect the final settings. First is running a WBO2 sensor in place of the original. I have a Innovate sensor running in place of the stock sensor with the SAUJP code. The sensors are supposed to have a much faster reaction time. Also I am not nor do I have to have any cats. I am not interested in the OL CL discussion as I will run CL. Anybody have any suggestions on what to set with this setup? I would think that the R/L threashold points should be tightened up by raising the lower boundary and lowering the upper boundary after deciding on what AFR to run the car at for instance say it runs best at 14.1. The next question would be what about the Init Delay. It is mentioned that it has to do with the sensor location. Again does a faster sensor affect this? I am running my sensor in the header collector.
You would need to get the S-curve for the simulated NBO2. Without it you can guess and tune, but it would be easier to have the curve in hand. If the S-curve is the same as a stock NBO2 for your vehicle then leave the params as stock if you like how it operates with at stock NBO2. You could tighten up the switch values if the S-curve is steep in the transition area. What fuel for 14.1 AFR? 10% ethanol should run there with the stock settings. For straight gas raise the upper/lower boundaries and the mid-point tables by 50mv and see how you like it. Adjust from there. Maybe try adding a little more INT DURATION delay for the relocated O2 sensor. Try .1sec and go from there.
EDIT: An interesting code mod. would be to use the 5.0 volt WBO2 input directly in a simple manner. Read the WBO2 (done with some hacs already) and then do a "coma" to invert it. Then use that as the NBO2 signal. A stock NBO2 rich mv is 0xFF in the code. The new WBO2 rich value will be a 0xFF in the code. In other words, ignore the 0-1v and 0-5v difference because the hardware and A/D takes care of that for you. The new O2 signal is a "very slow" S-curve looking NBO2. Adjust the mV tables accordingly. The $8D has a O2 error window table vs MAP that would allow leaner low MAP fuel AFRs and richer at higher MAP values. This might be better than using the WBO2 controller simulated NBO2.....maybe not?
Last edited by junkcltr; 10-10-2007 at 03:33 PM.
#33
Supreme Member
iTrader: (1)
Join Date: Jan 2002
Location: garage
Posts: 4,432
Likes: 0
Received 1 Like
on
1 Post
Engine: 3xx ci tubo
Transmission: 4L60E & 4L80E
Re: O2 swing points
After thinking about using the linear WBO2 input as the NBO2 value (code mod.) I realize that the value does not need the "coma". Simply renaming the upper and lower O2 switch tables backwards would also do it.
#34
Supreme Member
iTrader: (1)
Join Date: Apr 2004
Location: Browns Town
Posts: 3,178
Likes: 0
Received 3 Likes
on
3 Posts
Car: 86 Monte SS (730,$8D,G3,AP,4K,S_V4)
Engine: 406 Hyd Roller 236/242
Transmission: 700R4 HomeBrew, 2.4K stall
Axle/Gears: 3:73 Posi, 7.5 Soon to break
Re: O2 swing points
IMO, To keep the functionality of the error codes it would be best to do the invert. Failure mode could revert back to using the NB input.
The WB may need to be heavily averaged (at the controller) so individual cylinder pulses do not cause undesired results by crossing the window boundaries etc.
Some guys have tried to use the NB sim output, I've never tried so i'm not sure how the ECM responds to it.
The WB may need to be heavily averaged (at the controller) so individual cylinder pulses do not cause undesired results by crossing the window boundaries etc.
Some guys have tried to use the NB sim output, I've never tried so i'm not sure how the ECM responds to it.
#35
Member
Join Date: May 2004
Location: Grand Rapids, MI
Posts: 105
Likes: 0
Received 0 Likes
on
0 Posts
Car: '90 Formula
Engine: L98 --> Ramjet
Transmission: Auto
Re: O2 swing points
---------------------------------RBob paper ------ $8D/AUJP
Prop Step Size Gain vs. o2 error ---- 0x4A8 ---------- L84DE
Prop Step Size Gain vs. airflow ----- 0x4C7 ---------- L84CF
Prop Duration vs. o2 error ---------- 0x4B5 ---------- L84EA
Prop Duration vs. airflow/RPM??? --- 0x4C2 ---------- L84C6 or L84D8???
INT Delay vs. o2 error --------------$4CC ----------- L8504
INT Delay vs. airflow ---------------$48F ------------ L84BD
As you can see, I got confused on one of the Duration terms. At first, I thought it was the airflow table at L84C6 in AUJP. But after reading junkcltr's comments above, it looks like it's the RPM table at L84D8. The RPM table in the hac I have has it labeled as "Step Size Gain vs. RPM" which makes it more confusing.
Can anyone shed some light on this? Do I have the other terms cross-referenced properly? I'm finally tuning my hot street setup and I think these terms will be useful. Any help would be greatly appreciated!
#36
Supreme Member
iTrader: (1)
Join Date: Jan 2002
Location: garage
Posts: 4,432
Likes: 0
Received 1 Like
on
1 Post
Engine: 3xx ci tubo
Transmission: 4L60E & 4L80E
Re: O2 swing points
The first title is the original AUJP hac title
The second title is by junkcltr. Notice they are called PROP_GAIN, PROP_DURATION, INT_DURATION.
The description follows the title..
The second title is by junkcltr. Notice they are called PROP_GAIN, PROP_DURATION, INT_DURATION.
The description follows the title..
Code:
;***************************************** ;* FUEL PID PARAMS ;***************************************** ;-------------------------------------------------------- ; Non-Idle O2 (SLOW) R/L UPPER THRESHOLD vs MAP ; This table is the upper O2 mV threshold for ; non-idle proportional, integral Closed Loop Correction. ; If filtered O2 mV is greater than table value then ; PI correction is calculated and applied to inector BPW. ; ; If UPPER_THRESHOLD < O2_RAW_FILTERED < LOWER_THRESHOLD ; Apply Closed Loop correction ; else ; do not apply closed loop correction (error is within the window for no correct) ; ; TBL = o2 VOLTS * 256 ; ; The O2 mV correction value is lowered as MAP increases ; Example: MAP = 40 KPA->.594v, O2 is reading .600 volts (rich), then correction is made to lean out BPW ; MAP = 80 KPA->.516v, O2 is reading .550 volts (rich), then correction is made to lean out BPW ; This causes MORE LEAN closed loop BPW corrections as MAP increases ; The overall window is moved LEANER as MAP increases (same as mid-point table) ;----------------------------------------------------------- ; SLOW O2 mvdc MAP ; VAL o2 Kpa ;----------------------------- L84A2: .byte 0x8C ;=140 547 20 .byte 0x94 ;=148, 578 30 .byte 0x98 ;=152, 594 40 .byte 0x98 ;=152, 594 50 .byte 0x94 ;=148, 578 60 .byte 0x90 ;=144, 563 70 .byte 0x84 ;=132, 516 80 .byte 0x80 ;=128, 500 90 .byte 0x7D ;=125, 488 100 ;--------------------------------------------------------- ; ;-------------------------------------------------------- ; Non-Idle O2 (SLOW) R/L LOWER THRESHOLD vs MAP ORG L84AB ; This table is the lower O2 mV threshold for ; non-idle proportional, integral Closed Loop Correction. ; If filtered O2 mV is less than table value then ; PI correction is calculated and applied to inector BPW. ; ; If UPPER_THRESHOLD < O2_RAW_FILTERED < LOWER_THRESHOLD ; Apply Closed Loop correction ; else ; do not apply closed loop correction (error is within the window for no correct) ; ; TBL = o2 VOLTS * 256 ; The O2 mV correction value is lowered as MAP increases ; Example: MAP = 40 KPA->.516v, O2 is reading .450 volts (lean), then correction is made to richen BPW ; MAP = 80 KPA->.438v, O2 is reading .400 volts (rich), then correction is made to richen BPW ; This causes MORE LEAN closed loop BPW corrections as MAP increases ; The overall window is moved LEANER as MAP increases (same as mid-point table) ;---------------------------------------------------------- ; mvdc MAP ; VAL o2 Kpa ;---------------------------- L84AB: .byte 0x78 ;=120, 469 20 .byte 0x80 ;=128, 500 30 .byte 0x84 ;=132, 516 40 .byte 0x84 ;=132, 516 50 .byte 0x80 ;=128, 500 60 .byte 0x7C ;=124, 484 70 .byte 0x70 ;=112, 438 80 .byte 0x6D ;=109, 426 90 .byte 0x6A ;=106, 414 100 ;-------------------------------------------------------- ; ;-------------------------------------------------------- ; Non-Idle O2 (FAST) sensor mV mid-point value ; L849C (53 mV) is added to this table value to create a window ; if (table+L849C) < O2 < (table-L849C) ; Set 0x0047 Rich/Lean bit ; ; This value is used to set the O2 ready bit ; and the rich/lean bit_6 of 0x0047 ; It is also used for the ALDL rich/lean counter and ; PROP counter. ; ; TBL = o2 VOLTS * 256 ; ; The O2 mV correction value is lowered as MAP increases ; This moves the Rich/Lean window lower (LEANER) as MAP increases ; This causes the Rich bit to be set more often for a constant O2 AFR ; The stock AUJP has a mid-point max. change of (25/256) = 100 mV ; So the high KPA is targeting 100mV less than low KPA (MORE LEAN) ; The overall window is moved LEANER as MAP increases (same as O2 mV CL Correction tables) ;---------------------------------------------------------- ; mvdc MAP ; VAL o2 Kpa ;---------------------------- L84B4: .byte 0x82 ;=130, 507 20 .byte 0x8A ;=138, 539 30 .byte 0x8E ;=142, 555 40 .byte 0x8E ;=142, 555 50 .byte 0x8A ;=138, 539 60 .byte 0x86 ;=134, 523 70 .byte 0x7A ;=122, 477 80 .byte 0x78 ;=120, 469 90 .byte 0x76 ;=118, 461 100 ;-------------------------------------------------------- ; ;-------------------------------------------------------- ; INTEGRATER MULT. VS AIR_FLOW (USED FOR INTEGRATOR TIMER) ; INT DURATION term used for fuel correction ; This value is multiplied by the 0x8504 lookup value ; It decreases this value by the 0x8504 GAIN value ; ; The INT_TERM is applied to the fuel BPW correction when an INT_TIMER TIMEOUT occurs. ; A larger SEC in this table will make INT fuel corrections happen LESS frequent. ; The INT_TERM will be updated SLOWER with larger SEC values. ; Slow airflow allows for a longer time between INT_TERM updates. ; Slow airflow takes longer to get to the O2 sensor...so the ECM waits longer. ; ; ; TBL = SEC * 80 ;-------------------------------------------------------- ; VAL sec's AIR FLOW ;---------------------------- L84BD: .byte 0x30 ;=48, 0.600 0 .byte 0x2C ;=44, 0.550 8 .byte 0x18 ;=24, 0.300 16 .byte 0x16 ;=22, 0.275 24 .byte 0x14 ;=20, 0.250 32 .byte 0x12 ;=18, 0.225 40 .byte 0x10 ;=16, 0.200 48 .byte 0x0E ;=14, 0.175 56 .byte 0x0C ;=12, 0.150 64 ;-------------------------------------------------------- ; ;-------------------------------------------------------- ; SLOW O2 FILTER COEF vs FLOW ; ; TBL = MULT * 256 ;-------------------------------------------------------- ; VAL MULT FLOW ;---------------------------- L84C6: .byte 0x10 ;=16, 0.063 0 .byte 0x18 ;=24, 0.094 8 .byte 0x20 ;=32, 0.125 16 .byte 0x24 ;=36, 0.141 24 .byte 0x28 ;=40, 0.156 32 .byte 0x2C ;=44, 0.172 40 .byte 0x2C ;=44, 0.172 48 .byte 0x2C ;=44, 0.172 56 .byte 0x2C ;=44, 0.172 64 ;-------------------------------------------------------- ; ;-------------------------------------------------------- ; SLOW O2 PROPORTIONAL STEP SIZE GAIN vs AIRFLOW ; PROP GAIN term used for fuel correction ; This value is multiplied by the 0x84DE lookup value ; It decreases this value by 0x84DE value GAIN of (TBL/256) => .0039 to .99 ; ; The PROP_TERM is constant vs AIRFLOW. ; ; (0 - 1) * 256 ;-------------------------------------------------------- ; VAL STEP FLOW ;----------------------------- L84CF: .byte 0xFF ;=255 99.6 0 .byte 0xFF ;=255 99.6 8 .byte 0xFF ;=255 99.6 16 .byte 0xFF ;=255 99.6 24 .byte 0xFF ;=255 99.6 32 .byte 0xFF ;=255 99.6 40 .byte 0xFF ;=255 99.6 48 .byte 0xFF ;=255 99.6 56 .byte 0xFF ;=255 99.6 64 ;-------------------------------------------------------- ; ;-------------------------------------------------------- ; SLOW O2 PROPORTIONAL STEP SIZE GAIN vs RPM ; PROP DURATION term used for fuel correction ; ; This value is added to the 0x84EA lookup value. ; Together they created the PROP_TIMER duration. ; If a FAST_O2 cross count occurs, the PROP_TIMER is cleared. ; If a PROP_TIMER TIMEOUT occurs and the O2 error is not large ; enough to cause an INT_TERM udpate, then the PROP_TERM is cleared. ; The PROP_TERM is applied if the PROP_TIMER is non-zero and the SLOW_O2 error is ; large enough regardless of the INT_TERM update. ; ; TBL = SEC * 80 ;-------------------------------------------------------- ; VAL SEC RPM ;----------------------------- L84D8: .byte 0x14 ;=20 0.25 400 .byte 0x0C ;=12 0.15 800 .byte 0x08 ;= 8 0.10 1200 .byte 0x04 ;= 4 0.05 1600 .byte 0x03 ;= 3 0.04 2000 .byte 0x02 ;= 2 0.03 2400 ;-------------------------------------------------------- ; ;-------------------------------------------------------- ; SLOW O2 PROPORTIONAL STEP SIZE vs SLOW_O2 ERROR ; PROP GAIN term used for fuel correction ; This value is multiplied by the 0x84CF lookup value ; It decreases the 0x84CF value by (TBL/256) => .0039 to .99 ; ; As SLOW_O2 error increases, the GAIN is increased to make the PROP_TERM larger. ; This causes a larger fuel BPW correction. More O2 error needs more BPW correction. ; ; TBL = GAIN * 256 ;----------------------------------------------------------- ; VAL BIN ERROR GAIN ;-------------------------------- L84DE: .byte 0x04 ;= 4 4 0 .0156 .byte 0x04 ;= 4 4 8 .0156 .byte 0x04 ;= 4 4 16 .0156 .byte 0x04 ;= 4 4 24 .0156 .byte 0x04 ;= 4 4 32 .0156 .byte 0x04 ;= 4 4 40 .0156 .byte 0x08 ;= 8 8 48 .0312 .byte 0x0C ;=12 12 56 .0468 .byte 0x0C ;=12 12 64 .0468 .byte 0x0C ;=12 12 72 .0468 .byte 0x0C ;=12 12 80 .0468 .byte 0x0C ;=12 12 88 .0468 ;-------------------------------------------------------- ; ;-------------------------------------------------------- ; SLOW O2 PROPORTIONAL STEP DURATION vs SLOW_O2 ERROR ; PROP DURATION term used for fuel correction ; ; This value is added to the 0x84D8 lookup value. ; ; TBL = SEC * 80 ;-------------------------------------------------------- ; VAL SEC O2_ERROR ;------------------------------ L84EA: .byte 0x04 ;= 4 0.05 0 .byte 0x04 ;= 4 0.05 8 .byte 0x04 ;= 4 0.05 16 .byte 0x04 ;= 4 0.05 24 .byte 0x04 ;= 4 0.05 32 .byte 0x08 ;= 8 0.10 40 .byte 0x0C ;= 12 0.15 48 .byte 0x18 ;= 24 0.30 56 .byte 0x20 ;= 32 0.40 64 .byte 0x40 ;= 64 0.80 72 .byte 0x80 ;=128 1.60 80 .byte 0xF0 ;=240 3.00 88 ;-------------------------------------------------------- ; ;-------------------------------------------------------- ; R/L OFFSET vs COOLANT ; 14 LINES ; ; TBL = COUNTS ;------------------------------------------------------- ; VAL BIN Deg C ;----------------------------- L84F6: .byte 0x00 ;= 0 00 -40 .byte 0x00 ;= 0 00 -28 .byte 0x00 ;= 0 00 -16 .byte 0x00 ;= 0 00 - 4 .byte 0x00 ;= 0 00 8 .byte 0x00 ;= 0 00 20 .byte 0x00 ;= 0 00 32 .byte 0x00 ;= 0 00 44 .byte 0x00 ;= 0 00 56 .byte 0x00 ;= 0 00 68 .byte 0x00 ;= 0 00 80 .byte 0x00 ;= 0 00 92 .byte 0x00 ;= 0 00 104 .byte 0x00 ;= 0 00 116 ;------------------------------------------------------- ; ;------------------------------------------------------- ; INTEGRATOR DELAY MULT vs ERROR (USED FOR INTEGRATOR TIMER) ; INT DURATION term used for fuel correction ; This value is multiplied by the 0x84BD lookup value. ; It decreases the 0x84BD value by (TBL/256) => .0039 to .99. ; As SLOW_O2 error increases, the GAIN decreases. This causes ; the INT_TERM to be updated more frequent because the INT_TIMER ; duration period is decreased which causes a sooner TIMEOUT. ; ; TBL = GAIN * 256 ;------------------------------------------------------ ; VAL ERROR GAIN ;----------------------------- L8504: .byte 0xFF ;=255 0 .99 .byte 0xFF ;=255 8 .99 .byte 0xFF ;=255 16 .99 .byte 0xFF ;=255 24 .99 .byte 0x80 ;=128 32 .50 .byte 0x40 ;= 64 40 .25 .byte 0x40 ;= 64 48 .25 .byte 0x40 ;= 64 56 .25 .byte 0x40 ;= 64 64 .25 .byte 0x40 ;= 64 72 .25 .byte 0x40 ;= 64 80 .25 .byte 0x40 ;= 64 88 .25 ;------------------------------------------------------
#37
Supreme Member
iTrader: (1)
Join Date: Jan 2002
Location: garage
Posts: 4,432
Likes: 0
Received 1 Like
on
1 Post
Engine: 3xx ci tubo
Transmission: 4L60E & 4L80E
Re: O2 swing points
Prop Step Size Gain vs. o2 error ---- 0x4A8 ---------- L84DE
Prop Step Size Gain vs. airflow ----- 0x4C7 ---------- L84CF
Prop Duration vs. o2 error ---------- 0x4B5 ---------- L84EA
Prop Duration vs. RPM ------------- 0x4C2 ---------- L84D8
INT Delay vs. o2 error --------------$4CC ----------- L8504
INT Delay vs. airflow ---------------$48F ------------ L84BD
EDIT: For anyone wondering what SLOW O2 and FAST O2 refers to in the hacs:
The ECM maintains two filtered versions of the O2 sensor data. The slowly changing filtered O2 value is called SLOW O2 and uses a small filter coefficient. The fast changing filtered O2 value is called FAST O2 and uses a large filter coefficient. In other words, the FAST O2 value looks a lot like then actual O2 value. The SLOW O2 value looks like a heavily averaged O2 value.....a very smooth O2 value.
Last edited by junkcltr; 07-31-2008 at 12:39 PM.
#38
Senior Member
Join Date: Aug 2004
Location: Shippensburg, PA
Posts: 680
Received 0 Likes
on
0 Posts
Car: 1981 Buick Century Wagon
Engine: 87 GN engine
Transmission: 2004R
Axle/Gears: 3.73
Re: O2 swing points
AFR:
The upper and lower R/L threshold tables can be used to move the
basic AFR. As they form the O2 Error Window, by raising the table values
toward the richer side, the overall engine AFR can be pushed toward
the rich side (lowered AFR).
This is important to understand, these three tables define the overall
AFR when in closed loop. The proportional term is always trying to
move the current O2 sensor toward these table boundries.
The upper and lower R/L threshold tables can be used to move the
basic AFR. As they form the O2 Error Window, by raising the table values
toward the richer side, the overall engine AFR can be pushed toward
the rich side (lowered AFR).
This is important to understand, these three tables define the overall
AFR when in closed loop. The proportional term is always trying to
move the current O2 sensor toward these table boundries.
My wagon has an innovate LC-1 sorta perminately hooked up to the EBL, along with a brand new as of today heated delco o2. I have the commanded c/l afr to be 14.7. The wb is reading 14.2 or so, and while running a VE learn, it is trying to add 3 throughout the VE tables to richen it up. (even though it doesn't have to be) I have already re-cal-ed the wb, and I get consistant readings.
I am thinking I have to change the settings of the o2 tables. I am using the stock EBL tables since i got so far out of wack the last couple of chip burns. lol. Anyhow, I am interpreting that I need to lower the swing points so the ecm stops wanting to add fuel. Therefore getting the blms and int to stop swinging so much when the car is already richer than 14.7
Did that make sense, I had a long day.
----------
also, idle afr and the blm's seem to be fine, it's when I an on the highway cruising down the road. I would like to get this right sop i can enable lean cruise. The BLM's say 139-142 and the WB report 14.7, and the ebl never goes into lean cruise.
Last edited by liquidh8; 07-31-2008 at 09:19 PM. Reason: Automerged Doublepost
#39
TGO Supporter
Join Date: Aug 2001
Location: NJ/PA
Posts: 1,008
Likes: 0
Received 0 Likes
on
0 Posts
Car: Yes
Engine: Many
Transmission: Quite a few
Re: O2 swing points
just remember, you are in PA, if you are using any gas with ethanol, you are probably have an afr of more than 14.7, probably why the wideband reads 14.2.
#40
Moderator
iTrader: (1)
Join Date: Mar 2002
Location: Chasing Electrons
Posts: 18,401
Likes: 0
Received 215 Likes
on
201 Posts
Car: check
Engine: check
Transmission: check
Re: O2 swing points
A WB that uses 14.7:1 as stoich will report 14.7:1 when using ethanol and at stoich. Even though the real AFR is 9.0:1
Even a NB sensor will switch at stoich. With 100% ethanol at 9.0:1 AFR, the NB will still switch at 450 mV.
When using a WB this is where using the lamdba value comes in handy. It is based on excess air (lean side) or excess fuel (rich side).
So a lambda of .82 is 12.6:1 at a stoich of 14.7, and is 7.38:1 when stoich is 9.0
Both 12.6:1 and 7.38:1 AFR is a little rich of best power for the appropriate fuel. However, using lambda they both report .82
Which when using AFR, the 12.6:1 will be reported as 12.6:1 (with a fuel stoich of 14.7:1). And the 100% ethanol will report about the same value of 12.6:1 (not exactly the same value, but we won't go into this here).
In closing, the NB and WB sensors read and report a lambda value. It is up to the controller unit to convert that value to an AFR value. Also note that not all WB units use 14.7:1 as stoich.
RBob.
#41
TGO Supporter
Join Date: Aug 2001
Location: NJ/PA
Posts: 1,008
Likes: 0
Received 0 Likes
on
0 Posts
Car: Yes
Engine: Many
Transmission: Quite a few
Re: O2 swing points
yeah, you are right....I think I had the right idea there, just didn't word it right. I think part of the issue he is seeing is how each of the controllers is seeing the lambda value maybe?
#42
Supreme Member
iTrader: (2)
Join Date: Jul 2003
Location: Dallas, TX area
Posts: 3,205
Likes: 0
Received 0 Likes
on
0 Posts
Car: 91 Formula WS6 (Black, T-Tops)
Engine: 383 MiniRam (529 HP, 519 TQ - DD2K)
Transmission: Built '97 T56, Pro 5.0, CF-DF
Axle/Gears: 4.11 posi Ford 9"
Re: O2 swing points
This is an area that we need to be careful about. The NB and WB sensors we use report stoich as stoich. The fuel composition doesn't matter. An example would be running straight ethanol which has a stoich of 9.0:1
A WB that uses 14.7:1 as stoich will report 14.7:1 when using ethanol and at stoich. Even though the real AFR is 9.0:1
Even a NB sensor will switch at stoich. With 100% ethanol at 9.0:1 AFR, the NB will still switch at 450 mV.
RBob.
A WB that uses 14.7:1 as stoich will report 14.7:1 when using ethanol and at stoich. Even though the real AFR is 9.0:1
Even a NB sensor will switch at stoich. With 100% ethanol at 9.0:1 AFR, the NB will still switch at 450 mV.
RBob.
I'm not questioning you on this, you know far more than I - I'm just trying to better understand it. The way I read this kind of contradicts the idea of changing to a 14.2 or 14.3 target AFR for those of use stuck running 10% ethanol, so now I'm cornfuzikated all over again!
#43
Moderator
iTrader: (1)
Join Date: Mar 2002
Location: Chasing Electrons
Posts: 18,401
Likes: 0
Received 215 Likes
on
201 Posts
Car: check
Engine: check
Transmission: check
Re: O2 swing points
The reason to change the AFR to 14.2, 14.3 for 10% ethanol is to bring the VE table back into alignment. What it does is to increase the injector PW to add the additional required fuel. And, sets up the calibration to a higher degree of accuracy.
If the engine was tuned for BLMs of 128 on straight gasoline and a stoich calibration setting of 14.7:1. Then E10 is pumped into the empty tank, the BLMs will increase to add the additional required fuel.
Which could cause an un-knowing tuner to increase the VE to bring the BLMs back in line.
More fuel is required as E10 has some oxygen in it, along with having a lower stoich ratio.
By setting the ECM calibration stoich value to 14.2:1, the BLMs will return to 128. Without having to change the VE tables (much anyway). And, any other ECM fuel calculation based on the stoich value will also change in the proper proportion. The $8D mask for PE/WOT fuel is one that is based on the stoich AFR. It is a percentage change from it.
Stoich in combustion: this is when the exhaust has no oxygen and no hydrocarbons in it (simplistically speaking, when in reality there is some of each).
This is what the O2 sensors see when the exhaust is stoich. Doesn't matter if the AFR is 9.0:1 (E100) or 14.7:1 (gasoline of yester-year).
Another way to look at it is that the O2 sensor measures the exhaust. As long as there are 9 parts air to 1 part fuel (E100) going in, the O2 will report stoich. Stoich being a lambda of 1
RBob.
If the engine was tuned for BLMs of 128 on straight gasoline and a stoich calibration setting of 14.7:1. Then E10 is pumped into the empty tank, the BLMs will increase to add the additional required fuel.
Which could cause an un-knowing tuner to increase the VE to bring the BLMs back in line.
More fuel is required as E10 has some oxygen in it, along with having a lower stoich ratio.
By setting the ECM calibration stoich value to 14.2:1, the BLMs will return to 128. Without having to change the VE tables (much anyway). And, any other ECM fuel calculation based on the stoich value will also change in the proper proportion. The $8D mask for PE/WOT fuel is one that is based on the stoich AFR. It is a percentage change from it.
Stoich in combustion: this is when the exhaust has no oxygen and no hydrocarbons in it (simplistically speaking, when in reality there is some of each).
This is what the O2 sensors see when the exhaust is stoich. Doesn't matter if the AFR is 9.0:1 (E100) or 14.7:1 (gasoline of yester-year).
Another way to look at it is that the O2 sensor measures the exhaust. As long as there are 9 parts air to 1 part fuel (E100) going in, the O2 will report stoich. Stoich being a lambda of 1
RBob.
#44
Senior Member
Join Date: Aug 2004
Location: Shippensburg, PA
Posts: 680
Received 0 Likes
on
0 Posts
Car: 1981 Buick Century Wagon
Engine: 87 GN engine
Transmission: 2004R
Axle/Gears: 3.73
Re: O2 swing points
I haven't changed the VE tables as of yet. When I first put the EBL in the wagon, (when it first came out lol) I did a WB VE learn. Then i went to the BLM VE learn. But it has always been "off". The WB VE earn lowers the VE tables a bit to bring the AFR to commanded 14.7 AFR. But when I do the BLM learn, it adds fuel, making the WB read 14.0 to 14.2, even though I have the bin set for 14.7. I was tempted to try and set the bin for 15.0 stoich, and see what happens.
I also never thought about the 10% ethenal here in eastern PA. But I can't remember how long we have had it here.
I was just thinking the NB02 setting were off, making me run a bit richer.
It's all about the perfecrt mileage, lol. j/k
I also never thought about the 10% ethenal here in eastern PA. But I can't remember how long we have had it here.
I was just thinking the NB02 setting were off, making me run a bit richer.
It's all about the perfecrt mileage, lol. j/k
#45
Moderator
iTrader: (1)
Join Date: Mar 2002
Location: Chasing Electrons
Posts: 18,401
Likes: 0
Received 215 Likes
on
201 Posts
Car: check
Engine: check
Transmission: check
Re: O2 swing points
One thing is that the E level in the fuel varies. I've measured 5% in 87 octane and 7% in 93 octane.
Setting the stoich point in the BIN to 15.0 will cause the BLMs to be higher.
RBob.
Setting the stoich point in the BIN to 15.0 will cause the BLMs to be higher.
RBob.
#46
Supreme Member
iTrader: (1)
Join Date: Apr 2004
Location: Browns Town
Posts: 3,178
Likes: 0
Received 3 Likes
on
3 Posts
Car: 86 Monte SS (730,$8D,G3,AP,4K,S_V4)
Engine: 406 Hyd Roller 236/242
Transmission: 700R4 HomeBrew, 2.4K stall
Axle/Gears: 3:73 Posi, 7.5 Soon to break
Re: O2 swing points
Two things,
1.) This should be added to the hac text as well.
2.) The clarification on the table name for
Prop Duration vs. RPM ------------- 0x4C2 ---------- L84D8
You confirmed this to be RPM table, not airflow but the text in the code you posted still relfects airflow.
Can you reconfirm that.
Thx,
1.) This should be added to the hac text as well.
Code:
;-------------------------------------------------------- ; R/L OFFSET vs COOLANT ; 14 LINES ; ; Will Subtract from values L84B4 (FAST O2 R/L THRESHOLD vs MAP, Xcount, direction window) ; Will Subtract from values L84A2 (UPPER THRESHOLD FOR SLOW O2 R/L vs MAP, INT control) ; Will Subtract from values L84AB (LOWER THRESHOLD FOR SLOW O2 R/L vs MAP, INT control) ;
Prop Duration vs. RPM ------------- 0x4C2 ---------- L84D8
You confirmed this to be RPM table, not airflow but the text in the code you posted still relfects airflow.
Can you reconfirm that.
Thx,
#47
Supreme Member
iTrader: (1)
Join Date: Jan 2002
Location: garage
Posts: 4,432
Likes: 0
Received 1 Like
on
1 Post
Engine: 3xx ci tubo
Transmission: 4L60E & 4L80E
Re: O2 swing points
Two things,
1.) This should be added to the hac text as well.
2.) The clarification on the table name for
Prop Duration vs. RPM ------------- 0x4C2 ---------- L84D8
You confirmed this to be RPM table, not airflow but the text in the code you posted still relfects airflow.
Can you reconfirm that.
Thx,
1.) This should be added to the hac text as well.
Code:
;-------------------------------------------------------- ; R/L OFFSET vs COOLANT ; 14 LINES ; ; Will Subtract from values L84B4 (FAST O2 R/L THRESHOLD vs MAP, Xcount, direction window) ; Will Subtract from values L84A2 (UPPER THRESHOLD FOR SLOW O2 R/L vs MAP, INT control) ; Will Subtract from values L84AB (LOWER THRESHOLD FOR SLOW O2 R/L vs MAP, INT control) ;
Prop Duration vs. RPM ------------- 0x4C2 ---------- L84D8
You confirmed this to be RPM table, not airflow but the text in the code you posted still relfects airflow.
Can you reconfirm that.
Thx,
#48
Supreme Member
iTrader: (1)
Join Date: Apr 2004
Location: Browns Town
Posts: 3,178
Likes: 0
Received 3 Likes
on
3 Posts
Car: 86 Monte SS (730,$8D,G3,AP,4K,S_V4)
Engine: 406 Hyd Roller 236/242
Transmission: 700R4 HomeBrew, 2.4K stall
Axle/Gears: 3:73 Posi, 7.5 Soon to break
Re: O2 swing points
NVM,
I think my mind is playing tricks on me!
Jp
I think my mind is playing tricks on me!
Jp
#49
Member
Join Date: May 2006
Posts: 152
Likes: 0
Received 0 Likes
on
0 Posts
Car: 1990 Corvette
Engine: 415
Transmission: six speed
Axle/Gears: Dana44 3.73
Re: O2 swing points
Most of what applies to one GM ECM applies to ALL GM ecms in its own way. They are all VERY similar, even the CCC Q-Jet. The TBI and even CPI gains in my PCM were working poorly with my TPI setup. I found the gains for a 1993 LT1 F-car. Put them in place, what a difference.
Hi
would you mind asking, if you can post a picture of your gains here, so that we could have a look at them..just for reference?
thank you
#50
Re: O2 swing points
Cool reading here!
I'am having a hard time finding bellow mentioned values in the ARAP 6E hac. Anyone, who could give me some pointers?
Thanks!
I'am having a hard time finding bellow mentioned values in the ARAP 6E hac. Anyone, who could give me some pointers?
Thanks!
This is specific to the 747 ecm. However, the methods and madness
applies to many of the GM ecm's. (Use at your own risk, no guarantee
that any of this is correct).
The math:
PropTerm = (Gain @ 0x4A8[O2err] * FlowGain @ 0x4C7[gms/sec]) / 256.
This makes the FlowGain (@ 0x4C7), dictate a percentage of the gain
table (@ 0x4A8). The end result will always be lower then the starting
gain term.
To create the CLT, the proportional term is either subtracted, or added
to the INT term. If the O2 sensor is lean, the prop term is added to the
INT. If the O2 sensor is rich, the prop term is subtracted from the INT
term. The result is the CLT term.
The CLT term is then used to adjust the PW calculation.
For highly tuned engines (IE: hot street stuff), the proportional
gains can to too high. The effect is the engine surging under steady
state cruising. Reducing the gain and multiplier values can reduce
this problem. The values in these tables can sometimes be cut in half.
RBob.
applies to many of the GM ecm's. (Use at your own risk, no guarantee
that any of this is correct).
The math:
PropTerm = (Gain @ 0x4A8[O2err] * FlowGain @ 0x4C7[gms/sec]) / 256.
This makes the FlowGain (@ 0x4C7), dictate a percentage of the gain
table (@ 0x4A8). The end result will always be lower then the starting
gain term.
To create the CLT, the proportional term is either subtracted, or added
to the INT term. If the O2 sensor is lean, the prop term is added to the
INT. If the O2 sensor is rich, the prop term is subtracted from the INT
term. The result is the CLT term.
The CLT term is then used to adjust the PW calculation.
For highly tuned engines (IE: hot street stuff), the proportional
gains can to too high. The effect is the engine surging under steady
state cruising. Reducing the gain and multiplier values can reduce
this problem. The values in these tables can sometimes be cut in half.
RBob.