Brushed DC motors are used in every industry, from automotive to industrial applications and consumer products. You can find them in windscreen wipers, sewing machines, drills, air compressors, and even toy cars. While some more modern applications utilize more efficient and high torque brushless motors, these require significantly more software and electronics hardware to drive. On the other hand, brushed DC motors are very cheap and effective, and may come in handy, if not indispensable, in some of the products you make. If you have a relatively small brushed DC motor and want to drive it in both forward and reverse directions, you need a half-bridge (H-bridge).
An H-bridge allows you to switch the polarity applied to the motor. This will let you drive the motor in either forward or reverse, leave the motor disconnected from power, or to short it to act as an electric brake. While you can find fully integrated H-bridges capable of driving over 10 amps, the majority are rated for 4 amps or less. The compact IC packages only allow so much heat dissipation, which limits the current capacity for the drivers. It’s more common to find motor driver ICs which have two motor outputs rather than just a single one, and four controllers integrated in a single package are quite common too. Having multiple drivers in a single package allows for very compact designs in many situations, as most industrial, automotive or consumer products use more than one motor.
Good integrated H-bridge controllers will allow digital current limiting or at least allow current limits set by the resistor. The driver’s built-in controller will then use pulse width modulation (PWM) to drive the motor while keeping the current under the set limit. This is a great way to protect the drive, motor, PCB, and potentially also the battery from damage. When a DC motor is stalled, it is essentially a direct short, which can lead to very high current draws that could rapidly damage the motor, driver, or traces and connectors that are not designed or rated for the current load.
When looking for an H-bridge, there are several critical specifications that will narrow down the options for your application.
The FET resistance is one critical specification as it is directly related to the amount of energy lost as heat in the integrated circuit. If the package can’t remove heat fast enough, the integrated circuit may enter a self-protection mode, or release its magic smoke. Regardless of the rated current of the device, heat is the true limiter. If you have a limited area around the driver for the copper area to act as a heatsink, you will need to prioritize the RDS(on) specification so the driver generates as little heat as possible.
Speaking of overheating, the package thermal resistance is fairly critical. Many drivers have an exposed pad on the bottom, even the ones in leaded packages, to help move heat away from the junction and into the copper on the circuit board. The thermal resistance will determine how fast you can remove heat and, along with the RDS(on) specification and a known area of copper for heat sinking, will allow you to do some calculations to determine if you will hit the maximum junction temperature,TJ(max).
This should be a fairly self-explanatory specification. This is the maximum voltage that can be supplied to the driver for running the motor. This is different to the logic control voltage, which is typically separate and much lower. Ensure that the VBB is higher than the peak voltage of the power source for the motor. If you are powering the motor from a battery, consider its fully charged/fresh voltage rather than its nominal voltage.
Modern microcontrollers usually have a logic level of 1.8v or 3.3v, but some older ones may be running on 5v. Most drivers will be happy with anything positive up to about 6 volts, however, some are 3.3v or less. You will likely be connecting the VIN to the same voltage rail as your microcontroller.
The usable current is likely going to be limited by the junction temperature rather than the IOUT specification. However, if you are not using the motor continuously, and are infrequently pulsing the motor without allowing the junction to heat up, the output current limit will be worth considering. With drivers that can set the current digitally or by a resistor, this specification is the maximum you will be able to set.
Most drivers are happy to have you short circuit the motor through the driver to act as an electric brake, however, some drivers will not allow this. If you want to electrically brake the motor by shorting it, check the truth table in the datasheet to ensure setting both inputs high (or low) will brake the motor. Setting both of the inputs to low (or high) should then be a coast mode with each motor lead disconnected from power.
Driving an integrated H-bridge is relatively easy. The schematic below is for an Allegro A4954 and comes from my open-source Siemens SMT Pick and Place dual lane feeder controller (you can download it from GitHub to see its implementation). There’s some bulk capacitance on the inputs to ensure the voltage stays stable for the other components on the circuit, as well as for powering the driver during the high demands of the motor when it’s accelerating. I’m also using potentiometers to set the current of the motor. Each input line has a 33ohm resistor in an attempt to protect the microcontroller in the event of an H-bridge burning out.
You will also want a protection diode between the motor’s wires and the driver as well as a decoupling capacitor to suppress transient high voltages generated when the motor stops and to reduce electromagnetic interference.
Selecting and using an integrated brushed motor driver is easy, but you should pay close attention to the thermal considerations in your design. The easiest way to kill the driver, or have intermittent ‘faults’ with the motor, is to overheat the package, either causing a direct failure or a thermal shutoff.
We hope you found this article useful! If you'd like to have content like this delivered to your inbox, sign up for our monthly newsletter!