I never noticed this until I started graphing my datalogs. Does this look suspicious to anyone else ? What would make my O2 sensor freak out, as it were.
I've been chasing a surging problem at idle . . .

I've been chasing a surging problem at idle . . .

Supreme Member
Between each exhaust valve pulse in the exhaust is slight vac, so the O2 jumps rich to lean for each pulse of gas in the exhaust pipe.
The initial smoothness is as it warms up, and then when up to temp., you see all the swings.
The initial smoothness is as it warms up, and then when up to temp., you see all the swings.
Thats too bad -- i thought I had finally figured out what was causing the idle to hunt or surge. Though, now that i think about it -- this is happening while still in open loop so I guess it wouldn't have any influence over fueling or spark anyway.
it just seems all my logged data values : Final Spark Advance, Pulse Width, MAP, IAC, and RPM's begin to exhibit this behavior at the same time, while the idle is nice and all values are much more consistent before the O2 starts swinging.
*sigh*-- back to the drawing board
This is what im talking about :
it just seems all my logged data values : Final Spark Advance, Pulse Width, MAP, IAC, and RPM's begin to exhibit this behavior at the same time, while the idle is nice and all values are much more consistent before the O2 starts swinging.
*sigh*-- back to the drawing board
This is what im talking about :

RednGold86Z
Supreme Member
close
That's not the O2 freaking out, that's what it does when closed loop is on and going rich lean rich lean. BUT, your PW is swinging way too far, from something, but the O2 is just reading the switching from lean to rich during what appears to be some surging. Ideally, your PW and IAC should sit fairly still with the PW oscillating by about 2-4% in response to the O2 sensor, and the IAC maybe moving some in response also as the idle power changes slightly with A/F.
I'm not gonna try to guess what's causing your oscillation.
I'm not gonna try to guess what's causing your oscillation.
Quote:
Originally posted by RednGold86Z
That's not the O2 freaking out, that's what it does when closed loop is on and going rich lean rich lean. BUT, your PW is swinging way too far, from something, but the O2 is just reading the switching from lean to rich during what appears to be some surging. Ideally, your PW and IAC should sit fairly still with the PW oscillating by about 2-4% in response to the O2 sensor, and the IAC maybe moving some in response also as the idle power changes slightly with A/F.
I'm not gonna try to guess what's causing your oscillation.
thanks, but the data used for these graphs were all generated during open loop mode Originally posted by RednGold86Z
That's not the O2 freaking out, that's what it does when closed loop is on and going rich lean rich lean. BUT, your PW is swinging way too far, from something, but the O2 is just reading the switching from lean to rich during what appears to be some surging. Ideally, your PW and IAC should sit fairly still with the PW oscillating by about 2-4% in response to the O2 sensor, and the IAC maybe moving some in response also as the idle power changes slightly with A/F.
I'm not gonna try to guess what's causing your oscillation.

is there anyway to get a clearer picture of what could be causing the oscillation ?
Supreme Member
Quote:
Originally posted by adambros
is there anyway to get a clearer picture of what could be causing the oscillation ?
Do you have just a print-out?. The graph, IMO, is too cluttered to get much out of.Originally posted by adambros
is there anyway to get a clearer picture of what could be causing the oscillation ?
JP86SS
Supreme Member
close
Just throwing some thought.
If this is open loop then it would be relating possibly two things to me. If this from a cold startup into warmed idle,
Then it would point me to a temperature modifier somewhere is out of wack possibly or CTS/IAT has a real bad spot.
If this is the same type of thing when already warm then it is time related. not sure where to start looking on that.
Just looking at the plot it appears to me that it is from a cold start, the O2 warms up, timer waits and then enters closed loop control. I say this because alot of parameters seem to change at this point. not just a single area. Not to question or doubt what you have said but are you certain its staying OL?
Jp
If this is open loop then it would be relating possibly two things to me. If this from a cold startup into warmed idle,
Then it would point me to a temperature modifier somewhere is out of wack possibly or CTS/IAT has a real bad spot.
If this is the same type of thing when already warm then it is time related. not sure where to start looking on that.
Just looking at the plot it appears to me that it is from a cold start, the O2 warms up, timer waits and then enters closed loop control. I say this because alot of parameters seem to change at this point. not just a single area. Not to question or doubt what you have said but are you certain its staying OL?
Jp
Quote:
Originally posted by Grumpy
Do you have just a print-out?. The graph, IMO, is too cluttered to get much out of.
heres the full log in a csv format -- you can see closed loop mode is not enabled until row 345, almost 7 mins after cold start, while the oscillating starts well before that.Originally posted by Grumpy
Do you have just a print-out?. The graph, IMO, is too cluttered to get much out of.
If anyone wants to hear or see the surge in action heres a short quick time movie I made of the problem. (~3Mb)
Any suggestions, or ideas on where to start looking or what to do next are greatly appreciated.
RednGold86Z
Supreme Member
close
Maybe try smoothing out the spark advance in that entire area. Could also try to set the minimum air higher - i.e. open the throttle blades more, and reset TPS if required. Could also try some more open loop fuel. If I were doing it, I'd try to knock the problem out of the ball park first by going to extremes on each individual area (spark, fuel, air) one at a time, and once you figure out what fixes it, back off until the problem returns, and then take a step back in the right direction. If nothing fixes it, it could be a hardware issue, such as injectors (or just the injector PW being too small).
Senior Member
http://www.diy-efi.org/gmecm/papers/747fuel.txt
Read it and then ask questions.
Paper was written by our own RBob. The PID for the o2 sensor needs to be adjusted to prevent over compensation of fuel. This is what you're experiencing.
Do another datalog after you've adjusted the PID duration tables. I put mine to 2/3 and it's solved my swinging idle and occasional lean tip in while cruising or leaving a complete stop when engine was in closed loop.
They are EXTREAMELY important to get TBI to run well in closed loop on a modified engine.
Read it and then ask questions.
Paper was written by our own RBob. The PID for the o2 sensor needs to be adjusted to prevent over compensation of fuel. This is what you're experiencing.
Do another datalog after you've adjusted the PID duration tables. I put mine to 2/3 and it's solved my swinging idle and occasional lean tip in while cruising or leaving a complete stop when engine was in closed loop.
They are EXTREAMELY important to get TBI to run well in closed loop on a modified engine.
Quote:
Originally posted by JPrevost
http://www.diy-efi.org/gmecm/papers/747fuel.txt
Read it and then ask questions.
Paper was written by our own RBob. The PID for the o2 sensor needs to be adjusted to prevent over compensation of fuel. This is what you're experiencing.
Do another datalog after you've adjusted the PID duration tables. I put mine to 2/3 and it's solved my swinging idle and occasional lean tip in while cruising or leaving a complete stop when engine was in closed loop.
They are EXTREAMELY important to get TBI to run well in closed loop on a modified engine.
That was very helpful, thanks.Originally posted by JPrevost
http://www.diy-efi.org/gmecm/papers/747fuel.txt
Read it and then ask questions.
Paper was written by our own RBob. The PID for the o2 sensor needs to be adjusted to prevent over compensation of fuel. This is what you're experiencing.
Do another datalog after you've adjusted the PID duration tables. I put mine to 2/3 and it's solved my swinging idle and occasional lean tip in while cruising or leaving a complete stop when engine was in closed loop.
They are EXTREAMELY important to get TBI to run well in closed loop on a modified engine.
**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.**
I've been searching through the 8746 .dsm for idle prop terms and the closest I could find are these. Am I on the right track here by reducing (by 2/3 - 1/2) these values ?
; ----------------------
; prop stuff
; ----------------------
LD286: FCB 9 ; prop duration for in idle
LD287: FCB 4 ; prop gain multiplier for idle
LD288: FCB 1 ; prop gain multiplier for idle
i halved the above values to the following :
LD286: FCB 5 ; prop duration for in idle
LD287: FCB 2; prop gain multiplier for idle
LD288: FCB 1 ; prop gain multiplier for idle
i still getting the surge during warmup. After closed loop enabled it seemed to settle down -- but soon after the SES light came on and WinALDL recorded a "Lean O2 Sensor Error -- Code 44"
here is a quickie graph of that :
I also came across this code snippet in the 8746.dsm
;O2 State Limits
LD24C: FCB 132 ; use when in idle, instead of indx lkup vs airflow
LD24D: FCB 159 ; use when in idle
LD24E: FCB 160 ; use when in idle
any comments ? i thought about replacing the original code block and experimenting with the O2 state limits during idle. Am i even getting warm ? The 8746 doesnt seem to have the PID duration tables jon spoke about.
LD286: FCB 5 ; prop duration for in idle
LD287: FCB 2; prop gain multiplier for idle
LD288: FCB 1 ; prop gain multiplier for idle
i still getting the surge during warmup. After closed loop enabled it seemed to settle down -- but soon after the SES light came on and WinALDL recorded a "Lean O2 Sensor Error -- Code 44"
here is a quickie graph of that :
I also came across this code snippet in the 8746.dsm
;O2 State Limits
LD24C: FCB 132 ; use when in idle, instead of indx lkup vs airflow
LD24D: FCB 159 ; use when in idle
LD24E: FCB 160 ; use when in idle
any comments ? i thought about replacing the original code block and experimenting with the O2 state limits during idle. Am i even getting warm ? The 8746 doesnt seem to have the PID duration tables jon spoke about.
Moderator
Quote:
Originally posted by adambros
I still getting the surge during warmup. After closed loop enabled it seemed to settle down -- but soon after the SES light came on and WinALDL recorded a "Lean O2 Sensor Error -- Code 44"
What did the INT and BLM do during this period of closed loop? They probably max'd out, which means that the VE table is low.Originally posted by adambros
I still getting the surge during warmup. After closed loop enabled it seemed to settle down -- but soon after the SES light came on and WinALDL recorded a "Lean O2 Sensor Error -- Code 44"
What is the basic engine setup? And cam, LDA makes a big difference here. Any exhaust leaks?
RBob.
Senior Member
Take a look at location LD3E3. That's the start of the tables that are explained in the PID article for the 7747.
It's all there. I personally didn't need to adjust the idle constants, just those tables vs air flow. Start with only 3/4 scale, then go to 2/3, then 1/2. 3/4 should be enough to notice a big difference.
It's all there. I personally didn't need to adjust the idle constants, just those tables vs air flow. Start with only 3/4 scale, then go to 2/3, then 1/2. 3/4 should be enough to notice a big difference.
During the period that the car was in closed loop mode the BLM's read between 136-139 and the INT wandered around the 128 - hitting a low of 119 and a high of 134.
Baisc engine setup :
350 SBC .30 over, Edelbrock Performer aluminum heads, Comp Hyd. Roller Cam 218/224 112 LSA, Speed Pro Hyperutectic pistons, 10:1 CR, Edelbrock Performer intake, 2bbl TBI 1-13/16" bores w/BBC injectors @16psi, coated Edelbrock headers, 3" exhaust.
I'll modify these tables now and see where that gets me.
Baisc engine setup :
350 SBC .30 over, Edelbrock Performer aluminum heads, Comp Hyd. Roller Cam 218/224 112 LSA, Speed Pro Hyperutectic pistons, 10:1 CR, Edelbrock Performer intake, 2bbl TBI 1-13/16" bores w/BBC injectors @16psi, coated Edelbrock headers, 3" exhaust.
Quote:
Originally posted by JPrevost
Take a look at location LD3E3. That's the start of the tables that are explained in the PID article for the 7747.
It's all there. I personally didn't need to adjust the idle constants, just those tables vs air flow. Start with only 3/4 scale, then go to 2/3, then 1/2. 3/4 should be enough to notice a big difference.
yep, there they are, thanks. I thought since my problem was occuring mainly at idle I should try those constants first. Originally posted by JPrevost
Take a look at location LD3E3. That's the start of the tables that are explained in the PID article for the 7747.
It's all there. I personally didn't need to adjust the idle constants, just those tables vs air flow. Start with only 3/4 scale, then go to 2/3, then 1/2. 3/4 should be enough to notice a big difference.
I'll modify these tables now and see where that gets me.
WHOOOOHOOOO ! Problem fixed . . . well 90 % anyway.
I reset all static values for in idle operation to stock values, then replaced the values in the gain vs O2 error to 16. Then the gain vs airfow is set to 16, 16, 32, 32, 32. This made a huge difference. Im happy to say, Im feelin like it was all worth it.
My first BIG step forward . . . i think a little more tailoring in these areas will get me to where I want to be. Thanks to everyone, especially JP and Rbob ! :hail:
I reset all static values for in idle operation to stock values, then replaced the values in the gain vs O2 error to 16. Then the gain vs airfow is set to 16, 16, 32, 32, 32. This made a huge difference. Im happy to say, Im feelin like it was all worth it.
My first BIG step forward . . . i think a little more tailoring in these areas will get me to where I want to be. Thanks to everyone, especially JP and Rbob ! :hail:
Senior Member
Glad we could help.
The stock closed loop code really only works on a completely stock car. Even then there's room for improvement.
You can actually tailor your closed loop AFR with those tables. On a hot summer day I wanted to pass emissions testing so I wanted to run richer than 14.7 to keep the NOx down (vortec heads, no egr, no air). Tweaking the tables and I was able to get the o2 to sit high (rich) more than it did low (lean). It looked like a square wave, worked like a charm
.
The stock closed loop code really only works on a completely stock car. Even then there's room for improvement.
You can actually tailor your closed loop AFR with those tables. On a hot summer day I wanted to pass emissions testing so I wanted to run richer than 14.7 to keep the NOx down (vortec heads, no egr, no air). Tweaking the tables and I was able to get the o2 to sit high (rich) more than it did low (lean). It looked like a square wave, worked like a charm
.
