FuelTech ManualsGlossarySearch

2. How the VCU calculates fuel in VE mode

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

In VE mode, the VCU redoes the fuel calculation in four steps, on every revolution of the trigger wheel (the toothed wheel whose sensor reports the engine speed to the VCU) and at least 50 times per second.

  1. Calculates the mass of air that enters one cylinder in the cycle.
  2. Divides by the stoichiometric AFR of the fuel (the air/fuel ratio of the chemically correct mixture) and by the lambda target: that is the fuel mass.
  3. Divides by the injector flow rate, corrected for the fuel pressure: that is the useful time.
  4. Applies the enrichments and the cylinder trims and adds the linearization (short pulse correction) and the deadtime (the injector opening delay): that is the pulse the injector receives.

#Overview

The fuel calculation in VE mode in four steps, with the values of this chapter's example (Brazilian regular gasoline, E27)
The fuel calculation in VE mode in four steps, with the values of this chapter's example (Brazilian regular gasoline, E27)
air mass     = P_abs × V_cyl × (VE ÷ 100) ÷ (R_air × T_air)
fuel         = air mass ÷ (AFR × lambda target)
useful time  = fuel ÷ injector flow rate × √(P_rated ÷ P_diff)
pulse width  = useful time × (1 + enrichments) + deadtime

The VE table enters only in the first step. Fuel, injector, fuel pressure and deadtime enter in the following steps, each with its own parameter.

#Step 1: the air mass in the cylinder

The VCU uses the ideal gas law to know how much air fits in a cylinder at the manifold conditions, and multiplies by the VE.

air mass [g] = P_abs × V_cyl × (VE ÷ 100) ÷ (R_air × T_air)
P_abs = MAP on screen + 1.01325 bar
V_cyl = Engine volume ÷ number of cylinders
T_air = air temperature + 273.15

#Manifold pressure

The MAP appears on the screen as gauge pressure: negative is vacuum, positive is boost pressure. For the calculation, the VCU adds 1.01325 bar to the MAP on screen and arrives at the absolute pressure; it has no barometer, and the added value is fixed.

The Calibration of the internal MAP sensor changes the pressure used in the calculation in every cell. Do not use it to make the MAP read zero: see Before you start: engine, fuel, injectors and sensors.

Without a valid MAP reading, the calculation starts using the MAP failsafe (a failsafe is the substitute value the VCU uses when the sensor is off or has failed): what triggers this switch and what it changes are in Before you start: engine, fuel, injectors and sensors.

#Air temperature

The air temperature enters in kelvin. Hotter air is less dense and needs less fuel, with no compensation table.

When the VCU uses the sensor and when it uses the Air temperature failsafe (25 °C by default) is in Before you start: engine, fuel, injectors and sensors.

The calculation uses the temperature the sensor reads. There is no charge heating model: see What makes VE advanced, and the limits.

#The VE from the table

The VE comes from the Main MAP VE table, interpolated by the engine speed and the MAP of the moment.

With the closed loop on, the VE used is the table VE multiplied by the loop factor. The table does not change.

The log shows both: VE - Efficiency % is the table one and VE - Effective efficiency % is the one used in the calculation. The table is in The tables: VE, lambda target, axes and grids; the factor, in VE closed loop.

#Step 2: the fuel mass

fuel [g] = air mass ÷ (AFR × lambda target)

The AFR comes from the Fuel chosen in Fuel configuration: 12.6 in Regular BR Gasoline (E27) (BR is Brazil) and 8.4 in Ethanol (pump) (Brazilian hydrous ethanol, not E85), for example.

With the Flex fuel function on and the ethanol sensor, the VCU uses the stoichiometric AFR of the mixture the sensor measures. Fuels, the difference between the E27 preset and the E30 gasoline sold in Brazil today, and the ethanol sensor are in Before you start: engine, fuel, injectors and sensors.

The target the calculation uses appears in the VE - O2 closed loop target channel.

The fuel density does not enter the injection time. The injector is specified in mass per hour, and the density cancels out.

The enrichments (warm-up, post-start, acceleration fuel enrichment, gear and events) do not change the lambda target. They enter in step 4, as a percentage of the useful time; the total appears in VE - Total enrichment, and each one is in Enrichments and compensations in VE mode.

#Step 3: the useful time of the injector

The useful time is the time the injector needs to stay open, with the opening delay already subtracted, to deliver the fuel mass.

injector flow rate [mg/ms] = flow rate [lb/h] × 453.59237 ÷ 3600
useful time [ms]           = fuel ÷ injector flow rate × √(P_rated ÷ P_diff)

The VCU works with the flow rate in mass. If you enter the flow rate in cc/min, FuelTech Vision converts it by the density of the chosen fuel: see Before you start: engine, fuel, injectors and sensors.

#Differential pressure

The flow rate of an injector grows with the square root of the differential pressure. With the fuel pressure sensor, the VCU corrects the useful time by that root; the value used appears in the Differential fuel pressure channel (the screen shows Base fuel pressure).

With a rated pressure of 3 bar, a differential pressure of 4 bar multiplies the useful time by 0.866; one of 2 bar, by 1.225.

Below half of the rated pressure, the correction stops at the value for half: at most 1.414 times the useful time. This pressure correction never cuts fuel because of a bad pressure reading.

Correction factor for differential pressure on the useful time, with a rated pressure of 3 bar, and the floor at half the rated pressure
Correction factor for differential pressure on the useful time, with a rated pressure of 3 bar, and the floor at half the rated pressure

Without a fuel pressure sensor, turn off Use fuel pressure sensor, which is on by default: on without a sensor, the calculation subtracts the MAP from a fixed pressure (see Before you start: engine, fuel, injectors and sensors).

#Injections per cycle

The fuel mass from step 2 is that of a complete cylinder cycle.

In Sequential and Semi-sequential, each pulse carries the whole useful time.

In Multipoint (often called batch fire), on a piston engine, the bank fires twice per cycle and each pulse carries half of the useful time. The deadtime enters in each pulse.

On the rotary engine, the cycle is one revolution and there is one pulse per revolution.

#Banks

Each bank (A, B and C: a group of injectors with their own outputs) has its own flow rate and its own rated pressure.

Bank A supplies all the fuel until it reaches the Primary injector opening to bring in the next bank, 100% by default; what is missing goes to bank B, and from B to C. A disabled bank is skipped. The split is made on the fuel already with the enrichments.

If all of them reach the limit, all receive the same added time, in milliseconds.

#Step 4: the total pulse time

effective time = useful time × (1 + enrichments + cylinder trim)
pulse width    = effective time + linearization + deadtime

#Deadtime

The deadtime is the delay for the injector to open and close.

In VE mode it is the full value from the table, by battery voltage and differential pressure, added to each pulse; the value of the moment appears in the Primary injectors deadtime channel. The table is in Before you start: engine, fuel, injectors and sensors.

A wrong deadtime shows up as a mixture error that grows as the pulse gets shorter. Correct it in the deadtime, not in the VE: see Step-by-step tuning method.

#Linearization and cylinder trim

The linearization corrects short pulses, in which the injector does not deliver fuel in proportion to the time: it is a table per bank, in ms added to the effective time, with one row per cylinder. It starts at zero.

The cylinder trim, in %, corrects differences between cylinders by engine speed and by MAP.

#The pulse in the log

The pulse of bank A, before the cylinder trim and the linearization, appears in the Injection time A channel.

The injector duty cycle (opening) appears in Injection duty A: pulse × engine speed ÷ 1200 in sequential and semi-sequential, pulse × engine speed ÷ 600 in multipoint.

#Numerical example

This is the guide's reference example. The calculations use the formulas in this chapter, without rounding, and give the same values the VCU calculates; redone with the rounded values in the table, the last digit may vary.

StepCalculationRegular BR Gasoline (E27)Ethanol (pump)
Absolute pressure0.487 + 1.013251.5 bar1.5 bar
Air temperature40 + 273.15313.15 K313.15 K
Volume of one cylinder2.0 ÷ 40.5 L0.5 L
Air density in the manifold1.5 ÷ (0.0028705 × 313.15)1.6687 g/L1.6687 g/L
Air per cylinder per cycle1.6687 × 0.5 × 0.95792.6 mg792.6 mg
AFR × lambda target12.6 × 0.85 and 8.4 × 0.8510.717.14
Fuel per cycle792.6 ÷ 10.71 and 792.6 ÷ 7.1474.01 mg111.01 mg
Injector flow rate80 × 453.59237 ÷ 360010.080 mg/ms10.080 mg/ms
Pressure correction√(3 ÷ 3)1.0001.000
Useful timefuel ÷ 10.0807.342 ms11.013 ms
Deadtimeexample value, at 13.5 V and 3 bar (not the generic injector table)1.0625 ms1.0625 ms
Pulse (Injection time A)useful time + deadtime8.405 ms12.076 ms
Opening (Injection duty A)pulse × 5000 ÷ 120035.0%50.3%

From Regular BR Gasoline (E27) to Ethanol (pump), the hydrous ethanol, the useful time went up 50% (12.6 ÷ 8.4 = 1.5) and the VE stayed at 95%. The total pulse went up less, 44%, because the deadtime does not depend on the fuel.

In Multipoint, each pulse would carry half of the useful time plus the full deadtime: 3.671 + 1.0625 = 4.734 ms with gasoline, and an opening of 39.4% (pulse × 5000 ÷ 600).

#Where each physical quantity enters

The table summarizes where each quantity enters and what changes in the VE table when it changes.

Physical quantityWhere you enter it or the VCU reads itWhat changes in the VE table
DisplacementEngine volume and Number of cylindersnothing
Manifold pressureMAP sensor, plus a fixed 1.01325 barnothing
Air temperatureair temperature sensor or Air temperature failsafenothing
Engine fillingMain MAP VE tableit is the table itself
Desired mixtureLambda target table by MAPnothing
Stoichiometric AFRFuel, in Fuel configuration, or Flex fuel with an ethanol sensornothing
Fuel densityFuel specific gravity: only in the cc/min conversion and in the flow rate and power estimatesnothing
Injector flow rateFlow rate of each primary injectornothing
Pressure at which the flow rate was measuredPrimary injector rated pressurenothing
Actual fuel pressurefuel pressure sensor or Fuel pressure failsafenothing
Injector opening and closingPrimary injectors deadtimenothing: correct it in the deadtime
Short pulsePrimary injector linearizationnothing
Difference between cylindersIndividual cylinder trim by RPM - Primary and Individual cylinder trim by MAP - Primarynothing
Enrichmentscompensation and acceleration fuel enrichment screensnothing

The "nothing" holds with the right data. A wrong flow rate, rated pressure or deadtime appears as a mixture error, and the correction goes into the wrong data, not into the VE.

The calculation does not include the effect of the fuel on the charge temperature, such as the cooling by ethanol evaporation. After changing the fuel, check the mixture with the O2 sensor: a fine touch-up may be needed.

To see each quantity act on the engine, with the expected result, see True VE.