All posts

Stepper Motors & Drivers: The Ultimate Guide

How stepper motors and drivers work: microstepping, the torque-speed curve, NEMA frames, A4988 vs Trinamic TMC, closed-loop steppers, and honest sizing.

By Robo2u Editorial · 36 min read

A stepper motor is the most honest actuator in the catalog and the most misunderstood. It is honest because it does exactly one thing: given a pulse, it advances the rotor by a fixed angle and holds there. No feedback, no controller smarts, no surprises, until you ask it to go fast or push hard, at which point it lies to you silently by skipping steps and never telling anyone. That gap between "it just works" and "it failed without a fault flag" is where most stepper grief lives.

The misunderstanding usually starts with microstepping. Marketing puts "1/256 microstepping, 51,200 steps/rev" on the box and an engineer reads that as 51,200 distinct positions of usable resolution. It is not. A 1.8° stepper is accurate to maybe ±5% of a full step no matter how finely you slice it, and most of those microsteps carry so little incremental torque they cannot move the load against friction. Understanding why is the difference between using microstepping as the smoothing tool it actually is and trusting it as the precision tool it pretends to be.

The take: The stepper's superpower is open-loop positioning with zero tuning and zero feedback hardware, and that is also its trap. The single most expensive mistake is sizing on holding torque (the big number on the datasheet) and ignoring the torque-speed curve, where usable torque collapses as RPM climbs. A stepper picked on holding torque alone will stall the first time it accelerates a real load. Size on pull-out torque at your operating speed, drive it from a high bus voltage through a current-chopping driver, and either keep a comfortable margin or add an encoder and stop pretending it is open-loop.

Companion reading: servo motors, brushless DC motors, motor controllers and FOC, encoders, and linear motion systems.

Table of contents

  1. Key takeaways
  2. What a stepper motor actually is
  3. How a stepper works: phases, detents, and step modes
  4. NEMA frame sizes and what they mean
  5. Unipolar vs bipolar
  6. The torque-speed curve and the four torques
  7. Resonance, missed steps, and how to avoid them
  8. Microstepping: resolution vs usable torque
  9. Stepper drivers: A4988/DRV8825 vs Trinamic TMC
  10. Closed-loop steppers: bolt on an encoder
  11. Steppers vs servos vs BLDC: an honest decision guide
  12. Sizing and selection
  13. Applications
  14. Frequently asked questions

What a stepper motor actually is

A stepper motor is a brushless permanent-magnet (or hybrid) motor built with a large number of magnetic poles so that, instead of spinning freely, it snaps to a sequence of discrete equilibrium positions: steps. You move it by energizing its windings in a pattern that walks those equilibrium points around the rotor. Count the patterns and you know, in principle, exactly where the shaft is.

That "in principle" is doing heavy lifting. A stepper is the canonical open-loop positioning device: there is no encoder, no sensor, no controller checking whether the rotor actually followed. You command a step, the driver pushes current, and the motor should move one increment. If the load torque exceeds what the motor can deliver at that instant, the rotor fails to advance, it skips a step, and nothing tells you. The commanded count and the real position diverge, permanently, until you re-home.

Contrast this with a servo, which closes a loop around a feedback sensor and refuses to be wrong silently. The stepper trades that self-correction for radical simplicity: no encoder to buy, no loop to tune, no commutation feedback. For a huge class of machines (3D printers, small CNC, lab automation, optics stages) that trade is exactly right, because the loads are predictable and a generous torque margin makes skipped steps a non-event.

Why steppers persist

You could ask why, in 2026, anyone uses an open-loop actuator at all when a brushless servo gives you feedback for not much more money. Three reasons keep steppers alive:

  1. Zero-speed holding torque without a control loop. A stepper just holds: energize the windings and the rotor sits in a magnetic detent, stiff and repeatable, with no tuning and no risk of loop instability. A servo holding position is a closed loop fighting to stay at zero error.
  2. Deterministic open-loop positioning. No homing math, no observer, no encoder alignment. Step count is position. This makes firmware trivial, one reason every hobby 3D printer is a stepper machine.
  3. Cost. A NEMA 17 stepper plus a $5 driver chip undercuts any servo-grade closed-loop axis. At low speed and modest power, nothing beats it on dollars per positioned axis.

Rule of thumb: if your axis spends most of its life holding a static position at low speed, and you can afford a 2× torque margin, a stepper is almost always the cheapest correct answer. If it spends its life accelerating hard or running fast, look at a servo or BLDC.

How a stepper works: phases, detents, and step modes

The dominant type by a wide margin is the hybrid stepper: a permanent-magnet rotor with finely toothed pole pieces, surrounded by a stator wound in two phases (call them A and B). The "hybrid" name is because it combines the permanent-magnet rotor of a PM stepper with the toothed reluctance structure of a variable-reluctance stepper, getting the best of both: strong torque and fine step angle.

Where the steps come from

A standard hybrid stepper has 50 rotor teeth. Each electrical cycle of the two phases advances the rotor by four steps, and there are 50 such cycles per revolution:

Steps per revolution = rotor teeth × 4
                      = 50 × 4
                      = 200 full steps/rev

Full-step angle = 360° / 200 = 1.8°

That is where the ubiquitous 1.8° / 200-step stepper comes from. A 0.9° stepper has 100 rotor teeth and gives 400 steps/rev. Cheaper or specialized parts exist at 7.5° (48 steps/rev, common in old PM steppers) and other angles, but in robotics and motion control you will see 1.8° everywhere and 0.9° when you want finer native resolution.

Energizing the phases

The two phases are electromagnets. The rotor's permanent magnet wants to align with the net stator field. By controlling the direction and magnitude of current in phase A and phase B, you steer that net field vector, and the rotor follows it to the new equilibrium, the next detent.

  • Full step (one phase on): energize A+, then B+, then A−, then B−. Four positions per electrical cycle, lowest resolution, simplest.
  • Full step (two phases on): energize A and B together, in the four sign combinations. Same 1.8° step but ~40% more torque because both windings contribute, at the cost of more heat. This is the normal full-step mode.
  • Half step: alternate between one-phase-on and two-phases-on states, doubling the positions to eight per cycle: 400 half-steps/rev for a 1.8° motor. Torque ripples between the two states.
  • Microstep: instead of full-on/full-off, the driver feeds sinusoidally weighted current to both phases so the field vector points at intermediate angles. Now the rotor settles between the full-step detents.
Microstep resolution:
  steps/rev = 200 × microstep_ratio

  Full step      (1/1)   ->   200 steps/rev   (1.8°)
  Half step      (1/2)   ->   400 steps/rev   (0.9°)
  1/4  step              ->   800 steps/rev   (0.45°)
  1/8  step              -> 1,600 steps/rev   (0.225°)
  1/16 step              -> 3,200 steps/rev   (0.1125°)
  1/32 step              -> 6,400 steps/rev   (0.05625°)
  1/256 step             -> 51,200 steps/rev  (0.00703°)  <- not 51,200 useful positions

The one equation the whole guide rests on

Everything downstream (torque-speed roll-off, resonance, the microstepping myth) falls out of a single relationship. Define the electrical angle as the rotor's mechanical angle scaled by the tooth count: θ_e = p · θ_mech, where p = 50 teeth for a 1.8° motor. Feed the two phases sinusoidal currents I_A = I·cos(θ_cmd) and I_B = I·sin(θ_cmd), and the torque the rotor develops as a function of how far it lags the commanded field is:

τ(δ) = -τ_holding · sin(δ)          δ = θ_e,commanded − θ_e,rotor   (the "load angle")

τ_holding = p · K_t · I             (torque scales with pole count × current)

This is the stepper's torque-angle curve, and it is a magnetic spring with a sinusoidal profile rather than a linear Hookean one. Three facts drop straight out of it, and we will spend the rest of the guide cashing them in:

  1. The restoring torque saturates. Push the rotor past δ = 90° (one full step of lag on a full-step drive, since 90° electrical = 1.8° mechanical) and sin(δ) starts decreasing. Beyond the peak the spring gets weaker the harder you push: the rotor "slips a pole" and synchronism is lost. That 90°-electrical ceiling is why holding torque is a hard wall rather than a soft one.
  2. Torque comes from current, linearly, and from pole count. τ_holding = p·K_t·I is why steppers make enormous low-speed torque for their size (p ≈ 50 is a built-in 50:1 "electronic gearing") and why current, not voltage, sets torque.
  3. Steady-state position error under load is δ = arcsin(τ_load / τ_holding). A stepper holding against 50% of its holding torque sits a full 30° electrical (0.6° mechanical) off its commanded step, silently. This is the "phantom offset" that ruins the microstepping accuracy story below.

The rigorous treatments are Acarnley, Stepping Motors: A Guide to Theory and Practice (IET) and Kenjo & Sugawara, Stepping Motors and Their Microprocessor Controls (Oxford). Both derive this from the machine's coenergy and are worth owning if you design motion systems for a living.

Detent torque vs holding torque

Cut power entirely and a hybrid stepper still resists rotation a little: you can feel the "clicks" if you turn the shaft by hand. That is detent torque (also called residual torque), produced by the permanent magnet alone, with no current. It is typically 5 to 10% of holding torque and you mostly account for it as a nuisance: it adds to the torque the motor must overcome at micro-step boundaries and degrades microstep accuracy.

Holding torque is the torque the energized motor produces to resist being pushed off a step, at rated current, standing still. It is the big datasheet number, and as the next sections hammer home, it is not the number that determines whether your machine works at speed.

NEMA frame sizes and what they mean

"NEMA 17" tells you the faceplate size and bolt pattern, nothing else. NEMA frame numbers are the faceplate width in tenths of an inch: NEMA 17 = 1.7 in (42.3 mm) square face. The faceplate, bolt-circle, and pilot-boss dimensions are standardized in NEMA ICS 16 (Motion/Position Control Motors, Controls, and Feedback Devices), which is precisely why a driver bracket or coupler from one vendor bolts to another vendor's motor, and precisely why the standard says nothing about length, torque, current, or step angle. A 20 mm-long NEMA 17 pancake and a 60 mm-long NEMA 17 are both "NEMA 17" with a 3 to 4× torque difference.

So the frame number is a mounting and rough-size category; torque comes from the frame size and the body length (more iron and copper, more torque). Within a frame you choose length to get the torque you need.

NEMA frame Face size Common holding torque Typical rated current Where it fits
NEMA 11 28 mm (1.1 in) 0.06 to 0.12 N·m 0.5 to 0.67 A Optics stages, small lab automation, cameras
NEMA 17 42.3 mm (1.7 in) 0.2 to 0.65 N·m 0.8 to 2.0 A 3D printers, desktop CNC, small robots, pipetting
NEMA 23 56.4 mm (2.3 in) 0.9 to 3.0 N·m 2.0 to 4.5 A CNC routers, larger gantries, conveyors, automation
NEMA 34 86 mm (3.4 in) 3.0 to 13 N·m 4.0 to 6.0 A Large CNC, lathes, plasma tables, heavy gantries

A few practical notes the table can't carry:

  • Length matters as much as frame. A NEMA 17 "high-torque" 48 mm body (e.g. a 0.55 N·m unit) and a NEMA 17 pancake (20 mm, ~0.1 N·m) share a bolt pattern and almost nothing else. Always read holding torque and body length together with the frame number.
  • Higher current ≠ more torque for free. Rated current sets how much copper loss (heat) the windings tolerate. Two motors of equal torque can have very different current ratings depending on winding turns; the low-current/high-resistance one needs more voltage to run fast.
  • NEMA 23 is the workhorse of small CNC. It hits the sweet spot of torque, cost, and driver availability. NEMA 34 is where you start considering a servo instead, because at that power level the stepper's low-speed-only advantage erodes.
  • Shaft and mounting are not standardized within a frame. NEMA 17 commonly uses a 5 mm shaft; NEMA 23 a 6.35 mm (1/4 in) or 8 mm; check before you buy pulleys and couplers.

Rule of thumb: choose the frame for the bolt pattern and rough torque class, then choose the body length for the actual torque. Buying "a NEMA 23" without specifying length is like buying "a bolt" without a length.

Unipolar vs bipolar

A stepper's two phases can be wired two ways, and it changes the driver you need and the torque you get.

Bipolar steppers have two windings, four wires total. To reverse the field in a winding you reverse the current through it, which requires an H-bridge per phase: the driver must source and sink current both ways. This is what every modern driver (A4988, DRV8825, TMC) does. Bipolar uses the full copper of each winding in both directions, so it gives the most torque per size. Four-wire steppers are bipolar-only.

Unipolar steppers add a center tap on each winding, typically six wires (two windings + two center taps) or eight wires (every coil end brought out). The center tap lets a simple driver reverse the field by energizing one half-coil or the other, using cheap single-transistor switches instead of H-bridges. The catch: only half the winding carries current at a time, so for the same copper you get roughly 70% of the bipolar torque (the active copper drops by half, torque scales with the square-root-ish loss). This is the old, cheap way, and it is largely obsolete now that integrated H-bridge driver chips are a couple of dollars.

The useful trick: a 6-wire unipolar motor can be driven bipolar by ignoring the center taps and using only the full windings: you get the full bipolar torque. An 8-wire motor is the most flexible: you can series the half-coils (high inductance, more low-speed torque, lower current), parallel them (low inductance, better high-speed torque, higher current), or run unipolar. For a fast axis, parallel; for a slow high-torque axis, series.

Wiring Wires Driver needed Relative torque Notes
Bipolar 4 H-bridge (A4988/TMC) 100% (reference) Modern default; can't be rewired
Unipolar (driven unipolar) 5, 6 Simple switches ~70% Cheap, legacy, lower torque
Unipolar wired bipolar 6 H-bridge 100% Ignore center taps; full torque
8-wire (series) 8 H-bridge 100%, high inductance Best low-speed torque, lower current
8-wire (parallel) 8 H-bridge 100%, low inductance Best high-speed torque, higher current

Rule of thumb: buy 4-wire bipolar unless you have a specific need for the flexibility of 8-wire. Never spec a unipolar-only driver in a new design: H-bridge chips have made unipolar drive a relic.

The torque-speed curve and the four torques

This is the section that prevents the most field failures. A stepper does not have "a torque." It has a torque that depends heavily on speed, and four distinct torque numbers that mean different things.

The four torques

  • Holding torque: energized, standing still, rated current. The maximum static torque before the rotor is forced off its step. The biggest, most-quoted number.
  • Detent torque: de-energized, permanent magnet only. 5 to 10% of holding. The cogging you feel by hand.
  • Pull-in torque: the maximum load torque against which the motor can start, stop, and reverse without losing steps, at a given step rate, from a standstill (no acceleration ramp). This is the conservative, no-ramp limit.
  • Pull-out torque: the maximum load torque the motor can carry while running at a given speed (already up to speed). This is the curve you size against, and it is always higher than pull-in at the same speed.

The region between the pull-in and pull-out curves is the slew range: you can run there, but you cannot instantly start or stop: you must ramp (accelerate and decelerate) into and out of it. Every stepper controller worth using ramps; instant start/stop into the slew range is how you lose steps.

Why torque falls with speed

A stepper winding is an inductor. To make torque you need current in it, and current in an inductor cannot change instantly:

For a winding: V = I·R + L·(dI/dt)

At low speed, you have time for current to reach its full value each step,
so torque ≈ holding torque.

As step rate rises, each step gets shorter. There is less time for current
to build before the driver switches to the next step. Average current, and
therefore torque, falls. Above the corner speed it falls steeply.

There is a second, sharper reason torque dies at speed, and it is the one most explanations skip: back-EMF. A spinning stepper is also a generator. Each phase develops a rotational back-EMF proportional to speed:

e = K_e · ω_e = K_e · (2π · p · f_rev)      (K_e ≈ K_t in SI units)

The chopper can only push current into the winding using the headroom between the bus voltage and the back-EMF. When back-EMF approaches the bus voltage, there is no headroom left, current collapses, and torque goes to zero: the motor has hit its no-load speed and simply cannot go faster no matter the load. So two effects stack: the L·dI/dt current-rise limit and the back-EMF eating your voltage budget. Both are cured by the same lever.

The fix is voltage. The rate current rises is dI/dt = (V − e − I·R)/L. More applied voltage forces current into the inductance faster and buys headroom over the back-EMF, extending the speed at which torque holds up. This is why steppers are driven at 24 V, 36 V, or 48 V from a chopping driver even though the motor's rated voltage (rated current × winding resistance) might be only 2 to 3 V. The driver chops the high bus voltage to limit average current to the rated value at low speed, but the high bus is available to ram current in fast at high speed.

War story: an engineer tunes a NEMA 23 gantry beautifully on a 24 V bench supply, ships it, and it stalls above 400 mm/s in the field. Nothing changed except the belt was a hair tighter and the back-EMF at that speed had eaten his last few volts of chopper headroom. He swaps to a 48 V supply, touches nothing else, and the corner speed roughly doubles. The motor was never the problem; the voltage budget was.

Approximate corner (knee) speed where torque starts to roll off:
  f_corner ≈ V_bus / (2π · L · I_rated)    [steps related, order-of-magnitude]

Higher V_bus  -> higher corner speed -> torque holds to higher RPM
Lower L (parallel 8-wire)  -> higher corner speed

Put numbers on it. Take a typical NEMA 17 with L = 4 mH and I_rated = 1.5 A. On a 24 V bus:

f_corner ≈ 24 / (2π · 0.004 · 1.5) ≈ ~640 full-steps/s ≈ ~190 RPM

Below ~190 RPM you keep most of your holding torque; above it you fall off the cliff. Now double the bus to 48 V and the corner speed roughly doubles to ~380 RPM, for free, changing nothing but the power supply. Halve the inductance (parallel-wire an 8-wire motor) and it doubles again. This is the whole game: corner speed is set by V/(L·I), and holding torque barely enters into it. Two motors with identical 0.55 N·m holding torque but 4 mH vs 12 mH inductance are completely different machines above a few hundred RPM.

Rule of thumb: a stepper's high-speed torque is set by your bus voltage and winding inductance, not by the holding-torque number. To go faster, raise the bus voltage (within the driver's and motor's limits) and pick a low-inductance motor. Doubling holding torque does little for top-speed torque if the inductance is high.

A practical consequence: a NEMA 17 with 0.55 N·m holding torque might deliver only 0.15 to 0.20 N·m at 600 RPM (2,000 steps/s). If you size on the 0.55 N·m figure and your load needs 0.3 N·m at that speed, the machine works on the bench at low speed and stalls in production at speed. Always pull the torque-speed curve from the datasheet and read the torque at your operating point.

Resonance, missed steps, and how to avoid them

A stepper is a mass (rotor + load inertia) on a magnetic spring (the detent stiffness). Like any spring-mass system it has a natural frequency, and if you drive it at that frequency, the oscillation amplifies until the rotor swings far enough off its commanded step that it loses synchronism and stalls. This is mid-band resonance, and it is the classic stepper failure that looks like a haunting: the motor runs fine slow, runs fine fast, and stalls or screams at one particular speed in between.

Where resonance lives

Linearize the sinusoidal torque law from earlier for small displacements (sin(δ) ≈ δ) and the stepper becomes a textbook torsional oscillator: an inertia J on a rotational spring of stiffness k = p·τ_holding (the slope of the torque-angle curve at the detent, in N·m per electrical radian). The undamped natural frequency is the classic spring-mass result:

ω_n = sqrt( k / J ) = sqrt( p · τ_holding / J_total )      [electrical rad/s]

f_n (in full-steps/s) ≈ ω_n / (2π) · (steps per electrical cycle)

The fundamental for an unloaded or lightly loaded hybrid stepper is often in the range of roughly 100 to 250 full-steps/s, which for a 1.8° motor is about 0.5 to 1.25 rev/s (30 to 75 RPM). There are harmonics higher up. Two levers fall straight out of the formula: raising J_total (adding load inertia) lowers f_n, and it does so as 1/√J, so quadrupling the reflected inertia only halves the resonant speed, a useful but weak knob. The deeper problem is that the magnetic spring is almost undamped: the only natural damping is eddy-current and friction loss, giving a mechanical quality factor Q easily in the tens. A lightly damped resonator driven at ω_n amplifies its oscillation by roughly Q, so the rotor's swing grows until it exceeds the 90°-electrical stability limit and the motor drops out of step. That is why a bare motor on a bench (no load damping) is the worst case, and why the fix is almost always to kill the excitation (microstep) or add damping, not to chase the frequency around.

How to kill it

  • Microstep. This is the number-one fix. Full-step drive slams the rotor from detent to detent, exciting the resonance hard. Microstepping moves the rotor in small smooth increments, so the impulsive excitation that rings the spring-mass system is gone. Most modern drivers default to 1/16 or finer precisely for this reason.
  • Don't dwell in the resonant band. If a constant-speed move must cross the resonant speed, ramp through it quickly rather than running at it.
  • Add damping. Mechanical: a friction damper or an inertial (viscous) damper on the rear shaft. The load itself often provides enough damping; bare motors on a bench are the worst case.
  • Add or change inertia. Coupling more inertia shifts the resonance and reduces its amplitude.
  • Use a smart driver. Trinamic chips actively damp mid-band resonance in their chopper modes; StealthChop in particular is much smoother through the resonant band than a fixed-off-time driver.

The other ways steppers lose steps

Resonance is one cause. The others:

  • Torque overload. Load torque exceeds pull-out torque at the current speed. The rotor falls behind, slips a pole, and the count is now wrong.
  • Too-aggressive acceleration. The torque needed to accelerate the inertia (τ = J·α) plus the load torque exceeds available torque during the ramp. Gentler accel ramps fix it.
  • Insufficient bus voltage at speed. Covered above: torque rolls off and the load wins.
  • Undersized driver current. If the driver current limit is set below what the motor needs, you throw away torque you paid for. (But over-setting it cooks the motor.)

Rule of thumb: when a stepper machine "loses position randomly," check in this order: (1) is it stalling at one specific speed? That is resonance, microstep harder; (2) does it fail on hard accelerations? Soften the ramp or raise voltage; (3) does it fail at high speed only? That is the torque-speed limit, raise bus voltage; (4) is the driver current set correctly? Closed-loop steppers (next-but-one section) eliminate the silent part of all of these.

Microstepping: resolution vs usable torque

Microstepping is the most over-sold spec in the stepper world, so let's be precise about what it does and does not give you.

What microstepping is

The driver feeds the two phases currents weighted as sine and cosine of an electrical angle. As that angle advances in small increments, the net field vector rotates smoothly, and the rotor follows to intermediate equilibrium points between the full-step detents:

Phase A current:  I_A = I_peak · cos(θ_e)
Phase B current:  I_B = I_peak · sin(θ_e)

θ_e advances by one microstep each step pulse.
1/16 microstepping -> θ_e advances 360/64 electrical degrees per microstep
(one full electrical cycle = 4 full steps = 64 microsteps at 1/16)

What microstepping actually buys you

Smoothness and resonance reduction, real and valuable. Smooth current means smooth torque means quiet, low-vibration motion that doesn't excite resonance. This is the genuine reason to microstep, and it is why printers run 1/16 or finer.

Effective resolution for motion, not for positioning accuracy. You can command the shaft in fine increments, which matters for things like extrusion smoothness, but the shaft will not reliably stop at all 51,200 of those positions.

The microstep-accuracy myth

Here is the part the datasheet hides. The torque holding the rotor at a microstep is the incremental torque, and because the field is a sine, the torque-per-microstep follows a sine too:

Restoring torque at electrical angle θ_e from a step:
  τ(θ_e) = τ_holding · sin(θ_e_error)

Near a full-step detent the sine is steep -> stiff, accurate.
Between detents (the finest microsteps) the incremental torque
per microstep approaches zero -> the rotor can't reliably reach
or hold those positions against friction.

Make it quantitative. The torque available to advance one more microstep is the derivative of the sine restoring curve (the local stiffness) times the microstep size. Near a detent that stiffness is dτ/dδ = τ_holding · cos(δ) ≈ τ_holding, and each microstep at ratio m spans an electrical angle Δδ = 90°/m (since 90° electrical = one full step). So the torque increment committed to each new microstep scales as:

Δτ_microstep ≈ τ_holding · sin(90°/m) ≈ τ_holding · (π / (2m))    for large m

  1/16  step:  Δτ ≈ 0.098 · τ_holding   (~10% of holding per microstep)
  1/64  step:  Δτ ≈ 0.025 · τ_holding
  1/256 step:  Δτ ≈ 0.006 · τ_holding    (~0.6% of holding per microstep)

Now compare that to friction. If the mechanism's static friction plus detent torque is, say, 8% of holding torque (utterly ordinary for a leadscrew with a nut) then at 1/256 the driver commands thirteen microsteps before the accumulated torque even exceeds stiction and the rotor lurches. The motion is a staircase of stiction-limited jumps rather than 256 smooth increments. This is the mathematical core of why fine microstepping buys smoothness (the current is smooth) but not positioning (the rotor still jumps).

Two consequences:

  1. Incremental torque per microstep is tiny at fine ratios. Going from 1/128 to 1/256 roughly halves the already-small torque holding each new microstep. If static friction in your mechanism exceeds that incremental torque (and it usually does well before 1/64) the rotor simply doesn't move on the next microstep. It moves in a "stiction step" only when enough microsteps have accumulated.
  2. Detent torque and manufacturing tolerances dominate accuracy. A 1.8° motor's step accuracy is typically specified at ±5% of a full step, non-cumulative, about ±0.09°. Microstepping does not improve this; the magnetic and mechanical imperfections that cause it are unaffected by how finely you command. So 1/256 microstepping on a ±5% motor gives you 51,200 commands but the same ±0.09° truth.

Rule of thumb: microstep for smoothness and quiet, not for accuracy. Above about 1/16 you gain almost no real positioning benefit and only smoother motion. If you need true sub-step accuracy, you need an encoder (closed-loop stepper or servo) or mechanical reduction (a 5:1 gearbox or a fine-pitch leadscrew multiplies your real resolution far more honestly than microstepping does).

A clean way to get genuine resolution: gear it down. A 1.8° motor through a 5:1 planetary gearbox gives 1,000 full steps/rev of real, torque-backed resolution (0.36°/step), and multiplies torque 5× too. That beats trusting 1/8 microstepping on the bare motor for any application where the position has to be right under load. See the linear motion guide for how leadscrew pitch turns step angle into real linear resolution.

Stepper drivers: A4988/DRV8825 vs Trinamic TMC

The driver is half the system. The same motor on a $5 A4988 and a $12 TMC5160 behaves like two different machines: one buzzy and rough, one silent and smooth. Here is what separates them.

What every stepper driver does: current chopping

A stepper is current-controlled. The driver's core job is to regulate the winding current to a setpoint regardless of bus voltage. It does this by chopping: it turns the H-bridge on to ramp current up, senses the current (via a sense resistor), and when it hits the limit, turns off (or recirculates) to let current decay, then on again, thousands of times per second. This is how a 2 to 3 V motor runs safely off a 36 V bus: the chopper holds average current at the rated value while the high voltage is available to slew current fast.

The setpoint is set by V_ref (a trimmer or a register) and the sense resistor. Getting this right is the single most important driver adjustment: too low throws away torque, too high overheats the motor.

The subtlety that separates a rough driver from a smooth one is the decay mode: what the H-bridge does after it hits the current limit and needs to bleed current back down. Slow decay (recirculate through the low-side switches) loses little energy but tracks a falling sine poorly, so on the down-slope of the microstep waveform the current lags and the phase current gets distorted, the origin of A4988 mid-band "roughness." Fast decay (reverse the bridge) tracks a falling current well but wastes energy and adds ripple. Fixed-decay chips like the A4988 force you to pick a compromise (or a crude mixed-decay ratio); the whole point of Trinamic's SpreadCycle is that it automatically chooses fast vs slow decay cycle-by-cycle to hold the current exactly on the sine, which is why it is both quieter and torque-accurate. This is a real difference between a chopper that open-loop guesses the decay and one that closes a fast inner loop on it.

A4988 current limit:    I_limit = V_ref / (8 · R_sense)
DRV8825 current limit:  I_limit = V_ref / (5 · R_sense)
(check the specific board's R_sense; clones vary)

The classic chips: A4988 and DRV8825

Allegro A4988: the workhorse of a decade of RepRap printers. Up to ~35 V, ~1 to 2 A/phase with a heatsink, microstepping to 1/16. Cheap, robust, and loud: it uses fixed-off-time current decay that produces audible mid-band whine and rougher motion. Fine for non-critical, cost-sensitive axes.

TI DRV8825: the A4988's bigger sibling. Up to 45 V, ~1.5 to 2.2 A/phase, microstepping to 1/32. Higher voltage and current ceiling than the A4988, and a different decay scheme. Still fixed-decay and still buzzy by modern standards, but the higher voltage rating makes it the better choice for faster axes. Both are pin-compatible "StepStick" modules and both are step/dir only, no configuration, no telemetry.

The modern chips: Trinamic TMC

Trinamic (now part of ADI) changed the game by putting intelligence in the driver. The two you'll meet:

  • TMC2209: up to 28 V (30 V abs max), ~2 A RMS/phase, 1/256 microstepping (with on-the-fly microstep interpolation from coarser step input). Adds StealthChop2 (near-silent voltage-mode PWM chopper), SpreadCycle (high-torque current-mode chopper), StallGuard4 (sensorless load/stall detection), and CoolStep (automatic current reduction with load). Configured over UART or via pins. This is the default upgrade for any printer or small machine that wants to be quiet.
  • TMC5160: up to ~60 V (external MOSFETs let it drive several amps, big NEMA 23/34), SPI configuration, an onboard motion controller (ramp generator: feed it a target position and it generates the accel/run/decel profile internally), plus StealthChop/SpreadCycle/StallGuard/CoolStep. This is the serious one for higher-power, higher-speed machines.

StealthChop vs SpreadCycle

These are the two chopper modes and the choice matters:

  • StealthChop is a voltage-mode PWM chopper. It is near-silent and beautifully smooth at low speed, which is why TMC-equipped printers are so quiet. But it regulates current more softly, so it loses torque at higher speeds and accelerations and can stall a heavily loaded axis.
  • SpreadCycle is a cycle-by-cycle current-mode chopper. It is louder (a faint hiss/whine) but holds current, and therefore torque, accurately at speed and through hard accelerations.

The standard configuration on a good machine: run StealthChop below a velocity threshold (quiet, smooth, when torque demand is low) and automatically switch to SpreadCycle above it (when you need torque at speed). The TMC chips do this handoff in hardware once you set the threshold register.

Feature A4988 DRV8825 TMC2209 TMC5160
Max bus voltage ~35 V ~45 V 28 V (30 V abs) ~60 V (ext. FETs)
Current/phase (RMS) ~1.2 A ~1.6 A ~1.4 to 2.0 A ~3 A+ (FET-dependent)
Microstepping 1/16 1/32 1/256 (interp.) 1/256 (interp.)
Interface Step/dir Step/dir Step/dir + UART Step/dir + SPI
Quiet (StealthChop) No No Yes Yes
Torque mode (SpreadCycle) n/a n/a Yes Yes
Sensorless stall (StallGuard) No No Yes Yes
Onboard motion controller No No No Yes (ramp gen.)
Typical use Cheap printer axes Faster printer/CNC Quiet printers, small CNC NEMA 23/34, fast machines

Rule of thumb: for any new small machine, default to a TMC2209 (or TMC5160 if you're above ~28 V or driving NEMA 23/34). The silence, sensorless homing via StallGuard, and torque-at-speed of SpreadCycle are worth the few extra dollars. Reserve A4988/DRV8825 for cost-critical builds where buzz doesn't matter.

Step/dir and the move to UART/SPI

The lowest-common-denominator interface is step/direction: one pin pulses once per microstep, another sets direction. Simple, universal, and dumb: the driver knows nothing about velocity profiles; the host MCU must generate every pulse. UART (TMC2209) and SPI (TMC5160) let you configure current, microstep ratio, chopper mode, and stall thresholds at runtime, read back diagnostics (load, temperature, stall), and on the TMC5160 hand off the whole motion profile to the chip's ramp generator. For real-time motion-control context (how these pulses get scheduled deterministically) see the real-time control systems guide.

Closed-loop steppers: bolt on an encoder

The entire weakness of a stepper is the open loop: it can fail silently. Add a rotor encoder and a controller that uses it, and the failure mode goes away. This is the closed-loop stepper (sometimes "servo-stepper" or "step-servo"), and it is one of the best-value actuators in motion control.

How it works

You mount an encoder (usually 1,000 to 4,000 line, magnetic or optical) on the rotor's rear shaft. The controller now measures actual position, going beyond the commanded step count. Two things change:

  1. It cannot lose steps silently. If the rotor falls behind the commanded position, the controller increases current to catch up, and if it can't, it raises a following-error fault: you get told. No silent position loss.
  2. It only uses the current it needs. A classic stepper burns full rated current to hold position even with no load, which is why they run hot. A closed-loop stepper holds with just enough current to maintain position, so it runs much cooler and more efficiently at rest and light load.

Architecturally this is a servo with a many-pole motor: a current/torque inner loop, a velocity loop, and a position loop, exactly as in the motor controllers guide, just with a stepper's 50-pole-pair geometry (p ≈ 50) instead of a BLDC's handful. Many closed-loop stepper drives now run full field-oriented control (FOC) on the stepper, which makes them smooth and quiet like a servo while keeping the stepper's huge low-speed torque.

The deep reason FOC transforms a stepper goes back to the τ = -τ_holding · sin(δ) law. An open-loop stepper always energizes the field at the commanded position, so under load the rotor sags to whatever δ = arcsin(τ_load/τ_holding) it needs, and if τ_load ever exceeds τ_holding, δ blows past 90° and the pole slips. A closed-loop FOC drive instead reads the actual rotor angle and commands the field a fixed 90° electrical ahead of it, holding sin(δ) = 1 (the point of maximum torque) at all times. It never wastes current fighting itself and never rides the falling side of the torque curve. That single change is why a closed-loop stepper both runs cooler (only as much current as the load demands) and cannot silently slip: it is always operating at the top of the torque hill, and it measures when the hill runs out.

The take: a closed-loop stepper is a stepper that has been given the one thing open-loop drive throws away (knowledge of the load angle δ) and it spends that knowledge two ways at once: holding δ at the 90° torque peak so it draws minimum current, and faulting the instant it can't. You are buying out the silent-failure mode and the standstill-heat penalty with the same encoder.

Where it sits between open-loop stepper and servo

  • It keeps the stepper's high holding torque and high pole count (great low-speed torque, fine native resolution).
  • It gains the servo's closed-loop integrity (no silent step loss, fault on overload, cooler running).
  • It still has the stepper's torque-speed roll-off: closed-loop doesn't create torque the motor can't make; it just uses what's there honestly and tells you when it runs out.

Real products

  • Leadshine (e.g. the CS-D series drives and integrated closed-loop steppers), popular, affordable closed-loop steppers and drives widely used in CNC retrofits.
  • Oriental Motor AlphaStep (AZ series): closed-loop steppers with a built-in mechanical-absolute encoder (no homing needed, no battery), known for reliability in industrial automation.

Rule of thumb: if your axis matters (it carries a real load, runs near its limits, or a lost step means scrap or a crash) spend the extra ~50 to 100% over an open-loop stepper for a closed-loop one. You buy out the single worst stepper failure mode and get a cooler, quieter motor. It is often a better value than jumping all the way to a separate servo system.

Steppers vs servos vs BLDC: an honest decision guide

These three overlap, and vendors muddy the lines (a closed-loop stepper is a servo; a "servo" can be built on a BLDC). Cutting through it:

  • A stepper is a high-pole-count motor optimized for discrete positioning and high low-speed torque, usually open-loop.
  • A servo (see the servo guide) is a control architecture (any motor plus feedback plus a closed loop) usually built on a low-pole-count brushless PMSM for high-speed power density.
  • A BLDC/PMSM (see the BLDC guide) is the bare brushless motor; with FOC and feedback it becomes a servo, with six-step commutation it's a drone/fan motor.

The honest trade-offs:

Attribute Open-loop stepper Closed-loop stepper Servo (BLDC/PMSM + feedback)
Feedback None (open-loop) Encoder, internal Encoder/resolver, full loop
Low-speed holding torque Excellent Excellent Good (loop holds it)
High-speed power density Poor (torque rolls off) Poor to fair Excellent
Efficiency Poor (full current at rest) Good Excellent
Heat at standstill High Low Very low
Silent failure (lost steps) Yes, the big risk No (faults out) No
Tuning required None Minimal (often auto) Real tuning needed
Cost per axis Lowest Low to medium Medium to high
Best speed range < ~600 to 1,000 RPM < ~1,500 RPM up to 3,000 to 6,000+ RPM
Typical power sweet spot < ~200 W < ~500 W 100 W to many kW
Where it wins Cheap predictable positioning Reliable positioning, no tuning Dynamics, speed, efficiency

The decision in plain terms

  • Predictable load, low speed, cost-sensitive, you can afford a 2× torque margin → open-loop stepper. 3D printers, lab stages, small CNC.
  • Same low-speed regime but the load varies, a lost step is costly, or you want it cooler and quieter without tuning → closed-loop stepper. CNC production, automated equipment.
  • You need high speed, high efficiency, hard dynamics, or high power → servo on a BLDC/PMSM. Robot joints, spindles, fast pick-and-place, vehicle drives.

Rule of thumb: the stepper-to-servo crossover sits at roughly a few hundred RPM and a few hundred watts. Below it, a stepper is cheaper and simpler and its weaknesses don't bite. Above it, the stepper's torque roll-off and standstill heat make a servo the right call. When you're near the line, a closed-loop stepper is the hedge.

Sizing and selection

Sizing a stepper correctly is mostly about respecting the torque-speed curve and the thermal limit. A repeatable procedure:

1. Compute the required torque at the worst operating point

Total motor torque must cover the load torque plus the torque to accelerate the inertia:

τ_required = τ_load + τ_accel
τ_accel    = J_total · α          (J in kg·m², α in rad/s²)
J_total    = J_rotor + J_reflected_load
J_reflected_load = J_load / N²     (N = gear ratio, if geared)

The worst case is usually peak acceleration at your top commanded speed. Compute τ_required there.

2. Read torque off the curve, not the headline

Find your operating speed in steps/s or RPM and read the pull-out torque at that speed from the datasheet curve. Do not use holding torque. Apply margin:

Rule of thumb: pull-out torque at your top operating speed should exceed τ_required by about 1.5 to 2×. Open-loop steppers have no way to recover from a momentary overload, so the margin is your only protection against a stall.

3. Set current and voltage

  • Current: set the driver limit to the motor's rated current per phase (RMS or peak as the driver expects, read carefully; A4988/DRV8825 V_ref math sets peak). This sets torque and heat.
  • Voltage: choose a bus voltage to push the corner speed above your operating speed. A common heuristic is bus voltage ≈ 20 to 25× √(inductance in mH) as a starting point, or simply: more voltage = faster torque, bounded by the driver's max and the motor's insulation/heat. 24 V is the printer default; 36 to 48 V for fast CNC.
Motor "rated voltage" = I_rated × R_phase   (often only 2 to 4 V, ignore for bus sizing)
Bus voltage is set by SPEED need, current limiting is the driver's job.

4. Check inductance and pick the winding

Lower inductance (mH) = higher corner speed = better high-speed torque, but needs more current for the same torque. For a fast axis, prefer a low-inductance motor or an 8-wire motor wired in parallel. For a slow high-torque axis, higher inductance (or series wiring) is fine and lets you use less current.

5. Verify thermal rise

A stepper running at rated current dissipates P = 2·I²R (both phases) continuously, even holding: for a typical NEMA 17 that is on the order of 5 to 8 W poured into a lump of iron the size of a plum. Unlike a servo, whose loss falls when the load falls, the open-loop stepper's copper loss is roughly constant regardless of duty. The steady-state rise follows a simple thermal-resistance model:

ΔT = P · R_th          (R_th = motor-to-ambient thermal resistance, °C/W)

so surface temperatures of 60 to 80 °C are entirely normal. The ceiling is set by the winding insulation's thermal class, standardized in IEC 60085: Class B allows a 130 °C hotspot, Class F 155 °C, Class H 180 °C. Most steppers are Class B or F. The trap is the plastics you bolted it to rather than the motor (a printed PLA mount softens near 60 °C and a NEMA 17 will happily reach that). If you drive a machine on a cyclic duty rather than continuous hold, size on the RMS current over the cycle rather than the peak, I_RMS = sqrt( (1/T) ∫ i(t)² dt ), the same root-mean-square logic that governs servo sizing. If it runs too hot: reduce holding current (TMC CoolStep or a hold-current reduction), improve the heat path into the mount (the faceplate is the main thermal path, so bolt it to metal, not plastic), or move to a closed-loop stepper that only draws what it needs.

6. Decide gearing

If you need more torque or finer real resolution, a gearbox multiplies both and reflects load inertia down by (helping the inertia match and resonance). A planetary gearbox on a NEMA 17 is often cheaper and more effective than jumping to a NEMA 23. See the gearboxes guide.

Applications

Where steppers earn their keep, and what to watch in each:

3D printers (FDM)

The canonical stepper machine. NEMA 17 on every axis and the extruder, typically 0.4 to 0.6 N·m motors, 24 V bus, TMC2209 drivers for silence and sensorless homing (StallGuard replaces endstop switches on some designs). Why steppers: cheap, predictable low-speed loads, open-loop positioning is good enough because the loads are light and well-characterized. The move to higher print speeds (input shaping, 200+ mm/s) is pushing some machines toward higher-voltage drivers (TMC5160) and even closed-loop extruders to prevent the under-extrusion that a skipped step causes.

CNC routers and mills (small/desktop)

NEMA 23 (often 1.9 to 3.0 N·m) is the workhorse, NEMA 34 for bigger gantries, on 36 to 48 V with DRV8825 or TMC5160 drivers, or increasingly closed-loop steppers (Leadshine) because a lost step in CNC means a ruined part and the cut load is variable and high. This is exactly the regime where closed-loop pays for itself: real loads, costly mistakes, still below the speed where you'd want a true servo.

Lab automation and life sciences

Pipetting robots, syringe pumps, sample-handling stages, microscope stages. NEMA 11 and NEMA 17, low speed, light predictable loads, and a premium on smooth, quiet, vibration-free motion (microstepping shines here) and on holding position precisely for long dwells (where the stepper's tuning-free holding torque is ideal). Often microstepped finely for smoothness even though the real accuracy comes from the leadscrew/gear reduction.

Camera, optics, and instrumentation

Focus and zoom drives, filter wheels, telescope mounts, beam-steering stages. NEMA 11/14/17 micro-steppers, low speed, and again the win is smooth holding and fine commanded resolution. Telescope mounts in particular exploit the stepper's ability to creep at extremely low, perfectly steady rates (sidereal tracking) that a servo would dither around. Backlash and detent torque are the enemies of pointing accuracy here, so high microstepping plus mechanical reduction (worm gears) is standard.

Conveyors, indexers, and general automation

Repetitive index-and-hold motion is a stepper's home turf: a feeder advancing a fixed pitch, a rotary index table stopping at stations. NEMA 23/34, often closed-loop in industrial settings (Oriental Motor AlphaStep with absolute encoder so there's no homing on power-up). Predictable cycle, hard holding, modest speed: the stepper's strengths line up perfectly.

Rule of thumb across all of these: steppers thrive where the duty cycle is position-and-hold at low speed with a predictable load. The moment an application demands sustained high speed, high efficiency, or aggressive dynamics, it has left stepper territory and you should be looking at a servo.

Frequently asked questions

How many steps per revolution does a stepper motor have? A standard hybrid stepper has 200 full steps per revolution, which is 1.8° per step, coming from 50 rotor teeth × 4 steps per electrical cycle. A 0.9° motor has 400 full steps/rev (100 rotor teeth). Microstepping multiplies the commanded increments (1/16 gives 3,200 microsteps/rev) but does not add 1/16 worth of real positioning accuracy.

Does microstepping increase a stepper's accuracy? No. Microstepping increases smoothness and reduces resonance and vibration, and it lets you command finer increments. But positional accuracy is limited by the motor's mechanical and magnetic tolerances, typically ±5% of a full step (about ±0.09° on a 1.8° motor), non-cumulative, and that figure does not improve with finer microstepping. The incremental torque per microstep also shrinks toward zero at fine ratios, so the rotor can't reliably stop at every microstep. For real resolution, gear it down or add an encoder.

Why does a stepper lose torque at high speed? The windings are inductors, and current can't rise instantly. As step rate climbs, each step gets shorter and there's less time for current, and therefore torque, to build before the next step. Above the corner (knee) speed, torque falls steeply. The fix is a higher bus voltage, which forces current into the inductance faster, and/or a lower-inductance motor.

What voltage should I run my stepper at? Run the driver from a bus voltage well above the motor's nominal "rated voltage." The rated voltage (rated current × winding resistance) is often only 2 to 4 V and is not what you supply; the chopping driver limits current regardless. Use 24 V for typical NEMA 17 printer axes, 36 to 48 V for faster or larger NEMA 23/34 machines. Higher voltage extends the speed at which torque holds up, bounded by the driver's and motor's ratings.

Why does my stepper get so hot? An open-loop stepper draws its full rated current to hold position even when standing still with no load, dissipating I²R as heat continuously. Surface temperatures of 60 to 80 °C are normal and usually fine (insulation is typically rated to 130 °C). If it's too hot, reduce the holding current (many drivers offer a hold-current reduction, and TMC's CoolStep lowers current automatically under light load), improve heat-sinking through the faceplate mount, or switch to a closed-loop stepper that only draws the current it needs.

What's the difference between holding torque and pull-out torque? Holding torque is the static torque the energized motor resists with when standing still at rated current, the big datasheet number. Pull-out torque is the torque the motor can carry while running at a given speed, and it falls as speed rises. You must size your machine on pull-out torque at your operating speed, not on holding torque, or it will work slow and stall fast.

A4988 vs DRV8825 vs TMC2209: which driver should I use? A4988 and DRV8825 are cheap step/dir drivers; the DRV8825 takes higher voltage (~45 V vs ~35 V) and current and is the better of the two for speed, but both are audibly buzzy. The TMC2209 adds near-silent StealthChop, torque-holding SpreadCycle, sensorless stall detection (StallGuard), and UART configuration for a few dollars more, and it's the default upgrade for any quiet small machine. For above ~28 V or NEMA 23/34, step up to the TMC5160.

What is StealthChop vs SpreadCycle? They are two chopper modes in Trinamic drivers. StealthChop is a voltage-mode PWM chopper that is near-silent and smooth at low speed but loses torque at high speed and hard accelerations. SpreadCycle is a current-mode chopper that's louder but holds torque accurately at speed. The usual setup runs StealthChop below a velocity threshold and switches to SpreadCycle above it, automatically.

What is a closed-loop stepper and is it worth it? A closed-loop stepper adds a rotor encoder and a controller that closes a position/current loop, turning the stepper into a coarse-pole servo. It can't lose steps silently (it faults on a following error instead), and it only draws the current it needs, so it runs much cooler. It's worth it whenever a lost step is costly or the load runs near the motor's limits; products include Leadshine and Oriental Motor AlphaStep.

When should I use a servo instead of a stepper? When you need sustained high speed (above roughly a few hundred to a thousand RPM), high efficiency, aggressive dynamics, or higher power (above a few hundred watts). Below that, a stepper is cheaper, needs no tuning, and its torque roll-off and standstill heat don't hurt you. Near the crossover, a closed-loop stepper is a good middle ground.

Why does my stepper stall or scream at one particular speed? That's mid-band resonance: the rotor-plus-load mass on the magnetic detent spring has a natural frequency (often around 0.5 to 1.25 rev/s for a lightly loaded 1.8° motor), and driving at it amplifies oscillation until the motor loses synchronism. Fix it by microstepping (the biggest help), ramping quickly through the resonant speed instead of dwelling there, adding mechanical damping or load inertia, or using a TMC driver that actively damps resonance.

Should I buy a 4-wire, 6-wire, or 8-wire stepper? Buy 4-wire bipolar for most designs: it's the modern default and works with every H-bridge driver at full torque. An 8-wire motor gives flexibility: series the coils for the best low-speed torque (higher inductance, lower current) or parallel them for the best high-speed torque (lower inductance, higher current). A 6-wire unipolar motor can be driven bipolar by ignoring the center taps for full torque. Avoid unipolar-only drive in new designs.

Can a stepper do torque or force control? Open-loop, only crudely: torque is set by the current limit, but you have no feedback on whether the rotor is actually producing it (it may have stalled). A closed-loop stepper with a current/torque loop can do real torque control, like a servo. If force control matters, use a closed-loop stepper or a servo, not a bare stepper.

Related guides