A Spark plug controlled from the Arduino - Review of guide


I am using an Arduino, Mosfet and ignition coil to make a spark plug spark. - I have put together this little guide for others, who might need to control spark plugs. http://christian.liljedahl.dk/guides/arduino-spark-plug

The setup works fine for me, but my electronics skills are not at guru-level.

Do anyone foresee any problems in the current setup? - I don't want to have a guide that misleads people :)

Kind regards Christian Liljedahl

The Arduino out to the gate of the mosfet needs a resistor (~220ohm). You need to limit the current being supplied by the pin as the maximum rating is 40ma and charging the gate on a mosfet can pull a bit more juice .. albeit for very short periods of time.

Good writeup. Interesting stuff.

Be aware that ignition coils will kick between 30 and 400 volts back out the - post, in the long term your MOSFET may suffer because of it. A MOSFET rated for 500V or more is a good idea for long term life.
Resistor wise I’d use a ~125ohm, that nails 40ma on the nose. If you aren’t concerned about the lifespan of the Atmega chip you could use lower I suppose.

Other than that, I’d say you’re set.

Thanks for the advice! - I will test it out and update the circuits accordingly.

I did look at the circuit in my oscilloscope and noticed some pretty hefty voltage spikes. - Probably a good idea to try to keep these down.

My high-voltage (tesla-freak) friend looked a bit concerned at my design too, so I will put in a few of his updates too.

I will submit an update when I have tested and written it. :-)

Kind regards Christian Liljedahl

Hi, there are ready-to-us chips on the market to drive a ignition coil.

Take a look at this: VB921. I've seen that on Ebay recently. See

interesting project, I will have to try it. One question on the Arduino Uno and Mega would they have the speed to keep up with a cars ignition/fuel system timing?

Speed is strongly depending on code. But having a 2stroke engine having currently a fixed ignition retard everything is better than that. A delay of 8microseconds at 8000RPM would mean a 0,4°retard, which is acceptable to me…there is no such accuracy in calibrating the engine with defined air temperature and engine temperature…

Firing a multicylinder 4-stroke engine is much more challenging and I do not have the software knowledg to do so…

Hi everyone! Hi Christian, nice project!

I'm trying to replicate this project but seems I'm doing something wrong. I've used a variable resistor (dash pot) and have determined 4 milliseconds for dwell time but transistor remains open.

This is the code I've used:

int ledDelay; int ledPin = 13; //LED conectado ao pino digital 13 unsigned long changeTime; int potPin = 2; void setup (){ pinMode (ledPin, OUTPUT); changeTime = millis(); } void loop (){

ledDelay = analogRead(potPin); // lê o valor do potenciômetro

digitalWrite (ledPin, HIGH); // define o pino do LED em nivel lógico alto(Deve acender o LED) delay (4); // espera por 4 milissegundos, coil dwell time)

digitalWrite (ledPin, LOW); // define o pino do LED em nivel logico baixo(Deve apagar o LED) delay (ledDelay); // espera }

Is correct using a digital output #13 to provide signal???

Seems that the signal obtained at digital led pin #13 is not capable to trigger the mosfet/IGBT...


Pin 13 can't source quite as much current as the other pins, as the LED is consuming some of it... leaving less for the transistor.

Can we see a schematic please of how you have the transistor hooked up?

Nonsense.Uni’s SCK drives nanoAmps into LMV358 which drives LED.
Older cards drove LED via 1k resistor. Maybe lost 0.5mA of 20+mA drive capability.

There are IGBTs designed for exactly this job, and they are much more robust when there are high dV/dt signals zapping around.

For instance: http://uk.farnell.com/on-semiconductor/ngd18n40aclbt4g/igbt-ignition-n-ch-400v-18a-dpak/dp/2114669

Good morning, With regards to your post in March 2012. I am wondering as to whether you have developed your Arduino ignition system that you were experimenting with. The project does interest me as to what your researches have found.

I am interested because I would like to experiment & develop a similar system so that I can incorporate an Arduino to run an old stationary engine's ignition system.

Your researches & your help would be appreciated.

Thank you