A couple of reports have come in from people who want to use AlphaN now that they have poor MAP signals due to long duration cams. It seems that they can never get their cars to idle particularly well. On further discussion it seems that the cause for this is that the IACV opens allowing more air in, but then there's no additional fuel added, so that the AF mixture goes lean and the idle gets progressively worse.
With our Speed density system, when the IACV opens, the pressure increases and the fueling and ignition requirements are better addressed.
As we tie the load value to TPS in our AlphaN system we need to model the same MAP pressure change when the IACV is opened.
Here's how it's done since 1.1.33 (will be backported to 1.0.x):
uint8_t iac2load; // alphaN only, iac contribution to load
When RPM <= (config.hybrid_rpm_a * 100 + 99)
iac.position * config.iac2load / 2048 is added to load before lookup. That means if iac.position = config.iac2load = 255 (highest possible values), than +32 (1/8 of full load) will be added.
If we display iac2load in MegaTune in percent, than 255 value should be 12.45 percent (100*255/2048):
So with 4% when the IACV duty is 25% it will consider there to be a TPS opening value of 1%
- when blending: config.hybrid_rpm_a < RPM < config.hybrid_rpm_m this added load diminishes (added load becomes 0 at config.hybrid_rpm_m, so iac - like TPS - does not count any more, only MAP).
- in 1.1.32 (testing version) this alphan-blending must be bad as we approach config.hybrid_rpm_m the whole load diminishes (to 0 => bad), not just the small extra quantity added by iac
- added load not applied above config.hybrid_rpm_m as the MAP is fully authentically used for load, which already has the measured extra pressure added by iac
- we could use the config byte fuelcut_min_kpa as that's never used when in AlphaN mode.
Is it really necessary with IAC valves for a highly tuned engine like that? It just makes it even worse to tune
What happened to the good old idle screw? Works good on our cars here. A 300+ deg camshaft and ITB's is not anywhere stock drivability and is not supposed to be driven around on idle. I am pretty sure that a idle screw will work better than any IAC solution on these cars. I would say that it is not worth to invest in developing stuff like this.
Not all ITB cars are race cars so I see a place for this. The only ITB car I have done had a very hot cam and had rock solid idle on the idle screw. But this was a race car where they were suprised that I cared when I backed the idle down from 1800 to 1000rpm. -Jörgen
Idle control limits
This is a few functions that Dave and I talked about, they are recreated from memory so don't blame Dave for silly errors;)
When releasing the throttle at high rpm the controller will think that the idle is very high and it will fully close the idle motor. We need to prevent that.
Don't let the idle motor regulate above "fuelcut resume" rpm.
+ No additional paramters. Note that fuelresume can still be used for this even if the fuelcut is not used for some reason. For example on a race car.
- In some cars we want to use fuelcut but still want the fuelresume at a high rpm, this makes it useless for fixing the idle problem.
If throttle follow is used for the IAC motor that should determine the IAC motor position during overrun. If throttle follow is NOT used the position should be taken from the water temp ref table.
Same as Idea#1 but use Cold idle rpm as the idle control limit instead.
Use a separate value instead of fuelresume or cold idle rpm.
Separate from the two above!
Always prevent the idle control from going below the value in the REF table. I favor thisone -Jörgen
Unrelated. But letting the idle motor go to the max steps position when the engine is in fuelcut mode would help economy greatly on some engines. As an example I can't make use of the fuelcut on my V8 as the engine brake is much too strong.
Afterstart fade out
Some engines have wierd starting behavior,
- the current implementation only seem to force the IAC position when cranking => false. After cranking the iac control kicks in
Some engines then overshoot a lot and then the idle control stalls them.
- tune the IAC.
- Lower cranking position if MAP does not fall below 90 kPa even around 700 RPM
- iac_integral_increase limit is too high ? Very likely.
We need the IAC to fade out from the starting position over a few seconds after starting (to let the car fall down to idle in a controlled manner). Maybe by slowly increasing the authority of the idle control?
With properly tuned idle this would only make things worse (idle-control is a controlled manner). However, you can recommend how to reset the PID integral after startup (show us a setup+config and log that shows the behaviour, and analyze log).
IAC.position battery dependence
We experienced oscillating idle on some cars in certain situations, and traced it back to the RPM=>voltage=>iac-opening transfer function.
The 2.2L audi (with Bosch IAC and Bosch alternator) behaved worse with only the bigfan, than the small 1.6L GM with the air-conditioner (much more serious load change). The GM had stepper idle where the opening does not change with battery voltage. KeithHargrove/AlfaMilano changed the Bosch alternator to a Ford alternator on a car, as the Ford alternator keeps steady voltage even at low RPM.
No configuration is needed for this, as the IAC_current = VBATT * iac.position / resistance function is very predictable.
At VBATT=12V we need 10% higher iac.position than at VBATT=13.2V (only for PWM-type IAC of course, not for stepper).
At a given point, say 13.2V (or should it be 13.7V ?) the behaviour should be same as before. Under that we apply higher iac.position. If we choose this right, only minimal iac position change is needed (if at all) for PWM-iac cars.