0
\$\begingroup\$

I am trying to design a circuit to measure the RPM of a small internal combustion engine.

The ignition on the engine is a simple magneto style ignition. These ignitions are switched off by grounding a wire. When not grounded, the wire carries a signal that pulses once per revolution from 0V to up to 270V. The pulse length is typically 5 micro seconds.

Because the engine drives a remote controlled vehicle, it is important to isolate the ignition from the rest of the electronics, to reduce RF noise. Thus, I was thinking about using an optocoupler to take the pulse as input, with a suitable resistor in series to limit the current. On the output side, I am thinking about connecting the source to a pull-down resistor, and the drain to +Vcc of the Arduino.

The idea is to turn the input pulse (the yellow curve in the below image) into a square wave, and that is why I am thinking about a MOSFET-based optocoupler. The source would be connected to an input pin on the Arduino, programmed to work as a pulse counter (I have that part already done). The square wave does not have to have the same width of the pulse. In fact, I would like the square wave to overlap the portion of the pulse above 50V.

So my question is: What is the best optocoupler to use, and what is the best way to apply the 50V threshold?

The yellow pulse is the one that is fed to the optocoupler. Note that here it is inverted

Figure 1: The yellow pulse is the one that is fed to the optocoupler. Note that here it is inverted

\$\endgroup\$
2
  • 1
    \$\begingroup\$ Are you sure that this signal has enough current capacity to drive an optocoupler? Put a 100k resistor to ground and measure again. \$\endgroup\$
    – Mattman944
    Commented Dec 31, 2020 at 13:45
  • 1
    \$\begingroup\$ You could use a small “pulse” transformer to step down the voltage and impedance with isolation then characterize the pulse after that for converting a logic level with a sufficiently high inductance for the 80kHz band region \$\endgroup\$ Commented Dec 31, 2020 at 14:41

1 Answer 1

0
\$\begingroup\$

I suspect that the signal is very weak and can't drive much of a load. If it can drive 100k, something like this should work. I plain NPN optocoupler should work, I don't see an advantage here to a MOSFET Opto.

If the 50 V threshold is important, this won't be accurate. If you are only building a few, you could hand-tune it. If a 50 V threshold is important, you should consider a pulse transformer like Tony recommended.

schematic

simulate this circuit – Schematic created using CircuitLab

\$\endgroup\$
4
  • \$\begingroup\$ I ran the engine with a 47k resistor to ground. The scope gave essentially the same reading, so I am confident that it can drive the opto. As far as -50V threshold, the rest of the waveform is between +10V and -10V, so it does not have to be very precise. I will give it a try, but for now I will mark it as the answer. \$\endgroup\$ Commented Dec 31, 2020 at 21:25
  • \$\begingroup\$ @user3646557 - if any noise is causing extra pulses, you could reduce the sensitivity by placing a zener in series with R1. 10 or 20V will help. \$\endgroup\$
    – Mattman944
    Commented Dec 31, 2020 at 21:36
  • \$\begingroup\$ I actually built the circuit and it worked. One question, though, what is the purpose of the 22pF capacitor in parallel to the LED in the optocoupler? \$\endgroup\$ Commented Apr 9, 2021 at 17:13
  • \$\begingroup\$ R1 and C1 form a filter to reduce false triggering. For pulses it is easier to think of the time constant of the filter. This time constant is 2.2 uS (100k * 22pF). So, in rough terms, a 5 uS pulse will mostly get through, and 2 uS and less will be attenuated. \$\endgroup\$
    – Mattman944
    Commented Apr 9, 2021 at 19:50

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