Staged Injection on the Emtron KV12: A Blend, Not a Switch

In Twelve Small Injectors Instead of Six Big Ones I explained why this car runs two injectors per cylinder. I finished by saying the handover between primaries and secondaries was the part I knew least about, and where I’d expect the problems to live.

This is the follow up. How the Emtron KV12 actually stages twelve injectors, every table that controls it, and one thing I had described wrongly.

Each section is marked. Verified means it comes straight from the calibration or the logs. Theory means it is my reasoning or arithmetic, not something I have measured.

Configuration

Status: Verified

  • 2JZ-GTE VVTi, 3,353 cc, flex fuel
  • Plazmaman intake manifold, twin fuel rails mounted on the runners
  • Twelve CP1000 injectors, rated 1,000 cc/min at 3 bar, high impedance
  • 1:1 rising rate regulator, fuel pressure sensor fitted
  • Three Walbro 485 pumps
  • Emtron KV12, every injector on its own channel
Supra 2JZ-GTE engine bay with a Plazmaman intake manifold and two black Plazmaman fuel rails running along the intake runners
Installed. Two Plazmaman rails, six injectors each, running along the runners between the head and the plenum.

How Emtron does it

Status: Verified

Staging is an injection mode, not an add on. The KV12 offers seven:

  • 0: Off
  • 1: Sequential
  • 2: Sequential/Staged Sequential (this car)
  • 3: Sequential/Staged Group
  • 4: Non Sequential
  • 5: GDI Sequential
  • 6: GDI Sequential/Staged, primary GDI and secondary port

Mode 2 fires the secondaries sequentially as well, each one timed to its own cylinder. Mode 3 groups them, which is what you would use on an ECU without enough channels. With twelve dedicated outputs there is no reason to group anything.

Once staging is enabled, the secondaries get their own setup page, and it mirrors the primary one line for line:

SettingPrimarySecondary
Reference injector size1,190 cc/min1,190 cc/min
Reference static fuel pressure400 kPa400 kPa
Injection timingEnd of injectionEnd of injection
Nozzle reference pressureManifold pressureManifold pressure
Fuel pressure correctionOn, sensor fittedOn, sensor fitted
Injector max duty clamp95%n/a
Minimum effective pulse width0.200 msn/a
Staging rpm lockoutn/a1,000 rpm
Staging ON, balance table aboven/a5.0
Staging OFF, balance table belown/a5.0
Fuel Main and Fuel Secondary Setup, as configured. The separate secondary settings mean the two banks could be different injectors at different pressures. Here they are identical.

Fuel pressure correction being on with a sensor fitted matters more than it looks. The ECU is not trusting the regulator to hold 400 kPa across the injector. It measures the differential and corrects flow for it. A 1:1 regulator gets you close, but close is not the same as measured.

The channel map

Channel123456789101112
Primary, cylinder123456––––––
Secondary, cylinder––––––563214
Injection Channel Assignment. The secondaries are not in cylinder order.

Channels 7 to 12 do not run 1 to 6. That is fine, as long as the map matches the wiring. Get one wrong and a secondary fires on the wrong cylinder’s timing. You will not see that on a single wideband, because the total fuel is still right. The only proper check is firing each channel individually.

3.4 litre 2JZ-GTE on an engine stand with the Plazmaman intake manifold and both fuel rails fitted, before installation
On the stand before installation. Twelve injectors means twelve connectors, and every one has to land on the right channel.

Characterising the injector

Status: Verified

The injectors are CP1000s, rated 1,000 cc/min at 3 bar. Scaled to the 400 kPa this car runs across the injector, that is about 1,155 cc/min each, roughly 13,860 cc/min across all twelve, the equivalent of six 2,310 cc injectors.

The calibration doesn’t use 1,155. Its reference size is 1,190 cc/min at 400 kPa, taken from CP Fuel and Race data rather than scaled from the headline rating. The square root rule is a good approximation, not a measurement. Where the manufacturer has measured the injector at your pressure, use their number.

The dead time table is identical for both banks, which is correct for identical injectors:

Diff pressure vs supply8 V10 V12 V14 V16 V
300 kPa2.6091.6751.2400.9600.756
400 kPa3.0531.8921.3531.0570.836
500 kPa3.6592.0861.4841.1250.910
Injector Deadtime Table, ms, primary and secondary. Bold is roughly where the car lives: 400 kPa across the injector, 14 V supply.

Dead time rises with pressure and falls with voltage. The solenoid has to pull the pintle open against the fuel pressure, and a higher supply voltage builds current in the coil faster. On a running car at 14 V and 400 kPa, the first 1.057 ms of every pulse is dead time: the injector is energised but not yet delivering its rated flow.

Both banks run saturated drive, which is right for a high impedance injector. Peak and hold is for low impedance injectors that need a current limit.

Flex fuel is handled underneath

The fuel model works in mass, so the ECU needs to know two things about whatever is in the tank: how much air it needs to burn completely, and how dense it is.

Ethanol0%10%20%30%40%50%60%70%80%90%100%
Stoich AFR14.7014.1313.5612.9912.4211.8511.2810.7110.149.579.00
Stoichiometric Custom Table. It also has an engine speed axis, but every column is the same, so only one row is shown.

The table is a straight line between petrol and ethanol, by volume. Strictly, stoichiometry blends by mass, not volume, so I checked it. At E85, weighting by mass gives 9.81. The table interpolates to 9.86. Half a percent, well inside what the closed loop trims absorb. Not worth correcting.

Ethanol vs fuel temp-20 °C0 °C20 °C40 °C60 °C80 °C90 °C
0%0.7730.7590.7450.7310.7170.7030.690
50%0.8000.7840.7680.7520.7360.7200.710
100%0.8250.8070.7890.7710.7530.7350.720
Fuel Density Table, g/mL, three rows of eleven and selected columns. Ethanol at 20 °C reads 0.789, which is the textbook value.

One small oddity: the step from 80 to 90 °C is steeper than every other step in the table, and the 90 °C column is rounded to two decimal places. It doesn’t matter here, because the fuel in this rail never gets near 90 °C. If yours does, that column is worth a second look.

The balance table: a blend, not a switch

Status: Verified

This is the table that decides who does the work. The value is the secondary bank’s share of total fuel. Zero means primaries only. Fifty means an even split.

MAP vs rpm1,0001,5002,0002,5003,0003,5004,0004,5005,000+
20 to 100 kPa01520253035404550
120 kPa026.53033.536.54043.546.550
140 kPa038.54041.543.54546.548.550
160 to 180 kPa05050505050505050
200 to 240 kPa505050505050505050
Secondary Balance Table, percent of total fuel from the secondaries. Identical rows are merged. Every row is 50 from 5,000 rpm to the end of the axis at 11,500.

Read the top row. At 1,500 rpm in vacuum, the secondaries supply 15 percent. By 2,000 it is 20. The share climbs 5 points every 500 rpm until it reaches an even split at 5,000.

Add boost and the ramp gets steeper. At 140 kPa the secondaries are already at 38.5 percent by 1,500 rpm, and from 160 kPa upwards it is an even split everywhere above 1,000.

Which means I described this wrongly. In Twelve Small Injectors I wrote that at idle, around town, and at any low load, only the primaries fire. The table says otherwise. Around town at 2,000 rpm, a fifth of the fuel is coming from the secondaries. Only idle runs on primaries alone.

This isn’t staging in the on/off sense. It’s a blend with a floor.

Where the switch actually is

Two settings decide when the secondaries are allowed to fire at all.

The staging rpm lockout holds them off below 1,000 rpm, whatever the table says. Above that, staging comes on when the interpolated balance value rises above 5.0 and goes off when it falls below 5.0.

The table goes from 0 at 1,000 rpm to 15 at 1,500. Interpolating between them, it crosses 5 at about 1,170 rpm, at every MAP up to 100 kPa. That is the real staging point for normal driving.

And because ON and OFF are both 5.0, there is no hysteresis. The same threshold switches the bank in and out. Sitting at 1,170 rpm, the secondaries could in principle toggle on every fluctuation of engine speed.

What keeps idle clean is the idle target. I moved it to 950 rpm, under the lockout, so at idle the secondaries are never asked to fire.

What the secondaries are being asked to do

Status: Verified

The whole reason for twelve injectors is to keep pulse widths out of the region where an injector stops being predictable. So it’s worth asking what pulse width the secondaries actually see at light load.

I haven’t measured this directly. This is arithmetic from the fuel model, assuming 80 percent volumetric efficiency, 30 °C charge and lambda 1:

ConditionAll fuel through one injectorSecondary at 5%Secondary at 15%Secondary at 20%
40 kPa, E851.36 ms0.07 ms0.21 ms0.27 ms
40 kPa, petrol0.95 ms0.05 ms0.14 ms0.19 ms
60 kPa, E852.05 ms0.10 ms0.31 ms0.41 ms
Effective pulse width, after dead time. Estimated, not logged. The minimum effective pulse width in the calibration is 0.200 ms.

At 1,500 rpm in light cruise, the secondaries sit right on the 0.200 ms minimum on E85 and below it on petrol. At the moment staging switches on, with the balance at 5 percent, they are being asked for something like a third of the minimum.

That is exactly the region Twelve Small Injectors says staging exists to avoid. The primaries are comfortable. The secondaries are not.

The calibration has no short pulse correction either. For very short pulses, the ECU is converting fuel mass to time using dead time and a straight line slope, and a straight line is exactly what an injector stops being down there.

What the KV12 does with a request below its own minimum, whether it clamps up to 0.200 ms or drops the pulse, I don’t know. Either way, the secondary delivery in that window is not what the model thinks it is.

What the logs say

Status: Verified

Lambda control is good through the staging region. On the road the handover is transparent. I can’t feel it, and the wideband doesn’t show a step.

Which looks like it contradicts the section above. I don’t think it does. Maybe we can refine this in the future.

Why it holds up anyway

Status: Theory

Two reasons, and I suspect both apply.

First, the error is a percentage of a small number. If a secondary at 15 percent share delivers 20 percent more or less than asked, the cylinder sees a 3 percent error in total fuel. That is inside what closed loop trims correct without anyone noticing.

Second, the closed loop may be doing exactly that. Good lambda control in a region where the open loop model is weakest doesn’t prove the model is right. It may only prove the trims are working. The way to tell the difference is to log the trims, not lambda, through the 1,170 to 2,500 rpm band. Emtron logs the effective and actual pulse width of both banks separately, so the secondary pulse widths can be checked against the estimates above.

Where the injectors are, and why it barely shows

Status: Theory

Close-up of two Plazmaman fuel rails on the intake runners, each feeding six injectors, one row nearer the cylinder head than the other
The two rows. One sits close to the head, the other further out along the runners.

Both rails sit on the runners, one row close to the head and the other further out along the runner. So the two banks do not take quite the same path to the valve. Fuel from the outer row travels further, wets more runner wall, and arrives slightly later. Calibrating a handover between two injector positions means accounting for two transport paths.

On this manifold the gap between the two rows is short, far shorter than on layouts that put the secondaries up in the plenum or the intake tract. I’d expect the difference in transport and wall wetting to be small. It also matters least where the secondaries carry the smallest share of the fuel, which is exactly the light load region above. That is probably part of why the handover is transparent, but I haven’t measured it.

What I’d change

Status: Working conclusion

Nothing is broken, so none of this is urgent. But the calibration is relying on the trims in a region where it doesn’t need to.

  • Bring the secondaries in later and bigger. Six 1,000 cc primaries have far more than enough capacity to carry light cruise on their own. Holding the secondaries at zero through light load, and bringing them in where their share gives a pulse width comfortably clear of the minimum, means they never operate in the bottom of their range.
  • Split ON and OFF. Identical thresholds mean no hysteresis. A gap between them stops the bank chattering at the switch point.
  • Mind the margin at idle. 950 rpm against a 1,000 rpm lockout is 50 rpm of margin. Anything that lifts the idle above 1,000, such as a higher cold idle target, an idle flare or load compensation, brings the secondaries in at the smallest pulse widths in the table.
  • Add short pulse data if the ECU will take it. It is the one piece of the injector model the calibration doesn’t have, and it matters most in exactly the light load region above.

The principle

Staging solves a pulse width problem. The balance table can quietly give it straight back by handing the secondaries a sliver of fuel at light load.

So when you set one up, don’t only check that lambda is clean through the transition. Work out the secondary pulse width at the first non zero cell in the table, and check it against the injector’s minimum. If it is below, the ECU is guessing and the closed loop is covering for it.

Every number here is specific to this car, these injectors and this manifold. The data is not transferable, but the principle is.


Why the car has twelve injectors in the first place, and the flow arithmetic behind them, is in Twelve Small Injectors Instead of Six Big Ones. What the fuel system makes possible on E85 is in What E85 Actually Buys. Full specification is on the Supra project page.

If you run a staged setup on an Emtron and know what the KV12 does with a request below the minimum effective pulse width, I’d like to hear it.