encoder and hardware to measure slow rotation speed (4 ... 90 RPM)?

I'm posting the question here even though what I'm making is not a robot. But I figured folks on this forum know how to measure rotation angles with good precision, and that requires the same sensor like measuring a slow rotating axle - some kind of fine rotary encoder with lots of segments.

For a machine I'm building, I'll need to measure the rotation speed of two rods. The speeds are variable, but they can be as slow as 4 RPM, or as fast as 90 RPM. I would like the display to refresh at least once a second, and I'd like to display the speed with more than 1 meaningful digits (quite a bit better than 10% precision). That means I'll need an encoder with several hundred segments at least, so as to get several dozen up/down transitions per second at 4 RPM.

E.g., a 600-segment encoder would give 40 Hz signal at 4 RPM, and 900 Hz at 90 RPM. That should be adequate. More segments would be better, if possible.

The rods are 25 mm (1 inch) thick. If the encoder is large enough so I could slide it onto the rod, that would be great. If not, if it's too small, I guess I'll have to find a way to attach it at the end of the rod (which is probably doable with some extra hardware).


  1. Could you recommend an encoder having these parameters?

  2. A regular Arduino (like a Micro) should be capable of counting at 900 Hz, right? (two encoders at once, no less)

You can get by with something much simpler than what you’re suggesting. Instead of counting pulses, just measure the time between 2 (or some other set number) successive of pulses.