Hi Chris,
Ambitious project for a newbie... but don't let me deter you. Sounds like you are an old "gas head" like me! I want to do something similar to you (one day) but more important PIC designs keep getting in the way i.e. work oriented or ones that make some income.
I have to ask - how are you making the hydrogen? I've entertained ideas a long time ago of doing something similar but with diesels as a supplementary fuel but the problems are many...
I'm experienced with PICs but still learning as well, my vehicles have all been modified turbo types necessitating engine management changes so I know what you are talking about and your requirements, although hydrogen is a new one for me. When you say it burns fast I gather you mean it is a lower octane - my understanding is low octane fuels are more explosive so need less time to complete the combustion process and make peak cylinder pressure so this being the case then a later or retarded spark event is correct. Sounds like you are also into water injection (something I also want to try) so you are probably also aware that the fine water mist will lift the octane rating (slow the burn) if you wish. What are you using to inject the water or are you using fine mist nozzles?
With programmable engine management it is usual (and more conveniently accessible) to mount a steel plate on the front of the engine's harmonic balance pulley. This plate has a number (one per cylinder) of equally spaced teeth and an additional tooth spaced about 10 deg's prior to number 1 cyl tooth. These rotate to a closely positioned pickup (coil and magnet) which generates a pulse as the engine/plate rotates. A double pulse is generated when the number 1 cylinder goes by and it is up to the management to sync to this and generate timing from this reference.
The engine is timed by statically setting the maximum advance you want (zero delay in your code to fire the coil) and progressively delaying it in order to retard the spark. Sneaky huh?
At the speeds you are going to be running your PIC would need to use a fast crystal (say 20Mhz) with the incoming pulses from your pickup triggering an interrupt (and deriving rpm from that) while also accessing a lookup table to determine the delay (retard). Expanding on this would be relatively easy if you wanted to make a 3D table by introducing another parameter (say boost or throttle position).
With the interrupt stuff I've only just begun using some of this myself and can recommend you do a search for Darrel Taylor's Instant Interrupts on this forum. He's a Guru on this stuff and a nice guy who will help if asked politely.
Let me know if I can help some more in my limited way and I will try. This is an interesting project and one that could be of great benefit to many, good luck!
Bill
Bookmarks