Programmable Vehicle Ignition

I have done a bit of looking around and the likes but cannot find any hard answers. I'm not asking for someone to do it for me, just point me in the right direction.

Aim
To produce a programmable ignition setup for a 4 stroke 4 cylinder engine with a single coil distributed ignition system, which is advanced through a MAP (Manifold Air Pressure) sensor and rpm read (2D).

Method
Triggering pulse will come from a locked distributor which will be set to (circa) 40 degs Advance to a digital input of an arduino. The triggering input (digitalread??) would measure the time between rising/falling edge pulses of the distributor for rpm measurements.

The map sensor will provide a signal to an analoginput (0-5V).

I want to create a table (MAP vs rpm) which is approx 10x10 with interpolation to ensue smoothing timing advance, with inputs to the nearest degree.

The math works out to be 7000rpm = 116 rev/sec = 42000 degs/sec = 0.0000238 sec/deg = 23.8 micro secs/deg. If the system was to be able to work to 10ths of a degree this would then equate to an accuracy of 2.38 micro seconds.

I want the arduino to count down in micro/nano seconds from the last distributor pulse in order to fire the ignition system and advance or retard the engine, compared to TDC, as the table dictates. Therefore if an ignition event of 27 degrees advance was required then 40-27=13 degrees from the last distributor pulse (in relation to the crankshaft), which equates to 13 degrees *23.8 micro seconds = 309.4 micro seconds from the fixed 40 degree distributor input pulse.

Concerns
My main concern with this is that the arduino does not have the processing speed in order to accommodate my idea and a faster hardware solution is required.

Any thoughts please??

That's a big project, I am not sure about changing Cristal to have more speed up to 20MHz.
anyway look at this article

I might be going off piste for this forum but after some research tonight I have found a unit known as a ChipKit Uno32 which has an 80Mhz processor which may do the trick?

Am I within limits of a standard arduino??

I think you must know what speed you want then decide to choose the right bourd, if you don't know where to start, just look at BMW ignition, or any other brand, and know what processor they use, to know the speed, if you want something fast use Galileo Microsoft bourd, its fast enough to run a satellite :slight_smile: but I don't know why I think arduino Uno its more than you need, anyway I am not sure :stuck_out_tongue:

There are dedicated processors intended for ECU applications. They often run in lockstep with the engine RPM so the timing is very accurate.

You could do it with an Arduino but it's more of a demonstration or school project. I would not use an Ardunio to control the engine in anything bigger than a lawnmower.

Microsoft Galileo processor is 400MHrz there is other version 1ghrz, I don't think you need all that speed, anyway arduino can run big things too, simple not mean weak :wink:

Galileo Microsoft board seems like an excellent answer and should provide enough processing power to expand on the project, also it is still very reasonably priced.

I am not experienced enough to know what sort of processing power I do require to be honest, which is why I am asking for advice.

Looking at the megasquirt specs, then the arduino should be more than enough, lol

Fast electronics or processors are one requirement, but you also have to take into account engine states. Acceleration deserves both more gas and ignition time shift, load (weight, wind, slopes...), breaking etc. also affect the best ignition timing.

You'll end up (at least) with a 2D array, from which the rpm and pressure values approximate the according time shifts. Working out the content of that array is crucial - how many spare engines do you have, which you can kill by wrong ignition timing?

In former times the ignition table was stored in a ROM/EPROM, which could be exchanged for tuned racing cars, depending on their modifications. If you can locate such a device (EEPROM?) with your motor, it would be a good starting point for your experiments, not requiring additional hardware.

Nitropixie - did you get anywhere with this project?
I'm new to arduino and looking to do a very similar project of driving the ignition of a 4 cylinder 4 stroke engine. I'm looking to use a ford 36-1 toothed wheel for the timing/crank position

So far I've just written the pickup simulator with an engine speed range of 1K to 8K RPM

I'm not sure if you need 1/10 of a degree accuracy - dizzy engines were lucky to be consistently within a couple of degrees of accuracy

You don't "need" a MAP sensor - you could use a throttle pot or phase one could be 2D with just engine speed/ignition advance

1 Like