0% found this document useful (0 votes)
172 views8 pages

1987 Buick Turbo V6 Idle Speed Control

The ECM controls engine idle speed using an Idle Air Control (IAC) motor that adjusts airflow bypassing the throttle plate. It does this by moving a pintle in or out in steps represented by counts. At startup, the IAC is set to a position based on coolant temperature, then targets an initial idle RPM. The ECM continually compares actual RPM to target RPM, adjusting the IAC in small steps to reduce the error between them. It uses tables to determine target RPM based on operating conditions like temperature.

Uploaded by

ignitionyemi
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
172 views8 pages

1987 Buick Turbo V6 Idle Speed Control

The ECM controls engine idle speed using an Idle Air Control (IAC) motor that adjusts airflow bypassing the throttle plate. It does this by moving a pintle in or out in steps represented by counts. At startup, the IAC is set to a position based on coolant temperature, then targets an initial idle RPM. The ECM continually compares actual RPM to target RPM, adjusting the IAC in small steps to reduce the error between them. It uses tables to determine target RPM based on operating conditions like temperature.

Uploaded by

ignitionyemi
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd

Idle Speed Control

(How the ECM controls the IAC Motor)

1987 GN and Turbo Regal Dennis Leek (V6GN@[Link]) 11-23-2006

The information contained in this article applies to the 1987 Buick


turbo V6 ECM and the factory chip (labeled ACXA 0942).

Introduction:
The engine idle speed control is probably the least understood and least documented aspect of the entire
ECM program. This is precisely what motivated me to figure it out (even though this part of the program is
not very exciting). Now that I have done that, I think it is important to share this information with the
Internet community that was so helpful to me when I was getting started.

The entire idle speed control program is located in ROM with only the data or “variable” items residing in
PROM (the “chip”). There are 64 data items (108 bytes) used for idle control. The information presented
here is what I could “glean” from analyzing the program. If you find it useful or have any questions, send
me an email. These articles take many hours to research and write making the feedback much appreciated.

The IAC Motor:


The engine computer (ECM) uses an Idle Air Control (IAC) motor to control the engine RPM at idle. The
IAC is not a motor in the traditional sense but it gets its name from an internal stepper motor. This motor
precisely moves an attached pintle in or out depending on the voltage polarity of the motor windings. The
ECM controls the voltage polarity and the pintle controls airflow in an air passage that bypasses the throttle
plate and thereby controls the idle RPM. Increased airflow raises RPM and less airflow reduces it. The
IAC motor is therefore an air valve that provides the ECM with a method to control the engine idle speed.

The ECM uses numbers (called counts) to represent “steps” of IAC pintle movement. A count of 00 causes
the IAC pintle shaft to extend fully which completely closes the air passage. As the number of steps
increase, the pintle retracts allowing more air to bypass the throttle plate. This increases the engine RPM.
Finally, a count of 255 makes the IAC fully retracted and the air passage completely open. Here is a “cut
away” view of the IAC mounted to the throttle body. At hot idle, the count should be around 15-25.

Pintle

The Maximum Step Motor Position Possible [$6A5] (set to 175) determines the farthest the IAC can retract
while the engine is running. In addition, the ECM has no way of knowing where the pintle really is so it
must periodically synchronize its counter with the IAC position. It does this when you shut off the engine
after it ran for the Minimum Runtime to Enable IAC Motor Reset [$6A6], set to 10 seconds,. During the IAC
reset, the ECM causes the pintle to fully retract (count = 255), then fully extend (count = 0), then it retracts
to the Idle Speed Park Start-up Position [$64F] of 150 steps.

Page 1
You can manually “reset” the IAC by performing the following:
1) Warm the engine to normal operating temperature then shut the engine Off.
2) Jumper ALDL connector pins A and B. (top right two pins)
3) Turn On ignition but do not start the engine. The ECM sets the IAC count to zero. Wait 30
seconds for IAC to seat the pintle.
4) Then with ignition still On, disconnect the IAC electrical connector. (Be careful, not much room.)
5) Turn the ignition Off, remove ALDL jumper, and reconnect IAC electrical connector.
6) This establishes the seated or zero reference point. The next time the ignition is turned On, the
IAC will go to a count of 150, then go down when the engine starts.

Idle Speed Control (ISC):


To the ECM, ISC means compare the current RPM to the target RPM with the difference being the RPM
error. With each change in RPM, the ECM also calculates the rate of change or rate error. The goal of the
ISC portion of the program is to move the IAC in a direction that reduces the error, then check it again
during the next pass through the program. The program acts differently when the RPM error is large vs.
small, and also when positive vs. negative. The goal is not to eliminate the error but just to get it close to
the target RPM. The program uses an error range that goes above and below the target and when the actual
RPM is within this range, no error correction occurs. In addition, the ECM does not try to correct the error
all at once, but rather “one step at a time” with each pass through the program. The process is repeated at a
fast rate until the actual RPM and the target RPM are within the defined range. (This range is explained in
detail, a little later in the article.) The process appears simple but it is not because as the ECM is adjusting
the idle speed toward a target RPM, the target can change. The target is affected by coolant temperature,
gear (P/N vs. not P/N), throttle position, and more. Once the engine reaches operating temperature the IAC
settles down and just occasionally adds or subtracts 1 or 2 from the IAC count.

The following is an explanation of the data items used by the program to control the IAC and idle speed.

Startup IAC Position and Target Engine Speed:


The last time the engine was shut off, the IAC was positioned to a count of 150, as determined by Idle
Speed Park Start-up Position [$64F]. This becomes the initial position at start-up. Immediately after engine
start-up, the ECM performs a table lookup to see where to position the IAC next. This Start-up IAC Position
table [$6B1] has an IAC count for nine different coolant temperatures. The ECM uses the count that
corresponds to the current temperature and ignores the actual engine RPM for 800 mSec, the Idle Speed
Start Up Delay [$650]. After the delay time has elapsed, it looks to the Park Idle Speed table [$669] for a
target RPM.

Start-up IAC Position [$6B0]


Coolant IAC Recommended This is the IAC starting position table for an ’86 or ’87
Temp (°F) hex count Changes Buick.
-40 96 150
3 96 150 The factory values are reasonable for most temperatures
46 96 150 125 except for the 46 and 90 degree entries. At these
90 96 150 95 temperatures, the factory values cause the engine to “race”
133 4B 75 when started. I prefer counts of 125 and 95 respectively.
176 28 40
219 28 40 45 If you modify this table, go ahead and increase the 219
262 50 80 degree entry slightly to 45. This will make a hot engine
305 50 80 restart a little smoother.

The Park Idle Speed table [$669] shown on the next page, produces the first target idle RPM. Later, when
you shift to Drive (or Reverse) the program gets its target from the Drive Idle Speed table [$658]. Now let’s
assume a starting coolant temperature of 68 degreesF and see what happens. The IAC starts at a count of

Page 2
150, then stays at 150 (or moves to 95 if you changed the table). Then 800 mSec later, the target idle speed
is set to 1250 RPM (because of 68°F) and the ECM adjusts the IAC in/out to maintain this speed.

As the coolant temperature increases, the ECM adjusts its target RPM based on each new value read from
the Idle Speed table. If you’re wondering what happens when the index to the Idle Speed table falls
between rows, well the table output will be proportional to the difference in the index. For example, if the
temp is 25% between 68°F and 90°F (which is 73.5°F), the table output will be 25% of the difference
between the two RPM values. Using 1250 RPM and 1050 RPM, the output would be 1200 RPM.

Idle Speed – Park Idle Speed – Drive Each time this table is read (which is once
Coolant [$669] [$658] every 50 mSec), the table value is compared to
Temp (°F) Data Data
(hex)
Engine RPM
(hex)
Engine RPM the value read previously. The difference
-40 70 1400 5C 1150 between these two numbers is limited by the
-18 70 1400 5C 1150 Max Command Speed Change per 50 mSec
3 70 1400 5C 1150 [$657] which is set to 12.5 RPM. This limit
25 70 1400 58 1100 keeps each target RPM change small and
46 6C 1350 54 1050 manageable even if there are 150 to 200 or
68 64 1250 4C 950
90 54 1050 40 800 more RPM differences in adjacent rows. The
111 48 900 38 700 68 and 90°F rows for example.
133 40 800 36 675
154 3E 775 34 650 Because the engine RPM can fluctuate or
176 3C 750 34 650
198 3C 750 34 650 outright change very rapidly, the ECM “filters”
219 3C 750 34 650 the RPM changes to prevent the IAC from
241 3C 750 34 650 “chasing” every little RPM fluctuation. This
262 3C 750 34 650 filtering is done with all the sensor inputs (O2
284 40 800 34 650
305
sensor, TPS, MAF, etc.) that can change
40 800 34 650
rapidly. To filter a sensor, the ECM looks at
the change in sensor output, reduces the change by some percentage, then “averages” this with the previous
value calculated. This is called “lag filtering” because there is always a lag between a change to the actual
sensor output and the value used by the program. The percentage of sensor change that is actually used is
determined by the filter coefficient. The IAC RPM/12.5 Filter Constant [$64E] is the coefficient for idle RPM
and is set to 25%. This means that every 12.5 mSec when the ECM reads the RPM and compares it to the
last filtered RPM value, the change in RPM is reduced 75% before the program uses it to control the IAC.

A shift from Park to Drive causes the program to switch to the Drive Idle Speed table [$658] for its target
RPM. You should make a few changes to the Park and/or Drive Idle Speed tables if for no other reason,
you live in a part of the country that has cold winters. The reason is, when the difference in corresponding
rows of the two tables exceed 200 RPM, the IAC can’t respond fast enough to the change when you shift
gears. (I don’t drive my GN with a cold engine but I do back it out of the garage. Below 50 degF, it will
stumble and often stall using the factory chip because of the 300 RPM difference between the two tables.)

Engine Idle Speed Error Correction:


As mentioned earlier, the ECM calculates the idle speed correction in two dimensions: the RPM error
based on the actual versus target RPM difference and error rate, which is how fast the RPM has changed.
The part of the program that performs this function is called the PID Regulator. PID is an abbreviation for
Proportional Integral Derivative but that’s not important (it is explained at the end of the article).

The current RPM is read and filtered every 12.5 mSec. This filtered engine speed is used for both the error
and error rate calculations. The adjustment for RPM error is referred to as the proportional gain and the
correction is measured in steps per RPM. RPM here is the error amount. The result of subtracting the
current filtered RPM from the target RPM can produce either a positive number (actual RPM high) or a
negative number (RPM low). There are separate gain values for over-speed error [$681] and under-speed
error [$680] so they can be corrected by different amounts. The tuners who produced the factory chip

Page 3
where much more concerned with under-speed than over-speed based on the error gain values used. We’ll
examine those numbers in just a moment. Here is a chart representing the RPM error controls.

Now before the ECM initiates an error correction, it checks to see if the error exceeds a plus or minus
value. The range of error from the target to this minimum error amount is called the dead band. No idle
speed correction occurs as long as the error falls within the dead band. In the factory chip, the RPM error
dead band for both P/N [$67A] and Drive [$67B] is ±50 RPM.

The factory programmers were so concerned with the idle speed being below the target that they included
two under-speed gain values: One for low (small error) and one for high.

RPM Error Adjustment (GN, GNX, T-Regal, TTA) This is a summary of the
Over-speed Error Gain $681 20 0.10 steps/RPM RPM error controls. Using
(RPM too high) $67A/$67B 04 +50 RPM the factory values, if the
RPM Error Dead band idle speed tables target RPM RPM increases by more than
(RPM too low) $67A/$67B 04 -50 RPM 50 over the target, the gain
Low Under-speed Error Gain $680 70 0.035 steps/RPM for correction will be 0.10
Min RPM Error for High Rate Term $688 05 -62.5 RPM steps/RPM. If the RPM
High Negative Error Threshold RPM $682 FF (disabled)
drops below the target by
High Negative (under-speed) Error Gain $683 00 add 0 to $680
more than 50, the correction
gain will be 0.035 steps/RPM. The factory chip has the under-speed high gain disabled so the low gain is
always used.

Here is an example from a non-turbo chip that shows both low and high under-speed gains being used.
RPM Error Adjustment (non-turbo Buick) With this chip, the RPM
Over-speed Error Gain $681 40 0.20 steps/RPM error dead band is tighter
(RPM too high) $67A/$67B 03 +37.5 RPM (±37.5 RPM) and the over-
RPM Error Dead band idle speed tables target RPM speed correction is double
(RPM too low) $67A/$67B 03 -37.5 RPM what we normally see. As
Low Under-speed Error Gain $680 B0 0.055 steps/RPM for under-speed, the low
Min RPM Error for High Rate Term $688 03 -37.5 RPM gain (0.055 steps/RPM) is
High Negative Error Threshold RPM $682 08 -100
used until the error exceeds
High Negative (under-speed) Error Gain $683 10 add 0.005 to $680
100 RPM. Above this, the
high gain (0.005) is added to the low gain for a total of 0.060 steps/RPM. Setting the error controls as tight
as this example makes for a very smooth idling normally aspired six cylinder but our cars sound much
better with a little more idle “headroom”.

Finally, there are two minimum RPM error values used to determine if the high under-speed gain is be
used: High Rate Term [$688] and High Threshold [$682]. The High Rate Term is intended for use with the

Page 4
error rate correction but the same part of the program is used for both error and error rate corrections, so it
affects both. It makes more sense though when analyzing the error rate correction (described below).

For another example using the factory GN values, suppose the actual (filtered) RPM is 100 below the
target. This is outside the dead band so the low under-speed gain of 0.035 steps/RPM is applied. Doing the
math reveals that 0.035 times 100 equals 3.5, which becomes the number of IAC motor steps to retract.
Why retract? Because the RPM is too low and more air is needed.

After the ECM determines the adjustment for RPM error, it checks if additional correction is needed based
on the error rate. Every 50 mSec the RPM error rate is determined by subtracting the filtered RPM value
from the previous error rate, then dividing it by 16 to round up the number. The error rate represents how
fast the RPM has changed and can be either positive (engine speed is increasing) or negative. The RPM
error rate adjustment is considered to be the derivative gain and is measured in steps per RPM per second.

As with the RPM error correction, there are positive gain (RPM increasing) and negative gain (RPM
decreasing) error correction values, and two negative gains (one for small rate errors and one for large rate
errors). The higher the gain value, the quicker the correction.
RPM Error Rate Adjustment (GN, GNX, T-Regal, TTA) The factory chip has the high
Positive (accel) Rate Gain $685 14 0.005 steps/(RPM/sec) negative rate gain set to 00 so only
(RPM increasing) $6A8 28 +625 RPM/sec the low gain is used, just as in the
RPM Error Rate Dead band no change in RPM Rate RPM error correction.
(RPM decreasing) $6A8 28 -625 RPM/sec
Low Negative (decel) Rate Gain $684 14 0.005 steps/(RPM/sec) The way it works is, RPM
Min RPM Error for High Rate Term $688 05 -62.5 RPM increases are compensated using
High Rate Decel Gain Threshold $686 28 - 625 RPM/sec
0.005 steps per RPM per second
High Negative Rate Gain $687 00 add 0 to $684
[$685], provided the error rate
exceeds 625 RPM per second [$6A8]. A decrease in RPM rate greater than the same amount, causes the
low negative rate gain [$684] to be used unless the RPM error exceeds -62.5 RPM [$688] and the error rate
exceeds -625 RPM/sec [$686]. At this point the high rate gain [$687] is added to the low rate gain [$684]
then multiplied with the error rate to produce the required IAC steps. The steps needed based on error rate
are added to the steps calculated for the RPM error. Notice that the RPM Error for High Rate Term [$688]
value is used in both the error and error rate negative gain determinations.

For this function, the program assumes the transmission is in Drive. After the IAC adjustment for error and
error rate are determined, the program reduces the adjustment count if the transmission is in P/N using the
P/N Gain Scaler [$68D] of 0.207 neutral steps/drive step. This just means that the number of IAC correction
steps is reduced by 79% when in P/N.

Page 5
Finally, the gain (correction steps) is compared to Idle Speed Inverse Quantizer Gain [$69A] of 04. If the gain
is 4 or more, no more calculations are done and the error correction is applied. However if less than 4, the
integral gain portion of the program is executed.

The integral part of the program is the final check to see if a small IAC adjustment is needed. There are
separate controls for P/N and Drive. To make this adjustment the RPM error rate can not exceed the Max
RPM Error Rate [$68C/$68B] of 125 RPM per sec. Next the RPM error is compared to the Max RPM Error for
Low Gain [$67B/$67A] to determine whether to use the low or high gain. An RPM error greater than 50 will
enable the High Gain [$6A2/$6A3] otherwise the Low Gain [$689/$68A] is used. The RPM Error for Low Gain
Disable [$6A4] can be used as a minimum error amount for a low gain adjustment but this is set to zero in
the factory chip.

Integral Gain Park / Neutral Drive


Maximum RPM Error Rate $68C 08 125 RPM/sec $68B 08 125 RPM/sec
Integral High Gain $6A2 35 0.00166 steps per (RPM/sec) $6A3 30 0.00150 steps per (RPM/sec)
Max RPM Error for Low Gain $67B 04 50 RPM $67A 04 50 RPM
Integral Low Gain $689 14 0.00062 steps (RPM/sec) $68A 18 0.00075 steps per (RPM/sec)
RPM Error
for Low Gain Disable $6A4 00 (RPM) – the minimum error to correct using the Low Gain

Therefore, if the error rate is below the limit, either the high or the low gain is applied to the RPM error.
The result is now the new adjustment value as the previously calculated value (below 4) is discarded.

Once again, the adjustment value is compared to the Idle Speed Inverse Quantizer Gain [$69A] for a
minimum of 4 then if not less than 4, it is converted from a linear motor value to one that can be used by a
stepper motor. This is done by multiplying it by the Quantizer Gain to Convert Algorithm Output [$699] of
0.25. Both of these numbers appear to have been selected based on the type of stepper motor used and
should not be changed.

IAC Movement (Amount and Frequency):


Every 6.25 mSec, the program calculates the RPM correction but there are several timers that determine
how often the IAC adjustment is actually made. The two most used are the Idle Speed Min # Loops per P/N
Decay Step [$68F] and the other is Idle Speed Min # Loops per Drive Decay Step [$68E]. These are both set to
06 in the stock chip, which represents 38 mSec. This number makes more sense when you look at it as the
number of corrections per second. A value of 06 causes IAC corrections to occur 26.6 times per second.

A change to either of these numbers is very noticeable and with separate controls for P/N and Drive, you
might want to make them different values. A larger number decreases the frequency of IAC corrections for
“loose” or “lopey” idle. My chip uses open loop idle and I prefer x08 (16 times/sec) for P/N and x10 (10
times/sec) for Drive. Just for comparison, the Thrasher chips use the stock 06 for P/N and for Drive it has
x14 (8 times/sec).

There is one other parameter that affects the frequency of idle speed corrections and it is Idle Speed Min #
Loops per O/L Mode Decay Step [$690]. O/L stands for open loop but has a slightly different meaning to idle
speed control than it does for normal fuel correction. O/L in the idle control program refers to the time
immediately after the engine starts and continues until the first time the RPM switches from above the
target to equal or below the target. This O/L definition applies only to idle speed control and is not related
to the O/L fuel mode. If the RPM error is below 800 (hard coded), the O/L Mode number is multiplied
with the RPM error and the result added to either the P/N or Drive Decay Step value during O/L idle speed
correction. This slows the idle corrections until the RPM drops below the target for the first time.

When its time to move the IAC, the program checks the direction (extend/retract) and number of steps
needed for correction. The number of correction steps needed is reduced by one and the current IAC

Page 6
position count is increased or decreased by one depending on the correction needed. If retracting to
increase air flow (and RPM), the IAC position counter is incremented then compared to the Max. Step Motor
Position Possible [$6A5] of 175. If extending to decrease air flow (and RPM), the position counter is
checked for 00 before being decremented.

To control stepper motor movement, the ECM uses a 0 – 3 counter connected to the hardware drivers for
the two IAC motor windings. It is not the count but the change in count that causes a step. A change of 3-
2, 2-1, 1-0, or 0-3 will cause the pintle to extend. A change from 0-1, 1-2, 2-3, or 3-0 will cause a retract.

Specialized Program Functions for Idle


Hot Restart:
A small portion of the program is used when the engine is started while the coolant is above the Minimum
Coolant Temperature to Allow Hot Offset [$653] of 172°F. Here the ECM adds the RPM Offset From
Command for High Coolant [$652] of 50 RPM to the value it got from the Park Idle Speed table. The
increased idle speed continues until either the engine has run for 53 seconds, the Max ERUNTIME to Allow
Hot Offset [$655] or the car is moving faster than 5 MPH, the Max Vehicle Speed to Allow Hot Offset [$654].

Throttle Follower (T/F) routine:


This portion of the program monitors the Throttle Position Sensor (TPS) so as the throttle opens, the IAC
“follows” by retracting (opening the air passage) more. Then as the throttle closes, the process is reversed
and the IAC extends the pintle to reduce the bypassed air. This T/F function is only active when the TPS
exceeds the ISC Throttle Accumulator Threshold Below Which ISC Is Enabled [$67D] of 1.6%. When the TPS
goes above this, two things happen: the normal idle control is only active for under-speed RPM errors and
the T/F function is activated.

The T/F program multiplies the TPS travel (in 1% increments) by the Idle Speed T/F Slope Gain [$691] of
2.56. The result is called the T/F count. Before the IAC is moved, the program makes sure the T/F count
does not exceed the Idle Speed T/F Max Steps in Drive [$692] which set to 51. If the car is in Park, there is
not much load on the engine so the program reduces the T/F count using the Idle Speed T/F P/N Scalar
[$693]. This lowers the T/F count by 31%.

The program won’t move the IAC based on T/F count all at once. It moves the IAC one step at a time
(every 6.25 mSec) and keeps track of how far it has moved. The T/F routine is executed every 12.5 mSec
and each time it calculates the target T/F count it subtracts the IAC adjustment already applied. When the
difference is zero, the T/F IAC adjustment is done. Because the IAC adjustments are made every 6.25
mSec and the T/F count is calculated every 12.5 mSec, the most the IAC can change between T/F
calculations is two steps.

If, after pushing on the gas pedal you let off completely and the throttle plate closes, the T/F program will
“see” this and initiate a delay before making any more T/F IAC adjustments. The T/F to PID Enable Delay
[$69E] is set to 1.5 seconds (1500 mSec).

Transition Delays:
There are five numbers in the chip that are used as transitional delay times. With each of these, the PID
Regulator is skipped during over speed errors. It only regulates if an under speed RPM error exceeds RPM
Error Under-speed Threshold needed before enabling the PID Regulator, during a transition of control modes
[$67F] of 25 RPM. Note, these transition times also delay turning on the A/C if requested.

ƒ Open Loop To Closed Loop Enable Delay Time [$69D] of 2 sec. The terms Open and Closed Loop as
used here are not the same as the fuel modes that use the O2 sensor for feedback. This delay is
only used once after startup, when the RPM first switches from above the target to below/equal the
target, as described on the previous page.
ƒ Throttle Follower to PID Enable Delay Time [$69E] of 1.5 sec. Throttle just closed. Skip check for
P/N and Drive transitions, also no new T/F correction during this time.
Page 7
ƒ Power Steering Pressure Switch Cramp PID-Enable Delay Time [$69F] of 1600 mSec – not used
ƒ Drive-to-Neutral Shift to PID Enable Delay Time [$6A0] of 1600 mSec. Disables T/F.
ƒ Neutral-to-Drive Shift to PID Enable Delay Time [$6A1] of 800 mSec.

Power Steering Pressure Switch (PSPS:


The program was written to modify the IAC behavior when a PSPS signals high pressure during a tight
turn. Well, this switch is not used in the ‘86/’87 turbo Regal so the P/S Anticipate Correction [$6A9] and P/S
Anticipate Steps A/C On [$6AA] are each 00. If used, these two would normally increase the engine speed.

Air Conditioning:
Since turning on the air puts an extra load on the engine, the program has provision for increasing the target
RPM by using IAC Command Speed Offset With A/C On [$651], however this value is 0 RPM. The program
also “learns” a minimum motor position when the A/C is on and this occurs when the RPM error is below
the Idle Speed Dead Band for A/C and Minimum Motor Position [$67C], set to 62.5 RPM. The error must stay
in the dead band for Idle Engine Speed in Dead band [$697] 500 mSec for learning to take place. There are a
few other A/C controls that affect the IAC but they are not included in this article.

PID Hot Spark Retard


The program has a provision for retarding the spark advance when the engine is started hot but this function
is disabled. The coolant temp threshold is >= Hot Restart Spark Retard – Minimum Coolant Temp [$173] of
104°F. The Hot Restart Spark Retard [$170] number of degrees (00) would be subtracted from the spark
advance until the engine has been running the Maximum Engine Runtime for Hot Spark Retard [$6AD] set to 0
sec.. Also, every 50mSec when the P/N or Drive idle RPM table is read, the RPM Offset from Command for
Hot Spark Retard [$6AF] of (00) is added to the target RPM.

Commentary:
While doing this research, I wanted to understand the idle control portion of the program but I also wanted
to experiment with different settings to see what affect they had. My initial goal was to produce a very
smooth idle. After accomplishing that I realized the car idled like a Park Avenue so I changed the goal to
making the idle smooth yet sound like the high performance engine that it is.

Adjust the idle RPM tables first. The “perfect” RPM at hot idle is a personal thing as some like a very fast
idle and others do not. Set the target RPM to your preference. The only mistake you can make is to
increase idle speed to compensate for a problem causing a rough idle. Find the problem, fix it, then set the
idle RPM (in the chip) to your preference. Don’t forget that the IAC must be clean and adjusted properly.

Then set the Idle Speed Correction frequencies for P/N [$68F] and Drive {$68E}. After that modify the
RPM Error correction. Consider the dead band range (higher allows RPM to vary more), then decide how
much correction for RPM too high and too low. I prefer wider deadband, increased gain, less often
corrections. I found that changes to the other idle controls have little or no perceptible effect.

Proportional Integral Derivative (PID) [definition] – The main portion of the IAC control program is
called the PID Regulator. It is executed once every 50 mSec. Its here that the RPM error and error rate
combined with other conditions determine the amount of error correction. PID is the name for the
correction calculation that ultimately either adds to or subtracts from the current IAC count. The PID
Regulator is always used when the throttle is closed and if open, only to correct under-speed errors.
Proportional means corresponding in size.
Integral is a number that is or relates to one or more mathematical integers (whole numbers).
Derivative is the limit of the ratio of the change in a function to the corresponding change in its
independent variable as the latter change approaches zero.
So this means that the IAC moves proportional to the RPM error in whole number steps (fractions are
discarded) until the error is zero. There you have it.

~~ § ~~
Page 8

You might also like