Most people who design electrical circuits or systems will eventually need to control a motor. These fundamental electromechanical devices are found in robots, industrial machinery, optical equipment, consumer electronics, electric vehicles, and probably just about any other category of products that involve electricity.
If you’ve ever connected a battery to a brushed DC motor and watched it spin, you know that driving a motor can be very easy. It can also be complicated, though, and in such cases we gladly turn to motor-driver integrated circuits that simplify our design task while also providing performance that would be difficult (or virtually impossible) to replicate using discrete components.
The first thing you need to know when looking for a motor-driver IC is the type of motor that you plan to use. In this article I’ll focus on brushed DC motors, and the next article will look at stepper motors. Both are very common in low- and medium-voltage systems; if your application requires rotational motion, there’s a good chance that you’ll be able to implement the required functionality using either a brushed DC motor or a stepper motor.
Driving Brushed DC Motors
As indicated above, to make a brushed DC motor turn, all you really need is a voltage (assuming that the supply can deliver the required current). But we rarely are satisfied with such basic functionality, and this is why brushed DC motors are typically driven by an H bridge (also known as a full bridge).
A full bridge allows low-voltage control signals to make a motor rotate in one direction, make it rotate in the other direction, or deactivate it. Motor-driver ICs intended for brushed DC motors are built around one or more full-bridge circuits. I say “built around” because if a chip is nothing more than a full bridge, it can barely be called an IC—it’s just four transistors.
Voltage and Current
The first thing to look for is voltage and current ratings that are compatible with your motor and application. Finding a suitable voltage spec is not difficult, especially since many devices have a supply-voltage range that is quite large (for example, 4.5 V to 36 V or 8 V to 52 V).
Finding a part with adequate current capability is also not difficult, but there are some details that you need to keep in mind. The issue here is that current is not just about current—it also leads to power dissipation, because as motor-drive current flows through the on-state resistance of the full-bridge transistors, power is dissipated according to the formula I2×R. As usual, this power dissipation takes the form of ongoing heat generation, and if this heat accumulates enough to cause major increases in component temperature, you might have a problem. As I pointed out in this article on the C-BISCUIT Robot Control Board, a motor-drive IC operating at its maximum rated current may quickly reach an internal temperature that causes it to enter thermal shutdown.
The bottom line here is that you need to choose an IC that has plenty of current-drive capability, but you also need to ensure that your thermal design allows for generous heat transfer. If you think there’s any chance that your motor-drive IC will be subjected to stressful internal temperatures, look for a device that has an exposed thermal pad and include a large copper pour with multiple vias. If PCB area is limited and you can’t incorporate a mechanical heat sink, you can reduce power dissipation by choosing a driver with lower on-state resistance.
Note the large copper area, with numerous vias, connected to the exposed pad of this motor-driver IC.
A motor-driver IC includes circuitry that simplifies the interface between the H bridge, which actually controls the motor, and the signals that tell the H bridge how to control the motor. Different chips offer different interfaces, and you need to think about whether one of these is better than the others within the context of a given application. Here are a few examples:
MAX14872 (Maxim): This driver has a logic-level input for forward rotation and a logic-level input for reverse rotation, as well as an active-low enable pin that can be used to shut down the device. Applying logic low to the forward and reverse pins is how you “brake” the motor, i.e., cause it to stop quickly.
Diagram taken from the MAX14872 datasheet.
BD6220F (ROHM): This part has an input for forward rotation, an input for reverse rotation, and a “VREF” pin that controls the duty cycle of the motor-control voltage. Pulse-width modulating the motor voltage is a simple way to implement speed control, because varying the pulse width of the PWM signal determines the average voltage that is applied to the motor winding.
MC33HB2001 (NXP): In addition to logic-level inputs for controlling motor rotation, this driver includes an SPI bus that can be used to configure the device and monitor its status.
Diagram taken from the MC33HB2001 datasheet.
As demonstrated by the last example given in the preceding section, motor-driver ICs are not “input-only” devices. When choosing a part, you need to consider not only how you want to control the motor but also what sort of motor-related information you want the system to know. The MAX14872, for example, has a single fault pin that indicates an overcurrent condition or a thermal-shutdown condition. The MC33HB2001, in contrast, has twelve status flags:
A single fault pin doesn’t provide much feedback, and twelve status flags is overkill for most applications. I would prefer an interface with three or four pins that convey the most important information about the state of the motor system, but after browsing parts for a while I have the impression that most motor-driver ICs provide only one fault signal.
This article gives you some basic information that will help you to initiate your quest for the perfect motor-driver IC. If you have experience with specific parts that you think are particularly valuable in certain types of applications, feel free to share your thoughts in the comments section below.