Up Next Home

Section 5.1: Fuel Delivery

Section 5.1.a: Operation

If you are converting from carburetors or other non-electronic fuel injection, you will need a high pressure fuel pump. The CIS fuel pump is basically the best pump you can buy. Its rated at ~45Gal/hour at 90psi. Typical fuel pressure for the CIS systems run at 80psi all the way down to about 50psi. A new one will run about $125 from www.parts4vws.com.

Section 5.1.b: Wiring

Injector Outputs
EC36-6 Injector G
EC36-7 Injector A
EC36-8 Injector C
EC36-9 Injector E
EC36-15 Fuel Pump
EC36-17 Injector H
EC36-18 Injector F
EC36-19 Injector B
EC36-20 Injector D
EC36-22 Flyback Rail (OR optional additional high-power ground! Failing to determine this can lead to a damaged or destroyed circuit board.)
EC36-23 Flyback Rail

Section 5.1.d: Configuration

Setting up the fuel injectors is a very simple yet powerful process. First you must determine how you would like to group the injectors. This setting goes into the config.alternate parameter. The value is calculated simply as (number of injection events)-1. As the engine runs it will traverse through the h[0] array from right to left, firing each set of injectors defined by the mask stored in that element. They are selected in the config.alternate'th element down to the 0th element in order and the cycle repeats. Each element contains 8 bits and each bit corresponds to an injector channel.

alternate Determines the period of injection pattern.

Eg. alternate=03 means a use four groups; banks 3,2,1, and 0. In that case the 3th, 2nd, 1st, 0th elements of the h[0] array will be used to determine which combinations of the injectors to fire. Normally one bit is set (sequential configuration), as in

h[0]=01 02 04 08 10 20 40 80

Several banks can be fired simultaneously:

alternate=01 will give you 2 banks. Each can have any combinations of the 8 injector channels. alternate=00 gives you 1 bank.

h[1] table: Not used; set to h[1]=00 00 00 00 00 00 00 00


Turn off fuelpump after inactivity time. 0x01=262msec. 0x08 * 262 = 2096mS


Minimum time to leave fuelpump on at startup. 0x01=262msec. 0x0F * 262 = 3930

Injector Outputs and Sequence Table
EC36 Pin 7 19 8 20 9 18 6 17
h[0] value Inj A Inj B Inj C Inj D Inj E Inj F Inj G Inj H
01 X
02 X
04 X
08 X
10 X
20 X
40 X
80 X
05(01+04) X X
0A(02+08) X X

On the last two lines, two injectors are driven at the same time. With two banks alternating, the config can look like this:

With the same four injectors, driven sequentially, the config would look like this: (A-C-D-B firing order, As the h[0] table is read from right to left)

All four can be driven at the same time:

GenBoard v3 firmware implements a sophisticated algorithm that allows configuration of injector opening that models the real behavior very closely. What is interesting for the ECU is the overall injected fuel amount in function of the applied pulsewidth, so the pulsewidth can be calculated for the desired fuel quantity. This is the effective flowrate:

Injector Open/Close Time Model

The black curves with believable slopes are good approximations for a given injector and flyback configuration. The lower slope is for lower VBatt. Some argues that rampup is rather a parabola (2nd order) than a straight line (1st order, as on the drawing). The implementation currently uses 1.5 order. A table inside the firmware can be changed for customizations, but this is generally uneccesary.

The red curve with infinitely fast rampup is a bad approximation. It considers as if injector opened instantaneously after injopen amount of time, and constant amount of fuel sprayed during opening. We do not use this method. For this bad approximation people just set higher injopen as on the blue curve to better approximate the good curves, but it is still often impossible to achieve the desired smooth idle.

Configuration of the flat (no fuel flow) section: just the length is configured. As it depends on VBatt, two variables are used:

injopen=20 [*16 usec] battfac=28 [*16 usec]

At low battery voltage (7V and below), (config.injopen + config.battfac) is added to the calculated fuel pulsewidth. At high battery voltage (19V and above), (config.injopen - config.battfac) is added to the calculated fuel pulsewidth. The actual value is interpolated. Eg. at 13V battery voltage very close to injopen value is used. (0x20 = 32 => 512 usec in the example). Hopefully voltage never gets this high.

It's hard to measure the exact injopen value. When in doubt, a slightly smaller than real value is better than a higher. With a shorter injopen you can compensate with higher low-kPa VE values. With too high injopen value it is common to reach VE=0 table values at low MAP before reaching desired actual fuel quantity. From a tuned table, looking how the VE curve runs near low kPa values, one can suspect how much injopen value is off. The rampup configuration can well as be the source of strange low-MAP behaviour.

A good starting value is:

During the rampup section of the effective fuel-flowrate (see diagram and remember that it is not real opening flowrate curve, but effective flowrate, thus it also involves closing effects) the pulsewidth must be extended in a nonlinear way. Fortunately, the shape of the rampup is roughly known (see diagram above), so only two parameters are configured to scale it to match the actual injector and flyback setup.

injocfuel=20 [*24 usec]


injrampup_battfac determines the rampup time battery dependence. It is scaled so its rather on the safe side; using 0xFF should be safe. 0xFF means that for 14V battery voltage the injocfuel time is decreased to about 77% compared to it's maximum value (which is injocfuel), used when supply voltage is less than or equal to 7V.

The following parameters must be configured. The electronic parameters, such as resistance, can be easily measured and these have little (but noticable) effect on fuel flow. They mainly affect the heat dissipated in injectors and drivers. Misconfiguration can destroy FETs, so take care here.

injpwmt=FF The time after which the pwm-ing starts. Unit is 100 usec, so decimal 200 means 20 msec. Above this value a step is 500 usec, so FF (255) means 20msec+55*0.5 msec = 47.5msec. This is bigger than any injector pulsewidth a sane engine ever sees: effectively disabling pwm-ing.

injpwm=64 PWM duty (percentage)

injpwm6=1C PWM-duty dependance on VBatt (slope)

The PWM% can be set to depend on battery voltage when injpwm6 is non-zero. At 14V and above injpwm is effective. At lower than 14V VBatt, you can configure linearly increasing PWM percentage. That's how injpwm6 got the name: at 6V: 103/128 * injpwm6 value is added to injpwm. You can use it to compensate for lower battery voltage, targeting almost same current.

Section 5.1.e: Tuning

Section 5.1.f: Testing and Monitoring

Testing can be done by attaching lightbulbs to the injector outputs and watching to see if they light erratically. LED's are better to use because of their fast on/off switching.

Up Next Home