Measuring Slow RPM instead of Fast

Hello fellow men and woman,

I'm gone through a ton of examples of measuring RPM using Hall effects sensors, but what I need is the opposite of what people are using. Most people need to read High speed things like fans or spindles. I need to be able to read RPM around 40 - 100 rpm semi accurately. Does anybody have any resources or ideas how I could do that.

Thank you,


Add magnets and/or sensors. More pulses per revolution gives better resolution.

I need to be able to read RPM around 40 - 100 rpm semi accurately.

What is the problem? The same principles apply to all types of motors.
RPM = 60/(time for one revolution in seconds).

In the code I have seen its either resolution or update rate. Update rate at 40 - 100 rpm is way to erratic. Increasing the counter ends up taking to long for it to print to my lcd screen, but it more accurate. I guess you are right I'm going to have to add more magnets if I want more resolution in less time. Will these Magnets need to be spaced evenly along the shaft surface.

Or could I just have it output data fast, but then average the data afterwords. Or is this basically the same thing? As counting the cycles and then printing to the screen?

Thank you,

Ryan Passage

Please post the code you are using, and explain what problems you experiencing.

For every pulse save the value of micros(). To measure the time for that revolution subtract the latest saved value from the previous saved value. That way if there is one pulse per revolution you get a new speed value every revolution.

If you need to update the speed more frequently then arrange for more pulses per revolution.


There are two good libraries, FreqMeasure and FreqCount.