Motor RPM

Based on the experience in this forum what is the easiest and most cost efficient way to get the RPM of a DC motor? My thoughts right now are a proximity sensor.

I've looked at the youtube vids and this forum and found there several diff approaches.

Anyone got any suggestions?

A magnet on the shaft and a Hall effect sensor picking up one pulse per revolution.

Hi,
What is the shaft speed?
This will determine the type of sensor.

Tom... :slight_smile:

I use a small black disc on the motor shaft with a blob of white paint on the disk and a QRE1113 reflective optical sensor

The code I use is like in this link

...R

The setup has to be non-intrusive.

Right now, my idea is to put the prop on the motor and use maybe a proximity sensor along with arduino interrupts to determine velocity vs. time.

Motor speed is around 30K RPM. This is a small brushless DC motor for a drone (aka: quadcopter). FYI, I can hold all 4 motors in my hand.

So..putting a magnet on a shaft would be impossible.

I want to develop a transfer function for the motor/prop and then model using laplace transform to determine PID coeffiecients.

Any ideas on this will be appreciated.

jackmanjls:
Right now, my idea is to put the prop on the motor and use maybe a proximity sensor along with arduino interrupts to determine velocity vs. time.

If this is just for the purpose of collecting data for research why not set up a beam-break with an LED and photodiode so that the propeller breaks the beam - presumably twice per revolution.

At 30,000 RPM = 500 RPS and two interrupts per rev that would be 1000 per sec or about 1000 microsecs between interrupts. A 16 MHz Arduino should be able to handle that easily.

You will need to select a photodiode that can respond quickly enough.

...R

Robin2... you said: You will need to select a photodiode that can respond quickly enough.

Any suggestions?

I'm currently bench testing a laser with LDR. My concern right now is getting a clean count pulse. If I put the output pulse of the LDR into a 2n2222 and then add some hysteresis. I think that will give me what I want. For verification, I will monitor using the logic analyzer.

This is my current line of thought and will probably change once I get to the bench.

(deleted)

anwofis:
A good (not that expensive) sensor would be a magnetic rotary position encoder.

I suspect that would not be appropriate at all for a motor rotating at 30,000 RPM

...R

anwofis:
A good (not that expensive) sensor would be a magnetic rotary position encoder.

It is also an absolute sod to mount on a motor shaft. The magnet has to me about 1mm from the sensor. The mechanics of mounting that for a motor rotating at 30,000 RPM is no easy matter.

jackmanjls:
Robin2... you said: You will need to select a photodiode that can respond quickly enough.

Any suggestions?

I'm currently bench testing a laser with LDR. My concern right now is getting a clean count pulse. If I put the output pulse of the LDR into a 2n2222 and then add some hysteresis. I think that will give me what I want. For verification, I will monitor using the logic analyzer.

This is my current line of thought and will probably change once I get to the bench.

Hi, laser is probably a good idea, the LDR response will be the governing factor.
You need an oscilloscope to look at the waveform off the LDR and out of the 2N2222.
No hysteresis will be needed if you shade the LDR so it only sees the laser.

Use a tube around the LDR pointing at the laser.
Tom... :slight_smile:

jackmanjls:
I'm currently bench testing a laser with LDR.

I missed this earlier.

IMHO the reaction time of an LDR will be far too slow. I believe you need a photo diode. And, you need to read the specs carefully to select one with a fast enough rise and fall time.

...R