I am trying to design an RPM limiter for my CDI operated 2 stroke engine (Tomos A35). Some people reported that just connecting a capacitor to the primary coil also limits the RPM, but will eventually break your ignition coil. That is why I came up with the following solution:

Hand drawn schematic

Here is the same circuit drawn in EAGLE: enter image description here

The flywheel has magnets and rotates, thereby inducing a charge in the ignition coil. This creates periodic voltage spikes which are sent to the CDI (which has been drawn a bit simplified here). In the original situation, the points IN and OUT are one. In the new situation I want to use a thyristor to either block this voltage spike or pass it. To do so, I need to count the amount of voltage spikes per time unit.

On the bottom I use an opamp (that can take up to 32V on its inputs) as a comparator to protect the arduino. The range of IN at which the opamp triggers without blowing up is now 47 to 603 volts, which should be fine I think. With this circuit, I should be able to count the amount of voltage spikes per second.

The trigger voltage of the TIC126D is max 1.5V I read from the datasheet, so it can be operated from the arduino without further ado.

I am, however, a bit fuzzy on how to select all of these resistor values. So I am asking you for help on that. The values that are there now are based on examples I found on the internet. Also, general tips about the design are very welcome.

EDIT 11/02/2020, 13:45 As DKNguyen pointed out, I am indeed using the thyristor as if it were an NMOS transistor. I could use the thyristor to interrupt the ground wire coming out of the CDI, but this would turn the two coils in there into two inductors (the coils have a common ground that is inside the CDI, there's just nothing I can do about this). Also, I added a PNP transistor to protect the Arduino from drawing too much current.

Putting the thyristor on the ground of the CDI


1 Answer 1


The gate trigger voltage is 1.5V but there is also a gate trigger current which is 20mA. 5V through 47K is nowhere near 20mA.

Another thing...wouldn't it be better for your coil primary to be above the thyristor (so that the coil primary is connected to the thyristor collector)? The way you have it with the coil primary connected to the emitter of the thyristor, if it was a NPN or NMOS transistor, this would be a like a source/emitter follower where as the transistor conducts, the more the transistor conducts, the more current flows through the emitter/source-connected load, which makes the emitter/source voltage rises thereby reducing the Vgs or Vbe voltage required to keep the transistor on causing it to not be able to fully turn on.

Vgs/Vbe is reduced because you are applying a base/gate voltage relative to GND which does not change while the emitter/source voltage rises due to current flowing through the load. But the transistor only cares about the difference between the two terminals.


  • NPN Collector = NMOS drain = SCR anode
  • NPN Emitter = NMOS source = SCR cathode
  • NPN Base = NMOS gate = SCR gate

It might not matter in this case since the thyristor stays on once turned on, but I think this could be a problem if the coil voltage rises fast enough such that the cathode voltage rises high enough to reduce the gate-cathode voltage difference below the switching threshold before the holding current has been exceeded (which is required to latch the thyristor in an conducting state, after which it won't matter what voltage difference between the gate and cathode are anymore).

I'm rather paranoid and your circuit has two areas I don't like:

  • the op-amp input
  • the MCU pin

Both are exposed rather unprotected to high voltages if something goes awry.

I would put a TVS diode or rail clamp diode between the pin and the resistor. This will clamp the voltage by shorting it to GND (for a TVS diode) or the power rail (for a rail clamp diode) while the resistor limits the current so the component does not fry.

You could also put a TVS diode or rail clamp diodes to protect your op-amp...just in case. Unlike the divider which steps down the voltage a certain amount, the clamps will kick in if the voltage somehow gets high enough that it is still damaging even after being stepped down.

This is a unidirectional circuit so you would take a unidirectional TVS diode and place it pointing from GND to the pin to be protected. Similar to what you might do with a zener. A bidirectional TVS works too for clamping positive spikes, but unidirectional TVS is better because it forward conduct to clamp negative spikes which means it will clamp closer to GND for negative spikes. The bidirectional one will clamp at the same distance away from GND in either direction.

For a positive rail-clamp diode you would take a diode designed to work in forward conduction (i.e. not a zener or TVS) and place it so it points from the pin to be protected to the +5V rail. This will not let the voltage there exceed \$5V+V_d\$.

You can do the same to GND to also clamp negative voltages from falling below \$0-V_d\$. This negative rail clamp diode is the exact same as a unidirectional TVS forward conducting to clamp negative voltages just described above.

  • \$\begingroup\$ Indeed I am using the thyristor as if it were an NMOS transistor, which should kind of be avoided. However, the grounds of the two coils in the CDI are connected together inside of the CDI. The CDI has one outcoming ground wire that you connect to the frame. I could interrupt that wire with my triac, but then the current could still flow through both coils as if they were two inductors (I will add an image in my OP to demonstrate). I am unsure if this will damage either my ignition coil or my CDI coils. \$\endgroup\$
    – Anteino
    Feb 11, 2020 at 12:23
  • \$\begingroup\$ I am not sure I completely understand your comments on the TVS diodes. You're saying I should put a TVS between the pin and the resistor. But there is no resistor on the MCU pin. Also, the opamp is already there to protect the MCU so I am unclear in what would be the point of protecting the arduino itself. Also, the voltage supply of the opamp consists of 5V and GND so the output voltage couldn't go outside this range. \$\endgroup\$
    – Anteino
    Feb 11, 2020 at 13:57
  • \$\begingroup\$ I simulated the opamp in LTSpice and it seems the output voltage will only rise to levels close to 5V when I load the output with at least 1kOhm. \$\endgroup\$
    – Anteino
    Feb 11, 2020 at 13:57
  • 1
    \$\begingroup\$ @Anteino ah, yes. You can't do that if the ground is permanently shared between the two coils. About TVS, The output pin on the MCU has a series resistor in your schematic. Just because it is an output pin doesn't mean it can't be blown. For the input pin, the opamp won't protect the MCU if something goes wrong. It is like thinking a window will protect you from an explosion. You would place a TVS or rail clamp diode on the right of the 100K to protect MCU and opamp. \$\endgroup\$
    – DKNguyen
    Feb 11, 2020 at 14:05
  • 1
    \$\begingroup\$ @Anteino I thought I said Unidirectional TVS is better here because unidirectional circuit. Bdirectional works but uni is better. You want the resistor between the protected pin and high voltage so the diode can clamp without frying. The diode clamps to 5V across it. Without resistor, the remaining excess voltage has to produce so much current through the diode it drops to 5V (probably frying the diode) but with diode the extra voltage appears across resistor and gets current limited \$\endgroup\$
    – DKNguyen
    Feb 11, 2020 at 16:12

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.