Aprilia Fuel Injection
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
Ambient air pressure
Air pressure inside the intake manifold
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 that gets used to drive some useful bits of computer-controllable hardware like the ignition coils and fuel injectors. The end result is that the ECU uses all of its input and calculations to control at least 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
All of those outputs need to be generated so that they align to precise angle of the crankshaft during a every single rotation it makes. At the Aprilia's 10,500 RPM redline, there isn't a lot of time to waste: the crankshaft will be spinning 175 times per second. Each full rotation of the crankshaft takes only 5.7 thousandths of a second. This means that the ECU needs to be timing its output events with an accuracy that allows them to be precisely placed within that 5.7 thousandths of a second rotation.
It would seem that the computer has a lot to do, but even so, the ECU finds 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 on a per-rotation basis, and if so, disable the ignition and/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!
And with the disclaimers satisfied, it's time to start by looking at the ECU Hardware.