If you are asking what stepper motor to use for standard DIY CNC routers, 3D printers, or laser engravers, the NEMA 17 is your default workhorse (holding torque ~40–55 N·cm), while the NEMA 23 handles heavier router axes and high-inertia loads (100–150 N·cm). However, selecting the right motor is not just about physical frame size. It requires matching the motor’s torque-speed curve to your load’s inertia, calculating the required acceleration torque, and pairing it with a chopper driver that can handle the phase current without thermal throttling.

Decoding the Load: Which Motor Type Fits Your Profile?

Before committing to a specific NEMA frame, you must understand where steppers fit in the broader motion control landscape. A common mistake on the workbench is treating steppers and servos as interchangeable. They are not. Steppers excel at low-speed, high-precision positioning without an encoder, but they suffer a severe torque drop-off at high RPMs due to winding inductance and back-EMF. Servos maintain flat torque up to their rated speed but require closed-loop tuning and cost significantly more.

Motor Technology Comparison: Stepper vs. Servo vs. BLDC
Feature Stepper Motor AC Servo Motor Brushless DC (BLDC)
Torque Curve High at zero speed; drops exponentially at high RPM Flat and constant up to rated base speed High at high speed; very low holding torque
Control Needs Open-loop step/direction (no encoder required) Closed-loop (requires high-res encoder & complex tuning) Closed-loop (requires Hall sensors or encoder)
Typical Cost $15 – $45 (motor + basic driver) $150 – $400+ (motor + integrated drive) $40 – $100 (motor + ESC/controller)
Best Application 3D printers, small CNCs, pick-and-place, linear actuators Industrial CNC mills, high-speed robotics, heavy gantries Drones, RC vehicles, high-speed spindles, cooling fans

For 90% of hobbyist and prosumer embedded projects, the open-loop stepper is the correct choice. To narrow down the exact frame size, reference the NEMA specification sheet below. Note that "NEMA" only defines the mounting faceplate dimensions and shaft diameter; the electrical characteristics vary wildly between manufacturers.

NEMA Stepper Motor Specifications (Bipolar, 200 Steps/Rev)
NEMA Frame Faceplate Size Typical Holding Torque Rated Phase Current Typical Cost (2026)
NEMA 14 35 × 35 mm 20 – 26 N·cm 0.8 – 1.0 A $12 – $18
NEMA 17 42 × 42 mm 40 – 55 N·cm 1.2 – 1.7 A $15 – $25
NEMA 23 57 × 57 mm 100 – 150 N·cm 2.0 – 3.0 A $30 – $45
NEMA 34 86 × 86 mm 400 – 800 N·cm 4.0 – 6.0 A $80 – $130

Sizing Rule of Thumb: A Worked Load Example

The golden rule of stepper sizing is to target a safety factor of 2x to 3x the calculated required torque at your target operating speed. Holding torque (the number advertised on the box) is largely irrelevant once the motor starts spinning. According to Oriental Motor's engineering guidelines, a stepper can lose 50% or more of its torque by the time it reaches 500 RPM due to the electrical time constant of the windings.

Bench Tip: Never size a motor based solely on holding torque. Always look at the manufacturer’s pull-out torque curve. A "high torque" NEMA 17 with high inductance (>4 mH) will actually perform worse at high speeds than a "standard" NEMA 17 with low inductance (~1.5 mH).

Worked Example: Sizing a CNC X-Axis Gantry

Let’s calculate the torque required to accelerate a 15 kg CNC gantry using a GT2 belt and a 20-tooth pulley.

  1. Define the parameters: Mass ($m$) = 15 kg. Target acceleration ($a$) = $1000 \text{ mm/s}^2$ ($1 \text{ m/s}^2$). Pulley teeth = 20T. GT2 belt pitch = 2mm.
  2. Calculate pulley radius: Circumference = $20 \times 2\text{mm} = 40\text{mm}$. Radius ($r$) = $40 / (2 \times \pi) = 6.366\text{mm} = 0.006366\text{m}$.
  3. Calculate linear force for acceleration: $F = m \times a = 15\text{kg} \times 1\text{m/s}^2 = 15\text{N}$.
  4. Calculate torque at the pulley: $T = F \times r = 15\text{N} \times 0.006366\text{m} = 0.0955\text{ Nm}$ (or 9.55 N·cm).
  5. Add friction and routing resistance: Assume 5 N of extra drag force. $5\text{N} \times 0.006366\text{m} = 3.18\text{ N·cm}$.
  6. Total required torque: $9.55 + 3.18 = 12.73 N·cm$.

Applying a 2x safety factor gives us a target of 25.46 N·cm. A standard NEMA 17 (rated at 40 N·cm holding torque) seems like the perfect fit. However, if your CNC needs to rapids at 800 RPM, the NEMA 17’s torque will drop below 20 N·cm, causing missed steps. In this scenario, you must either step up to a NEMA 23, use a planetary gear reduction (e.g., 5:1) to multiply torque, or switch to a ball screw to reduce the required motor RPM.

Wiring, Terminals, and Driver Matching

Modern embedded projects almost exclusively use bipolar 4-wire stepper motors. You will see four wires (often colored Red, Blue, Green, Black, or Black, Green, Red, Blue). These represent two distinct electromagnetic coils: Coil A and Coil B.

Identifying Coils Without a Datasheet

If you salvaged a motor and lost the pinout, grab your multimeter. Set it to resistance (Ω) mode. Probe the wires in pairs. When you find two wires that show a low resistance (typically 1.0Ω to 5.0Ω), you have found one complete coil pair. The remaining two wires are the second coil pair. Wires from different coils will show infinite resistance (open loop). For a visual deep-dive on wiring and driver selection, the Adafruit Motor Selection Guide provides excellent bench-reference diagrams.

Choosing the Right Chopper Driver

The driver translates your microcontroller’s step/direction logic into the high-current sine waves needed by the motor coils.

  • A4988 / DRV8825: The legacy standard. Cheap ($2–$4), easy to wire, but notoriously loud. They use basic decay modes that cause severe mid-band resonance and acoustic whine. Fine for basic Arduino prototyping, but avoid for enclosed 3D printers.
  • TMC2209 / TMC2226: The modern standard ($8–$15). Trinamic’s StealthChop2 technology makes the motor virtually silent at low speeds, while SpreadCycle handles high-speed torque. Crucially, the TMC2209 features a UART interface, allowing your ESP32 or Raspberry Pi (via Klipper/Marlin) to dynamically adjust RMS current, enable sensorless homing (StallGuard), and read thermal warnings without turning a physical potentiometer.
  • Gecko G201X / DM542T: Industrial-grade external drivers ($40–$80). Required for NEMA 23 and NEMA 34 motors that draw over 2.5A per phase. These accept high DC bus voltages (up to 80VDC), which is critical for overcoming winding inductance at high RPMs.
Safety & Hardware Warning: Never disconnect a stepper motor from its driver while the system is powered on. The collapsing magnetic field will induce a massive voltage spike that will instantly destroy the driver’s MOSFETs and can back-feed into your microcontroller, bricking your ESP32 or Arduino.

Failure Signatures: Diagnosing Hum, Overheat, and Stall

When a stepper system fails, it rarely fails silently. The physical symptoms on the bench will tell you exactly what is wrong with your electrical or mechanical setup.

1. The Motor Hums but Refuses to Rotate

Cause: This is almost always a wiring or current-limit issue. If the coils are wired out of phase (e.g., mixing A and B wires), the magnetic fields will fight each other, locking the rotor in place while drawing maximum current. Alternatively, the Vref (current limit) on your driver is set too low to overcome the motor's static friction.
Fix: Verify coil pairs with a multimeter. If wiring is correct, measure the Vref pin on your A4988/DRV8825. The formula is typically $V_{ref} = I_{limit} \times 8 \times R_{sense}$. For a 1.5A motor on a board with 0.1Ω sense resistors, Vref should be ~0.6V. If using a TMC2209 via UART, check your firmware configuration to ensure the `run_current` matches the motor's RMS rating (Peak current / 1.414).

2. Severe Overheating (>80°C Case Temperature)

Cause: Stepper motors are designed to run hot; a 60°C case temperature is normal. However, if the case exceeds 80°C, you risk demagnetizing the permanent rotor magnets, leading to permanent torque loss. This happens when the driver is pushing peak current continuously, or the microstepping decay mode is inefficient.
Fix: Ensure your driver is set to the motor's RMS current, not its peak current. Implement automatic current reduction (idle current reduction) in your firmware so the motor drops to 30% current when stationary. For TMC drivers, ensure the chopper is configured for "fast decay" or "mixed decay" if running at high speeds to minimize switching losses in the motor windings. Detailed configuration parameters for these drivers can be found in the Klipper TMC Drivers Documentation.

3. Stalling and Missed Steps at High Speed

Cause: You have hit the torque-speed curve cliff. As RPM increases, the inductance of the motor windings prevents the current from reaching its target level before the next step pulse arrives. The driver is essentially "voltage starved."
Fix: You cannot fix this by increasing the current limit; you must increase the voltage supplied to the driver. A standard 12V supply will limit a NEMA 17 to roughly 300 RPM before torque collapses. Upgrading to a 24V or 36V power supply (assuming your driver's maximum voltage rating allows it) forces the current to ramp up faster through the inductive windings, flattening the high-speed torque curve and eliminating the stall.