Jump to content

Config:Idle: Difference between revisions

From epicEFI Wiki
Created page with "= Idle = == Idle settings == '''Idle control mode''' See also idleRpmPid === Idle Detection Thresholds === '''TPS threshold''' Below this throttle position, the engine is considered idling. If you have an electronic throttle, this checks accelerator pedal position instead of throttle position, and should be set to 1-2%. '''Force Idle State Below DriverThrottleIntent Threshold''' Force idle STATE below DriveIntent threshold. '''Force Idle Ignition ONLY Below Driv..."
 
No edit summary
Line 1: Line 1:
= Idle =
<!-- section:idleSettings -->
= Idle settings =


<!-- section:idleBasicSettings -->
== Idle settings ==
== Idle settings ==


'''Idle control mode'''
<!-- field:idleMode -->
 
==== Idle control mode ====
See also idleRpmPid
See also idleRpmPid


=== Idle Detection Thresholds ===
* '''Open Loop + Closed Loop'''
 
* '''Open Loop'''
'''TPS threshold'''


<!-- field:idlePidDeactivationTpsThreshold -->
==== TPS threshold ====
Below this throttle position, the engine is considered idling. If you have an electronic throttle, this checks accelerator pedal position instead of throttle position, and should be set to 1-2%.
Below this throttle position, the engine is considered idling. If you have an electronic throttle, this checks accelerator pedal position instead of throttle position, and should be set to 1-2%.


'''Force Idle State Below DriverThrottleIntent Threshold'''
<!-- field:forceIdleBelowTpsThreshold -->
 
==== Force idle below throttle threshold ====
Force idle STATE below DriveIntent threshold.
Force idle STATE below DriveIntent threshold.


'''Force Idle Ignition ONLY Below DriverThrottleIntent Threshold'''
<!-- field:forceIdleIgnitionBelowTps -->
 
==== Force timing only below pedal threshold ====
Force idle ignition (delta target only) below DriverThreshold threshold, only for ignition timing
Force idle ignition (delta target only) below DriverThreshold threshold, only for ignition timing


'''Idle force delayed by DFCO'''
<!-- field:forceIdleIgnitionUseDFCO -->
 
==== Idle force delayed by DFCO ====
Do not force idle ignition while DFCO is active for either of the above.
Do not force idle ignition while DFCO is active for either of the above.


'''Delta target rpm smoothing factor'''
<!-- field:idleDeltaRpmAdjAvgFactor -->
 
==== Delta target rpm smoothing factor ====
Smoothing factor for delta target rpm ignition adjustment
Smoothing factor for delta target rpm ignition adjustment


'''RPM upper limit'''
<!-- field:idlePidRpmUpperLimit -->
 
==== RPM upper limit ====
How far above idle speed do we consider idling, i.e. coasting detection threshold.
How far above idle speed do we consider idling, i.e. coasting detection threshold.
For example, if target = 800, this param = 200, then anything below 1000 RPM is considered idle.
For example, if target = 800, this param = 200, then anything below 1000 RPM is considered idle.


'''RPM deadzone'''
<!-- field:idlePidRpmDeadZone -->
==== RPM deadzone ====
If the RPM closer to target than this value, disable closed loop idle correction to prevent oscillation
 
<!-- field:maxIdleVss -->
==== Max vehicle speed ====
Above this speed, disable closed loop idle control. Set to 0 to disable (allow closed loop idle at any speed).
 
<!-- section:idleOverrides -->
== Idle overrides ==


If the RPM closer to target than this value, disable closed loop idle correction to prevent oscillation
<!-- field:useSeparateAdvanceForIdle -->
==== Separate idle ignition table ====
This activates a separate ignition timing table for idle conditions, this can help idle stability by using ignition retard and advance either side of the desired idle speed. Extra advance at low idle speeds will prevent stalling and extra retard at high idle speeds can help reduce engine power and slow the idle speed.


'''Max vehicle speed'''
<!-- field:useIdleAdvanceWhileCoasting -->
==== Use idle ignition table while coasting ====


Above this speed, disable closed loop idle control. Set to 0 to disable (allow closed loop idle at any speed).
<!-- field:useIdleAdvanceWhileCoastingMaxRpm -->
==== Max RPM for idle advance while coasting ====
Maximum RPM for which idle advance while coasting is enabled


=== Open Loop Idle ===
<!-- field:useSeparateVeForIdle -->
==== Separate idle VE table ====
This activates a separate fuel table for Idle, this allows fine tuning of the idle fuelling.


'''A/C adder'''
<!-- field:idleVeOverrideMode -->
==== Override Idle VE table load axis ====
Allows you to change the default load axis used for the VE table, which is typically MAP (manifold absolute pressure).


Additional idle % while A/C is active
* '''None'''
* '''MAP'''
* '''TPS'''
* '''PERCENT BARO'''


'''A/C RPM target'''
<!-- field:idleReturnTargetRamp -->
==== Ramp target RPM on return to idle ====
Ramp the idle target down from the entry threshold over N seconds when returning to idle. Helps prevent overshooting (below) the idle target while returning to idle from coasting.


Idle target speed when A/C is enabled. Some cars need the extra speed to keep the AC efficient while idling.
* '''no'''
* '''yes'''


'''Transmission idle up adder'''
<!-- field:idleReturnTargetRampDuration -->
==== Ramp target duration ====
idle return target ramp duration


Additional idle % while transmission idle up is active
<!-- field:useSeparateIdleTablesForCrankingTaper -->
==== Separate idle tables for cranking taper ====
This uses separate ignition timing and VE tables not only for idle conditions, also during the postcranking-to-idle taper transition (See also afterCrankingIACtaperDuration).


'''Transmission idle up RPM target'''
<!-- field:useIacTableForCoasting -->
==== Separate coasting idle table ====
Override the IAC position during overrun conditions to help reduce engine breaking, this can be helpful for large engines in light weight cars or engines that have trouble returning to idle.


Idle target speed when transmission idle up is enabled. Some transmissions need extra idle speed when engaged.
<!-- section:idleOpenLoop -->
== Open Loop Idle ==


'''Fan #1 adder'''
<!-- field:acIdleExtraOffset -->
==== A/C adder ====
Additional idle % while A/C is active


Additional idle % when fan #1 is active. In PWM mode this is scaled according to PWM %
<!-- field:acIdleRpmTarget -->
==== A/C RPM target ====
Idle target speed when A/C is enabled. Some cars need the extra speed to keep the AC efficient while idling.


'''Fan #2 adder'''
<!-- field:transmissionIdleExtraOffset -->
==== Transmission idle up adder ====
Additional idle % while transmission idle up is active


Additional idle % when fan #2 is active. In PWM mode this is scaled according to PWM %
<!-- field:transmissionIdleRpmTarget -->
==== Transmission idle up RPM target ====
Idle target speed when transmission idle up is enabled. Some transmissions need extra idle speed when engaged.


=== Closed Loop Idle ===
<!-- field:fan1ExtraIdle -->
==== Fan #1 adder ====
Additional idle % when fan #1 is active. In PWM mode this is scaled according to PWM %


'''P-factor'''
<!-- field:fan1ExtraIdleRpmTarget -->
==== Fan #1 RPM target ====
Idle RPM target adder when fan #1 is active. Raises the idle RPM target so the closed-loop PID does not fight the open-loop IAC adder.


~~PLACEHOLDER~~
<!-- field:fan2ExtraIdle -->
==== Fan #2 adder ====
Additional idle % when fan #2 is active. In PWM mode this is scaled according to PWM %


'''I-factor'''
<!-- field:fan2ExtraIdleRpmTarget -->
==== Fan #2 RPM target ====
Idle RPM target adder when fan #2 is active. Raises the idle RPM target so the closed-loop PID does not fight the open-loop IAC adder.


~~PLACEHOLDER~~
<!-- field:canBoxIdleUpRpm -->
==== CAN idle-up target RPM adder ====
can box idle up demand


'''D-factor'''
<!-- field:canBoxIdleUpPercentage -->
==== CAN idle-up % adder ====
can box idle up demand %


~~PLACEHOLDER~~
<!-- section:idlePidSettings -->
== Closed Loop Idle ==


'''Min'''
<!-- field:idleRpmPid_pFactor -->
==== P gain ====
Proportional value.
See https://content.epicefi.com/wiki/index.php/Guides:PID_Control


Output Min Duty Cycle
<!-- field:idleRpmPid_iFactor -->
==== I gain ====
Integral value
See https://content.epicefi.com/wiki/index.php/Guides:PID_Control.


'''Max'''
<!-- field:idleRpmPid_dFactor -->
==== D gain ====
Derivative value
See https://content.epicefi.com/wiki/index.php/Guides:PID_Control.


Output Max Duty Cycle
<!-- field:idleRpmPid_minValue -->
==== Min ====
PID controller output minimum duty value.


'''iTerm Min'''
<!-- field:idleRpmPid_maxValue -->
==== Max ====
PID controller output maximum duty value.


<!-- field:idlerpmpid_iTermMin -->
==== iTerm Min ====
iTerm min value
iTerm min value


'''iTerm Max'''
<!-- field:idlerpmpid_iTermMax -->
 
==== iTerm Max ====
iTerm max value
iTerm max value


'''PID Extra for low RPM'''
<!-- field:pidExtraForLowRpm -->
 
==== PID Extra for low RPM ====
Increases PID reaction for RPM<target by adding extra percent to PID-error
Increases PID reaction for RPM<target by adding extra percent to PID-error


'''Use IAC PID Multiplier Table'''
<!-- field:useIacPidMultTable -->
 
==== Use PID output gain table ====
This flag allows to use a special 'PID Multiplier' table (0.0-1.0) to compensate for nonlinear nature of IAC-RPM controller
This flag allows to use a special 'PID Multiplier' table (0.0-1.0) to compensate for nonlinear nature of IAC-RPM controller


=== Extra Idle Features ===
<!-- section:etbIdle -->
== ETB idle settings ==


'''Separate idle ignition table'''
<!-- field:etbIdleThrottleRange -->
 
==== ETB idle maximum angle ====
This activates a separate ignition timing table for idle conditions, this can help idle stability by using ignition retard and advance either side of the desired idle speed. Extra advance at low idle speeds will prevent stalling and extra retard at high idle speeds can help reduce engine power and slow the idle speed.
This sets the range of the idle control on the ETB. At 100% idle position, the value specified here sets the base ETB position.
 
'''Use idle ignition table while coasting'''
 
~~PLACEHOLDER~~
 
'''Separate idle VE table'''
 
This activates a separate fuel table for Idle, this allows fine tuning of the idle fuelling.
 
'''Override Idle VE table load axis'''
 
Allows you to change the default load axis used for the VE table, which is typically MAP (manifold absolute pressure).
 
'''Ramp target RPM on return to idle'''
 
Ramp the idle target down from the entry threshold over N seconds when returning to idle. Helps prevent overshooting (below) the idle target while returning to idle from coasting.
 
'''Ramp target duration'''
 
idle return target ramp duration
 
'''Separate idle tables for cranking taper'''
 
This uses separate ignition timing and VE tables not only for idle conditions, also during the postcranking-to-idle taper transition (See also afterCrankingIACtaperDuration).
 
'''Separate coasting idle table'''


Override the IAC position during overrun conditions to help reduce engine breaking, this can be helpful for large engines in light weight cars or engines that have trouble returning to idle.
<!-- section:dashpotEmulation -->
 
== Dashpot emulation ==
'''Dashpot coasting-to-idle Initial idle Adder'''


<!-- field:iacByTpsTaper -->
==== Dashpot coasting-to-idle Initial idle Adder ====
This value is an added for base idle value. Idle Value added when coasting and transitioning into idle.
This value is an added for base idle value. Idle Value added when coasting and transitioning into idle.


'''Dashpot coasting-to-idle Hold time'''
<!-- field:iacByTpsHoldTime -->
 
==== Dashpot coasting-to-idle Hold time ====
How long initial idle adder is held before starting to decay.
How long initial idle adder is held before starting to decay.


'''Dashpot coasting-to-idle Decay time'''
<!-- field:iacByTpsDecayTime -->
 
==== Dashpot coasting-to-idle Decay time ====
How long it takes to remove initial IAC adder to return to normal idle.
How long it takes to remove initial IAC adder to return to normal idle.


'''Dashpot coasting-to-idle Initial idle Adder(AC ON)'''
<!-- field:iacByTpsTaperAC -->
 
==== Dashpot coasting-to-idle Initial idle Adder(AC ON) ====
This value is an added for base idle value(AC ON). Idle Value added when coasting and transitioning into idle.
This value is an added for base idle value(AC ON). Idle Value added when coasting and transitioning into idle.


'''Dashpot coasting-to-idle Hold time(AC ON)'''
<!-- field:iacByTpsHoldTimeAC -->
 
==== Dashpot coasting-to-idle Hold time(AC ON) ====
How long initial idle adder is held before starting to decay(AC ON).
How long initial idle adder is held before starting to decay(AC ON).


'''Dashpot coasting-to-idle Decay time(AC ON)'''
<!-- field:iacByTpsDecayTimeAC -->
 
==== Dashpot coasting-to-idle Decay time(AC ON) ====
How long it takes to remove initial IAC adder to return to normal idle(AC ON).
How long it takes to remove initial IAC adder to return to normal idle(AC ON).


'''CAN box extra idle-up target RPM adder'''
<!-- section:ignitionIdle -->
 
== Ignition idle settings ==
can box idle up demand
 
'''CAN box extra idle-up % adder'''
 
can box idle up demand %
 
'''Use Idle Timing Target Error curve'''


<!-- field:useIdleTimingTargetError -->
==== Open loop idle timing (RPM-error) ====
Use Idle Target Error Delta timing curve
Use Idle Target Error Delta timing curve


'''Idle Timing Target Error is Adder'''
<!-- field:useIdleTimingTargetErrorMode -->
==== Include corrections in idle timing ====
If enabled, adds the result from the RPM-error curve to the corrected idle advance. If disabled, it discards all corrections (IAT, CLT, PID etc.) and uses the curve value directly.


0 = replace, 1 = add
<!-- section:ignitionIdlePid -->
=== Closed loop ignition timing (PID) ===


'''Enable closed loop idle ignition timing'''
<!-- field:useIdleTimingPidControl -->
==== Enable PID control ====
Gain is in degrees advance per rpm away from target, a good starting point is 0.1 = 10 deg per 100 rpm


~~PLACEHOLDER~~
<!-- field:idleTimingPid_pFactor -->
==== P gain ====
Proportional value.
See https://content.epicefi.com/wiki/index.php/Guides:PID_Control


== Idle hardware ==
<!-- field:idleTimingPid_iFactor -->
==== I gain ====
Integral value
See https://content.epicefi.com/wiki/index.php/Guides:PID_Control.


'''Use Stepper'''
<!-- field:idleTimingPid_dFactor -->
==== D gain ====
Derivative value
See https://content.epicefi.com/wiki/index.php/Guides:PID_Control.


This setting should only be used if you have a stepper motor idle valve and a stepper motor driver installed.
<!-- field:idleTimingPid_minValue -->
==== Min adjustment (retard) ====
PID controller output minimum duty value.


'''Electronic throttle idle range'''
<!-- field:idleTimingPid_maxValue -->
==== Max adjustment (advance) ====
PID controller output maximum duty value.


This sets the range of the idle control on the ETB. At 100% idle position, the value specified here sets the base ETB position.
<!-- field:idleTimingSoftEntryTime -->
==== Soft entry time ====
When entering idle, and the PID settings are aggressive, it's good to make a soft entry upon entering closed loop


=== Idle Valve Hardware ===
<!-- section:idlehw -->
= Idle hardware =


=== Solenoid ===
<!-- section:idleSolenoid -->
 
== Solenoid ==
'''Idle Solenoid Primary output'''


<!-- field:idle_solenoidPin -->
==== Idle Solenoid Primary output ====
?highlight=class~outputs
?highlight=class~outputs


'''Double Solenoid Mode'''
* '''$output_pin_e_list'''


<!-- field:isDoubleSolenoidIdle -->
==== Double Solenoid Mode ====
Subaru/BMW style where default valve position is somewhere in the middle. First solenoid opens it more while second can close it more than default position.
Subaru/BMW style where default valve position is somewhere in the middle. First solenoid opens it more while second can close it more than default position.


'''Idle Solenoid Secondary output'''
<!-- field:secondSolenoidPin -->
 
==== Idle Solenoid Secondary output ====
Some Subaru and some Mazda use double-solenoid idle air valve
Some Subaru and some Mazda use double-solenoid idle air valve
?highlight=class~outputs
?highlight=class~outputs


'''Idle Solenoid output(s) Mode'''
* '''$output_pin_e_list'''


~~PLACEHOLDER~~
<!-- field:idle_solenoidPinMode -->
==== Idle Solenoid output(s) Mode ====


'''Idle Solenoid Frequency'''
* '''$pin_output_mode_e_enum'''


~~PLACEHOLDER~~
<!-- field:idle_solenoidFrequency -->
==== Idle Solenoid Frequency ====


=== Stepper ===
<!-- section:cltIdleRPMCurve -->
= Idle target RPM =


'''Drive stepper with dual H bridges'''
<!-- section:cltIdleTable -->
= Idle open loop position =


If enabled we use two H-bridges to drive stepper idle air valve
<!-- section:cltCrankingCurveDialog -->
= Idle cranking position =


'''Drive stepper with PushPull outputs'''
<!-- field:etbIdleThrottleRange#1 -->
 
==== ETB idle maximum angle ====
If enabled we use four Push-Pull outputs to directly drive stepper idle air valve coils
This sets the range of the idle control on the ETB. At 100% idle position, the value specified here sets the base ETB position.
 
'''Stepper reaction time'''
 
~~PLACEHOLDER~~
 
'''Stepper total steps'''
 
~~PLACEHOLDER~~
 
'''Stepper parking extra steps, %'''
 
~~PLACEHOLDER~~
 
'''Force parking every restart'''
 
~~PLACEHOLDER~~
 
=== Stepper Controller Hardware ===
 
'''Idle Stepper Step Pin'''
 
~~PLACEHOLDER~~
 
'''Idle Stepper Dir Pin'''
 
~~PLACEHOLDER~~
 
'''Idle Stepper Dir Pin Mode'''
 
~~PLACEHOLDER~~
 
'''Idle Stepper Enable Pin'''
 
~~PLACEHOLDER~~
 
'''Idle Stepper Enable Pin Mode'''
 
~~PLACEHOLDER~~
 
=== Stepper H-Bridge Hardware ===
 
'''Inverted driver pins'''
 
Enable if DC-motor driver (H-bridge) inverts the signals (eg. RZ7899 on Hellen boards)
 
=== H-Bridge Hardware No1 ===
 
'''No1 Direction #1'''
 
~~PLACEHOLDER~~
 
'''No1 Direction #2'''
 
~~PLACEHOLDER~~
 
'''No1 Control'''
 
Acts as EN pin in two-wire mode
 
'''No1 Disable'''
 
~~PLACEHOLDER~~
 
=== H-Bridge Hardware No2 ===
 
'''No2 Direction #1'''
 
~~PLACEHOLDER~~
 
'''No2 Direction #2'''
 
~~PLACEHOLDER~~
 
'''No2 Control'''
 
Acts as EN pin in two-wire mode
 
'''No2 Disable'''
 
~~PLACEHOLDER~~
 
=== Stepper Direct-Drive Hardware ===
 
'''Stepper A+'''
 
stepper_raw_output 1
?highlight=class~outputs
 
'''Stepper A-'''
 
stepper_raw_output 2
?highlight=class~outputs
 
'''Stepper B+'''
 
stepper_raw_output 3
?highlight=class~outputs
 
'''Stepper B-'''
 
stepper_raw_output 4
?highlight=class~outputs
 
=== Micro-Stepping ===
 
'''Stepping Mode'''
 
For micro-stepping, make sure that PWM frequency (etbFreq) is high enough
 
'''Min. Duty Cycle'''
 
Use to limit the current when the stepper motor is idle, not moving (100% = no limit)
 
'''Max. Duty Cycle'''
 
Use to limit the max.current through the stepper motor (100% = no limit)
 
== Open Loop Idle ==
 
'''A/C adder'''
 
Additional idle % while A/C is active
 
'''A/C RPM target'''
 
Idle target speed when A/C is enabled. Some cars need the extra speed to keep the AC efficient while idling.
 
'''Transmission idle up adder'''
 
Additional idle % while transmission idle up is active
 
'''Transmission idle up RPM target'''
 
Idle target speed when transmission idle up is enabled. Some transmissions need extra idle speed when engaged.
 
'''Fan #1 adder'''
 
Additional idle % when fan #1 is active. In PWM mode this is scaled according to PWM %
 
'''Fan #2 adder'''
 
Additional idle % when fan #2 is active. In PWM mode this is scaled according to PWM %
 
== Transmission Idle Up ==
 
'''Transmission idle up switch'''
 
Transmission idle up switch input
?highlight=class~switch_inputs
 
'''Transmission idle up switch mode'''
 
~~PLACEHOLDER~~
 
'''Transmission idle up adder'''
 
Additional idle % while transmission idle up is active
 
'''Transmission idle up RPM target'''
 
Idle target speed when transmission idle up is enabled. Some transmissions need extra idle speed when engaged.
 
== Idle Target RPM from CLT ==
 
~~PLACEHOLDER~~
 
== Idle Position from CLT vs Idle Target RPM ==
 
~~PLACEHOLDER~~
 
== Idle After Start (Crank-to-Run) Taper vs CLT ==
 
== Closed-loop Ignition idle timing ==
 
'''Proportional gain'''
 
~~PLACEHOLDER~~
 
'''Integral gain'''
 
~~PLACEHOLDER~~
 
'''Derivative gain'''
 
~~PLACEHOLDER~~
 
'''Min adjustment (retard)'''
 
Output Min Duty Cycle


'''Max adjustment (advance)'''
<!-- section:afterCrankingIACtaperDurationDialog -->
 
= Idle after start (crank-to-run) taper =
Output Max Duty Cycle
 
'''Soft entry time'''
 
When entering idle, and the PID settings are aggressive, it's good to make a soft entry upon entering closed loop


== Target Delta ignition idle timing ==
<!-- section:iacPidMultTbl -->
= Idle PID output gain =


== Idle PID multiplier ==
<!-- section:idleExtraPidCurve -->
= Idle PID error gain =


~~PLACEHOLDER~~
<!-- section:iacCoastingCurve -->
= Coasting idle position override =


== Idle extra PID ==
<!-- section:idleValveForceClose -->
= Valve force close / stepper re-park =


~~PLACEHOLDER~~
<!-- field:idleValveForceCloseRpm -->
==== Force close: RPM threshold ====
Gradually close the idle valve and re-park the stepper when RPM is above this value AND TPS is above idleValveForceCloseTps. Prevents manifold pressure leakage through the valve at cruise, and resets accumulated stepper step-loss errors. Set to 0 to disable.


== Coasting Idle position ==
<!-- field:idleValveForceCloseDelay -->
==== Force close: delay (s) ====
Seconds to wait after RPM and TPS conditions are both met before beginning to close the idle valve. Prevents closing on brief throttle blips.


~~PLACEHOLDER~~
<!-- field:idleValveForceCloseTps -->
==== Force close: TPS taper start (%) ====
TPS at which the idle valve starts closing toward zero (taper start). Used together with idleValveForceCloseRpm and idleValveForceCloseTpsEnd.


== Idle VE ==
<!-- field:idleValveForceCloseTpsEnd -->
==== Force close: TPS taper end (%) ====
TPS at which the idle valve reaches fully closed and the stepper is re-parked (taper end). Position is linearly interpolated from current to zero between idleValveForceCloseTps and this value. Should be greater than idleValveForceCloseTps.


~~PLACEHOLDER~~
<!-- field:idleValveForceCloseReparkSteps -->
==== Force close: re-park overstep (steps) ====
Number of extra steps to overstep toward closed when re-parking after force-close. Compensates for stepper drift without needing the full startup homing sequence. 5 is a good starting point.


== Idle Target RPM Ignition advance ==
<!-- section:IdleTimingTargetErrorDialog -->
= Open loop ignition idle timing (RPM-error) =


~~PLACEHOLDER~~
<!-- section:idleVeTableTbl -->
= Idle fuel table =


== Rotational Idle ==
<!-- section:idleAdvanceCurve -->
= Idle ignition table =


'''Enable'''
<!-- section:rotIdleDialog -->
= Rotational idle =


<!-- field:rotIdleEnabled -->
==== Enable ====
Enable rotational idle.
Enable rotational idle.


'''Pin'''
<!-- field:rotationalIdlePin -->
 
==== Pin ====
Pin that activates the rotational idle.
Pin that activates the rotational idle.
?highlight=class~switch_inputs
?highlight=class~switch_inputs


'''Pin Mode'''
* '''$switch_input_pin_e_list'''


~~PLACEHOLDER~~
<!-- field:rotationalIdlePinMode -->
==== Pin Mode ====


'''Stop STFT for rotational idle (no fuel trim)'''
* '''$pin_input_mode_e_enum'''


<!-- field:rot_idle_zero_stft -->
==== Stop STFT for rotational idle (no fuel trim) ====
Zero STFT for rotational idle.
Zero STFT for rotational idle.


'''Rotational cut spark'''
<!-- field:rotational_cut_spark -->
 
==== Rotational cut spark ====
Rotational cut spark.
Rotational cut spark.


'''Rotational cut fuel'''
<!-- field:rotational_cut_fuel -->
 
==== Rotational cut fuel ====
Rotational cut fuel.
Rotational cut fuel.


'''Enable automatic engagement for TPS'''
<!-- field:rot_idle_auto_engage -->
 
==== Enable automatic engagement for TPS ====
Enable automatic engagement of rotational idle.
Enable automatic engagement of rotational idle.


'''Engage rotational idle below this Driver Intent(TPS/PPS)'''
<!-- field:rot_idle_max_tps -->
 
==== Engage rotational idle below this Driver Intent(TPS/PPS) ====
Engage rotational idle under this Driver Intent.
Engage rotational idle under this Driver Intent.


'''Enable auto engage for CLT'''
<!-- field:rot_idle_auto_engage_clt_enable -->
 
==== Enable auto engage for CLT ====
Enable Rotational Idle Auto engage CLT.
Enable Rotational Idle Auto engage CLT.


'''Auto engage above this CLT'''
<!-- field:rot_idle_auto_engage_clt -->
 
==== Auto engage above this CLT ====
Rotational Idle Auto engage CLT.
Rotational Idle Auto engage CLT.


'''Minimum CLT'''
<!-- field:rot_idle_min_clt -->
 
==== Minimum CLT ====
Minimum CLT for the rotational idle.
Minimum CLT for the rotational idle.


'''Maximum TPS/PPS  (0 to disable)'''
<!-- field:rot_idle_max_tps_global -->
 
==== Maximum TPS/PPS  (0 to disable) ====
Disengage rotational idle above this Driver Intent.
Disengage rotational idle above this Driver Intent.


'''Minimum RPM'''
<!-- field:rot_idle_min_rpm -->
 
==== Minimum RPM ====
Minimum RPM for the rotational idle.
Minimum RPM for the rotational idle.


'''Maximum RPM'''
<!-- field:rot_idle_max_rpm -->
 
==== Maximum RPM ====
Maximum RPM for the rotational idle.
Maximum RPM for the rotational idle.


'''Add idle % idle output'''
<!-- field:rot_idle_disable_closed_loop_idle -->
==== Disable closed loop idle when rotational idle active ====
Disable closed loop idle control when rotational idle is active.


<!-- field:rot_idle_add_air -->
==== Add idle % idle output ====
Add air to the idle.
Add air to the idle.


'''Add/Remove air percentage'''
<!-- field:rot_idle_add_air_percent -->
 
==== Add/Remove air percentage ====
Percentage of air to add/remove to the idle.
Percentage of air to add/remove to the idle.


'''Override ETB Idle Authority (0 to disable override)'''
<!-- field:rot_idle_override_etb_authority -->
 
==== Override ETB Idle Authority (0 to disable override) ====
Override the ETB authority for the rotational idle.
Override the ETB authority for the rotational idle.


'''Fuel Multiplier (1.5 = 150% , 0 to 2.5)'''
<!-- field:rotIdleFuelMultiplierPercent -->
 
==== Fuel Multiplier (1.5 = 150% , 0 to 2.5) ====
Rotational idle fuel multiplier
Rotational idle fuel multiplier


'''Rotational Absolute Timing (-30 = 30 ATDC, 0 =  original timing, 10 - -100)'''
<!-- field:rotIdleIgnitionAdder -->
 
==== Rotational Absolute Timing (-30 = 30 ATDC, 0 =  original timing, 10 - -100) ====
Rotational idle absolute ignition (-20 = atdc 20 degrees)
Rotational idle absolute ignition (-20 = atdc 20 degrees)


'''Old rotational idle logic (true = old, false = new) - see tooltip'''
<!-- field:old_new_rotational_idle_logic -->
==== Old rotational idle logic (true = old, false = new) - see tooltip ====
Old rotational idle logic, New logic is based on global spark counter, the three layers of accumulators and adders run at the same time, offset shifts the pattern forward or backward with relation to each other, this should allow different sound patterns by combining different offsets;


Old rotational idle logic, New logic is based on global spark counter, the three layers of accumulators and adders run at the same time, offset shifts the pattern forward or backward with relation to each other, this should allow different sound patterns by combining different offsets;"true = old, false = new
<!-- field:rot_idle_fuel_offset -->
==== Rotational Fuel Offset (should be 0, this shifts fuel cut in relation to ignition signal) ====
Rotational idle fuel offset (should be 0, this shifts fuel cut in relation to ignition signal). At 0, in sequential injection/ignition the fuel pulse is cut before the ignition pulse. so fuel is not wasted.


'''Rotational Fuel Offset (should be 0, this shifts fuel cut in relation to ignition signal)'''
<!-- field:rot_idle_acc_max1 -->
==== Accumulator Max 1 ====
Max value for the rotational idle accumulator to skip


Rotational idle fuel offset (should be 0, this shifts fuel cut in relation to ignition signal). At 0, in sequential injection/ignition the fuel pulse is cut before the ignition pulse. so fuel is not wasted.
<!-- field:rot_idle_acc_adder1 -->
==== Accumulator Adder 1 ====
Accumulator adder


'''Accumulator Max 1'''
<!-- field:rot_idle_offset1 -->
==== Accumulator Offset 1 ====
Rotational pattern shift #1


<!-- field:rot_idle_acc_max2 -->
==== Accumulator Max 2 ====
Max value for the rotational idle accumulator to skip
Max value for the rotational idle accumulator to skip


'''Accumulator Adder 1'''
<!-- field:rot_idle_acc_adder2 -->
 
==== Accumulator Adder 2 ====
Accumulator adder
Accumulator adder


'''Accumulator Offset 1'''
<!-- field:rot_idle_offset2 -->
 
==== Accumulator Offset 2 ====
Rotational pattern shift #1
Rotational pattern shift #2
 
'''Accumulator Max 2'''


<!-- field:rot_idle_acc_max3 -->
==== Accumulator Max 3 ====
Max value for the rotational idle accumulator to skip
Max value for the rotational idle accumulator to skip


'''Accumulator Adder 2'''
<!-- field:rot_idle_acc_adder3 -->
 
==== Accumulator Adder 3 ====
Accumulator adder
Accumulator adder


'''Accumulator Offset 2'''
<!-- field:rot_idle_offset3 -->
==== Accumulator Offset 3 ====
Rotational pattern shift #3


Rotational pattern shift #2
<!-- section:transmissionIdleUpSettings -->
= Transmission idle compensation =


'''Accumulator Max 3'''
<!-- field:transmissionIdleUpPin -->
==== Transmission idle up switch ====
Transmission idle up switch input
?highlight=class~switch_inputs


Max value for the rotational idle accumulator to skip
* '''$switch_input_pin_e_list'''


'''Accumulator Adder 3'''
<!-- field:transmissionIdleUpPinMode -->
==== Transmission idle up switch mode ====


Accumulator adder
* '''$pin_input_mode_e_enum'''


'''Accumulator Offset 3'''
<!-- field:transmissionIdleExtraOffset#1 -->
==== Transmission idle up adder ====
Additional idle % while transmission idle up is active


Rotational pattern shift #3
<!-- field:transmissionIdleRpmTarget#1 -->
==== Transmission idle up RPM target ====
Idle target speed when transmission idle up is enabled. Some transmissions need extra idle speed when engaged.

Revision as of 22:04, 6 June 2026

Idle settings

Idle settings

Idle control mode

See also idleRpmPid

  • Open Loop + Closed Loop
  • Open Loop

TPS threshold

Below this throttle position, the engine is considered idling. If you have an electronic throttle, this checks accelerator pedal position instead of throttle position, and should be set to 1-2%.

Force idle below throttle threshold

Force idle STATE below DriveIntent threshold.

Force timing only below pedal threshold

Force idle ignition (delta target only) below DriverThreshold threshold, only for ignition timing

Idle force delayed by DFCO

Do not force idle ignition while DFCO is active for either of the above.

Delta target rpm smoothing factor

Smoothing factor for delta target rpm ignition adjustment

RPM upper limit

How far above idle speed do we consider idling, i.e. coasting detection threshold. For example, if target = 800, this param = 200, then anything below 1000 RPM is considered idle.

RPM deadzone

If the RPM closer to target than this value, disable closed loop idle correction to prevent oscillation

Max vehicle speed

Above this speed, disable closed loop idle control. Set to 0 to disable (allow closed loop idle at any speed).

Idle overrides

Separate idle ignition table

This activates a separate ignition timing table for idle conditions, this can help idle stability by using ignition retard and advance either side of the desired idle speed. Extra advance at low idle speeds will prevent stalling and extra retard at high idle speeds can help reduce engine power and slow the idle speed.

Use idle ignition table while coasting

Max RPM for idle advance while coasting

Maximum RPM for which idle advance while coasting is enabled

Separate idle VE table

This activates a separate fuel table for Idle, this allows fine tuning of the idle fuelling.

Override Idle VE table load axis

Allows you to change the default load axis used for the VE table, which is typically MAP (manifold absolute pressure).

  • None
  • MAP
  • TPS
  • PERCENT BARO

Ramp target RPM on return to idle

Ramp the idle target down from the entry threshold over N seconds when returning to idle. Helps prevent overshooting (below) the idle target while returning to idle from coasting.

  • no
  • yes

Ramp target duration

idle return target ramp duration

Separate idle tables for cranking taper

This uses separate ignition timing and VE tables not only for idle conditions, also during the postcranking-to-idle taper transition (See also afterCrankingIACtaperDuration).

Separate coasting idle table

Override the IAC position during overrun conditions to help reduce engine breaking, this can be helpful for large engines in light weight cars or engines that have trouble returning to idle.

Open Loop Idle

A/C adder

Additional idle % while A/C is active

A/C RPM target

Idle target speed when A/C is enabled. Some cars need the extra speed to keep the AC efficient while idling.

Transmission idle up adder

Additional idle % while transmission idle up is active

Transmission idle up RPM target

Idle target speed when transmission idle up is enabled. Some transmissions need extra idle speed when engaged.

Fan #1 adder

Additional idle % when fan #1 is active. In PWM mode this is scaled according to PWM %

Fan #1 RPM target

Idle RPM target adder when fan #1 is active. Raises the idle RPM target so the closed-loop PID does not fight the open-loop IAC adder.

Fan #2 adder

Additional idle % when fan #2 is active. In PWM mode this is scaled according to PWM %

Fan #2 RPM target

Idle RPM target adder when fan #2 is active. Raises the idle RPM target so the closed-loop PID does not fight the open-loop IAC adder.

CAN idle-up target RPM adder

can box idle up demand

CAN idle-up % adder

can box idle up demand %

Closed Loop Idle

P gain

Proportional value. See https://content.epicefi.com/wiki/index.php/Guides:PID_Control

I gain

Integral value

See https://content.epicefi.com/wiki/index.php/Guides:PID_Control.

D gain

Derivative value

See https://content.epicefi.com/wiki/index.php/Guides:PID_Control.

Min

PID controller output minimum duty value.

Max

PID controller output maximum duty value.

iTerm Min

iTerm min value

iTerm Max

iTerm max value

PID Extra for low RPM

Increases PID reaction for RPM<target by adding extra percent to PID-error

Use PID output gain table

This flag allows to use a special 'PID Multiplier' table (0.0-1.0) to compensate for nonlinear nature of IAC-RPM controller

ETB idle settings

ETB idle maximum angle

This sets the range of the idle control on the ETB. At 100% idle position, the value specified here sets the base ETB position.

Dashpot emulation

Dashpot coasting-to-idle Initial idle Adder

This value is an added for base idle value. Idle Value added when coasting and transitioning into idle.

Dashpot coasting-to-idle Hold time

How long initial idle adder is held before starting to decay.

Dashpot coasting-to-idle Decay time

How long it takes to remove initial IAC adder to return to normal idle.

Dashpot coasting-to-idle Initial idle Adder(AC ON)

This value is an added for base idle value(AC ON). Idle Value added when coasting and transitioning into idle.

Dashpot coasting-to-idle Hold time(AC ON)

How long initial idle adder is held before starting to decay(AC ON).

Dashpot coasting-to-idle Decay time(AC ON)

How long it takes to remove initial IAC adder to return to normal idle(AC ON).

Ignition idle settings

Open loop idle timing (RPM-error)

Use Idle Target Error Delta timing curve

Include corrections in idle timing

If enabled, adds the result from the RPM-error curve to the corrected idle advance. If disabled, it discards all corrections (IAT, CLT, PID etc.) and uses the curve value directly.

Closed loop ignition timing (PID)

Enable PID control

Gain is in degrees advance per rpm away from target, a good starting point is 0.1 = 10 deg per 100 rpm

P gain

Proportional value. See https://content.epicefi.com/wiki/index.php/Guides:PID_Control

I gain

Integral value

See https://content.epicefi.com/wiki/index.php/Guides:PID_Control.

D gain

Derivative value

See https://content.epicefi.com/wiki/index.php/Guides:PID_Control.

Min adjustment (retard)

PID controller output minimum duty value.

Max adjustment (advance)

PID controller output maximum duty value.

Soft entry time

When entering idle, and the PID settings are aggressive, it's good to make a soft entry upon entering closed loop

Idle hardware

Solenoid

Idle Solenoid Primary output

?highlight=class~outputs

  • $output_pin_e_list

Double Solenoid Mode

Subaru/BMW style where default valve position is somewhere in the middle. First solenoid opens it more while second can close it more than default position.

Idle Solenoid Secondary output

Some Subaru and some Mazda use double-solenoid idle air valve ?highlight=class~outputs

  • $output_pin_e_list

Idle Solenoid output(s) Mode

  • $pin_output_mode_e_enum

Idle Solenoid Frequency

Idle target RPM

Idle open loop position

Idle cranking position

ETB idle maximum angle

This sets the range of the idle control on the ETB. At 100% idle position, the value specified here sets the base ETB position.

Idle after start (crank-to-run) taper

Idle PID output gain

Idle PID error gain

Coasting idle position override

Valve force close / stepper re-park

Force close: RPM threshold

Gradually close the idle valve and re-park the stepper when RPM is above this value AND TPS is above idleValveForceCloseTps. Prevents manifold pressure leakage through the valve at cruise, and resets accumulated stepper step-loss errors. Set to 0 to disable.

Force close: delay (s)

Seconds to wait after RPM and TPS conditions are both met before beginning to close the idle valve. Prevents closing on brief throttle blips.

Force close: TPS taper start (%)

TPS at which the idle valve starts closing toward zero (taper start). Used together with idleValveForceCloseRpm and idleValveForceCloseTpsEnd.

Force close: TPS taper end (%)

TPS at which the idle valve reaches fully closed and the stepper is re-parked (taper end). Position is linearly interpolated from current to zero between idleValveForceCloseTps and this value. Should be greater than idleValveForceCloseTps.

Force close: re-park overstep (steps)

Number of extra steps to overstep toward closed when re-parking after force-close. Compensates for stepper drift without needing the full startup homing sequence. 5 is a good starting point.

Open loop ignition idle timing (RPM-error)

Idle fuel table

Idle ignition table

Rotational idle

Enable

Enable rotational idle.

Pin

Pin that activates the rotational idle. ?highlight=class~switch_inputs

  • $switch_input_pin_e_list

Pin Mode

  • $pin_input_mode_e_enum

Stop STFT for rotational idle (no fuel trim)

Zero STFT for rotational idle.

Rotational cut spark

Rotational cut spark.

Rotational cut fuel

Rotational cut fuel.

Enable automatic engagement for TPS

Enable automatic engagement of rotational idle.

Engage rotational idle below this Driver Intent(TPS/PPS)

Engage rotational idle under this Driver Intent.

Enable auto engage for CLT

Enable Rotational Idle Auto engage CLT.

Auto engage above this CLT

Rotational Idle Auto engage CLT.

Minimum CLT

Minimum CLT for the rotational idle.

Maximum TPS/PPS (0 to disable)

Disengage rotational idle above this Driver Intent.

Minimum RPM

Minimum RPM for the rotational idle.

Maximum RPM

Maximum RPM for the rotational idle.

Disable closed loop idle when rotational idle active

Disable closed loop idle control when rotational idle is active.

Add idle % idle output

Add air to the idle.

Add/Remove air percentage

Percentage of air to add/remove to the idle.

Override ETB Idle Authority (0 to disable override)

Override the ETB authority for the rotational idle.

Fuel Multiplier (1.5 = 150% , 0 to 2.5)

Rotational idle fuel multiplier

Rotational Absolute Timing (-30 = 30 ATDC, 0 = original timing, 10 - -100)

Rotational idle absolute ignition (-20 = atdc 20 degrees)

Old rotational idle logic (true = old, false = new) - see tooltip

Old rotational idle logic, New logic is based on global spark counter, the three layers of accumulators and adders run at the same time, offset shifts the pattern forward or backward with relation to each other, this should allow different sound patterns by combining different offsets;

Rotational Fuel Offset (should be 0, this shifts fuel cut in relation to ignition signal)

Rotational idle fuel offset (should be 0, this shifts fuel cut in relation to ignition signal). At 0, in sequential injection/ignition the fuel pulse is cut before the ignition pulse. so fuel is not wasted.

Accumulator Max 1

Max value for the rotational idle accumulator to skip

Accumulator Adder 1

Accumulator adder

Accumulator Offset 1

Rotational pattern shift #1

Accumulator Max 2

Max value for the rotational idle accumulator to skip

Accumulator Adder 2

Accumulator adder

Accumulator Offset 2

Rotational pattern shift #2

Accumulator Max 3

Max value for the rotational idle accumulator to skip

Accumulator Adder 3

Accumulator adder

Accumulator Offset 3

Rotational pattern shift #3

Transmission idle compensation

Transmission idle up switch

Transmission idle up switch input ?highlight=class~switch_inputs

  • $switch_input_pin_e_list

Transmission idle up switch mode

  • $pin_input_mode_e_enum

Transmission idle up adder

Additional idle % while transmission idle up is active

Transmission idle up RPM target

Idle target speed when transmission idle up is enabled. Some transmissions need extra idle speed when engaged.