MembersPage/GergelyLezsak/IdleControl (2005-07-28 08:56:04)

IAC

This is a 3-pin solenoid. I did some measurements to it:

Resistance between pins: (1) - 20ohms - (2) - 20ohms - (3) (So there are 40 ohms between pin 1 and 3) Without connection there's no "default" position.

Control it

PWM switched ground to pin1 and pin3 moves the valve to opposite directions, if pin2 has stable 12V+ supply. Connecting pin1 to GND closes the valve.

Changed the end of idle_solenoid() in iac.c so it sets 2 output channels instead of one: \n

        cli();
        digitalout(config.iac_sol_channel, output);
        sei_nop_cli();
        digitalout(config.iac_sol_channel + 0x10, output ^ 0x80 );
        sei();

config.iac_sol_channel has been set to 0x36 (stepper channel A)

This way 0x46 (stepper channel B) is inverted. Connections are according to GenBoard/Manual/DigitalOut/Table.

IAC control seems working now, I can use mdh/mdi commands and idle changes. For warm engine value around mdi70 seems a good approximation for 900 rpm. I've found that small changes to value doesn't reflects in rpm immediately (or at all). Big changes (like mdiff :) are noticeable promptly.

With GenBoard control Idle is instable now and has big range changes also. See logs.

Here are some data from current system:

Maybe Marcell was true when talking about big overshots(?) in controlling algorithm, to move the solenoid fast.

Driver selection

14V/20Ohms = 0.7A capability with flyback

If the two coils have independent magnetic paths (which I expect), low voltage flyback is the best. Either:

If the 2 solenoids have the same magnetic path (very unlikely, only unipolar steppers have that), than high-voltage flyback (16V or above, 18..20V recommended) needed instead of low-voltage flyback:


Docs found

Found some info in haltech docs:

BAC Hi

BAC high is a form of BAC idle control that is used for 3-wire BAC valves with two coils. These valves are

sprung so that when no coils are energised, the BAC valve sits at 50% open. Two PWM signals are used to

move the coils. One signal moves the valve from 0% to 50% open, while the other signal moves the valve from

50% to 100% open. The BAC Hi output moves the valve from 50% to 100%. When the target position for the

valve is between 50% and 100%, this output will provide a signal from 0% to 100% duty.

Sounds relatively simple. Some changes and things to-check required in idle_solenoid() :

All idle control tuning and setup is done with the BAC Hi output. Refer to section 3.13 for details on how to

tune your idle control.

BAC Low

The BAC low output is used to control the BAC valve when the target opening is 0% to 50% open. When the

valve target position is 0%, the output duty is 100%. When the target is 50% open, the output duty is zero to

allow the spring to return the valve to its default position.

BAC Inverted

For 3-wire BAC valves that do not have a spring to return the valve to the centre position, use BAC and BAC

Inverted to control the valve. Connect the BAC output to the coil that pulls the BAC valve open. Connect the

BAC Inverted output to the coil that pulls the BAC valve closed. The BAC Inverted signal is a complementary

signal to the BAC signal. If the BAC output is set to 70% duty, then the BAC Inverted signal is set to 30% duty.

All idle control tuning and setup is done with the BAC output.

pwm freq maybe in 200-1000hz range?

[original doc]


NOTE ! "Original" wiring ('0 280 140 509' valve (from E30 -89) is as follows...

Pin 2 -> 12V supply.

pin 1 -> to Motronic ECU pin 22 (white-green)

Pin 3 -> to Motronic ECU pin 4 (white-yellow)

wiring might be same with the '524' valve ?


Picture of stock(?) idle air solenoid:

PICT0006-idle-solenoid.JPG


System had an EVAP purge canister valve (said 'auxiliary air control' earlier) also:

PICT0011-some-air-solenoid.JPG

I'm not sure whether this is part of current motronic config or it comes from some jetronic system. Harness was connected however.

options