# How can I determine the rpm of a wheel that's spinning really fast?

Let's say that I have a motor that's spinning really fast. I really want to know the angular speed of the motor. Using a stopclock definitely won't work as no one can time such fast rotations. So how would I find the rotational frequency in such a case?

• Well, if your rotation is "really fast", than this must be "really hard" to measure. Maybe you could use a device which is "really fast" as well. Does this help answering your question? Maybe you could add numbers so people know what "really fast" means. In addition, you should tells us the aim: The solution depend e.g. on the price of your machine. If you got a machine for half a million USD, you are probably not looking for a cheap solutions. Aug 26, 2017 at 8:51
• It would help if you described what you mean by 'really fast' - mains powered motors often spin at just under 3600 RPM, well above your method's ceiling. Universal motors, small fans, and many other things can spin at upwards of 10,000 RPM. Aug 26, 2017 at 12:20
• If you're looking for practical, you can probably find RPM counters that work with a piece of reflective tape at your local tool store. Computing angular momentum from there is just a matter of math, and they measure significantly quicker rotations than a smartphone can strobe its flash to find. Aug 27, 2017 at 0:39
• Assuming the motor (or at least the shaft) is visible, attach a disc with a marker. You can have a dab of paint, a hole, or a magnet for a hall-effect sensor. For "really fast" you use a strobe light, or or count events (light shines through hole, magnet passes sensor). Aug 27, 2017 at 10:45
• It would also help to know the desired accuracy of the measurements. If you're measuring a small fan at 10,000RPM as @SomeoneSomewhere mentions, you probably aren't too picky about being off by 100RPM. If you're running a Zippe-type Uranium centrifuge at 90,000RPM, pushing the limits of the tensile strength of Titanium in the rotors, then you probably want to know your RPMs to within 1RPM so you can properly control them. Aug 27, 2017 at 19:29

There's a very interesting way to find the angular velocity of a wheel that's spinning so fast that you can't measure using a stopclock. We'll be using a strobe light (a light that flashes on and off repeatedly) and a very interesting concept known as the Wagon Wheel effect under stroboscopic conditions.

## A little bit about the concept:

The Wagon Wheel effect is a phenomenon in which a spinning wheel may appear to be stationary under a strobe light. The reason why this happens is quite simple, the rotational frequency of the spinning wheel is an integral multiple of the the strobe light's on-and-off frequency. As a result, every time the strobe light flashes, the wheel comes to the same position as before. This creates the illusion that the wheel was stationary.

But how will we use this concept to find the rpm of a spinning wheel? Let's find out.

## The experiment:

You'll only need a strobe light (you can download strobe light apps for Android and probably for iOS as well) and your spinning wheel. In this answer, I'll be using a fidget spinner to demonstrate.

Keep the room as dark as possible, and set your wheel to motion. Turn on the strobe light and start with a high flash frequency and gradually lower the frequency until you see the wheel become stationary. We do this because don't want other integral multiples of the frequency to match up with the spinning wheel.

Take a note of the strobe light frequency $$\nu$$. In my case, the fidget spinner appears stationary at a frequency of 13.3 Hz. As we mentioned before, the wheel appears stationary only when the frequencies match. So, the frequency of the strobe light is the rotational frequency of the wheel. So, I can say that my fidget spinner makes 13.3 revolutions per second. And of course, it's rpm would be 798.

I hope you enjoyed this fun experiment. If you have any queries, please drop them at the comments. If you have a better way to find the angular velocity, don't hesitate to write an answer.

• I think you can also determine if you're synchronized, or at some multiple, by slightly changing the strobe frequency and then observing how the speed of the object appears to change. For example if the strobe is reduced by 1 Hz but the object appears to change by 3 Hz, you can deduce the ratio of strobe to object is 1:3. Aug 26, 2017 at 13:53
• Note that for a proper experiment whose data you want to use, you'll need to know how accurately the strobe frequency is displayed, otherwise you become unable to honestly estimate the error on the measurement. Aug 26, 2017 at 14:41
• Thanks for your insight @ACuriousMind. I wasn't really so keen on the accuracy of the frequency displayed by my phone. Of course, this experiment is not without limitations, as it is mainly a non-sophisticated experiment, which can be done with easily available household items. Thank you for your advice nontheless. Aug 26, 2017 at 15:16
• Actually, if the wheel's angular velocity is steady this method will be very precise, since a small detuning will be visible as a small but noticeable drift. However, as described, the method will strictly speaking only give you $f/n$, where f is the frequency of the wheel and n is some unknown positive integer (if you know you're starting close to the rotation frequency then n will be 1, but if the wheel is spinning "very fast" then the strobe frequency may be many times lower). However, if you measure f1 = f/n1 and continuously shift the strobe frequency until you find the next ...
– pwf
Aug 30, 2017 at 4:53
• ... higher frequency f2 that makes the wheel look stationary, then f2 = f/(n1-1). That gives you two equations in two unknowns, and you can solve for f. So even if your strobe isn't nearly as fast as the wheel you can still get the wheel's rotation rate. (Or, if the next higher frequency gives a double-image of the wheel, then f1 was the actual wheel frequency in the first place.)
– pwf
Aug 30, 2017 at 4:58

A laser tachometer:

https://www.amazon.com/Neiko-20713A-Digital-Tachometer-Non-contact/dp/B000I5LDVC

Make a mark at one point on the motor, then set it spinning. Point the tachometer at it. By shining a laser on the surface and measuring the changes in returned light as the mark passes, it can determine the RPM.

• Well for one, his will be a continuous beam - the flashes come from having a reflective fiducial marker on the rotating object.
– CDCM
Aug 26, 2017 at 13:35
• @PrittBalagopal The fundamental difference really lies in accuracy. A purpose-built device is going to give more accurate answers than eyeballing it via strobes, and they're really not even that expensive these days. It's really a matter of the application involved. Do you need to know that it's 9998 RPM vs 9999 RPM? Or are you just curious about how fast it's going? I can easily see how both answers could be useful depending on circumstances. Aug 26, 2017 at 14:59
• @PrittBalagopal No, this is completely different to your approach. The approach here is just to watch the thing spinning and count the revolutions, but to do it with an optical sensor that can count much faster than the human eye. Also, your eyes can't distinguish a very fast strobe from continuous lighting (e.g., an LED lightbulb is basically a mains-frequency strobe, but you see it as continuous light). Aug 26, 2017 at 16:52
• @PrittBalagopal If you point your phone at a 3000 (or 3600 if in a country with 60Hz power) RPM induction motor, you're not going to see anything useful. This will quite happily tell you. Plus, it doesn't have to be in a dark room, it's faster, and you don't have to do any maths. Aug 27, 2017 at 1:00
• @PrittBalagopal suppose the "really fast" rotor is spinning at about 100,000 RPM. That's about 1600 revs per second. There is no way a cheap strobe light can produce any useful light output at that frequency, but a very simple photodiode detector can easily convert one reflected flash of light per rev into a 1.6kHz electrical signal, and any PC or cellphone can measure the frequency by connecting that signal to an audio input. Aug 27, 2017 at 6:02

One idea for an approach may be to record the sound the motor produces and then Fourier transform that signal. The assumption is that the frequency you look for will be prominently visible in the spectrum of that signal. Of course, it is not clear whether this frequency is as easily identifiable as it sounds.

• You have an interesting idea too. I have always noticed that fast spinning motors "squeal" at higher pitch compared to slower spinning ones. Can you explain this in more detail? Aug 26, 2017 at 12:10
• – Emil
Aug 27, 2017 at 6:32
• @Emil: That is a very nice and practical realization of this approach with much more explanation. I did not know that there are smartphone applications that can be used to do this. But thinking about this I should have known. Thank you for the link. Aug 27, 2017 at 7:00

Print out a disk that looks like this:

Attach it to the spinning object and then observe it with a 60 Hz strobe light. By determining which rings look like they are stopped by a 60 Hz strobe you can deduce the RPM of the object.

As you can see, the inner ring has 8 segments (4 white, 4 black), the next ring has 10 segments etc. If you rotate the disk by 90 degrees, the pattern on the inner ring won't have shifted. If you rotate the disk by 72 degrees, the pattern on the next ring won't have shifted. So, with a 60 Hz strobe, you can find which ring appears to be stationary. Call the number of segments in that ring N, then the disk must have moved 720/N degrees in 1/60th of a second. that's 2/N revolutions in 1/60'th of a second, so 7200/N RPM.

Do a web search for "printable strobe RPM" for more details.

• I wouldn't call 1800 RPM "really fast." A car turbocharger rotor can get close to 100,000 RPM, for example. And in any case, turbochargers are much too small to attach that type of strobe disk to them. Aug 27, 2017 at 5:57
• This answer would be greatly improved by including at least a sketch of how this method works. Aug 27, 2017 at 10:42

I happen to have done this exact experiment over the weekend - detailed write-up below. Basically it involved a laser pointer, a photo diode, two resistors, a transistor, and an Arduino. Set the Arduino timer to run at 10 kHz, and the output of the photodiode (into the interrupt input of the Arduino) triggers a "read" of the timer. When at least a second has elapsed, you print the ratio, reset the counters, and start again. Works really well over large range of RPM. I actually used it to measure the spindown of a fidget spinner - to demonstrate that the process is nonlinear, which proves that air drag plays a role.

Here is a picture of the "setup" (on the messy desk in my "den"):

A simple cardboard box was holding a photo diode on the left (20 pieces for \$4.99 on Amazon *), and a small laser diode on the right (10 for \$6.99 on Amazon). I could hold a rotating fidget spinner in the beam, and the Arduino would do the rest.

And a scope trace of the signal: (a bit blurry - the scale is 20 ms per division, so there are about 30 interruptions per second as I took the picture)

Obviously it helps to have a scope to set something like this up properly - but if you have a laser pointer that is pointed at your photo diode, and a way to interrupt the beam properly as the wheel rotates, you have quite a lot of leeway.

## UPDATE

Here is the Arduino code I used to create the RPM meter:

// code to create an RPM meter based on an interrupted optical beam
long time=0;        // time since last measurement
long clicks=0;      // optical interruptions since last measurement
long totaltime = 0; // total elapsed time since reset

void setup() {
// configure pin 2 for input:
pinMode(2, INPUT_PULLUP);
attachInterrupt(0, reportTime, FALLING);

// setup timer:
cli();//stop interrupts

// set timer1 interrupt at 10 kHz
TCCR1A = 0; // set entire TCCR1A register to 0
TCCR1B = 0; // same for TCCR1B
TCNT1  = 0; //initialize counter value to 0;
// set timer count for 10 khz increments
OCR1A = 199;// = (16*10^6) / (10000*8) - 1
// turn on CTC mode
TCCR1B |= (1 << WGM12);
// Set CS11 bit for 8 prescaler
TCCR1B |= (1 << CS11);
// enable timer compare interrupt
TIMSK1 |= (1 << OCIE1A);

sei();//allow interrupts
//END TIMER SETUP

// turn on serial port at 9600 baud:
Serial.begin(9600);
}

void loop() {
// nothing here - everything is interrupts
}

void reportTime() {
clicks++;
if (time > 10000) {
// at least a full second has passed
totaltime += time;
Serial.print(totaltime);
Serial.print("\t:\t");
Serial.print(600000*clicks/float(time));
Serial.write(" rpm \r\n");
time = 0;
clicks=0;
}
}

ISR(TIMER1_COMPA_vect) {
// Interrupt at freq of 10 kHz
time++;
}


The circuit diagram is super simple. I attached a 5 V supply to the laser diode module (which has its own internal current regulator); it's possible it could run off the Arduino 5 V (it only takes 10 mA) but I didn't try that. The optical pickup was done with this circuit:

When the diode is illuminated, the current is split between R1 and the base of the transistor. Once the voltage across R1 reaches 0.6 volts, the transistor will "turn on" and pull current from the collector. This pulls down the signal that is connected to pin 2 (using the internal pullup of the Arduino). When the beam is interrupted, the current is reduced and the transistor turns off. Turning "on" (pulling down) is much faster than turning "off" with this circuit, so we trigger off the falling edge. You can make the circuit more sensitive by increasing R1 - the bigger it is, the smaller the light level needed to trigger. But it also becomes more sensitive to ambient light, and response is slower. With the laser diode, I found that 420 Ohm was a good value: fast response, insensitive to ambient light. But that's definitely a value to play with.

I tested the circuit at frequencies up to 1 MHz (driving the laser with a signal generator with a square wave), and it was fine - so the response time is well below 1 us. This should make it fast enough for many applications.

An example of using this to measure the RPM of a fidget spinner:

There are 3 interruptions per revolution on the spinner - and I have no problem measuring 1200 rpm (3600 interruptions per minute = 60 per second). Driving the laser with a signal generator, I was able to go much faster... up to 30 kHz. At that point, there is some overflow in the program and the numbers are nonsense (I suspect that the Arduino isn't fast enough to deal with 10,000 clock interrupts and 30,000 optical interrupts; some changes to the scaling might extend the range, but you won't need that for most purposes).

Running the laser at 1 kHz, I was seeing 59988 rpm - that is obviously "60,000" with some numerical rounding error (or the clock on the Arduino is not exactly 16 MHz, or...), so that is good. When you push the circuit too hard, interrupts will be getting in each other's way. The highest "correct" reading I obtained was with 3 kHz input, 179904 rpm output. That should be good enough for most applications... Even a bike wheel (with 32 spokes) going 100 revolutions per second (approx 2/3 of the speed of sound) could be timed with this. Of course the wheel would tear apart long before it reached that speed...

* I am not affiliated with Amazon or the companies making these components; just wanted to make it easy for you to find such parts

Attach your motor to a reduction gearbox. Measure the angular speed of the output and multiply by the reduction ratio to get the original angular speed.

Note that people are currently 3-d printing 11 million:1 or billions:1 reduction gearboxes. Example. Also, the output of a gearbox can be the input to the next one (although one should be aware of frictional losses and minimal required torque), so ridiculously fast motor angular speed can be reduced to essentially stationary output.

• I think this is the correct answer if one needs repeated measurements. Aug 27, 2017 at 7:21

Attach a DC motor, and measure its EMF, by plotting the voltage you measure at the connections you would typically supply the DC motor, had you used it as a motor.

Most simple DC motors have 3 coils, so on an oscilloscope you will see something similar to the absolute of a sine, where three such "hills" will correspond to one full revolution.

It is probably much simpler to install than a gearbox, and you will have much less trouble with friction especially if the speed is really fast.

My first attempt would be a slow motion video on my smartphone, count the revolutions for 10 seconds and times it by 6 to get an idea). The framerates could be too low for you though. (There's a new Sony smartphone with a 1000 frames per second drool, that's like 60,000 frames per minute. The Samsung S5's has 120fps.).

My take on this question is based on this video. The idea behind this is that if you manage to transfer the angular velocity from the motor to a spinning disk and create the setup from the video, you can, based on the geometry of the setup and the precession velocity, calculate the angular velocity of the motor.

The calculation can be found here, pages 4-6, problem W14D3-2 Table Problem Suspended Gyroscope Solution. At the end of the problem you have the following formula where all the parameters are defined in the document:

$$\Omega=\frac{d\cdot m\cdot g}{I_{cm}\omega_s}$$

For your scenario, you can use the above formula, but to compute $\omega_s$ by measuring $\Omega$.

I hope this adds a different perspective to the problem than what was suggested so far.

As seen, there are dozens of experiments that might help you, but a more simple and fairly accurate way can be by attaching a very small light at any random point of the wheel and turn it on. Then you can spin the wheel at your desired rpm and attach a sort of a light sensor of a high intensity (equal to the small light attached on your wheel). Then the sensor can count, in how much time the light of given intensity was detected, you can modify it such that every time a light beam of given intensity is detected, the sensor would mark it with a beep, and count the total number of beeps.