# How can I measure back-EMF to infer the speed of a DC motor?

I'm interested in measuring the back-EMF of a motor to determine a motor's speed because it's cheap and requires no additional mechanical parts. How can I measure the back-EMF when I'm driving the motor?

-
+1. Just to pile on more information: acroname.com/robotics/info/articles/back-emf/back-emf.html – Nick Alexeev Mar 26 '13 at 18:55

One way to do this is to briefly stop driving the motor, long enough to let any residual current from the driving voltage die down, and then simply measure the voltage. The time it takes the current to settle will depend on the inductance of the windings. This is simple to understand, and the undriven interval can be made quite short, but this has obvious disadvantages.

Another method involves a clever use of Ohm's law. A motor can be modeled as a series circuit of an inductor, a resistor, and a voltage source. The inductor represents the inductance of the motor's windings. The resistor is the resistance of that wire. The voltage source represents the back-EMF, and it is directly proportional to the speed of the motor.

If we can know the resistance of the motor, and we can measure the current in the motor, we can infer what the back-EMF must be while the motor is being driven! Here's how:

We can ignore $L_m$ so long as the current through the motor is not changing much, because the voltage across an inductor proportional to the rate of change of current. No change in current means no voltage across the inductor.

If we are driving the motor with PWM, then the inductor serves to keep the current in the motor relatively constant. All we care about then, is really the average voltage of $V_{drv}$, which is just the supply voltage multiplied by the duty cycle.

So, we have an effective voltage we are applying to the motor, which we are modeling as a resistor and a voltage source in series. We also know the current in the motor, and the current in the resistor of our model must be the same because it is a series circuit. We can use Ohm's law to calculate what the voltage across this resistor must be, and the difference between the voltage drop over the resistor and our applied voltage must be the back-EMF.

Example:

motor winding resistance $= R_m = 1.5\Omega$
measured motor current $= I = 2A$
supply voltage $= V_{cc} = 24V$
duty cycle $= d = 80\%$

calculation:

voltage effectively applied to the motor $= \overline{V_{drv}} = dV_{cc} = 80\% \cdot 24V = 19.2V$
voltage drop over motor resistance $= V_{R_m} = IR_m = 2A \cdot 1.5\Omega = 3V$
back-EMF $= V_m = \overline{V_{drv}} - V_{R_m} = 19.2V - 3V = 16.2V$

Putting it all together into one equation:

$V_m = dV_{cc} - R_m I$

-
+1, nicely explained, good reference answer. – Anindo Ghosh Jan 14 '13 at 16:15
A point that's worth noting is that, except to the extent that an inductor has parallel resistance or other leakage, the average voltage across an inductor over any given time interval must be proportional to the difference in current between the start and end of that interval. If an inductor has the same amount of current flowing through it at the start and end of some time interval, the average voltage across the inductor must be zero. That rule applies both to discrete inductors, and also the inductor one models as being in series with an ideal motor. – supercat Jan 14 '13 at 20:06
@supercat: hm, interesting point. I can see how I could use that to further justify ignoring the inductor, but then I thought of something else. If the current actually is changing (during periods of load change or speed change, perhaps) this would introduce an error into this method, wouldn't it? I wonder if this is significant enough to merit consideration. – Phil Frost Jan 14 '13 at 20:22
Also, note that if one is PWM'ing a motor at a decent frequency, efficiency will be best if the current in its inductance does not die down between cycles. Rather than open-circuiting the motor, short-circuit it unless or until the current drops to nothing (hopefully the PWM rate will be fast enough that it won't). If one short-circuits the motor long enough, the current will fall to nothing and then reverse. Reverse current will kill efficiency, so open the circuit at that point (or short through a transistor that only allows one direction of current). Note that... – supercat Jan 14 '13 at 20:30
...if the stall current exceeds the amount one's supply can output without sagging, PWM'ing the motor may actually increase the available starting or slow-speed torque. Note also that if the motor is turning faster than the speed "requested" by the PWM, some of the excess energy will be dumped back into the supply (good for efficiency, if one can safely harness it). – supercat Jan 14 '13 at 20:36