Jump to content

HOWTO: Idle Control

Recommended Posts

This guide covers how the idle control on the Falcon platform works.

Short Answer:

This assumes you have under 5% LTFT and have not changed the throttle body. If your trims are > 5% you need to fix your injector scaling, if your throttle body has been changed you need to adjust the throttle tables.

If the above items are correct and your idle airflow is still wrong due to large camshafts or a large change in engine VE, then you need to adjust the open loop portion of the idle equation.

To do so first ensure you are in closed loop idle mode by datalogging IDLE STATUS MID49718 "Idle Speed Control Mode Flag" and the mode is (1) Rpm Ctrl Mode or (2) Rpm Ctrl Learn Mode

-2=Drive Mode
0=Dashpot Preposition
1=Rpm Ctrl Mode
2=Rpm Ctrl Learn Mode

Next datalog the idle air integrator (IPSIBR) and wait several minutes for it to reach a stable setpoint. If you have a large consistent error add this error term to the neutral and drive tables (log separately in drive and in neutral).

auF10622 (Neutral)

auF12842 (Drive)

This will mean the idle controller has to do less work to maintain a stable idle and should assist with a stable idle.

If you have an oscillation error, eg hunting, you can adjust the proportional gain for the closed loop controller (auF1565). Large numbers will cause more over/under shoot however it will reach the desired idle rpm faster. Smaller numbers will oscillate less however will take longer to reach the desired idle rpm. Adjust auF1565 Proportional gain

If you have a setpoint error, eg the idle simple never reaches the desired idle rpm setpoint, adjust the Integral maximum clip term auF1565


Long Answer:

Idle is controlled via two main closed loop controllers. A spark controller which is for very fast corrections, and an airflow controller which is for slower long term changes and is done via modulating the throttle at idle (no idle air valve is required).

Spark P (Proportional only) Controller

The spark controller is based on an error term in rpm which is then multiplied by the following gain table. auF11706 "Multiplier as a function of load on spark feedback gain"


This controller constantly adds/subtracts timing based on rpm error with a max value of MBT timing and a min value of "min spark clip". This will be constantly varied unless the error becomes too great unpon which it will no longer be controlled.

To make the spark reach MBT or minimum spark clip faster you use a larger value. To make the spark oscillate less or remove it entirely you can zero this table however this will remove the ability for the PCM to catch stalls quickly.

Airflow PID (Proportional, Integral, Derivative) Controller:

The airflow PID controller takes the following tables to determine the "IDLE MAF INI MID13617" or desired idle mass airflow base setpoint.

The following airflow adders are all added together to create the open loop desired airflow.

IDLE MAF INI  MID13617 = base_airflow + alternator + power_steering + electric_fans + air_conditioning + trans_torque_loss


base_airflow is sum of the following tables

auF10622 Additional airflow in neutral


auF12842 Additional airflow in drive

* auF11555 * auF1210

Datalogger value: MID04184 IDLE BSE AIR



auF11849 Steady state alternator power consumption

Datalogger value: MID03283 ALT AIR FLOW



auF1288 Power Steering transient airflow adder

Datalogger value: MID69657 PSTEER AIRF



auF11417 Low speed fan adder

auF12807 High speed fan adder

Datalogger value: MID23418 FAN AIR TRG



auF2292 EVC Air Conditioning airflow * auF1296 (AC air adder)

Datalogger value: MID00532 AC AIR FLOW



auF16467 Given an RPM and calculated torque the PCM uses this value to estimate the LOAD value.

* auF10158 Load to aircharge constant

This desired airflow of the above summed together can be datalogged as "MID13617 IDLE MAF INI"


idle_ppm Dashpot Idle Air

dashpot idle air is then added on top (to smooth out return to idle) which is calculated from the following:

Dashpot air = auF2411 (Gain for dashpot calc) * auF0036 (Airflow adder for dashpot function)

Max dashpot air = auF3009 (delta rpm) * auF3081 (vehicle speed) * auF3165 (ECT clip)

This value is the open loop portion of the idle air controller.


The closed loop (PID) controller then calculates the following values which are constantly varied based on idle error

P (Proportional term)

auF1565 (Proportional gain table for PID idle speed controller)

I (Integral term)

Datalogger: ipsibr Idle Air Integrator

Datalogger: isckam idle Speed KAM memory (similar to LTFT but for idle air)ove

auF1452 Max integral adder

D (Derivative term)

auF1405 ISC pid controller derivative gain


For more reading on how a PID controller works read this wiki article. You likely have 1000s of these in various gadgets in your house.



Final Command Desired Mass Airflow:

The final value (Datalogger: desmaf) is the result of this equation:

desired idle airflow = desmaf_pre (open loop airflow as calculated above) + idle air integrator kam + Idle air integrator + idle_ppm / desired_torque_ratio

  • Like 2
Link to comment
Share on other sites

  • 2 months later...

Interesting comment from a tuner today who was having issues with a BA stalling in 3rd gear when you clutch in, but not in 1st gear. His issue was the fuel cut re-enable RPM was quite low from the factory at 900 rpm. Typically in later model cars it is set a lot higher than this. As the fuel cut off doesn't occur in the lower gears it was not as noticeable.

So if you have stalling issues when clutching in check the coasting fuel cut off enable rpm and raise it if its too low.  

auF0153 and auF0152

Link to comment
Share on other sites

  • 6 months later...

Could you explain the transition from dashpot to idle control? what triggers the change between dashpot and idle control?

Im having this issue where the idle hangs around 1500rpm. Idle status says it's still in dashpot, however the throttle has returned to it's usual idle spot. what's hanging the revs is the spark is stuck in the decel table and it catches the motor around 1500 by commanding 17 degrees advance. I can decrease that table to get it to go lower, however it wont drop below 11 degrees.

Note that it is a freshly rebuilt 5.4 with lower compression, ported throttle body and different cam timing with rough changes to the throttle body flow map and speed density tables, enough that itll run within 5% of 1.00 in open loop at idle, but not enough to suggest that it's not my issue.  Ive fiddled with a fair bit of tables and scalars between dashpot, idle and spark idle, nothing that eliminates the problem all together.

Not looking for a resolve to my problem, just an explanation to my question above.

dashpot error closed loop.teclog

Link to comment
Share on other sites

On 11/10/2022 at 11:06 PM, Roland@pcmtec said:

Check the intake for air leaks with a smoke machine. 

Did that, no leaks. Like I said, not looking for an answer to my problem, just looking into the transition from dashpot to idle. I want to know more about it as the transition has never been smooth, even when stock. For example auF2257 causes a 1.5 second delay where it will momentarily hang. Removing that lets it return straight to idle speed however the timing drops to -9° for a split second causing a slight overshoot.

Link to comment
Share on other sites

Yeah I’ve played with it, gone from .14 up to .20, but I think that may need to be higher as the log shows it’s hanging around .19 and when it does idle it’s around .25. 
yeah decel table helps a lot. Motor’s run in now so I can spend more time at idle figuring it out 👍

Link to comment
Share on other sites

Had an issue where it would try and stall after starting. Adjusted auF11706 to 1.8 for the whole thing and it no longer tries to stall. I also went through and logged the idle air integrator and adjusted the park/neutral values and the in gear values. They weren't out by a huge amount but getting them very close made it so much more stable coming to a stop and also changing from drive to reverse etc.

Link to comment
Share on other sites

  • 3 months later...

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Create New...