Go Down

Topic: Engine Idle Control. (Read 867 times) previous topic - next topic

Hello!

I am on my way to make a idle controller for my car.

So far i have figured out how to control the engine via the Arduino.

It's done with one of these:

http://www.autopartswarehouse.com/sku/Bosch/Idle_Control_Valve/BS0280140516.html

To power this i going to use a circuit like this:

http://img405.imageshack.us/img405/2443/optokrets.png
(NOTE: flyback diode is missing)

Rpm signal is brought to the arduino by the tach-signal already in place in the car.


My problem is the code for the arduino. I'm thiniking of using a PID-regulator to do this.

Input is pulses and output is PWM.

Can anyone help?

PeterH

Your sketch will need to detect whether the engine is actually idling. Typically, idle control valves effectively held wide open during ordinary driving and deceleration in order to avoid high manifold depression. But if you aren't concerned about emissions and EGR you could ignore all that and just accept that the controller will have the ICV pulled down against the stop trying to drop the revs most of the time. You might find that causes problems with the ICV sticking and clogging, but there's only one way to find out.

Depending on the engine's response, you might find you need to catch the revs softly as they drop down to idle rather than let the engine spin down with the throttle closed - some engines don't respond well if you leave them on overrun and then suddenly ask them to idle.

You'll need to tailor your PID settings to match the engine's throttle response and to make sure you aren't tripped up by a lumpy idle. You need to decide whether your idle controller will respond faster or slower than the engine. You want to avoid having it respond at similar speed to the engine as that will lead to hunting. Probably, you'll find that controlling the ICV slower than the engine response is easiest to get working i.e. think of it is primarily an integral controller. I think your best bet for that would be to find out what ICV position corresponds to a normal hot fast idle and park the ICV there until the revs seem to be dropping in to an idle position, then make sure you drive the ICV closed slower than the engine will respond
I only provide help via the forum - please do not contact me for private consultancy.


Your sketch will need to detect whether the engine is actually idling. Typically, idle control valves effectively held wide open during ordinary driving and deceleration in order to avoid high manifold depression. But if you aren't concerned about emissions and EGR you could ignore all that and just accept that the controller will have the ICV pulled down against the stop trying to drop the revs most of the time. You might find that causes problems with the ICV sticking and clogging, but there's only one way to find out.


Today, the engine is run with a fixes bypass to the trottle, so i can not se the need for having the valve open.
The car has no EGR, so no problem there either.

Quote


Depending on the engine's response, you might find you need to catch the revs softly as they drop down to idle rather than let the engine spin down with the throttle closed - some engines don't respond well if you leave them on overrun and then suddenly ask them to idle.


Only one way to find out.


Quote

You'll need to tailor your PID settings to match the engine's throttle response and to make sure you aren't tripped up by a lumpy idle. You need to decide whether your idle controller will respond faster or slower than the engine. You want to avoid having it respond at similar speed to the engine as that will lead to hunting. Probably, you'll find that controlling the ICV slower than the engine response is easiest to get working i.e. think of it is primarily an integral controller. I think your best bet for that would be to find out what ICV position corresponds to a normal hot fast idle and park the ICV there until the revs seem to be dropping in to an idle position, then make sure you drive the ICV closed slower than the engine will respond


I think i can figure out the settings for the PID on my own, has some experience about PID from school.






PeterH


I think i can figure out the settings for the PID on my own, has some experience about PID from school.


It doesn't sound as if you need any help, then.
I only provide help via the forum - please do not contact me for private consultancy.

I think i need some help with the code. I'm no pro coder   :~

PeterH

If there's a problem that's stumping you then I suggest you tell people what the problem is and where you've got to in trying to solve it yourself, and maybe somebody will be able to help.

(On the other hand, if your problem is don't know where to start / please design and code this for me then I suggest you start with a different project and work your way up to this one.)
I only provide help via the forum - please do not contact me for private consultancy.

el_supremo

#6
Jan 12, 2012, 07:57 pm Last Edit: Jan 12, 2012, 07:59 pm by el_supremo Reason: 1
Quote
http://img405.imageshack.us/img405/2443/optokrets.png

@Puke_Nukem: Why does this circuit use an optoisolator but have the two grounds connected together?

Pete


Quote
http://img405.imageshack.us/img405/2443/optokrets.png

@Puke_Nukem: Why does this circuit use an optoisolator but have the two grounds connected together?

Pete



The two grounds is just connected on the drawing, not in real life :)

I've been thinking, I'm sure that PID is the right type of control for this application. As far as i know, and have learnt as school, PID is nor very suitable when the process parameters is non-constant. As for an engine, the parameters for control changes when engine goes from warm to cold, and when the loads of the idling engine are changing.





PeterH


The two grounds is just connected on the drawing, not in real life :)

I've been thinking, I'm sure that PID is the right type of control for this application. As far as i know, and have learnt as school, PID is nor very suitable when the process parameters is non-constant. As for an engine, the parameters for control changes when engine goes from warm to cold, and when the loads of the idling engine are changing.


Engine responsiveness doesn't vary *that* much between hot and cold engines. Imagine what you'd do if you were controlling the idle with your foot. If the idle speed is a bit lot you open the throttle a bit. If it's too high, you close the throttle a bit. Over time you try to adjust the throttle to a position where the engine holds steady at the right revs. That's just what a PID does.
I only provide help via the forum - please do not contact me for private consultancy.

Go Up