I am currently studying an MSc in Automotive Electronic Engineering, and am now beginning to work on my final project. The main goal of the project is to build an engine control unit. I’m now at the prototyping stage where I just want to get something working to that I can make sure that everything is possible. I’m hoping to eventually get to a stage where I use an in cylinder pressure transducer to infer the air to fuel ratio of the engine and use this instead of a lambda sensor as an input to my ECU to control my fuel injection.
I’m currently developing my ECU on an Arduino since it’s quick and easy, and will probably port it to a Freescale PowerPC at a later date (I have already build a PowerPC ECU for another project assignment).
I’m also building an engine simulator using an Stellaris Launchpad, and programming it using the Energia IDE (which is very similar to Arduino IDE). So far, the Launchpad simulates an engine by receiving a throttle position from a Serial port, and then calculates the torque and engine speed. It produces a missing tooth signal output on one of the pins which correlates to the engine speed.
The Arduino ECU reads the missing tooth output to determine the engine speed and crank angle position (in 6 degree resolution). It then drives one pin which will be connected to a fuel injector for a single fuel pulse per revolution (currently no cam position sensor) and another pin which will drive the ignition coil for one spark per revolution (wasted spark). The fuel injector timing and duration and ignition timing and duration are both variable via a serial connection between the Arduino and a computer.
Next step is to read in the fuel and igntion pulses on the engine simulator and then add an AFR calculation and output.