MembersPage/DavidBlades/IdleControl (2006-03-21 21:30:40)

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

Update

A couple of problems were found.

Moral: Check carefully for mechanical problems 1st!

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.

Or is it OK to accept that the stepper pin will be driven hard against the end stop in the idle valve casting?