Stepper motors and drivers: NEMA 17, A4988, DRV8825 and TMC2209 explained
By Polar Parts · Published · 5 min read
Stepper motors move in fixed steps, so a controller can position them accurately without a sensor, as long as the motor never misses a step. That's why they run most 3D printers, CNC machines, camera sliders and plotters. Getting one to run smoothly depends on matching three things: the motor, the driver and the power supply.
What NEMA 17 does and doesn't tell you
NEMA 17 describes the size of the motor's faceplate: about 1.7 by 1.7 inches, or roughly 42 mm square. It says nothing about torque, current or voltage, so two NEMA 17 motors can look alike and behave very differently. The RepRap project's table of NEMA 17 motors, for example, runs from about 13 to 65 N·cm of holding torque and from about 0.33 to 2.5 A per phase.
Most NEMA 17 motors have a 1.8° step angle, which is 200 full steps per revolution; some have 0.9°, or 400 steps, for finer positioning. A 5 mm shaft is the most common. Longer motors generally make more torque and draw more current.
The numbers to read on a motor's datasheet are the rated current per phase, holding torque, step angle, and phase resistance and inductance. The rated voltage matters less than you'd expect, because these drivers control current, not voltage.
Wiring: find the coil pairs
Most NEMA 17 motors used with these drivers are bipolar, with four wires: two coils of two wires each. The driver's motor outputs are labelled in pairs, such as 1A and 1B for one coil and 2A and 2B for the other, and each pair has to go to one coil.
Wire colours aren't standardised. To find the pairs, set a multimeter to resistance: two wires that show a low reading between them, typically a few ohms, are one coil. If the motor turns the wrong way, turn the power off and swap the two wires of one coil.
Never connect or disconnect a motor while the driver is powered. Pololu warns that doing so can destroy the driver.
A4988 vs DRV8825 vs TMC2209
All three are sold as small plug-in modules in the same StepStick format, so they fit the driver sockets on many 3D printer and CNC boards. Each takes STEP and DIR signals from a controller: one pulse on STEP moves the motor one step or microstep, and DIR sets the direction.
| Spec | A4988 | DRV8825 | TMC2209 |
|---|---|---|---|
| Motor supply | 8 to 35 V | 8.2 to 45 V | 4.75 to 29 V |
| Current per phase | About 1 A without a heat sink, up to 2 A with extra cooling | About 1.5 A without a heat sink, up to 2.2 A with extra cooling | 2 A RMS, 2.8 A peak |
| Microstepping | Up to 1/16 | Up to 1/32 | 1/8 to 1/64 by pins, interpolated to 1/256 |
| Setup | Current set by potentiometer | Current set by potentiometer | Potentiometer or UART, depending on the module |
| Extras | Simple and well documented | Higher voltage and current | Quiet StealthChop2 mode, StallGuard4 stall detection, CoolStep |
The A4988 is the classic choice and the easiest to find help for. The DRV8825 handles higher voltage, more current and finer microstepping, and Pololu describes its carrier as a near drop-in replacement for its A4988 carrier, so it's a common upgrade. The TMC2209 costs more but runs much more quietly, which is why many 3D printers use it. Over UART you can set its current and modes in firmware, and its StallGuard feature can sense when an axis hits its end, so some machines home without a limit switch.
Setting the current limit
Every driver needs its current limit set to suit the motor, usually at or below the motor's rated current per phase. Set it too low and the motor loses steps; too high and the motor and driver overheat. On A4988 and DRV8825 modules, you turn the small potentiometer while measuring the reference voltage, VREF, with a multimeter.
- A4988: current limit = VREF ÷ (8 × Rcs), where Rcs is the current-sense resistor value. Pololu's current carriers use 0.068 Ω resistors, so a 1 A limit needs a VREF of about 8 × 1 × 0.068 = 0.54 V.
- Generic A4988 boards may use different sense resistors, so read the marking before you calculate: R068 means 0.068 Ω and R100 means 0.1 Ω.
- DRV8825 on Pololu's carrier: current limit = 2 × VREF, so a 1.2 A limit needs a VREF of 0.6 V.
- TMC2209: the method depends on the module and on whether you use UART, so follow the module maker's instructions.
Pololu also recommends a large electrolytic capacitor, at least 47 µF, across the motor supply close to the driver, to absorb voltage spikes from long power leads.
Choosing a power supply
Because these drivers limit current, you can, and usually should, run a stepper from a supply well above its rated voltage. The higher voltage lets current build up in the coils faster, so the motor keeps more torque at speed. 12 V and 24 V supplies are common. Stay inside the driver's range: the TMC2209 tops out at 29 V, so a 24 V supply leaves some margin.
Size the supply for all the motors plus everything else on the same rail, with headroom. If your controller needs 5 V from a 12 V or 24 V supply, a buck converter can provide it; see Power Modules.
Microstepping and missed steps
Microstepping splits each full step into smaller ones by shaping the current in the two coils. It makes motion smoother and quieter, especially at low speed. It doesn't improve accuracy by the same factor, though: between full steps the rotor's exact position depends on the load, and the torque behind each microstep is small. Treat a setting like 1/16 as a smoothness setting.
If a machine loses position, the usual causes are a current limit set too low, a supply voltage too low for the speed you're asking for, acceleration set too high in the firmware, or something binding mechanically. An overheated driver can also shut down briefly, so give it a heat sink and some airflow.
Finding motors and drivers
Search our catalog for NEMA 17 motors, or for A4988, DRV8825 and TMC2209 drivers. Search results also show listings from our supplier partners that aren't in our catalog yet; open one to see its price and delivery estimate. If you need a specific motor or driver we don't list, request it. For a multimeter to find coil pairs and set VREF, see Tools.
Shop the parts in this guide
Prices in Canadian dollars. Product pages show a delivery estimate when one is available.
More buying guides
- Choosing a servo for robotics: SG90 vs MG90S vs MG996R vs serial bus servos
Compare SG90, MG90S, MG996R and serial bus servos by torque, size, gears and power, and work out how much torque a joint actually needs.
- ESP32 vs Arduino vs Raspberry Pi: which board for your project
What the Arduino Uno, ESP32 and Raspberry Pi are each good at, where each struggles, and what else you need to buy to get one running.
- Sourcing parts for FIRST, FTC, VEX and school robotics teams in Canada
Plan a season's parts order: what the FTC, FRC and VEX rules allow, which spares to stock, how to allow for delivery times, and how to request a bulk quote.
Sources
The facts in this guide come from these sources. Specifications and rules change, so check the current version before you rely on a figure.
