MembersPage/Skassa/ToyotaIdleControl

Idle air subpage of MembersPage/Skassa

The toyota iac is a two coil unit.

Can this be controlled ?

BMW and audi uses similar iac, and both are controlled. MembersPage/GergelyLezsak/IdleControl controlled it first, now the feature enabled in standard firmware.

From global.h :

uint8_t iac_conf;            // iac, bit7:softidle bit6:asym
bit5:dualsol bit4=1:ignadv ON, bit3:preciseidle
bit2:stepper(0=pwm) bit1: low_power_halt
bit0:power_iac_only_when_move

You need to use dual solenoid (bit5=1) with the standard PWM (precise-idle) valve settings. iac_conf=0x78 would be good, but iac_conf=0x68 is better for start (ignition-based idle off via bit4=0).

With the injector outputs (injgroups) you have complete freedom (because of injgroups.)

The IAC valve is now working, and the idle i fair, i have to let it idle at 1100-1200pm otherwise it will stall,after i let go of the gaspedal.

Complete config (mcd dump):

primep=50
primep_temp_scaling=0F
cwl=50
cwh=1E
cranking_thres=05
awev=32
awev_temp_scaling=1A
awec=C0
warmup_clt_range[0]=00
warmup_clt_range[1]=0D
warmup_clt_range[2]=21
warmup_clt_range[3]=35
warmup_clt_range[4]=50
warmup_clt_range[5]=64
warmup_clt_range[6]=78
warmup_clt_range[7]=8C
warmup_clt_range[8]=AA
warmup_clt_range[9]=C8
warmup_clt[0]=B4
warmup_clt[1]=AC
warmup_clt[2]=A0
warmup_clt[3]=90
warmup_clt[4]=83
warmup_clt[5]=82
warmup_clt[6]=78
warmup_clt[7]=6E
warmup_clt[8]=69
warmup_clt[9]=64
warmup_rpm_scale=BF
req_fuel=30
divider=01
alternate=03
injopen=10
battfac=10
kpafac=7D
kpaoffs=A6
injocfuel=02
injrampup_battfac=FF
injpwm=FF
injpwmt=FF
injpwm6=00
rpmk[0]=0B
rpmk[1]=B8
tpsdot_kpadot_conf=00
tpsdotrate[0]=0A
tpsdotrate[1]=1F
tpsdotrate[2]=66
tpsdotrate[3]=FF
tpsaq[0]=0A
tpsaq[1]=0A
tpsaq[2]=0A
tpsaq[3]=0A
als_cut_mintps=FF
tpsasync=05
acmult=14
tpsacold=14
launch_enrich=00
launch_retard=00
overrun_fuelcut=5A
overrun_fuelresume=5A
rev_limit=55
airden_ignore=00
config11=31
config12=40
config13=02
batt_cal=BC
fastidle=C6
als_max_cut=00
dbaro=0C
tps_low=14
tps_high=BA
fan_temp=EA
fan_hyst=02
fan_channel=07
iac_step_seq=C9
iac_conf=78
iac_max_steps=FF
iac_tps_thres=08
iac_cold_idle_temp=A2
iac_warm_idle_temp=B4
iac_cold_rpm=96
iac_warm_rpm=82
iac_cold_start_pos=80
iac_warm_start_pos=66
iac_afterstart_rpm=23
iac_afterstart_duration=A0
iac_speed=06
iac_kp=6E
iac_ki=03
iac_kd=FF
launch_rpm=14
iac_integral_limit_dec=A0
iac_integral_limit_inc=FA
iac_integral_deadband=FF
iac_deadband=0A
als_cut_maxtps=00
iac_overclose_interval=02
iac_ref_pos[0]=BF
iac_ref_pos[1]=B3
iac_ref_pos[2]=A6
iac_ref_pos[3]=99
iac_ref_pos[4]=8C
iac_ref_pos[5]=80
iac_ref_pos[6]=73
iac_ref_pos[7]=66
iac_ref_pos[8]=59
iac_ref_pos[9]=4D
iac_sol_channel=60
iac_ign_slope=04
softrpm_range=04
iac_ign_advance_limit=20
iac_ign_retard_limit=20
iac_ign_threshold=04
ego_conf=06
ego_lag=01
ego_coolant=D8
ego_maxtps=FF
ego_maxmap=FF
ego_minrpm=5A
ego_maxrpm=C8
ego_warmup=3C
ego_lean_limit=0D
ego_rich_limit=0D
ego_pid_kp=3C
als_enrich=00
ego_delta=59
ego_target=19
ego_pid_window=FF
wbo2_warmup_ramp=C0
als_react_tps=00
wbo2_abs_limit=F5
wbo2_limit_maxt=A0
wbo2_fallback=60
wbo2_retry_t=06
wbo2_edgetime_corr=BA
wbo2_edgetime_min=50
wbo2_ri_target=9A
wbo2_nernstdc_target=89
wbo2_pump_pw_zero=63
wbo2_calibration=BD
wbo2_heater_pid_kp=46
wbo2_heater_pid_ki=10
wbo2_heater_pid_kd=1A
wbo2_heater_pid_ilimit=80
wbo2_pump_pid_kp=15
wbo2_pump_pid_ki=37
wbo2_pump_pid_kd=00
wbo2_pump_pid_ilimit=FF
wbo2_ri_confidence_scale=80
knock_conf=00
knock_sampling_window=FF
knock1_frequency=29
knock1_gain=3F
knock1_integrator=1F
knock2_frequency=29
knock2_gain=3F
knock2_integrator=1F
knock_threshold=FF
knock_noise_scale=FF
knock_max_retard=00
knock_default_retard=00
knock_retard_step=00
knock_retard_delay=00
knock_advance_step=00
knock_advance_delay=00
knock_minrpm=FF
knock_maxrpm=FF
ve_learn_coolant=D8
ve_learn_max_power=FF
ve_learn_rpm_scale=1E
ve_learn_kpa_scale=1E
ve_learn_ego_scale=43
ve_learn_min_weight=4D
ve_learn_speed=FF
ve_learn_limit=33
ve_learn_conf=00
lcd_c0=FE
lcd_delay=FF
lcd_backlight=FF
kpa_conf=21
ign_balance=00
als_retard_mintps=FF
als_retard_maxtps=00
lcd_default_view=00
primary_trigger=01
secondary_trigger=02
tooth_wheel=0B
trigger_tooth=01
another_trigger_tooth=06
crank_minper=7D
tooth_wheel_twidth1=0F
tooth_wheel_twidth2=1E
cam_sync_r_edge_phase=01
cam_sync_f_edge_phase=02
reset_engphase_after=D8
ign_tdcdelay=FF
ign_dwell14=3F
ign_dwell6=38
ign_crank_advance=28
ign_out=70
ignchmax=01
engine_off_delay=0F
pump_on_mintime=0B
fuelpump_channel=57
inj_stage2_rate=FF
inj_stage2_start_tps=FF
inj_stage2_start_map=FF
als_deact_rpm=FF
als_deact_time=01
als_deact_egt=00
als_retard=00
als_rev_limit=40
misc1out_minrpm=14
misc1out_maxrpm=37
misc1out_mintps=66
misc1out_maxtps=FF
misc1out_minmap=46
misc1out_maxmap=64
misc1out_channel=40
misc2out_minrpm=FF
misc2out_maxrpm=FF
misc2out_mintps=FF
misc2out_maxtps=FF
misc2out_minmap=FF
misc2out_maxmap=FF
misc2out_channel=FF
act_wot_rpm=28
act_wot_channel=4F
act_rpm_rpm=28
act_rpm_channel=4F
egt1_cal=47
als_tks_channel=FF
boost_conf=00
boost_targetoffs=00
boost_minpressure=FF
boost_pid_kp=20
boost_pid_ki=80
boost_pid_kd=01
boost_pid_ilimit=FF
boost_channel=FF
water_pump_temp=00
hybrid_rpm_a=00
hybrid_rpm_m=00
water_pump_hyst=00
water_pump_channel=FF
toothrel_normal=79
toothrel_missing=B5
fuelcut_min_kpa=0E
fuelcut_max_kpa=FF
tach_channel=5F
tach_divider=14
shiftcut_conf=01
shiftcut_channel=FF
shiftcut_time=00
softrpm_rpm=55

iac_integral_limit_dec=A0 is way too high. set it muuuch lower (05..40 is likely) to prevent negative integral windup.

Negative integral windup: when RPM is higher than target, integral goes negative; if high iac_integral_limit_dec allows it to go too negative, it requires too much time to diminish after RPM drops under target => engine stalls.