All topics
Engine & fuel

Injector scaling and dead time

The ECU turns fuel mass into milliseconds using the injector flow rate and dead time. If those lie, everything lies.

An injector delivers fuel at a fixed rate while it is open. The ECU converts the fuel mass it wants into an opening time: pulse width = fuel ÷ flow rate. It then adds the dead time — the few tenths of a millisecond the injector needs to physically open before any fuel flows.

Flow rate mismatch

Fit 1000 cc injectors and leave the scalar at 265 cc and every pulse delivers 3.8× the intended fuel. The engine floods instantly and will not even pull. The giveaway in the logs is that every cell is off by the same ratio.

Dead time mismatch

Dead time is a fixed offset, so it matters most where pulses are short: idle and light load. A 0.3 ms error on a 2 ms idle pulse is 15 %; on a 12 ms full-load pulse it is 2.5 %. If idle is way off but full throttle is fine, suspect dead time.

Duty cycle

Duty is the fraction of each engine cycle the injector is open. Above ~85 % there is no headroom; at 100 % the injector is static — open all the time — and the mixture goes lean no matter what the table says. Bigger injectors fix it; a wrong scalar afterwards breaks it again.

Order of operations: injector data and stoich first, VE second, targets third, timing last. Everything downstream inherits an upstream error.
Now try it.

Set the injector data, stoich and limits on a virtual car, then pull it and see what the numbers do. Free, in the browser, no account.

Open the Scalars tab in the dyno →