Idle Air Control
Lucas sticking IAC valve - tapered to stick
What is the exact model number of this Lucas stepper ?
Any pic ?
Part number: TVR E0121 (Other Rover part numbers exist for the same part)
The tapered end of the plunger moves in and out from the motor to open and close the idle valve. The motor itself screws in to a housing. The taper is not the sort that should really cause stickiness (it's too shallow) but something is causing issue - it may be something internal to the motor causing the problem when it driven to extend the plunger too far.
I have been looking at the IAC functions on my VEMS over the last couple of days and have found a potential problem with "fully close position tapered to stick" types of stepper.
During the power-up cycle, the stepper is driven hard against the "IAC closed" end stops to reference it, and then moved to the required position for starting. This is fine when my Lucas stepper motor is sat on the bench with a G clamp acting as an end stop, but the process doesn't work well when the stepper is in the car because the stepper pin is driven hard into a tapered port and then it sometimes sticks there
Sounds like a serious mechanical engineering problem, one should never apply taper that way (unless when the intention is to stick, of course).
I agree it's not at all a good design of idle valve, but it is the standard part for this car so I'd like it to work if possible. It is impossible to see what is happening when the stepper motor is assembled in the housing so I only have a theory that it sticks - however it does fit the facts I have found so far.
Results of "tapered to stick" design, and "sync to close" method:
- sometimes stick, and
- not moving to the correct starting position. (In this case, the car won't start without a lot of throttle applied)
- causes the stepper to be completely out of sync with where the ECU thinks it should be, meaning the car is difficult to do anything with because it isn't consistent from run to run.
A solution to this could be to reference the stepper by driving against the "IAC fully open" end stop - this is a much better defined position for the Lucas stepper - and it seems like it will make the main problem go away.
In order to test my theory, I reversed the step sequence, ensured all forms of IAC PID controllers were still disabled and changed the stepper reference position table to work in reverse. It confirmed my theory that the Lucas stepper can't accurately be referenced from the closed position (or "open-ended approach"), but it can be referenced properly from the fully open position.
Is there a way of implementing "sync to fully open" in VEMS fw properly without me having to tell lies to it? I would like to get the PID controller to operate again, and right now it will be very confused.
Thanks for the detailed report (you might want to share vemslog/vemscfg), we should investigate it.
- How many type of stepper IAC valves (and engines) are effected by that design ?
I am assembling a collection of VEMS logs now that should show different behaviour for the same apparent IAC position. It's not obvious from one VEMSLOG that there is any problem because it can be made to work for that particular IAC position, but on restart it is different.
I would prefer a config option to allow me to specify which end stop should be used to reference the stepper.
- iac_conf is a bit full (so this bit should go elsewhere)
- iac_max_steps ? Since you made lotsof experiments, maybe you can share with us (the really important full-travel detail): What is the reasonably allowed max_steps value for full-travel that will prevent the taper-stick (when synced to max-open position) ?
- iac_max_steps=B0 confirmed ?
- apparently: less than 255 steps ?
- unlikely: If much more, than other changes are needed as well (we implement fw-mods after details are known: to prevent having new important details/testcases appearing after)
The stepper motor itself has a useful range of 180 steps. In "standard direction" mode I configured the minimum steps to 80 and maximum steps to 255. This demonstrates the "sticking" problem.
With the stepper operating direction reversed, I configured minimum steps to 0 and maximum steps to 175. There is no evidence of the sticking problem probably because the stepper does not need to operate near the fully closed end stop.
It should be noted that the standard ECU uses the "valve fully open" end to reference the stepper. It sends 200 pulses to drive it during start up.
Historic Stepper Information
The idle stepped does something, but I'm not convinced 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 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.
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=B0 iac_ref_pos=B0 iac_ref_pos=B0 iac_ref_pos=B0 iac_ref_pos=B0 iac_ref_pos=B0 iac_ref_pos=B0 iac_ref_pos=B0 iac_ref_pos=B0 iac_ref_pos=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
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.
Q: New issue today: With PID idle control turned OFF, (so a fixed stepper position) I now find that the engine speed oscillates with amplitude of 250RPM (500 RPM peak to peak, average speed is 750 RPM) and a period of 2.5 seconds. What could cause oscillations in the idling???
Too slow to be a problem with a single cylinder weak spark. (The engine runs fine at high speed.)
Not had chance to do much diagnosis yet. I have not changed the config (other than what Auto VE learn has done) since last week. It worked then!!
Could it be one of these?
- Broken stepper/stepper driver?
- EGO correction fooling around?
- Wrong settings for the idle stepper position table (ie too little air)
- ignition-advanced based idle-control can also be configured to overreact and oscillate (although it's rather fast, so this high amplitude oscillation might be unlikely)
A: Autolearn had got carried away at one point, and had not changed some others. So there was some discontinuities in the VE map and hence oscillations. Once cleared up, it all worked fine.
- VE autolearn is ment as a tuning aid in the early stage of tuning, not to be saved (with mvs) every time before shutdown. Do you maybe have a backup of the VE map with discontinuities ? (and the good map to compare side by side).
- Yes. That's exactly how I found the problem - by doing mvs and looking for the changes... (I have backups of the config since I started) VE learn is now set to only work on the bits of map I've not got optimised yet. Mainly high(ish) load and high(ish) RPM. Most of the time I plod the car to work at 60 kph. Not had too many opportunities for tuning runs lately :(
Back to MembersPage/DavidBlades