______ | ___ \ | |_/ / | / | |\ \ \_| \_|
_____ | __ \ | | | | | | | | | |__| | |_____/
# ## # # # ###
## ## ## ## ## ## ## ## ######
### ##### ## ## ## ## ## ## ## ## ### ##
IMPORTANT: enter the case-INsensitive alphabetic (no numbers) code AND WRITE SOME SHORT summary of changes (below) if you are saving changes. (not required for previewing changes). Wiki-spamming is not tolerated, will be removed, so it does NOT even show up in history. Spammers go away now. Visit Preferences to set your user name Summary of change: '''Idle Air Control''' The idle stepped does something, but I'm not confinced it's right. I connected the 4 wires from the stepper to the A,B,C & D channels (on the EC18 connector) going clockwise round the motor looking at it from the connector end. My stepper is an "anti-stepper" like Marcell's... It was operating the wrong way round at first. '''Idle controls''' Idle afterstart RPM (added value?) - Value to add to base idle speed when the car is first started. Idle afterstart duration (s) - the duration to do the above for. IAC afterstart (steps per 160 rpm) 0 is OK (this was a hint to the ECM, dropped from firmware recently) Max steps to extend - total number of steps the motor can do. I managed to shoot the pin out of the end of mine. Don't do this as they get stuck in awkward places... IAC step sequence - Lots of things, depending on how you wire up your motor. Mine was 201. ie drive C, then B, then D, then A. stepper speed (ms) - Speed motor moves at. ie time between steps. 0 ms is fast and can shoot the pin a long way (see earlier). 3..7 msec is common. Surprising that your stepper works so fast. iac_conf RAW - bitflags, see global.h . The values you copied from Marcell should be fine (precise idle=on; stepper=on; asymetric PID=whatever you like) See the IAC section of: MembersPage/MarcellGal/EngineSwap/AirFeed for more info. on config '''Hints for Tuning Idle''' * Play with mdi.. where .. is the 2 hex digits from 00 to FF. * set back to mdi00 at the end for automatic control * set Integral decrease limit according to I value (though 06 sounds right) * Decrease the reference positions, a bit (like 5..10) higher above than the best mdi.. values (temp dependent). As high that still allows reaching target RPM, but does not allow much lower). Decreasing from a high value until RPM target reached is probably the easiest way. Do it for every temp as it warms up. '''Update''' A couple of problems were found. * The plenum did have a slight leak from an unused fitting. * I had a partially blocked pre-cat on one side of the engine (Main cat was OK) causing the revs to drop half the time!! Moral: Check carefully for mechanical problems 1st! * With the leak fixed and pre-cats removed, it idles smoothly but a little low. ** don't forget that the temperature dependent reference positions are just hint to the PID. The RPM target ("final word") depends on the (2 point, cold and warm) idle RPM points. '''Current Idle Config''' Note that this is not correctly set up yet since various engine changes have happened. iac_step_seq=C9 iac_conf=4C iac_max_steps=B0 iac_tps_thres=05 iac_cold_idle_temp=BF iac_warm_idle_temp=CF iac_cold_rpm=5A iac_warm_rpm=50 iac_cold_start_pos=64 iac_warm_start_pos=B4 iac_afterstart_rpm=0A iac_afterstart_duration=28 iac_afterstart_steps=00 iac_kp=14 iac_ki=01 iac_kd=01 iac_integral_speed=0A iac_integral_limit_dec=06 iac_integral_limit_inc=19 iac_integral_deadband=0F iac_deadband=0A iac_pid_conf=00 iac_overclose_interval=0A iac_ref_pos[0]=B0 iac_ref_pos[1]=B0 iac_ref_pos[2]=B0 iac_ref_pos[3]=B0 iac_ref_pos[4]=B0 iac_ref_pos[5]=B0 iac_ref_pos[6]=B0 iac_ref_pos[7]=B0 iac_ref_pos[8]=B0 iac_ref_pos[9]=B0 iac_sol_channel=FF iac_ign_advance_change=50 iac_ign_retard_change=50 iac_ign_advance_limit=00 iac_ign_retard_limit=00 iac_ign_threshold=08 '''New Question:''' '''Q''' Does the direction the stepper moves to close the valve matter? '''A''' Yes, it matter which direction the stepper moves, 0% should be closed and 100% far open, otherwise pid controller wont work properly. Be sure to start with proper reference postions in your iac reference table (disable pid controller at first Kp, Ki, Kd = 0) thatway the iac runs on reference table only without pid interfering. '''Next Q''' Mine is the other way around, so 0% is fully open. During start-up, the stepper is taken back to the 0 position, then allowed to move out to the 50% position. This is presumably based on the value in the "iac_max_steps" parameter? If I use mdiB0 (to move the IAC to "iac_max_steps") then Megatune shows the valve position to be at 70%. I assume that this is because there is a maximum of 255 idle steps in the ECU? With all zeros for the PID controller, the idle works quite nicely with the valve position set to 0x87. However, the "sense" of the controls is still wrong. I have to make the number smaller to increase the speed of the engine. How can I reverse this? Surely I can't just change the stepper drive direction (although this would be nice!), as then it won't be able to reference itself correctly - ie there will be no defined point to start counting from. '''A''': actually you can change the stepper sequence to make it behave the proper way (e.g. higher mdiXX command is higher idle rpm) check (and adjust) config.iac_step_seq. Some wiki pages describing iac_step_seq: MembersPage/MarcellGal/EngineSwap/AirFeed MembersPage/JakeCederblad/IAC Or is it OK to accept that the stepper pin will be driven hard against the end stop in the idle valve casting? Optional: Add document to category: Wiki formatting: * is Bullet list ** Bullet list subentry ... '''Bold''', ---- is horizontal ruler, <code> preformatted text... </code> See wiki editing HELP for tables and other formatting tips and tricks.