Author Options:

RPM/MPH formula Answered

I'm designing an anemometer with Arduino and I need a formula to figure out the speed at which the rotor turns.

I have a rotor with three magnets, spaced 71mm apart, triggering a Hall Effect sensor which the Arduino reads and counts. Now I can't seem to figure out a formula to calculate wind speed from this information. Anybody got an Idea (or the answer?)


thinking about this problem further, is it possible to have the Arduino measure the time between pulses and convert that to MPH?

if it takes 50ms (0.05s) between any two magnets (71mm) we can figure that to be about 3mph.

if I were to use this method, how would I tell the arduino to start counting in between pulses.

in plain english:
start counting when magnet is sensed then stop counting when another magnet is sensed. Store that time into a variable and do the calculation to figure out MPH.

.  pseudo-code
on HallEffectSensor high
  push timerCount onto myStack
  reset timer
  do calculations

You don't have to use a stack, but it might be handy if you want to do some smoothing, averaging, &c.

is one method.

. NumberOfPulsesInSixtySeconds / 3 = RPM (I'd adjust for a shorter sampling period)
. RPM * EmpiricallyObtainedFactor = MPH

. You may be able to compute the factor, but I have no idea where you would find the formula(s).

To first order, he needs to know the radius R at which his anemometer cups are placed from the axis rotation. Then 2pi * R * RPM gives the linear velocity of the cups in /minute. Converting to miles and multiplying by 60 will give miles per hour.

However, that assumes that the cup is 100% efficient at being driven by the wind. If not, there is an additional emprical factor which needs to be applied.

. Even if the cup is 100% efficient, wouldn't you still have the resistance of the back of another cup coming around the other side into the wind and making the cup move slower than the wind? If so, I'm guessing coefficients for different shaped cups is published somewhere on the 'Net.