I know this has been been asked a lot before and there is speeduino, which will do fuel and spark. However i would like to control the spark of a single cylinder generator engine. I have tried searching Kartduino and spent a few hours scouring the internet looking for the answers i think i require.
The generator is a Clarke IG1000 inverter generator which i bought defective second hand. I have already used 1 x uno to control the throttle using feedback from the inverter circuit. I'm presently happy with this part
I don't really need to adjust the fixed ignition which uses a CDI unit. I have played with megasquirt/megajolt in the past so I know a few things about ignition (not everything). I have decided to challenge myself in altering the ignition events of this generator.
I know the engine could run more efficiently (fuel consumption) and with more torque compared to a fixed advance ignition system. Fixed ignition systems are most efficient at one rpm engine speed (not taking load into account).
My plan is to alter ignition compared to engine speed to begin with (small steps), then introduce a MAP sensor to measure load on the engine. So I will progress this project in 2 smaller stages
So my plans are:-
- As the engine currently uses a Hall sensor to sense one position (firing position) of the crankshaft could I measure the time between rotations and then use the same Hall sensor position to time when to fire the coil. Will the timing of the arduino be accurate enough??
A downfall of this would be that the ignition event would always be 1 cycle behind when it would should be happening, which would be quite a large amount of time. I could turn the flywheel 180 degrees compared to the crankshaft, so that there is only 180 degrees of the crankshaft for the next ignition event post the flywheel sensor reading. This would be a wasted spark setup as it was originally.
My main issue with this system would be timing accuracy of the arduino compared to the next ignition event.
In my eyes script would be something like
measure 'time' between flywheel pulses
use 'time' to compare on ignition table (or some sort of Sin rule) and get 'ignitionTime'
fire ignition at 'ignitionTime' after flywheel pulse
Sounds simple but reality might prove more challenging.
- Use a 36-1 (or less) trigger for improved timing accuracy, but would require a more complicated code (for me anyway) and mechanically fitting a trigger wheel to the engine. This will require more research and using other peoples code.
Might try modelling the first solution is was thinking of with an engine strobe
Any help, thoughts or links would be appreciated.
Thanks
Ryan