This article describes the basic engine setup of the Modular ECUs.
It’s from this that the ECU works out the majority of what it needs to run the engine, so this has to be right. If it’s not right, you’ll make your life harder and that’s the opposite of what we’re trying to do.
The (a) first tab we’ll look at is the “Engine” one. Select this, (b) and go into the “Details” section. This brings up a window where you can select some really basic information about the engine.
The first is (c) engine capacity, in ccs (cubic centimetres, or mL – or get litres and multiply by 1000, so 2000 for a 2L engine). If you don’t know what this is already but you know the engine type, you can normally find it online somewhere. This is the actual swept volume, we’re not doing any tricks like doubling it for a 2-stroke or anything like that.
The next setting is the (d) number of cylinders or rotors, eg 6 for a JZ or 2 for a 13B. Pretty self explanatory. The only time this would need to change is if you’re trying to duplicate outputs to do something like running 8 methanol injectors per rotor on a 13B, you could in that case tell the ECU that it was a 4 rotor engine but they fire in pairs at the same time, which would have the effect of driving injectors in pairs but give you a separate output per injector, which you need for low impedance injectors.
The (e) next setting is “separate banks”. If this is enabled, then the engine is considered by the ECU to have two halves, and all the fuel calculations including things like predicted MAP, fuel film modelling and so on are done twice. Each bank can have its own intake MAP sensor and/or EMAP sensor and you can run independent closed loop boost control for each. This is particularly useful on dual-plenum engines, because they never balance as well as you’d expect them to. If this mode is enabled, you have the choice to either describe the banks as (f) odd and even, or first half and second half, which allows you to use the “standard” naming convention for the engine. But it also allows you to do the same thing to treat the front and back halves of an inline-6 independently; for example on the GTR each half has its own turbocharger and oxygen sensor, or on a 2-rotor you can do the same thing.
Finally, the (g) firing mode can either be 4-stroke or 2-stroke. A stroke is defined as the distance travelled from top dead centre to bottom dead centre, so 2-stroke means that the engine performs a combustion event every 2 strokes, or 360 degrees. 4-stroke means that the engine performs a combustion event every 4 strokes, or 720 crank degrees. Both configurations still must perform the suck-squeeze-bang-blow sequence because that’s how the Otto and Diesel cycles are defined. Note that this does not directly affect the ignition output sequence, which will be configured later, but it does affect whether the injectors are fired every 360 or 720 crank degrees, and also affects calculations such as the fuel film changes. So on a 2-stroke piston or a rotary engine, select 360° / 2-stroke – otherwise for a 4-stroke piston engine select 720 ° / 4-stroke
The next section we will cover is the outputs, ie what the ECU actually controls, particularly the injector and ignition outputs.
(a) Go to the “outputs” tab, and (b) then select “fuel system” from the injection panel. This is where we enter the basics about the fuel system.
The (c) first setting, manifold referenced or fixed, is whether the fuel pressure has a constant differential pressure, ie the fuel pressure reg is manifold referenced, or if the fuel pressure has a constant gauge pressure, ie no manifold reference. Often this is incorrectly described as dead-head or return style system, but there is nothing stopping you from running a manifold referenced dead-head system or a return style system with no manifold reference. Generally we prefer to see manifold-referenced systems so that the injector behavior is more consistent but the ECU can handle either in the fuel model.
Fixed Pressure Regulator
The type that the ECU doesn’t support, unless you have a fuel pressure sensor, is the rising rate fuel pressure regulator; in this pressure regulator the differential fuel pressure increases with manifold pressure. For example for every 10 kPa of manifold pressure increase, the gauge fuel pressure might increase 20 kPa, which means that the differential fuel pressure has increased by 10 kPa instead of being constant. If you have a fuel pressure sensor the ECU can handle this though.
The (d) next setting is the nominal fuel pressure. Normally this should be set to the minimum that you see at the full power condition. If the ECU detects a failure in the fuel pressure sensor, it will reference this value instead. In a manifold-referenced system, this is the differential fuel pressure, as you can see by the units being kPaD (or PSId in Imperial units). In a fixed pressure system, this is the gauge fuel pressure, the units being kPaG or PSIg. A typical fuel pressure is about 3 bar for manifold referenced and 4 bar for fixed fuel pressure.
The next option, (e) fuel pressure modelling, tells the ECU how to work out the fuel pressure; either from a fuel pressure sensor, or from the nominal fuel pressure setting. If there’s a fuel pressure sensor, we would recommend using the sensor.
The next checkbox is to (f) trim for fuel density. Again we would recommend to have this turned ON, because it means that fuel temperature changes will be accounted for in the calculations. The coefficient of expansion of fuel is different between E85 and E0 so this is taken into account also. The fuel temperature can either be taken from a dedicated fuel temperature sensor, or it can be read from the ethanol sensor if equipped (because it tells the ECU temperature and ethanol percentage), or it can be modelled from the engine temperature. The ECU assumes some heat soak and that the fuel temperature will start off at engine temperature but eventually stabilise. If you prefer to model this yourself you can disable this feature and trim it using the post crank enrichment table.
If you now click on the “injector staging” button you can set up the staged injection. If you aren’t running staged injection, just set the number of stages to 1 and that’s all you need to do. Otherwise, set the number of stages you’re using and set the off-time for each stage – we normally recommend 2 ms as enough time for the injector to fully close so that when you open it again it delivers the correct amount of fuel.
Next, in the injection panel select “injector type”. For each stage of injectors you have, you will need to select the injector type from the dropdown list. If your injector isn’t in there, then you will need to select “custom” and enter the dead times and flow rates against fuel pressure (and battery voltage as well for dead time) manually.
Now that we have fully described the fuel system, we need to tell the ECU about the ignition system. The first step is to go to “Output control” in the “Ignition” panel. From there, the first thing is to select the ignition output mode.
For a rotary, or an engine with two spark plugs per cylinder, there are a few different modes available:
Direct fire, rotary / 2 plugs per cylinder with split angle is the most simple and just uses a single coil per plug. In this mode, you must select the firing pattern as well, which will be 720 degrees on a 4-stroke and 360 degrees on a rotary or a 2-stroke. If you don’t have a cam trigger on a 4-stroke, you will need to fire the ignition every 360 degrees. And a cool feature is the option to fire every 360 degrees until a cam signal is detected where it switches over to 720 degrees.
FD: wasted leading, direct fire trailing – for the factory ignition system on the RX7 FD
FC: wasted leaning, address mode trailing - factory ignition system on the RX7 FC
For a single plug per cylinder, the following modes are available:
Direct fire, single plug per cylinder. In this mode the ECU allocates one ignition output per cylinder. The ignition firing pattern must be set to 720, 360 or 360 then switch to 720 with cam information.
Wasted spark. In this mode, only one output is used for every 2 coils, and the firing pattern needs to be set to every 360 degrees. This works for 4 cylinder, 6 cylinder and 8 cylinder flatplane engines. For 8 cylinder crossplane engines, the cylinder mapping needs to be different so that ignition outputs 1-4 correspond to the 4 separate pairs.
Single distributor. In this mode, only a single output is enabled. The firing pattern is set automatically based on the firing frequency of the engine (720 or 360) and the number of cylinders.
Twin distributor. In this mode, two outputs are used; the first being the one for cylinder 1 and the other for the other distributor. Again the firing pattern is set automatically in this mode.
The next setting to check is the ignition sense. This should normally be “falling edge (normal)”. Very few systems require a rising edge, and if so then you should know about it and have seen the waveform on a scope for yourself. Setting an output to rising edge when it should be falling edge can burn out ignitors and ignition coils.
The dwell time table can now be set, as a function of engine speed and battery voltage.
Lastly, but definitely not least, is the set of period angle offsets. These are found in the “Ignition” panel again. These period angle offsets are the number of degrees after TDC ignition cylinder 1 that each of those cylinders gets its TDC ignition.
For example, if your firing order is 1-3-4-2 on a 4 stroke piston engine, the firing order angles are:
0, -180, 180, 360
This period angle offset is used for the injection timing as well as ignition.
Here are the samples of different ignition output waveforms:
Thank you and happy learning!