I need to time the rotation of a prop


We are working on a method to test small model propellers. I need to get the time as the blades go by, about 160 rpm speed. I need to get the time from blade tip to blade tip in milliseconds……How?

Then I need some way to see what that time value is.



What hardware do you have on hand? If I’d have such task I use some kind of optical encoder. Perhaps, even a combo of laser beam targeted toward an LDR lightness sensor. Then all that’s required is to properly count pulses coming from the LDR-based sensor.



We can read the prop no problem. What we don’t know how to do is to drive a second motor that will rewind the rubber motor what is driving the prop.

The prop is driven with a short rubber motor.
We wind that motor to a certain torque and an associated number of “winds”.

We pick up a single prop rotation, and then restore the wind with a second motor.

The second motor must wind faster that then prop s rotating in order to stay ahead of the prop.

This is what we call a “constant torque test”. I.e. where the torque on the prop is constant.

Make sense?? Thanks in advance for your help.

My first problem is how to time the prop in Miliseconds…can’t see how to do that.




I can send you a Sequence of Operations if that will help



How are you controlling the motor to get one rotation? Unless it is a stepper motor, that will probably be a bigger issue than counting prop rotations. The simplest solution would be to use a stepper motor geared to give you one rotation for each step (but that may not be practical), then you can just count prop flashes, divide by # of blades, and step motor for each prop rotation.

If you are just running a motor, you will need some kind of encoder to determine when it has completed a revolution…basically the same as you are doing to count prop rotation. If motor gets behind, speed it up; if it gets ahead, slow it down. Amount of speed change will probably need to proportional to how far ahead/behind the motor is.

Either way, you only need to time the rotations if you want to know RPM, the algorithm for operating the motor doesn’t really need that info. If you are counting rotations, you only need to know how many rotations for a given time-frame to calculate RPM; you probably don’t necessarily need ms timing unless you expect RPM to change rapidly (which it would not with constant torque). It probably doesn’t really make much sense to calculate RPM until things have stabilized, which would mean speed of motor does not need to change much each check.



Not exactly sure if im spot on or out in left field.
160 RPM = 2.66666666 revolutions per second
assuming a 6 inch prop.
3.14159 * 6 * 2.66666 = 50.26546 inches of prop travel in one second.
In 1 mil the prop travels 50.26546 inches / 1000 = .050265 inches (50 thousandths of an inch
circumfrence (6 * pi) 18.8495 / .050265 = 375 mil /sec.
From a fixed location with a two blade prop you will have a prop tip at that locaton in 187 mils.
Did I do good or just confuse you?



you are both right on right on for sure, my problem is how do we set up XOD to do the prop timing function? We cannot use Stepper Motors. The Sled that the prop runs on is an air track, think hockey table. The prop can only put out about 1 gram of thrust, which is enough to power the sled to flight speed of 4.3 feet per second. but the constraint is that the total weight that we can put on the sled is about 6 ounces. This rules out Steppers as we cannot get one that is small enough and light enough to fit into the weight plan and give us 200 RPM max output. Too heavy.

So we have a small 9 gram dc motor that can do the job at 200 RPM. All that part we have worked out. We got this unit from Servo City.

Our question is how to you use XOD to time the prop at 187MS? We have the sensor for the prop figured out. We are using an Arduino MINI for weight savings.

What is there in XOD that will allow us to time the prop blades, calculate the time interval, and send a shorter run time to the DC motor The DC motor has a rotation sensor mounted to the output shaft with a reflective flag, i.e. we can time that rotation.

We just don’t see how to use XOD to do the timing function.



Assuming you are getting some kind of pulse from your sensor for prop rotation, you could use gweimer/utils/queue-buffer to store the last two time values from system-time node and calculate the difference. If you use reflective tape on only one blade, you won’t have to deal with dividing by number of blades. I don’t know if millis() will provide enough resolution or if Arduino is going to be able to process fast enough to do what you want…

Not sure you really need to time the rotations, though. What you really want is to keep # of prop rotations equal to # motor rotations. You could just count rotations of each, and increase/decrease motor speed based on difference and you no longer need to worry so much about ms timing. If you need RPM, you can divide # rotations by total time. Note that if your experiment runs too long, you will over-flow the counter. Unless you initialize the motor speed with appropriate values, you will probably need time for the system to stabilize; how long will depend on how accurately you calculate speed change based on difference in rotation counts. You probably want to store speed in a buffer and add or subtract from speed based on difference in rotation count. Since speed is 0-1 range (you will never want to spin backward) and diff will be +/-integers that can be quite large, you will want to divide the diff before adding it to speed to get it in a reasonable range, and bound the range for speed. What to divide by will depend on many factors; do you want max speed when you get 10 rotations behind, or not until you get 100 rotations behind? How often do you update speed? Too often, and speed will end up oscillating between full-on & full-off. Not often enough, and your propeller wont maintain a steady speed. Update frequency and factor used for update will be a balancing act (if you update more often, you can make smaller adjustments).


closed #9

This topic was automatically closed 2 days after the last reply. New replies are no longer allowed.