To trigger a spark plug and to control it using an Arduino, I tried following this really well-written guide.

Basically, a MOSFET(IRF540N in my case) controls the closing and opening of the primary winding of the ignition coil(which basically is a transformer), while an Arduino triggers the MOSFET.

But this never worked.

The sparks were small and low in repetition; MOSFET was heating up; Arduino's Tx and Rx light kept flickering; etc. etc. It was never as shown in the blog linked above.

But once the Arduino was replaced by the 555 timers, all was well. Except the mild heating of MOSFET, everything was sorted out.

What could be modified with the Arduino circuit to get it up and running as shown in the guide linked above? Why is Arduino suffering which 555 timer is able to handle?

  • 1
    \$\begingroup\$ Don't know the numbers so I could be wrong, but this sounds like the arduino can't charge that FET's gate as fast as the 555 timer, and as a result you get a less sharp rise and because of it lower spark size. \$\endgroup\$
    – Joren Vaes
    Commented Jul 17, 2018 at 17:24
  • \$\begingroup\$ Do you mean the MOSFET number? It was IRF560N \$\endgroup\$ Commented Jul 17, 2018 at 17:27
  • 1
    \$\begingroup\$ I meant "I don't have the time nor the expertise in this filed to do the math for you, but if I were you this is where I would start looking" \$\endgroup\$
    – Joren Vaes
    Commented Jul 17, 2018 at 17:28
  • 1
    \$\begingroup\$ Sounds about right. IRF560N has Vgs 2.0-4.0V and input capacitance 2nF. I would add MOSFET driver chip. As for Tx/Rx flickering the most probable culprit is bad decoupling. I cannot imagine more noise generating device than a spark plug. \$\endgroup\$
    – Maple
    Commented Jul 17, 2018 at 17:36
  • 2
    \$\begingroup\$ @Maple I think you just looked at the IRF540N data sheet. I don't think there is an IRF560N device but I may be mistaken. \$\endgroup\$
    – Andy aka
    Commented Jul 17, 2018 at 17:43

2 Answers 2


The original link shows an NDP5060L was used, you made a substitution without understanding the required ratings. The web site also shows a (now 404) link to driving a FET, so clearly there is more to the schematic than shown.

The original circuit was a very marginal design, since a 60V FET (the NDP5060) was used in an application that requires perhaps 300V VDS capability. I would imagine it would be likely to fail often.

Your selection of an IRF540 is just as likely to fail since it is only 100V rating. It's also very difficult to drive high capacitance gates directly from an Arduino (or any other MCU).

To drive a power FET and get low turn off times (the turn on time is almost irrelevant in this application) you need to be able to discharge the FET gate very rapidly.

You could drive the gate with an H-Bridge driver such as the SN754410 or the L293 (you only need one channel) and these would give adequate results (though you should have a series resistor to the gate being driven).

A more modern device with excellent performance is the ON Semi FAN3268 this provides FET outputs (no series resistor required) rather than BJT and works for 3 -5V MCU direct drive (you would only use the low side driver).


simulate this circuit – Schematic created using CircuitLab


The original article used a [b]logic level[/b] Mosfet that uses a gate voltage of 4.5V to fully turn on but you used a normal IRF Mosfet that needs a gate voltage of 10V that is not produced by the Arduino. You should have used a [b]logic level[/b] high voltage Mosfet. An IRL540 (see the "L"?) is logic level but it is not a high voltage type.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.