In the previous article, we explored the issue of controlling a typical (i.e., brushed) DC motor using integrated circuits. These devices provide functionality that makes it much easier to implement a high-performance system built around a brushed DC motor, and the same is true for ICs that can drive stepper motors.
Quick Review: How to Control a Stepper Motor
A typical permanent magnet stepper motor has two windings. If the system uses a bipolar driver, rotation is achieved by applying a specific pattern of forward and reverse current through the two windings. Thus, bipolar drive requires an H bridge for each winding. Unipolar drive uses four separate drivers, and these do not need to be able to apply current in both directions: the center of the winding is provided as a separate motor connection, and each driver provides current flow from the center of the winding to the end of the winding. The current associated with each driver always flows in the same direction.
Bipolar drive (on the left) and unipolar drive (on the right). The direction of the current flow in the unipolar system indicates that the center of each winding is connected to the motor’s supply voltage.
Generic ICs for Stepper Control
The first thing to keep in mind is that ICs intended for basic motor control functionality—or even just basic driver functionality—can be used with stepper motors. You don’t need an IC that is specifically labeled or marketed as a stepper-control device. If you’re using bipolar drive, you need two H bridges per stepper motor; if you’re taking the unipolar approach, you need four drivers for one motor, but each driver can be a single transistor, because all you’re doing is turning current on and off rather than changing its direction.
An example of a part in the “generic IC” category is the DRV8803 from Texas Instruments. This device is described as a “driver solution for any low side switch application.”
Diagram taken from the DRV8803 datasheet.
With a device like this, the center of the stepper motor’s windings is connected to the supply voltage, and the windings are energized by turning on the low-side transistors so that they allow current to flow from the supply, through half of the winding, through the transistor, to ground.
The generic-IC approach is convenient if you already own or have experience with a suitable driver—you can save a few dollars by reusing an old part, or you can save time (and reduce the likelihood of design mistakes) by incorporating a known and proven part into your stepper-controller schematic. The downside is that a more sophisticated IC could provide enhanced functionality and ensure a simpler design task, and this is why I prefer a stepper driver that has additional features.
Full-Featured Stepper Drivers
Highly integrated stepper-motor controllers can greatly reduce the amount of design effort involved in higher-performance stepper-motor applications. The first beneficial feature that comes to mind is automated step-pattern generation—i.e., the ability to convert straightforward motor-control input signals into the required step patterns.
Let’s take the L6208, from STMicroelectronics, as an example.
Diagram taken from the L6208 datasheet.
Instead of logic inputs that directly control the current applied to the motor windings, the L6208 has
- a pin that selects between half steps and full steps,
- a pin that sets the direction of rotation,
- and a “clock” input pin that causes the internal motor-control state machine to advance by one step in response to a rising edge.
This interface is far more intuitive than the actual on/off sequences that are applied to the transistors connected to the windings (an example of which is given below).
This is a full-step pattern for bipolar stepper-motor control. “A” and “B” refer to the two windings, and the “Q” columns indicate the state of the transistors that control the winding current. Table taken from this app note published by Silicon Labs.
As the name implies, microstepping causes the stepper motor to perform a rotation that is significantly smaller than one step. This might be 1/4 of a step or 1/256 of a step, or somewhere in between. Microstepping enables higher-resolution motor positioning, and it also allows for smoother rotation. In some applications, microstepping is completely unnecessary. However, if your system might benefit from extremely precise positioning, smoother rotation, or reduced mechanical noise, you should consider a driver IC that has microstepping capability.
The TMC2202 from Trinamic is an example of a microstepping stepper-motor controller.
Diagram taken from the TMC2202 datasheet.
The step size can be as small as 1/32 of a full step, and then there is some sort of interpolation functionality that provides “full 256 microstep smoothness.” This chip also gives you an idea of how sophisticated a stepper driver can be—it has a UART interface for control and diagnostics, a specialized driver algorithm that improves standstill and low-speed operation, and various other things that you can read about in the part’s 81-page datasheet.
If you have a microcontroller for generating the step pattern and enough time and motivation to write reliable code, you can control a stepper motor with discrete FETs. However, in almost all situations it is preferable to use some sort of IC, and since there are so many devices and features to choose from, you shouldn’t have much difficulty finding a part that is a good fit for your application.