Last issue in Project Honda Insight, Part 12 - The MoTeC CRIP we got the MoTeC crank reference sorted, allowing the ECU to time the spark and injection correctly. With that done, it was time to start the car – very exciting.
But without any idle speed control working, the engine revved all the time at 1800 rpm – not quite what was wanted at idle!
Idle speed control
The Honda’s idle speed control uses an electronically-pulsed valve assembly integrated into the throttle body. Little more detail is available in the workshop manual and so, perhaps stupidly, I assumed it to be a conventional PWM (Pulse Width Modulated) valve, rather like a boost control valve.
However, when the valve was connected to the MoTeC M400 and controlled as if it were a conventional valve, idle speed could only be raised still further – not reduced.
I pulled the throttle body and disassembled the valve, to make an interesting discovery - the idle speed control valve in the Insight is a very weird design indeed.
The Honda uses a barrel valve that rotationally oscillates around its long axis. At one end of its rotation, a slot forms an opening through which air can pass; at the other end, the slot is closed.
Further investigation of the workshop manual and making some measurements on another Insight indicated that the valve contains its own switching transistors and is triggered by the ECU using an AC (yes, AC!) square wave at 244Hz.
The duty cycle of the wave is varied to control how long the valve barrel stays at each end of its rotational oscillation.
It's a very elegant and compact solution, beautifully engineered on ball bearings - but it's like nothing I've ever seen.
And the MoTeC ECU cannot generate a variable duty cycle, AC square wave to control idle speed.
Idle speed was high because the barrel valve was partly open – and got higher when activated by the M400 as the valve opened still further!
The easiest solution was to use a conventional idle speed control valve and bypass the factory Honda valve completely.
The first step was to make an aluminium blanking plate that blocked the standard car’s idle speed control ports.
This plate needed an opening cut in it to allow coolant to still flow through the throttle body but was otherwise straightforward to make.
I then sourced a two-wire Bosch idle speed control valve from an E36 BMW 318i – Bosch part number 0 280 140 529. From a wrecker it cost AUD$33 – a bargain. (A very similar valve was also used on mid-Nineties Volvo and Saab cars – eg Bosch 0 280 140 516.)
This valve uses a rotating internal barrel (a bit like the Honda’s standard idle control valve) but rather than oscillating, its opening is simply proportional to the voltage that is fed to it. In fact, connect the valve to a variable voltage power supply and by looking down a port, you can see the opening linearly increase with voltage.
Interestingly, when no power is fed to the valve, the barrel doesn’t completely close off airflow – instead, there is a small opening present. This is the ‘limp home’ setting that allows the car to idle even if the wiring to the valve goes open circuit.
The new Bosch idle speed control valve was mounted beneath the intake pipe. This required that the (already powder-coated!) intake pipe had a new fitting and bracket welded to it, and then the powder-coating be re-done.
Tuning the valve
The MoTeC M400 has a sophisticated idle speed control strategy. It uses PID loop control and along with some other settings, maximum and minimum valve duty cycles can be configured.
I initially set minimum duty cycle to zero and maximum duty cycle to 100 per cent, but when the idle speed control valve was controlled in this way, the engine ran at 2000 rpm.
This initially confused me, until I realised that if triggered at 0 per cent duty cycle (ie zero volts) the valve would be in its limp-home position and so partly open. The limp home position in the original BMW probably gives a slightly fast idle; in the smaller engine Honda it gives a very fast idle! By increasing the minimum duty cycle to 30 per cent, the car could be made to idle normally – at 30 per cent, the idle speed control valve is closed.
But to make the engine idle normally after cold start up, and with air con and alternator loads, required extensive tuning of the idle control system – and especially the PID component.
So what is PID all about?
PID tuning approach
If you read extensively on the topic of controlling PID loops, you’ll find as many suggested approaches as there are articles! The amount of contradictory information on this topic is simply amazing.
Here is the approach I finally adopted.
I started by finding, and then changing, just the single most important PID parameter. In other words, I had the other values set to zero and increased just one of the PID settings. Doing it in this way will quickly show you which type of control will be most effective with the system you’re working with.
(Note: Some systems will be quite unstable with P-based control dominating. In these situations, following the ‘traditional wisdom’ of starting the tuning process by setting P and then following-up with I and D can cause you to chase your tail endlessly. Systems with parabolic responses to control inputs may simply oscillate with any form of P control.)
When the idle control seemed to be responding well with one just variable at work, the system response could be tested by suddenly inputting a ‘step’ function (eg by turning on the high beam headlights). You want to avoid a control setting that creates idle speed oscillations, overshoots or is ridiculously slow to respond.
In the Honda, starting with Derivative worked best.
With this approach working, I could then start adjusting upwards the other two parameters. Note that there is no requirement to use all three (P, I and D) – instead use the minimum settings that achieve the system behaviour you want.
With the system control effective with the ‘step’ input test, I wrote down the settings. The control requirement could then be changed – I did this by driving along in first gear with the clutch out and the engine at idle speed. The idle sped control system was then tuned for this new requirement, before the original step input test was again applied.
The reason that you should write down the settings that work well in at least one situation is that it’s easy to tweak, tweak, tweak – and then find that your results don’t work well in any situation! If you’ve written down the settings, at least you can easily return to them.
Other tuning aspects
It’s easy to get lost in playing with PID parameters and forget that there are some other very important aspects to get right in idle speed control.
For example, how is the idle speed control valve actually responding to the ECU commands? This can be seen by looking at the auxiliary output logging – it shows what percentage duty cycle the valve is actually running at. (You could also directly measure it with a multimeter.)
What was interesting in the case of the Bosch valve fitted to the Honda is that, when being controlled by the M400 ECU, the valve varied over only a very small range of duty cycles. As described above, the minimum duty cycle of this valve is 30 per cent. However, the maximum observable duty cycle when controlling idle speed (eg when the headlights were switched on) was only about 32 per cent!
Clearly, the valve was too big for the application.
An inline restrictor was placed between the valve and the inlet manifold. This increased the normal working range to 30 – 40 per cent. That’s still not much, but idle speed control was immediately improved.
There are some other aspects to get right as well.
If the control system allows the setting of ‘initial position’ and ‘normal position’ of the valve (eg by setting duty cycles), then the PID system has less work to do. In the case of the Honda, setting these values appropriately again improved idle speed control.
Finally, an air conditioner input was activated so that the ECU knows when the air con is running, and idle speed is increased appropriately.
I spent many hours getting the idle speed control right. However, I reckon now I could do another car in about one-tenth of the time! I suggest the following approach:
- Ensure the idle speed control valve is working over an adequate duty cycle range ie is correct in size
- Set the idle control valve’s ‘initial position’ and ‘normal position’ values
- Start with all PID settings at zero and experiment with the one that has the most positive effect, bringing in the other two as required
- Compensate for large loads like air con (or in some cars, power steering) by using appropriate direct inputs and ECU corrections
The final result is that the Honda idles far better than the standard car.
Next issue: tuning the MoTeC on the road