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.
- "Rob is banking" on the dual-solanoid IAC thing working as the whole IAC thing has caused the first 20v I did to behave very badly at idle.
- what frequency (iacpwm_speed) did you try ? (with what firmware? 00 value is very high frequency again since 1.0.43 or so, the audi valve required this).
From global.h :\n
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).
- "The needs to be to wires for it", right?
- what is the question exactly ?
- with dual solenoid output, there is some restriction with the output selection. The 2 outputs must be neighbors like configure ign/6 and use ign/6 and ign/7 (the latter will be inverted), see GenBoard/Manual/DigitalOut/Table
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):\n
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.