Blog · 2026-07-05 · Steppers

How to Choose a Stepper Driver and Set the Current Limit (A4988, DRV8825, TMC2209)

A stepper motor is only as good as the driver feeding it — and the driver is only as good as its current limit setting, a tiny screwdriver adjustment that beginners skip and then pay for in heat, noise and skipped steps. Here's the whole subject, chips to screwdriver.

You can't usefully connect a stepper motor to a microcontroller pin, or even to a plain H-bridge, and expect good results. Steppers need their two phases energized in precise sequence at a controlled current — and "controlled current" is the phrase that separates stepper drivers from every other motor driver on the bench. Understanding why unlocks everything else: which chip to buy, what that mysterious Vref potentiometer does, and why a correctly set $2 driver outperforms an incorrectly set $10 one.

Why steppers need current control, not voltage control

A stepper coil has low resistance — often 1–3 Ω. Connect it straight across 12 V and Ohm's law demands 4–12 A into a motor rated for 1.5: the coil becomes a heater, then a former coil. Yet we want high supply voltage, because (as covered in Stepper Motors Explained) voltage is what pushes current through coil inductance quickly enough to make torque at speed. The resolution of this tension is the chopper drive: the driver connects the full supply voltage to the coil, watches the current rise through a tiny sense resistor, and the instant current hits the set limit, it disconnects — then reconnects as current decays, thousands of times per second. The coil sees an average current exactly at the limit, established at maximum speed. High voltage for performance, limited current for survival: every modern stepper driver — A4988, DRV8825, the TMC family — is a chopper, and the current limit is the setting that makes it all work.

The contenders

A4988 — the veteran of the classic "StepStick" footprint. Up to ~1 A per phase without cooling (2 A claimed, with a good heatsink and airflow doing heavy lifting), microstepping to 1/16, supply to 35 V. Audibly buzzy, thoroughly documented, nearly indestructible reputation, absurdly cheap. Still a fine choice for learning and light loads.

DRV8825 — the same footprint, one notch up: ~1.5 A per phase practical (2.5 A claimed), 1/32 microstepping, 45 V supply tolerance, which matters for 24–36 V systems. Quirks: a known low-speed "decay mode" ripple that makes some motors rougher than the A4988 at crawl speeds, and a different Vref formula (below). The workhorse of mid-2010s 3D printing.

TMC2209 (and the Trinamic family) — the generational leap. Its "StealthChop" mode reshapes the chopping to near-silence — the difference between a printer you hear across the house and one you check is actually running. Beyond quiet: 1/256 microstep interpolation for glassy motion, "StallGuard" load sensing that enables sensorless homing (the driver feels the motor hit the end-stop), UART configuration so firmware can set current in software instead of screwdriver, and ~1.7 A practical per phase. The price difference against an A4988 is a coffee; for any build you'll live with, it's the default answer. Bigger motors (NEMA 23+, over ~2 A/phase) leave the StepStick world entirely for external drivers — TB6600-class bricks and up — which follow the same principles with DIP-switch current selection.

DriverPractical current/phaseMicrostepsMax supplySignature
A4988~1 A (2 A heatsinked)1/1635 VCheap, proven, buzzy
DRV8825~1.5 A (2.5 A claimed)1/3245 VHigher voltage headroom
TMC2209~1.7 A1/64 (×256 interp.)29 VSilent, smart, sensorless homing
TB6600 (external)3–4 A1/3242 VNEMA 23 class, DIP-switch setup

Setting the current limit: the Vref procedure

The StepStick-format drivers set their current limit through a reference voltage — Vref — adjusted by the tiny onboard potentiometer and measured between the pot's metal top (or the marked via) and ground. The relationship between Vref and current depends on the board's sense resistors, giving the standard formulas:

A4988 (0.068 Ω sense, typical clones): I = Vref ÷ 0.8 → Vref = 0.8 × I
DRV8825: I = Vref × 2 → Vref = I ÷ 2
TMC2209 (StepStick): I_RMS ≈ Vref ÷ 1.41 → Vref ≈ 1.41 × I_RMS ... or just set it over UART

The procedure, start to finish: (1) Find the motor's rated current per phase from its datasheet — say 1.5 A. (2) Choose a target at 70–90% of rated (1.2 A here): full rated current buys marginal torque for maximal heat, and margin extends everything's life. (3) Compute Vref from the formula for your driver — beware clone boards with nonstandard sense resistors; when in doubt, the resistor value is printed on the two small "R100"/"R068"-marked parts (R100 = 0.100 Ω). (4) Power the driver (logic and motor supply, motor connected or not per the board's requirements — A4988s tolerate no-motor adjustment; never disconnect a motor while powered). (5) Meter ground to pot-top, turn gently to the computed Vref. (6) Run the motor under real load for a few minutes and touch-test motor and driver: warm is correct, untouchable means back it off. That last empirical step outranks every formula.

The two ways drivers die. First: disconnecting a motor while powered — the coil's stored energy arcs back through the driver's transistors, killing it instantly. Wire the motor before power, always. Second: chronic overheating from a too-high current limit in still air — the chip thermally shuts down (motor stutters rhythmically), and repeated cycles degrade it. A heatsink and any airflow at all transform the ratings.

Symptoms decoded

Current-limit problems have recognizable voices. Too low: weak torque, easily stalled by hand, skips under acceleration — the motor is being starved. Too high: motor and driver run hot; driver hits thermal shutdown causing rhythmic pause-and-resume stuttering; motor may whistle at standstill. Wildly wrong wiring (one coil's pair split across the two phase outputs): violent vibration without rotation — swap wires until the two pairs are correct (find a coil pair with a multimeter: the two wires with continuity are one phase). Skipping only at speed with correct current: not a driver-limit problem at all — that's the torque-speed collapse from the Stepper Motor Calculator's warning zone, cured by voltage, gearing or expectations.

Microstep configuration and wiring hygiene

The MS1/MS2/MS3 pins (or UART registers on TMC) select the microstep divisor — jumpers under the driver socket on most control boards. Firmware and hardware must agree: a firmware expecting 1/16 driving a board jumpered 1/8 moves exactly double distance, cousin to the encoder decoding bug from our odometry articles. Wiring hygiene follows power-electronics norms: the 100 µF electrolytic across the motor supply, close to the driver, is non-optional — chopper drivers hammer their supply, and the capacitor absorbs both the hammering and the inductive spike when power is switched; supply leads short and thick per the Power Budget Calculator; motor leads twisted; logic grounds common with the motor supply ground at one point. Enable, step and direction lines are logic-level and undemanding — one microcontroller pin each, with STEP pulses as fast as your board can generate (the calculator's step-frequency output tells you what rate you're asking for).

Quick answers

Can I drive a stepper with an L298N?

The red-boarded L298N can sequence a stepper, but it's a voltage-mode H-bridge with no current control: it only works safely with high-resistance steppers at low supply voltage, wastes ~2 V in its ancient transistors, and delivers poor speed performance. For the same money a real chopper driver does the job properly — the L298N's stepper career should be considered over.

Do I set current higher for microstepping?

No — the limit is per-phase peak and the driver manages the microstep current levels beneath it. Note the TMC convention of quoting RMS rather than peak current (peak ≈ RMS × 1.41): when comparing settings across driver families, make sure you're comparing the same measure.

One driver per motor, or can drivers share?

One driver per motor, but multiple drivers can share STEP/DIR signals to run motors in lockstep — the classic dual-Z-axis printer arrangement. Each driver still needs its own current setting for its own motor.

A bench-test routine for a fresh driver

New driver, new motor, five minutes of method before it goes in the machine. Wire it on the bench with the capacitor in place, motor connected, current limit set by the formula but 20% lower than target. Command a slow continuous rotation and listen: smooth and quiet (or faintly hissing on a TMC) is right; growling or shuddering means wiring or resonance. Raise the current to target and hold the motor shaft with your fingers — you should feel firm resistance and clean skipping when you overpower it, never a weak slip. Then run a repeatability loop: command 10 revolutions forward, 10 back, fifty times, with a mark on the shaft. If the mark returns home every time, the motor, driver, current limit and step timing are all proven together — and any position loss that appears later in the real machine is mechanical or profile-related, not electrical. Ten minutes of bench proof converts every future debugging session from "is it the driver?" to "it isn't the driver."

Chopper drive is the whole trick, Vref is the whole adjustment, and the TMC2209 is the modern default. Check that your speed targets are even asking something a stepper can deliver in the Stepper Motor Calculator, and if the motor itself is still a mystery, start one article back at Stepper Motors Explained.