Thursday, July 18, 2013

Success: smooth and stable operation

Firstly, I would like to say that my head hurts from all the rich MX5 exhaust smoke... Yeah, that's probably not healthy.

In my last post I mentioned that there was a problem with missed injector and spark events. The problem was caused by my old program code not being able to compensate fast enough for changing engine speed. If the engine was speeding up rapidly, then the calculated values could be so far out that they don't have a chance to complete before the next combustion cycle.

To remedy this my new program also takes into account the rate of change. By determining the rate at which the speed changes (acceleration) and then applying that rate of change to all the calculated timing values, my code can get near perfect timing with fewer or no missed events.

Next thing to do is tying the injector pulse width to the measured air flow.


Sunday, July 7, 2013


I've moved from "shaking and shuddering at 800 rpm" to "smokey smooth-ish revving at 3000 rpm". I got this far by tweaking some code and default values to minimise missed spark and injector pulse events. Not a true solution, but it made things a lot better!

Saturday, July 6, 2013

Running the engine from my ECU

This will be more of an update than anything else. I've created the circuitry and wiring for a fully sequential fuel injection setup. Once I had the spark and injection system working I configured them to mimic the timing and pulse width of the original ecu at idle speed.

It does not measure air flow or air temp at all. Everything is completely static at this stage (injector pulse width, ignition advance), but it's enough to get the car started and run at idle....kinda. I had some success last night running for about 20 seconds before it stalls. By tweaking a few things I got it to idle for a little longer, but it's still not stable.

Pretty excited to get this far and discovered a few things to improve. 1. If the rpm increases rapidly, then an injector pulse or spark event can be skipped. 2. Cam sensor pulse does not exactly correspond to expected piston position. There is an adjustment, but there may be more to it that i'm missing.