# How to find RPM from the square wave of a MSD box

I am trying to make a tachometer for my car. I am using a MSD6Al-2. The box outputs a 12 volt square wave at a 20 % duty cycle

I talked to someone at MSD and they said you'll get a signal every time it sparks.

The problem is it can spark up to 10 times per cylinder up to 3000 rpm. Now when tried to figure out the RPM if I just don't account for the muti-spark the numbers are better.

I am having trouble trying to figure out what RPM it is turning at.

Here is what I was doing:
number of sparks in the purple area divided by the number of cylinders (6) then doing that mutiplied by how many times that would happen in one minute.

Here are the images of the waves I got from my scope:

Idle RPM

Higher RPM

If anyone know how to find the RPM from this please let me know.

Also, what does the negative wave mean and should I count those too?

• when counting waves on water, do you count the tops and the dips? – jsotola May 15 '20 at 19:23
• Are you using the tachometer output (gray wire) of the MSD box? If so, then you don't have to worry about the multi-spark feature. – JRE May 15 '20 at 19:42
• I think you'll want to end up with an MCU to convert the raw signal into something of use and perhaps drive whatever indicator/display you want. But first you might do something like capactively couple into an audio recorder and go for a drive to collect a lot of conditions, then spend some time studying that data to inform your understanding of what your software needs to be making sense of. – Chris Stratton May 15 '20 at 19:43
• As for the negative peaks, think about what you get if you take the derivative of a step change. Many electric situations, such as non-contact coupling and transmission line effects can end up doing that sort of thing. Probably you want to clamp those overshoots. – Chris Stratton May 15 '20 at 19:46
• are these RPMs correct? ... a quick calculation using data in the two waveforms (pulses per min / cylinders * number of revs per spark) ... top: counted 33 pulses/sec ... 33 * 60 / 6 * 2 = 660 RPM .... bottom: counted 68 pulses/sec ... 68 * 60 / 6 * 2 = 1360 RPM – jsotola May 15 '20 at 20:51

Your tachometer signal is actually fairly clean and well defined, It would appear you are using the grey tach output wire.

The normal calibration for tachometers is 1 pulse per 2 cylinders fired:

4 Cylinder = 100Hz @ 3000RPM

6 Cylinder = 150Hz @ 3000RPM

8 Cylinder = 200Hz @ 3000RPM

Try measuring the frequency and see if this lines up, it would seem odd for them to not align with this as it would mean a large number of older cars that cannot easily be calibrated would not work with this system out of the box.

Edit: Based on jsotola's counting, it does appear it lines up perfectly to the V6 calibration. so 150Hz at 3000RPM, so for your system, use something like a schmitt trigger, feed it to your micro (probably its timer) and either count direct, or if you want really fast updates count the time between pulses (reciprocal counting)

• Thank you for this information and when i saw this i tested it and sure enough i get 150Hz @ 3000 rpm i will be using a raspberry pi to interpret the waves would you recommend i still feed it to a schmitt trigger then to a timer – Kyle M May 16 '20 at 1:34
• You may be fine without it, as I suspect the pie has schmitt trigger like inputs, still you may want something between the pie and the ECU incase something goes wrong in the future, e.g. shorted to battery, at minimum a resistor divider. – Reroute May 16 '20 at 1:36
• ok thank you for the help ill make a note of that – Kyle M May 17 '20 at 19:34