Frequency measurement of a petrol engine

I am in the early stages of learning (everything) to use an arduino to measure engine RPM. the range i am interested in is 10hz to 50hz

This is far beyond my skill sets. So am hopefully asking for general advice that will point me in the right direction. So far I have learnt to operate a stepper motor watching Youtube.

I dont want to do an invasive method to take off a mechanical opening and closing of a switch for instance but I think my best approach would be to make an induction coil that would pick up a magnetic pulse from the spark plugs(1 or all 4) or perhaps from one of the two coils..(i am guessing this is a noisy environment)

Although the coils are switched from a 14v supply (at the above frequency) i think it dangerous (or beyond my skill set) to get a connection from there.

My thought is to make a coil and put my mini oscilloscope on it and try to work out what signal i might be able to use (oscilloscope arrives in a week).....

My problem will arise as soon as i try to use that signal on the input pins of the arduino and it crosses my mind that there must be something out there already suited to working with my dilemma......

Could I be looking at a reed switch type idea or a magnetometer on a chip? please bear in mind it has to be simple and maybe I can use math to calibrate what i get to the engine speed

Next I have to try and count the pulses in a given time frame (1-2 secs nominally) and retake samples regularly (5-10 secs nominally) and use that information to make adjustments to the stepper motor(s)..

This is a low speed application btw - not looking to make things go faster or consume more fuel etc

Thanks even for reading my hair brained idea and any advice/direction gratefully anticipated

I was hoping to add a small counter dispaly so that i am sure whet frequency is being read

Trondwell13: it crosses my mind that there must be something out there already suited to working with my dilemma......

There is, indeed several. The most obvious is a Hall effect device. There is already a heap of tachometer programmes out there - no need to re-invent the wheel, little maths needed, and no oscilloscope either. It sounds like you want to make an analogue tacho. That would be the hardest part, but probably not too hard, and it has probably been done before.

Spark plugs don't give much magnetic field (that depend on current spikes). Absolutely massive electric field, yes. Spark plugs use a few mA at many kV.

If you want to measure the rpm only when the ignition is running/working, then that is one method - usually a capacitively coupled probe to one plug lead followed by voltage divider and some signal conditioning/cleanup.

A pickup from the ignition coil gets a spike on every cylinder, which is probably more reliable and prompt. Again a voltage divider and signal conditioning (protection, low-pass filtering, schmitt-trigger)

Components in the voltage divider need to have suitable high voltage ratings otherwise they could flash over and destroy stuff down-stream. High voltage resistors are available, they are usually longer than normal ones.

If this engine has magneto ignition, you can probably use the magnet for your own pickup.

I assume by petrol engine you mean car engine? (to me it’s crude oil, so I’m assuming gasoline car engine) On cars you can tap in the Crankshaft position sensor, or if it is a small engine, you might have to create your own like the others suggested.

Remember, if this is a 4-cycle engine, you get a spark every-other revolution of the crank.


Thanks for all your advice I will try to find a tachometer program and look into the hall effect..

I know I am being secretive but then I get to make my own version and not have someone do it all for me

yes it is a tachometer - in that I want to input frequency data but I wont be using the servo motor to output the revs.....

Actually the project is analogous to what VW did - they managed to identify when the car was being serviced and used the info to shut down the emissions for short periods - naughty but i have found a nice use