# Brushed motor BEMF ringing

I am attempting sensor-less speed control of a brushed DC motor using PWM and measuring the BEMF (motor-induced voltage proportional to speed). The motor is powered through a H-bridge IC (TI DRV8801).

I've noticed the BEMF is only observable in fast decay mode, where the motor is basically reversed until the current is zero and then the switches turn off.
This leaves the motor connected to power rails through the free-wheeling diodes. Plus the resistor-divider. Plus EMI filter caps on the motor.

So the circuit might look like this:

simulate this circuit – Schematic created using CircuitLab

I assume the oscillation shown in the following image is a result of the residual energy of the motor inductance and the connected capacitance (filter, wire)?

• yellow: motor -
• cyan: motor +
• blue: center point of voltage divider: 10 kΩ to GND and each motor contact
• pink: current (large offset with DRV8801; might also be due to bad layout)

The long settling time limits the PWM duty-cycle and the frequency. Is there a way to shorten it? Maybe with a load resistor?

• You probably don't need to sample the back EMF on every PWM cycle. Couldn't you just run at a "normal" duty cycle and frequency for say 100 cycles, set the driver outputs to a high impedance state, wait a hundred microseconds or so for the ringing to die out, sample the back EMF voltage and repeat?
– jms
Commented Oct 4, 2016 at 12:09
• That would be a disaster firmware-wise
– user76844
Commented Jul 27, 2017 at 13:19
• "To measure the back EMF voltage, turn the modulated FET “off.” This will cause the current to flow in the opposite direction. After initially shutting off the FET, dI/dt must stabilize before taking the measurement." AN893: Low-Cost Bidirectional Brushed DC Motor Control Commented Mar 29, 2018 at 18:48
• Where are you measuring the current? Right across the motor? It's hard to determine from the scope screenshot where your high impedance zone is. I would make a chart that includes the motor drive signals. You need to 1. Shut off the mosfets, 2. discharge the coil inductance, and 3. Measure the BEMF. Just as an experiment, try turning off the mosfets then wait a whole 100ms then sample the voltage. If that doesn't work then there is something wrong with your setup.
– Drew
Commented May 3, 2019 at 20:04

Unfortunately the reverse diodes inside the chip cause the stored inductive energy to take quite a long time to deplete. If "somehow" these diodes could be removed and replaced with a medium value resistor, the decay would be faster because energy would be burnt more quickly.

Adding a load resistor will lower the rate at which energy can be burnt - remember you are talking about the motor current wanting to remain constant when power is removed and a higher value resistor burns that energy off more quickly BUT the diodes cannot be removed and so this looks an impossibility.

• How would the reverse diodes affect the ringing, exactly? As I see it, the diodes are only going to conduct when the sum of the voltage produced by the discharging motor inductance and back-EMF is greater than the DC link voltage (24 V), but the ringing OP is asking about happens at a much lower potential (with the motor voltage decaying from 10 V pk-pk to zero in classic LCR oscillation)
– jms
Commented Oct 4, 2016 at 12:23
• @jms I can see the reverse diodes rectifying the ringing - is this what you meant? Commented Oct 4, 2016 at 12:24
• Not exactly. The H-bridge output in fast decay mode follows the following waveform (where A = left, B = right motor terminal): A high, B low (current ramp up) -> A low, B high (current ramp down, fast decay) -> A High-Z, B High-Z (current at zero, waiting period) -> repeat. OP's ringing which interferes with back-EMF sensing occurs after the current has already decayed to zero, and the pk-pk amplitude of the ringing is relatively low (less than what is required to forward bias the freewheeling diodes)
– jms
Commented Oct 4, 2016 at 12:30
• @jms - I'm struggling to go down the seemingly tangential path you are creating - what has this got to do with the question and what has it got to do with my answer. Genuinely I am puzzled. Commented Oct 4, 2016 at 12:35
• I'm puzzled how you are puzzled, perhaps I'm just horrible at explaining things? I hope that this illustration helps to better convey what I meant: I don't think that the diodes get even forward biased during a PWM cycle, let alone that they cause the problem.
– jms
Commented Oct 4, 2016 at 13:04

I think you don't need closed loop on bemf. If you know what is your current and ohmic resistance if the motor, you know all you need. Because BEMF = Vbus * D(PWM) - IR. So for speed control you only need to know the kv constant.

Also i think your PWM frequency is too low.

Edit: i hope you have a descent current loop. If you don't, given you somehow solve stall current, just work with open loop

Edit 2: measure not related to gnd. Measure between two wires of the motor.

The ringdown is due to the RLC equivalent circuit of the motor and inverter.

"EMI filter caps on the motor" are mentioned, but not shown on the schematic. These may exacerbate the issue, but it's impossible to say by how much without values given.

The ringdown period is about 33µs. If C = 1µF for example, L = 28µH, and critical damping will be had for ESR of $$\Z_0 = \sqrt{\frac{L}{C}}\$$ or 5.3Ω (4.7Ω is close enough).

Generally, a DC motor can be modeled as a series resistance and inductance. Combined with attached capacitance, we have a series resonant circuit, with characteristic impedance $$\Z_0\$$, at characteristic frequency $$\F_0 = \frac{1}{2 \pi \sqrt{L C}}\$$, and Q factor $$\Q = \frac{Z_0}{R}\$$. (It's not obvious what other resistance is in your circuit, but the decay rate suggests a low Q, perhaps 3 or so. Motor resistance may be dominant here.)

Note that filter capacitors are the incorrect solution for treating EMI from a voltage-sourcing inverter. The consequence can be seen in the waveform: notice the huge inrush current at turn-on, vastly increasing switching loss. Instead, use series inductance off each leg of the bridge, and then an R+C to GND for filtering. This can be as little as ferrite beads, if not much filtering is required, or as much as the full inductance required to filter PWM down to a ~DC voltage.

Note that full-wave switching and filtering obscures the open-circuit EMF signal, that I guess you're trying to measure. This can be inferred in other ways, for example taking inverter supply voltage times PWM duty as inverter output voltage (or for better accuracy, measuring it directly, say at the filter output), and inverter current as the current drawn by the motor. If motor resistance is known, EMF can be measured.