I have been busy over the last few weeks with various things, but have now completed most of the practical work on my project and am now at the stage of writing up the report/dissertation. I have successfully managed to achieve closed loop ignition timing control by using the Stellaris Launchpad development board to directly interface with the optical encoder on the engine and the pressure sensor charge amplifier (this replaces the AVL IndiSet 620 in my system).
I have written some code which triggers a pressure sensor sample from the ADC channel whenever a pulse from the optical encoder is detected. An algorithm is used to detect the peak pressure over the engine cycle and store the angle at which this pressure occurs. At the end of the cycle, this angle is transmitted over a serial connection to my ECU, which uses a PID algorithm to adjust the ignition timing in order to maintain the angle of peak pressure at a set point. For maximum torque, the angle of peak pressure appears to need to be around 20 degrees after TDC.
This now means that I now don’t have to use an ignition map at all, and the ignition timing is always perfect under all engine operating conditions (in theory, although after heavy transitions, there is a settling period). This would be great for use on a vehicle if the sensor didn’t cost thousands of pounds! However, there are likely much cheaper methods for detecting when peak pressure occurs. This could perhaps be done with an acoustic sensor, similar to a knock sensor (or maybe even a knock sensor could be used!).
I recorded a load of data to demonstrate the operation of the system, and will put this up at some point.