Ford PWM idle valve problems

For discussing MicroSquirt (TM) configuration and tuning of fuel parameters (including idle valves, etc.).
Forum rules
Forum rules
Read the manual to see if your question is answered there before posting. If you have questions about MS1/Extra or MS2/Extra or other non-B&G code configuration or tuning, please post them at http://www.msextra.com The full forum rules are here: Forum Rules, be sure to read them all regularly.
Post Reply
SQLGUY
Experienced Squirter
Posts: 243
Joined: Sun May 14, 2006 3:03 am
Location: Colorado Springs, CO

Ford PWM idle valve problems

Post by SQLGUY »

Hi folks,

I am trying to get my Ford 2-pin PWM idle valve to work correctly with Microsquirt. The documentation on this seems pretty sparse.

Here's what I've found:

1. If I go with the default of 80 Hz, the idle valve make a rather annoying noise somewhere between a horn and an angry frog. This is more annoying because this is on a motorcycle, so very noticable. Setting it to 320 Hz is better, but I can't find any information saying what the frequency should be, other than a blog saying that Ford idle valves use 40 Hz for their PWM. Microsquirt doesn't support 40 Hz.

2. I removed the idle valve so I could observe its behavior with different settings of the PWM warmup curve. No matter what I set the current square of the curve to, the valve would open 1/8" at the same time as the fuel pump was doing its prime run, then close. I have two of these valves, and they both act the same way.

3. This valve is fully closed with no power applied. Supposedly, the PWM map has 0 for no power and 100 for full 12V, yet, with my map set to 0, the system is giving way too much extra air, when fully warm, if the idle valve is connected. I don't have a CLT per-se, but instead an oil temp sensor (air cooled engine). With the oil temp up around 280F and the top end of the PWM map set to 0, the engine will more-or-less idle with the valve disconnected, but will jump to 4000RPM when I connect it.

Any suggestions?

Any place I can get some more detailed documentation on this setup? This is the only detail I could find on Ford PWMs with Megasquirt, and it is not up-to-date for the current firmware http://megaefi.com/Megatunesetup.htm

Thanks,
Paul
Matt Cramer
Super Squirter
Posts: 910
Joined: Sat Jul 03, 2004 11:35 am

Re: Ford PWM idle valve problems

Post by Matt Cramer »

The Ford PWM IAC valves we've examined with stock ECUs run at 300 hZ. Since 320 is the closest option, I'd set it to that.
Matt Cramer at DIY Autotune
Image
SQLGUY
Experienced Squirter
Posts: 243
Joined: Sun May 14, 2006 3:03 am
Location: Colorado Springs, CO

Re: Ford PWM idle valve problems

Post by SQLGUY »

Thanks Matt, that's where I've had it set, but I still have issues 2 and 3. Any ideas there? What should I have to have the map set to in order to close the valve completly?

Thanks,
Paul
SQLGUY
Experienced Squirter
Posts: 243
Joined: Sun May 14, 2006 3:03 am
Location: Colorado Springs, CO

Re: Ford PWM idle valve problems

Post by SQLGUY »

Looking through the code, I find this:

// check for IAC step pulses
if(IdleCtl == 4) {
iacpwmctr += inpram.IACpwm_step;
if (iacpwmctr >= 100) iacpwmctr=0;
// 100 - IACmotor_pos = duty cycle
if (IACmotor_pos > iacpwmctr) *pPTMpin[2] &= ~0x04; // turn off fast idle solenoid
else *pPTMpin[2] |= 0x04; // turn on fast idle solenoid
outpc.iacstep = IACmotor_pos; // Dual purpose as idle DC - E.Fahlgren fix
}

Which looks to me like the table posted at http://megaefi.com/Megatunesetup.htm is actually backwards - i.e. 100 actually = 0% duty cycle, and 0 = 100% duty cycle. Am I reading this correctly?

Also, a block of code further up:

else if(IACmotor_reset && ((IdleCtl >= 2) && (IdleCtl <= 5))) {
// In cranking mode. The very first time we crank we want to
// open to crankpos, but after cranking we don't want to do
// this because of an ignition reset (in which rpm = 0)
if((outpc.rpm + firstIAC) && (outpc.rpm < inpram.crank_rpm)) {
tmp1 = CW_table(outpc.clt,inpram.iacstep_table);
if(tmp1 > inpram.IACcrankpos) {
tmp1 = inpram.IACcrankpos; // want IAC open at
// least this much during cranking regardless of temp
}
tble_motor_pos = tmp1;
}

seems to say that "Start Value (retract)" does in fact apply to PWM IACs.
Post Reply