FuelTech ManualsGlossarySearch

12. Step-by-step tuning method

Version 1.1Software: FuelTech Vision 3.0Firmware: 00.03.00.54Products: FT700, FT470, VisionFT2026-10-14

This chapter covers the tuning order, the practical rules that avoid the most common mistakes, and how to correct the VE table without losing track of what changed. How each function works is in its own chapter; this chapter holds the method.

#The tuning order

The VE is the last piece and the only one that belongs to the engine. Everything before it is data that you enter; everything after it is correction on top of it.

A wrong input enters the calculation of all the fuel and, if it is corrected in the VE, it hides inside it. That is why the order matters.

The tuning order: first the data, then the steady-state VE, finally what corrects on top of it.
The tuning order: first the data, then the steady-state VE, finally what corrects on top of it.
StepWhat to doWhy it comes before the next one
BaseNote the software and firmware version. Use as the base the map that was in the VCU during the log (Open map from log).The file on disk may differ from the one that ran; correcting on the wrong base undoes the tune.
Engine and fuelDisplacement, number of cylinders and fuel; with flex, the ethanol sensor reading correctly.They enter as a factor in all the fuel.
InjectorFlow rate and rated pressure, from the catalog or measured, deadtime by voltage and pressure, linearization.A wrong flow rate gives the same error across the whole map; a wrong deadtime gives an error that grows on the short pulse.
Fuel pressureSensor reading correctly; with no sensor, the sensor option turned off and the failsafe equal to the real differential pressure.The calculation divides by the square root of the differential pressure: a pressure drop that the VCU does not see becomes VE error.
Air temperatureSensor reading a physical value; only then enabled in the model.When off, the failsafe applies (25 °C by default); enabled with a wrong reading, the error goes into everything.
Engine startEngine start mode of each bank (the screen calls the banks Primary, Secondary and Tertiary) and the start table.In Engine start fuel injection table the VE plays no part in cranking.
Conservative targetA rich lambda target at load, set before running.The calculation divides by the target: the measured VE does not change with it, and the rich target puts more fuel at load while the VE is being tuned.
Steady-state VECruise cell by cell and full-throttle pulls; measure the required VE per cell, correct in damped steps, check the shape.This is the step that belongs to the engine.
Final targetLambda target adjusted to the goal (power, temperature).Changing the target later does not require touching the VE.
ColdWarm-up and post-start.Below 70 °C (default) the closed loop does not correct; cold is judged with the warm VE already right.
TransientsThe VE-mode acceleration fuel enrichment.The cell where the tip-in ends only measures VE in fully settled steady state.
Learning and finishingDelay checked, learning, Diagnostic and Apply to VE; only at the end Apply the learned LTFT.A correction at the limit points to a wrong base; the learning does not know that the VE changed.

The closed loop can be on from the first run, with Apply the learned LTFT off. It measures and corrects only within its own limits and does not replace tuning the VE; read the required VE with its correction included (section How to correct, further on).

For the first converted map, follow the first-run procedure in From the pulsewidth map to VE.

#Practical rules

Treat the rules below as recommended practice: each one gives the reason and the mistake it avoids.

#Reading the right data

#What is not VE

#How to change the table

#Order and control

#Field benchmarks

The numbers in this section are starting points, not a specification. Each one comes with the reason, so you can adjust it to your engine.

#Deadtime above 35% of the pulse

A short pulse is the injector's territory, not the VE's.

The deadtime is added in milliseconds at the end of each pulse. If it is wrong, the error reaches the fuel multiplied by r ÷ (1 − r).

r             = Primary injectors deadtime ÷ Injection time A
useful time   = Injection time A − Primary injectors deadtime
mixture error = deadtime error × r ÷ (1 − r)

r is the fraction of the pulse that is deadtime. Both channels are in the log; the calculation fits in a calculated channel.

Deadtime in the pulse (r)Multiplier r ÷ (1 − r)A 10% deadtime error becomes
10%0.111.1% mixture error
20%0.252.5% mixture error
30%0.434.3% mixture error
35%0.545.4% mixture error
50%1.0010% mixture error
60%1.5015% mixture error

As a starting point: where the deadtime exceeds 35% of the pulse, do not correct the VE from the sensor.

The 35% is a tolerance choice: it accepts about 5% mixture error for each 10% of error in the deadtime. The less you trust the deadtime table of your injector, the lower this limit should be.

Measure the fraction per cell, in the log. Do not deduce it from the MAP: at light load a whole row can exceed the limit.

In Multipoint, on a piston engine, each pulse carries half of the fuel and the whole deadtime: the short pulse zone is larger than in Sequential.

#Short useful pulse

The injector also stops being linear at a very short pulse, and by how much depends on the injector. Treat as short a useful pulse below 1 to 2 ms, depending on the injector.

By the injector data that FuelTech Vision carries, the nonlinearity disappears above 2 ms. At 0.75 ms it is near 10% on an 80 lb/h high-impedance injector and exceeds 30% on a 520 lb/h or larger, low-impedance injector.

A fixed cutoff at 0.75 ms, therefore, only works as a screening for a small injector.

With a high-impedance injector, the 35% deadtime limit already leaves out practically the whole nonlinear range. With a large low-impedance injector, it does not: fill in the Primary injector linearization table with the manufacturer's short pulse data before tuning idle and light load: the base map wizard leaves it zeroed.

#VE above about 115%

Sanity check: if the VE that the sensor asks for at the best-filling point exceeds about 115%, check the entered injector flow rate, the fuel pressure and the air temperature sensor before accepting the table.

It is not a ceiling. The table accepts up to 300%, and the base map wizard itself never generates a VE above 115%.

The VE of the model absorbs the error of the inputs. A flow rate entered too high shows up as a high VE; an air sensor reading 20 °C hotter than a charge at 40 °C asks for 6.4% more VE.

With alcohol, evaporation can cool the charge below the sensor reading, and a value a little above 115% can be real.

#Two rounds

A map that is far off takes more than one round. With the defaults, Apply to VE moves at most half of what the fast correction reaches: about 5% per round at vacuum. An error larger than the closed loop limit is not learned in full.

So a large error is corrected from the log, by hand, in two rounds or more. Apply to VE is the finishing step.

#How to correct

#Measuring the required VE

The required VE of each cell comes from the log, in a steady-state segment:

Required VE = effective VE × (sensor ÷ target) × (1 + enrichment ÷ 100)

Effective VE: channel VE - Effective efficiency %, which already includes the closed loop correction.

Sensor: Closed Loop / VE Probe, read after the delay. Target: VE - O2 closed loop target, in lambda. Enrichment: VE - Total enrichment, in %.

Use only steady-state segments, outside the short pulse zone, outside the tail of the acceleration fuel enrichment and with the enrichment near zero.

How to build this calculation as a channel in the viewer and average a segment is in Reading the log: the VE channels.

#Delivered mixture and table correction

They are two different numbers, and they can have opposite signs:

DELIVERED = sensor ÷ target                          risk to the engine now
BASE      = sensor ÷ target × closed loop factor     how much to change the table

Closed loop factor: channel VE closed loop - VE factor (1.000 means no correction).

Example, with the correction limits widened beyond the default: sensor 0.78, target 0.71, closed loop removing 30% (factor 0.70). DELIVERED = 1.099: the engine is 9.9% lean. BASE = 0.769: the table is 23.1% rich.

#By learning or by hand

The learning measures the error per cell inside the VCU itself. With it connected, Commit to VE carries a fraction of it to the table: 50% by default in Percentage to apply, only in cells with confidence and without extrapolating. The step by step is in Self-learning: VE learning (LTFT).

By hand, from the log, you handle the error larger than the closed loop limit, the transition cells and the positive pressure.

With the defaults, the learning does not learn from 1.0 bar upward and the closed loop corrects only +5/−3% there: full load with a turbo is tuned from the log.

This is the practical sequence:

  1. Large error first, by hand, in one or more rounds, until the correction leaves the limit.
  2. Before applying anything, run Diagnostic > Analyze and first correct what is not VE.
  3. Drive in steady state across the usage ranges and take what is left to the VE with Apply to VE.
  4. Review the Preview and the shape of the table, save as a new version, send it and record a log before the next change.

#One variable per version

Each map version changes one thing: two changes together make it impossible to know which one acted. Save it in a new file, with the version and what changed in the name, and use the same name inside the map.

Before the log, write down what you will consider accepted and what to check on the first start: nothing is tested until the car's log comes back.

In the next log, check with Open map from log that the map that ran is the one you delivered.

The learning does not know that the VE changed. When changing the VE, axes, injector or pressure, first take what is useful to the VE with Apply to VE, send the map and only then use Clear LTFT. The complete order and the reason are in Self-learning: VE learning (LTFT).

#Limits of the method