This series is based around a 2001 model hybrid Honda Insight.
The Insight remains one of the most aerodynamic and lightest cars ever made, with a Cd of 0.25 and a total mass of about 850kg from its 2-seater aluminium body.
The intent of the project is to turbocharge the engine, add water/air intercooling and programmable engine management, and then provide new high voltage batteries and a new electric motor control system.
The aim is to build a car with the best performance/economy compromise of any in the world.
The series so far:
Project Honda Insight, Part 1 – Introduction
Project Honda Insight, Part 2 – Fitting an Alternator
Project Honda Insight, Part 3 – Building an Airbox
Project Honda Insight, Part 4 – Intercooling Requirements
Project Honda Insight, Part 5 – Intercooling System #1
Project Honda Insight, Part 6 – Intercooling System #2
Project Honda Insight, Part 7 - Turbocharging
Project Honda Insight, Part 8 - Building the Exhaust
Project Honda Insight, Part 9 - First Electricals
Project Honda Insight, Part 10 - Alternator (again!) and beginning the MoTeC wiring
Project Honda Insight, Part 11 - New ignition system and cam sensing
Project Honda Insight, Part 12 - The MoTeC CRIP
This issue: sorting idle speed control.
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.
Two and three-wire Bosch idle speed control valves
A huge number of cars were produced with two-wire and three-wire Bosch idle speed control valves. These valves have in-line hose connections, allowing them to be easily plumbed into place in non-standard cars.
Of the two different valve types, the two wire is much more suitable for the task. As indicated in the main text, it simply needs a variable control voltage to change its opening. Any programmable ECU capable of Pulse Width Modulating an output can therefore drive it. (High speed PWM will be seen by the valve just as a variable voltage.)
The pictured three wire Bosch design takes a different approach. It uses two coils, each pulling the internal pintle in different directions.
Used in the way the manufacturer intended, the valve will require two ECU outputs, working together (but in opposite directions). This is achievable with some programmable ECUs.
The other way of using the three-wire idle speed control valve is to connect the middle pin to 12V, one pin to the ECU and the other pin to ground via a new 35 – 40 ohm, 50 watt (ie huge!) resistor. This effectively turns the valve into a two-wire design – the ECU-activated coil pulls against the other coil that is slightly on all the time, acting as a weak spring.
Incidentally, note that when a programmable ECU manufacturer says that its ECU can drive a factory idle speed control system, it’s wise to ascertain how many ECU outputs are used to do this. Some systems may need to use four outputs – compared to using other idle speed control approaches, that’s three outputs that can no longer be used for other functions.
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?
The PID control approach
Interestingly, PID control systems have been around for about 100 years - and so they were in existence well before the advent of digital electronic control. In fact, some of the earliest aspects of PID theory occurred in the development of automatic steering systems for ships.
In the 1920s, Russian / American engineer Nicolas Minorsky studied how a human helmsman controlled a ship. He realised that the helmsman corrected the ship’s heading based on three different ideas:
Let’s look at each of these – note that we’ll do so in the order ‘PDI’, which makes it easier to understand.
In a PID system, the size of the current error is responded to by the ‘P’ term – the proportional control. If the error is great, a larger correction is made compared with if the error is small. So, taking the example of the helmsman steering the ship, if the ship is a long way off course, the helmsman swings on a lot of steering correction.
To put it simply, the correction by the system is achieved by P multiplied by the error. It takes into account how great the error is, and applies a proportional correction.
The ‘P’ component, however, doesn’t take into account how fast the error is developing. What if a sudden gust of wind blows the ship off course? In that case the helmsman would react by rapidly inputting a steering correction – he or she wouldn’t just apply the same type of correction that they would should the ship have slowly drifted off course.
The ‘D’ component relates the correction to the rate of change of the error. So in the case of the ship, it’s not the amount of error that has occurred in the ship’s heading, but how fast that error is developing.
So if we have a large error, Proportional control applies correction. If we have a suddenly developing error, the Derivative control reacts. But there’s another kind of error that neither ‘P’ nor ‘D’ will handle – a small but fixed error.
So what could cause a ‘small but fixed’ error? Imagine the helmsman steering the ship across a slight current. The error in course is only slight – so the ‘P’ function will do little. That’s because the P function applies correction in proportion to the error, and if the error is small, so will be the ‘P’ correction. The ‘small but fixed’ error also won’t be corrected by the ‘D’ function, because its correction relates to rate of change – and the error isn’t changing… it’s fixed!
This type of error is corrected by the Integral function. The ‘I’ function looks at the error over time. It makes lots of measurements of the error, adds up these up, and then provides correction that is proportional to the total of these additions, rather than the size (or rate of change) of the error.
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.
Over run fuel cut off?
If you are using an over-run fuel cut off, ensure that its action doesn’t start ‘fighting’ with the idle speed control. For example, if idle speed control is active up to 1200 rpm (to cater for over-shoots) and your over-run fuel cut off starts to inject fuel when revs drop to 1100 rpm, the two systems overlap and so will clash.
The answer is to set the over-run fuel cut-off fuel resume revs a little higher that the revs at which the idle speed control is active.
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