Electrical – Braking a small, high-speed DC motor

brakingdc motor

I am currently having an issue with precision control of small brushed DC gearmotors (130 size) being used as drive motors on an autonomous robot, but this question can be applied to small, high-speed DC motors in general. On my robot, I am driving the motors with an L293D-based dual H-bridge controller, controlled by a microprocessor. I have found that simply setting both of the microcontroller outputs connected to the H-bridge low will not stop the motor quickly enough for the robot to immediately stop, resulting in imprecise turning, even when running the motors at the lowest speed possible without stalling.

I decided to try an experiment with braking several DC motors (RF300, RF370, and 130 size) with and without a 2.5-ounce flywheel on the output shaft. I connected both of the motors to 5 volt power, allowed them to reach full speed, and then disconnected power and shorted the leads on each motor using a DPDT switch, and compared the time it took for them to stop with and without shorting the leads. It seems that the stopping times for the motors are relatively the same whether or not the leads are shorted. The motors with the flywheel attached took longer to come to a stop, as expected. The same results were obtained by running the motors at 12 volts.

Is it actually possible to brake small motors?

Best Answer

When the motor is spinning it generates a voltage proportional to its rotational speed (almost equal to the supply voltage when running free). Then when you apply a short the current is determined by that voltage and the motor's internal resistance. Torque is proportional to current, so initially you get a braking force equal to the stall torque. However as the motor slows down it produces less voltage, so the current and torque reduces (down to zero when it stops). If the 'short' is not a low resistance compared to the motor's internal resistance then it will have even less braking force.

Any inertia in the drive chain will make it run on past the point where you try to stop. A motor in a gearbox has a lot of inertia due to the high rotational speed of the armature and first gear stages. It will never stop instantly, just like it won't go from stationary to full speed instantly when powered up.

Motors such as the RF300 and RF370 typically have high internal resistance and low torque, relying on the gearbox to provide sufficient output torque. They also have heavy iron-cored armatures which increase inertia. Swapping out the motor for a more powerful coreless type with low internal resistance would improve the braking speed. Unfortunately good coreless motors tend to be expensive, and often require matching (expensive!) gearboxes.

You can stop faster by applying reverse voltage, but be careful because that can cause the transistor bridge to 'shoot-through' if you don't stop and wait for the inductive back-emf to die down before reversing. Also the peak current will be twice as high as normal.

Even with reverse voltage applied it will take some time to stop. To compensate for this you must start braking the motor before the robot gets to the position you want. How much before depends on the amount of inertia in the system, which may vary depending on what the robot is doing.