Lean and Poor Idle Troubleshooting
I've gone through the Code 33 troubleshooting from the service manual. It led me to bad MAF. I replaced the MAF to no avail. Same numbers show up in logging and same issues persist. My most recent logs have sown a peculiar pattern after a certain point of warming up.
At about 105*F the ECM enters closed loop and the IAC will begin to drop. But as it does so, the engine speed drops too far nearly stalling out. IAC then opens up causing engine speed to go back up. It does this several times fluctuating further and further down in IAC counts. Base Pulse Width and Correction values fluctuate in response to this (or is it vice versa?). After this period, the BLM sky rockets and maxes out at 160.
This whole time the ECM lean/rich value is lean and O2 values rise from ~40 to an average of about 60. Those O2 values seem low compared to what I've seen on other forum discussions. Also, the O2 crosscount was sitting constant at 252 the entire time.
I've attached some pictures of the plots. All three are the same run with different values. The landscape picture is zoomed in on the area I discussed with the fluctuating IAC. I've got the .CSV file but I'm not sure of the best way to share it.
Issues:
Car will not idle normally on its own. Slowly dies out
Car will idle while setting minimum idle (IAC extended and unplugged)
Car will idle fine (aside from the issue described above) with the ALDL cable plugged in.
Its currently throwing a Code 33
Recent maintenance:
Biggest thing is that I've swapped in a T56 for the old 700R4.
Replaced MAF, MAF relays, and TPS
Reset minimum idle and TPS
I'm currently grasping at straws just searching for vacuum leaks... Thanks for any help!

zoomed in
From the BLM of 128 I would guess that you are in open loop mode. Can ALDLdroid display open/closed loop status? Maybe that's a side effect of 10K mode. I'm not sure exactly what happens in that mode except for the vague description in the shop manual.
I don't understand the "Base Pulse Correction" and "Base Pulse Width" values. Do you know what the units are? I would expect those values to be in milliseconds (ms). My car idles at about 2.2ms, for example. Your values don't make sense related to what I know about pulse width.
The O2 output should range from about 0.200 volts (200 millivolts) to about 0.800 volts. If your cross counts are not changing then either the engine is cold and the O2 sensor is not yet hot enough to operate (open loop mode). Or you're stuck in either a rich or lean condition. When you're in closed loop mode the cross counts should increment about once per second. They start at zero and count up to 255 (maximum value of an 8 bit number) and then reset to zero and start over. The main concept here is that they should be continuously changing.
Last edited by Cliff Harris; Nov 21, 2014 at 01:21 AM.
Thangs again for this help.
Your IAC counts jumping all over the place seems weird to me. I graphed the IAC counts of one of my Diacom runs from where I live to the post office that is about 1-1/2 miles away (it went into closed loop mode at frame number 1151):

My variations seem much less rapid than yours. I think it's because I was running at 8192 baud instead of 160 baud (see below). One thing to keep in mind about IAC counts is that the ECM uses "throttle follower" mode. It opens the IAC in sync with the TPS so that the engine does not stall when you take your foot off the gas pedal and the throttle blades slam shut. The IAC closes pretty rapidly so the engine idle won't be high when you come to a stop.
The best way to see IAC in action would be to start a cold engine and just let it idle. The IAC counts should start out pretty high (around 120, as seen in my graph) and then drop off gradually as the coolant comes up in temperature. I made the graphed run several years ago, so I don't know what I was doing with the car back then, but it looks like the frames from 0 to about 800 were just idling.
I have a copy of the 1227165_160.ads file. It's just a text file, so you can open it in any text editor. You might need to change the extension to .txt to do that. I use a Mac so I don't have those limitations.
According to the .ADS file, the Base Pulse Correction units are "Counts". I don't know what that means. It has no units defined for Base Pulse Width or Airflow. The O2 sensor reading is in mV. I checked the .ADS file against my disassembly of the ECM code and most of it checks out. The MAF units should be grams/second, but I don't know what the "dFactor" should be to make that work. There is a weird quirk in the 1227165 ECM: The original MAF was an AC Delco unit that put out a frequency that was proportional to air flow. When the Bosch MAF is used the output is a voltage from 0 to 5 volts that is proportional to air flow. The code translates the 0 to 5 volts into a frequency value and uses that.
One thing I think is weird is that one of the comments at the beginning says "160 Baud - No command". 160 baud is the default baud rate for the 1227165 ECM, but it will switch to 8192 baud if the scan software does the correct handshake with the ECM. Apparently this .ADS file doesn't support that.
Several years ago I measured my O2 sensor output while my car was idling. This oscilloscope screen shot shows what the O2 sensor output should look like. It varies between about 200 and 800mV. Each time it crosses a value I don't remember (but I believe is 450mV), the cross count is incremented (the arrow on the left points to zero volts and the vertical divisions are 200mV - the horizontal divisions are 500ms):
Last edited by Cliff Harris; Nov 22, 2014 at 03:14 AM.
So it looks like my IAC is responding as it should by decreasing as the coolant warms. The issue seems to be as it does decrease, something causes the car to stutter so it has to open up again to keep the car from stalling. Who knows if this has anything to do with the fact that the car won't idle without the ALDL plug connected... Maybe this is a better question for the Tech/Performance section?
http://tunerpro.net/forum/viewtopic.php?p=13715#13715
http://tunerpro.net/forum/viewtopic.php?p=13715#13715
It's actually spelled out in the code. This is directly from the original BUA "hac" file by Ward Spoonemore:
* The ECM will listen for 50 ms after completion of the 160 baud ALDL list for an * inbound test device originated 8192 (polling) message. * * If the 8192 polling message is accepted, 8192 communications will continue until power down.
;----------------------------------------------------------
; BIT 7 = Not Used
; BIT 6 = Match enable
;
; BIT 5 = SS1
; BIT 4 = SSO
; SS1 SS0 BAUD RATE
; 0 1 8192 <--
; 1 0 1024
; 1 1 256
;
; BIT 3 = PORT43 - TxENABLE, 1 = chip select U2, SXR
; BIT 2 = PORT42 - IACEN, 1 = chip select U7
; BIT 1 = PORT41 - FAN, 1 = turn on fan
; BIT 0 = Input is Sync from Rx
;
LDAA #$90 ; 1001 0000
STAA L4004 ; Set Baud = 8192
Last edited by Cliff Harris; Nov 25, 2014 at 01:41 AM.
The Best of Corvette for Corvette Enthusiasts





