# Back-EMF speed detection in motors

• posted

I'm working on a project that involves replacing some existing electronics with some that I've designed. It's controlling the speed of DC brushed motors. Since the original equipment uses a knowledge of the applied voltage and the motor current to infer back EMF and therefor motor speed, that's what I've done, too.

My problem is that my equipment is consistently sensing the speed as being faster than it really is, by a constant amount -- except when the motor is stalled, when the reading is correctly zero. So I end up servoing the motor speed to a figure that's a 20-30 RPM higher than desired.

It's not just a mis-calibration of the motor torque constant or the resistance -- if that were the case, then the motor speed error would depend on the command speed or the applied torque. I can easily calibrate out any dependence on torque (by adjusting the calibrated motor resistance) and I can get a 1:1 correspondence between increments in the commanded speed and increments in the actual speed. But I'm left with this @#\$% offset.

Has anyone seen this? Anyone care to hazard a guess at what's going on?

Thanks.

```--
My liberal friends think I'm a conservative kook.
My conservative friends think I'm a liberal kook. ```
• posted

Brush noise trashing an opamp?

```--
John Larkin         Highland Technology, Inc

jlarkin at highlandtechnology dot com ```
• posted

How, specifically, are you "inferring" the back EMF from the applied voltage and the current? ...Jim Thompson

```--
| James E.Thompson                                 |    mens     |
• posted

Back EMF = voltage - current * R

where R is the calibrated armature resistance (and yes, it changes discernibly when the motor heats -- that's not my immediate problem).

```--
My liberal friends think I'm a conservative kook.
My conservative friends think I'm a liberal kook. ```
• posted

I was once told by my lecturer many, many years ago, that the gap between brushes and the commutator require a small voltage to produce a plasma to carry the commutator current.

Have you worked out this "offset" voltage?

```--
Mike Perkins
Video Solutions Ltd ```
• posted

Stray inductance.

Vladimir Vassilevsky DSP and Mixed Signal Designs

• posted

The idea of computing back EMF, and using that to improve speed regulation, is pretty much equivalent to driving the armature from a power supply with a negative output resistance.

That can get unstable, with intertial issues, so it sometimes makes sense to tweak the dynamics of that negative resistance.

```--
John Larkin         Highland Technology, Inc

jlarkin at highlandtechnology dot com ```
• posted

Tim - is the voltage supplied from a pulse width modulated source? If so, is it measured or calculated?

Hul

• posted

Hi, Tim:-

To control a brushed PM DC motor using IR compensation, you apply a voltage proportional to the desired speed, plus a compensation term equal to the product of the motor (and series wiring) resistance and the measured armature current.

To get a fixed RPM error implies to me that either your current sensor or your voltage DAC (or whatever) has a DC offset.

Picking some numbers out of the air:- If the motor is a 24V motor that goes 5000 RPM at full voltage Say maximum operating current is 1A, and resistance is 2.4 ohm (LRA of 10A)

Voltage error for 25 RPM is 120mV

Current error for 25 RPM is 0.12/2.4 = 50mA

--sp

• posted

My WAG is that your "armature resistance" is not really a constant. There will be times when (depending on the commutator) the brushes will likely be connected to two separate windings; other times only one. Given sufficient rpm you could probably use some time-averaged value; is that what you've done?

• posted

Seconded, although on gut feeling. Not sure I can explain it.

Would that not contribute to an effective R? Perhaps the "offset" (which isn't a true offset -- it's still zero at zero!) is a polynomial correction instead (leakage's offset being proportional to RPM)?

Tim

```--
Deep Friar: a very philosophical monk.
Website: http://seventransistorlabs.com```
• posted

Ah, that's a good one too...

Tim, you say it's zero at zero (locked rotor), but is it always zero? Does the offset change with position..?

Tim

```--
Deep Friar: a very philosophical monk.
Website: http://seventransistorlabs.com```
• posted

Have you taken into consideration the brush drop (typically 0.5-0.8 V per brush)??

• posted

Here is something that might help, although they use a PWM drive and measure the back EMF during the OFF period:

The following seems to use an encoder, but may have some helpful info:

And this:

I have heard that it may be possible to sense the change in current and/or voltage caused by the commutation but it tends to be noisy and dependent on things like brush and commutator condition.

Paul

• posted

You've received a number of hints already. One more: Could it be that this motor is arcing? Then you would not see any effect when at standstill.

```--
Regards, Joerg

http://www.analogconsultants.com/```
• posted

Tip 7? That only works if there's no current in the shunt diode, which has nasty implications.

```--
John Larkin                  Highland Technology Inc
www.highlandtechnology.com   jlarkin at highlandtechnology dot com    ```
• posted

In the past I've done really good with just using an external resistor equal to the winding resistance, so I'm not quite sure what setup Tim is using. ...Jim Thompson

```--
| James E.Thompson                                 |    mens     |
• posted

Hmm, I had to scroll up there to see what type of motor you are using..

If that is a shunt/PM style motor, I don't quite understand how that will work? Maybe I am missing something.

I have a pretty good understanding of DC brushed motors and I just don't see it happening that way.

Dynamic(R) = Varm / Iarm.

Now since the motor has some DC R in it, this must be treated like a series R with an ideal motor.

Most drive electronics knows the size of the motor and knows ~ what the DC R should be, along with the expected dynamic current from the motor. The drive will advance the arm voltage above the set point when current is building to calculate for this offset. When monitoring feedback for an external reference for example, this offset should be removed. Many high end drives have the ability to adjust this.

So, output arm voltage must be offset (increased) as current increases, to over come the DC R. much like satisfying a voltage need at a divider node, the motor being the point of the dropping R and DC R in the motor being the series R.

I've played around with lots of small motor drive circuits and that is how I've done it. The feed back circuit uses the current to scale the voltage reading back so that output voltage will raise above set point to satisfy the offset requirements. This will make the motor spin a little faster and match your readings.

That's my blog for the day, and long winded as it is. Most likely nothing you can use. :)

P.S. Flux density in the field is going to effect your speed at specific arm voltages, just incase you didn't think of that.

Have a good day..

Jamie

• posted

Here's the way I've done it in the past...

...Jim Thompson

```--
| James E.Thompson                                 |    mens     |
```--