ECU Basics
The Electronic Control Unit (ECU for short) is the computer that cars and motorbikes use for engine management. For those of you who are not computer programmers, all computer programs can be described in the following fashion: they take a set of input data, and then process it in some fashion to generate a set of output data. In the case of an engine management computer, one set of inputs represent raw physical data. Raw physical data would include things like:
- Intake air temperature
- Coolant temperature
- Ambient air pressure
- Air pressure inside the intake manifold
- Crankshaft position
- Camshaft position
- Throttle position
- Time
After collecting a set of information, the ECU does some math to "massage" the input data in various useful ways. For example, by combining what the ECU remembers about the crankshaft position at some previous point in time along with what it knows about the current crankshaft position at the current time, the ECU can calculate the current engine RPM. After deducing these other bits of useful data, the ECU uses the collection of results to consult a set of tables stored in its memory. These tables basically tell the ECU what outputs it should produce for a given set of inputs. For the ECU, the basic set of outputs represent timing information, which is used to drive some useful bits of computer-controllable hardware. The end result is that the ECU uses all of its input and calculations to control exactly four different timing-oriented events:
- when to start charging the ignition coil
- when to discharge the ignition coil (causing a spark to occur)
- when to start squirting a fuel injector
- when to stop squirting a fuel injector
Obviously, these basic spark and fuel outputs have to be generated for one of the two cylinders once per rotation of the crankshaft. At the Aprilia's 10,500 RPM redline, there isn't a lot of time to waste.
Even so, the ECU manages to find the time to do lots of other useful things:
- Tell the dashboard what RPM the engine is turning so the tachometer can display it
- Decide if the rider has over-revved the engine, and disable the ignition or fuel injectors
- Decide if the bike has fallen on its side so it should disable the fuel pump
- Decide if the engine has not been running for a few seconds so it can disable the fuel pump (which is why after turning the ignition on, you hear the pump whine for about 3 seconds before it shuts off)
- Check all of its input sensors (like camshaft position, crank position, temperature, etc) and verify that they are producing sane results. If not, the ECU sets the appropriate trouble code in its memory and tells the dashboard to flash the EFI warning light.
- ...and lots of other stuff
Of course, the interesting question is "exactly how does the ECU do this stuff"?
And answering that question requires the following disclaimer:
All the information contained on these pages has been generated by reverse-engineering a spare Aprilia/Rotax ECU that I bought off eBay. There are no guarantees that what I present here is actually correct. If you use this info to modify your own EPROMs, there is the distinct possibility that your changes can blow up your motor.
-- You have been warned.
It will be worth it in the end.
Wright Cyclone in full song.