VE tuning means to tune for the right mixture for your engine.
requirements
- VE / lambda table separation, with lambda always applied (in closed loop, * egoc/lambda multiplier is used, while in open-loop multiplier is * 1/lambda)
- closed-loop WOT capability is not a strict requirement but it helps a lot
- fast wideband circuit available (VEMS
- good integration with the engine management system
- including confidence information, to detect disconnected or broken sensor and not apply EGO-correction. A digital connection (such as when WBO2 integrated in the ECM) normally provides this, while analog lamdba output connected to lambda input normally not. With the commonly used analog interface the ECM might read bad lambda value instead of the failure condition, which is not a good thing to control injection upon.
- With wideband oxygen, tuning is fun and really fast.
- It's so fast in fact, that the VE-learning is rarely used by experienced tuners: but WBO2, lambda table and EGO-correction is used to help speed up the tuning process with added safety.
The allowed EGO-correction authority range depends on the tuner and the engine though. Tuners who think they can tune perfectly their own way (wether open-loop or closed loop or phase-of-the-moon), just neglect any text on tuning and related technologies (such as wideband and closed-loop tuning) and continue their own way. It's their decision with no effect on others (except when spreading rumours). Fortunately they don't need help anyway.
Important warnings
- maintain a lambda table that you like. Don't cheat with the lambda table, enter the desired lambda to all loadsites.
- you must set the lambda table even if you don't use closed-loop (lambda-value is used in open-loop mode too, eg. lambda=0.95 means *1.05 multiplier factor, lambda=1.0 means *1.0 multuplier (this is the only reasonable operation, because this way when one wants to change the lambda, only the lambda table needs change not both the lambda and the VE table). This is very important. Random values in the lambda table means a random multiplier in the amount of fuel (bad!).
- Forget all 1.0 table ! Even if you know in advance to apply open loop tuning and operation. That is equivalent with an ECM that does not know about lambda (where injector pulsewidths - or proportional numbers - are entered, takes you back in time with 2 decades). All 1.0 lambda-table could trick you at LogAnalysis too (showing it's richer than should be when it's in fact just right).
An introduction to the different ways to tune a 'True VE' engine management system.
A popular and effective way in short: use closed loop WOT during tuning and you basically tune by adjusting the VE table until you get minimum EGO correction.
The counterrecommended way of tuning a system' that is capable of running closed loop at full throttle is to allow it to add and subtract around +-15% fuel depending on the input from the WBo2 sensor. This might work well, there are however a phenomen that make a WBO2 sensor read a missfire as a lean condition. If the ECU is allowed to enrich based on that false lean reading the missfire condition usually get worse regardless of the original reason for the missfire. For someone that is is a bit unexperienced it's very hard to diagnose the problem correctly and for an experienced tuner it's easy to overlook it.
The recommended way to set up closed loop operation to allow around -15..23% enleanment but only +1..4% enrichment: you eliminate 99% of all potential false readings.
Note that the ego authority range ("window") didn't change at all 1.15/0.85=1.04/0.77=1.35 (~ appr 35%)
- if you start with a bit low VE values where ego operates near maximum, the recommended way makes the situation a bit better by starting from the rich side (remember that, even a fast WBO2 implementation can only act after measuring the oxygen value in the exhaust)
- if you start from way too low VE, where the desired enrichment is outside the ego authority range (above the maximum enrichment), you have a problem in any case. You want to avoid this by starting from high enough VE and req_fuel values and only start to mess with high power loadsites after low-power loadsites have been tuned sufficiently to suggest good starting values for high-power. Note that the counterrecommended method is worse here too, because starting from an even leaner mixture.
Why NOT to use closed loop tuning
- If someone thinks he can tune best his own way, he is likely to do that
- in VERY fast (revving) cars where the EGO correction may be too slow to apply the correction in the right loadsite. In fast cars like this you often have to keep track of the actual lambda, target lambda and also check that the EGO correction is on track. This can usually be worked around by using a longer straight, more brake and higher speed (and gear). When that is not possible it's time to turn EGO correction off.
- when the engine is acting up for some reason, for example leaky valve seals that soil the WBo2 on overrun or a turbo that does the same.
- when there are periodic missfires, the counterrecommended way of EGO correction fails badly. However, the recommended way switches off EGO-correction automatically during the missfire condition, and only apply EGO-correction during normal operation.
EGO correction
- EGO correction means fuel pulsewidth correction based on "Exhaust Gas Oxygen" measurements.
- Correction means to add or take-away fuel (pulsewidth)
- Authority range is the range from maximum take-away to maximum add percentage.
Let's say one wants to maintain an appr 20% authority for EGO correction. This is a decision of the tuner. This might be reasonable for production operation (street / racing). During tuning, often a bigger authority is used. Lower (than 20%) authority makes sense when the WBO2 sensor is to be removed (for whatever reason?) after tuning. Also, smaller (but non-zero!) authority range is usually used for extremely fast-revving engines.
The image shows a range of VE=162 .. 202 configured in 2 different ways:
- good: 200 based, -19% .. +1%
- bad : 174 based, -7% .. +16%
One might believe (before thinking about it) that setting ego_rich_limit higher than ego_lean_limit is the way to go. But there are very good reasons to use the "good" method which relies on ego_lean_limit rather than ego_rich_limit. Makes little difference when the authority range is small.
Notes:
- in parenthesis are the percentages in the higher resolution 1/256 units that are used internally and for EGO-correction display
- -19% = -49/256
- +1% = +3/256
- -7% = -18/256
- +16% = +41/256
- The VE value is scaled up (from appr. 100 to near 200) for better resolution: max VE value is 255 (200 and 174 in the example). The req_fuel must be scaled accordingly. The final pulsewidth (for speed-density) is req_fuel * (VE / 100) / lambda * (MAP / 100) * enrichments
Why is the "good" (recommended) better than the "bad" (counterrecommended) ?
- The good method means you start from rich and approach the desired fuel quantity from above.
- The bad approach is to approach from below (danger of leaning out).
- remember that the actual ranges are exactly the same in the 2 case (162..202), just defined from a different starting point
- When the (calibrated) WBO2 sensor reads rich, you can be sure that it's rich(er than the desired lambda, configured in the lambda table).
- when the WBO2 sensor reads lean, it might be lean, or it might be tricked by a missfire. Missfire (no matter how much gasoline you put in!!!) reads lean because of "unburnt oxygen" gets to the exhaust.
Also, (for the case when WBO2 sensor fails), engines tolerate rich condition much better than lean condition.
This justifies adjusting higher (richer) than required VE values, and only allow a marginal ego_rich_limit, effectively stuff most of the ego-correction authority in the ego_lean_limit.
- It is not impossible to tune the engine with the "bad" method just takes more time and attention and involves more risk
- it is even possible to use a very narrow EGO correction range (0.8 .. 5%)
- With extremely fast-revving race-engines low EGO-correction authorithy range makes it impossible for the controller to "carry over correction values from one loadsite to the other". This is a concern when loadsites are tuned unevenly (eg.one loadsite for EGOC=0 and neighbor loadsite for EGOC=-8%. EGOC=+-0.4% (ego_lean_limit=ego_rich_limit=0.4%) is the minimum reasonable range.
- with a narrow EGO-correction authority range the "good" and "bad" are effectively the same: both ego_lean_limit and ego_rich_limit are very low, only used for indication to help the tuner, not effective correction
There were good reasons in the past (eg. WBO2 or proper EGO-correction not available) It's just harder, takes more time and involves more risk.
Developers
- consider dropping the ego_rich_limit variable (=0 or +1% wired in) and only allow leaning. It's easy to scale req_fuel up to compensate for this.
- allow ve-learning to learn for a certain ego-correction (=> eg. 5% above actual VE, that will result in egoc=-12=-5%)
See also
- GenBoard/Manual/Config/VeLearn
- GenBoard/Manual/VeLearn
- TuningSession/ClosedloopTuning A step by step tuning procedure for tuning with the WBo2-based ego-correction activated. Look at how much the ECU correct the mixture and base your changes on that.
- TuningSession/OpenloopTuning A step by step tuning procedure for tuning with wbo2 but without ego-correction. Look at the actual mixture and the target mixture and base your decisions from that.