# Stopping a DC motor using an H-bridge: forward+backward vs. 'brake'

Using an H-bridge, you can stop the DC motor at a certain position by applying a 0101 or 1010 signal to the 4 terminals.

You can also stop it at a certain position by driving it forward then backward at very high frequency which make the 'juggling' unnoticed and the motor looks like stationary.

Ignoring all other aspects and focusing on stopping the motor at a specific position...which of these two methods is better?

It all comes downto what the definition of stopping and stopped is, in the scope of the application. This is key because it is related to your load.

There are three options (four if you expand one of them to cover one of your two cases)

1. Mechanical brake

I am adding this here for completeness as in some applications this is the only way to ensure a "locked rotor"

2. Shorting the windings (your option #1)

This will stop the rotor but will not apply zero speed torque (again related to your load). Assuming this motor is a PMDC,BLAC,BLDC type (ie some form of permanent magnet is present) this is a viable method, assuming you do not need zero-speed torque while it is stopped AND you can tolerate some movement at low-speed (ie it might not be stopped)

movement at low speed?

Take a motor:

0.1R phase resistance

Kt = Kw = 0.1 (Nm/A, V/w)

with no rotor movement there is no terminal voltage which mean no stator current flow (for shorted windings) which means there is no opposing torque generated

Once the rotor starts to turn then torque will be generated BUT it can turn.

=> 0.01V at the terminal (w*Ke)

=> 0.1 Amps flowing (V/R)

=> 0.01047Nm of opposing torque

The faster the rotor starts to turn, more torque is generated to oppose it, but it will turn.

3. PWM the bridge

You have suggest high frequency PWM to provide an average voltage? that will not help for a net torque on the shaft and it will still rotate.

However, it isn't far off what is a viable option if you have to not only stop the rotor but maintain zero speed opposing a given load.

With a current control loop and a speed control loop (you already know angular position from information in the original post) you can provide 50% duty to the terminals for zero-speed (for zero load).

If a load is presented to the rotor, this will put a disturbance into the speed and the current loop and as such the duty will change from being 50% to say... 45% to ensure there is a net-current flow opposing the load presented to the rotor.

Such a control would need PI control on the speed & current loop and as such will have a bandwidth that it can respond to load changes.

• I actually want a zero-speed torque, so based on your post method #2 might be better... Commented Feb 8, 2015 at 0:50
• your #2 or my #2. If its is your #2 (ie PWM, my #3) then yes, this & a mechanical brake are the only ways. you will need a speed controller and a current controller feeding into your pwm block. standard stuff.
– user16222
Commented Feb 8, 2015 at 0:52

It all depends on what you want to do. Both methods are perfectly valid for different situations.

The switched-short method doesn't "stop" the motor. It merely turns the motor into a generator and applies a very large (short circuit) load. This makes the motor harder to turn, slowing down the motion until it finally stops.

The rapid forward-backward clamps the motor in a position causing a very rapid stop. It also uses an awful lot of power to do it, and generates massive amounts of noise.

So it all depends on the effect you are after. A gentle deceleration to a stand-still, which is most often desirable for things like slowing an electric vehicle, or an abrupt stop, which is good for robotics where you need to get to a specific position and stop right there. It's a trade-off between precision and efficiency.

In a side note, the switched-short method can be expanded out to create what is termed "Regenerative Braking" where instead of shorting the motor out it is used to recharge the batteries that run the motor. This is widely used in electric vehicles to reclaim some of the energy wasted during braking.

• No, the second method does NOT "clamp" the motor any more than the first method does. Either way, you are forcing the effective terminal voltage across the motor to be zero. Even with the high-speed switching, the braking action still comes from the motor trying to push current through what is effectively a short circuit. Commented Feb 7, 2015 at 13:19

Assuming you can measure the actual motor position, juggling forward and backward directions will be better in terms of stopping at the right place - use the position error to control the ratio of forward to reverse drive.

This does involve a lot of switching noise and high currents during deceleration : you may wish to employ resistive braking to lose most of the motor's speed, then switch to active drive to the final position.

Certainly the first option is better. The other method creates a lot of switching, which could lead to losses, it causes the magnetic field in the motor to constantly reverse polarity, which generates high transient voltages, and it's going to take more power than simply shorting the motor together.

Perhaps someone else has more specific references or explanations though.

• That's not what happens. Unshorted rotation causes a voltage at the terminals. Shorted this voltage produces a current to flow around the stator, this current produces a stator field which generates an EM torque.
– user16222
Commented Feb 7, 2015 at 16:07
• I'm a bit confused. You described his first option, shorting the motor terminals together, what I was trying to describe was a potential problem with his second, 'juggling', option. What I didn't know at the time was that he needed torque at 0 speed, so of course shorting the terminals together wouldn't work. Commented Feb 8, 2015 at 17:13