Jump to content

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 iscflg "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 "Muliplier 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 "DESMAF" or desired idle mass airflow base setpoint.

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

desmaf_pre  = 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: base_ppm



auF11849 Steady state alternator power consumption

Datalogger value: alt_ppm



auF1288 Power Steering transient airflow adder

Datalogger value: ps_ppm



auF11417 Low speed fan adder

auF12807 High speed fan adder

Datalogger value: edf_ppm



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

Datalogger value: ac_ppm



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 "desmaf_pre"


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

Link to post
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 post
Share on other sites

Join the conversation

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

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...