Disclaimer: This is an independent resource site. Not affiliated with the Voron project or its development team.

Voron TMC Stepper Driver Guide — TMC2209 vs TMC2240 vs TMC5160

Electronics Motion Calibration

The Role of Stepper Drivers in a Voron

Stepper drivers translate digital step and direction signals from the Klipper MCU into the precise current waveforms that drive stepper motors. Choosing the right driver affects print quality (layer lines, resonance), maximum speed and acceleration, motor temperature, and overall reliability. Voron builds commonly use Trinamic (TMC) drivers because of their advanced features: microstepping interpolation, smooth current control, sensorless homing, and quiet operation.

Driver Types Overview

TMC2209 — The Voron Standard

The TMC2209 is the most popular stepper driver in the Voron community. It is a 2-phase stepper driver rated for up to 2A RMS (peak 2.8A) with built-in UART interface for configuration. Key features: stealthChop2 (quiet, smooth motion), spreadCycle (high torque, fast acceleration), sensorless homing (StallGuard), microstepping up to 1/256, and short-to-ground protection. The TMC2209 communicates via UART (single wire), allowing Klipper to configure run_current, hold_current, microsteps, and other parameters without external potentiometers. It is sold as a standalone module (STEP/DIR + UART) and also integrated into many Voron mainboards (Octopus, Manta M8P, SKR 3).

TMC2240 — Higher Current and 0.9° Motor Support

The TMC2240 is a newer driver that supports higher current (2.1A RMS, peak 3A) and includes features for 0.9° stepper motors. It also has ADC-based current sensing (no Vref potentiometer needed), making configuration purely digital. The TMC2240 is used in builds with large stepper motors (NEMA 23, large NEMA 17) or in high-torque extruder applications. It supports both spreadCycle and stealthChop, StallGuard2 for sensorless homing, and shaft driver diagnostics. The mainboard must have TMC2240-compatible footprints (e.g., Octopus Pro, Manta M8P with 2240 slot).

TMC5160 — High Voltage, High Performance

The TMC5160 is a high-end driver that uses external MOSFETs to handle higher voltages (up to 48V) and currents (up to 20A peak with appropriate MOSFETs). It is used in 48V Voron builds where rapid acceleration and high top speeds are required. The TMC5160 has the same feature set as the TMC2209 but scaled up: stealthChop, spreadCycle, StallGuard, and cold-start diagnostics. However, it is more complex to wire (external MOSFETs, larger PCB footprint) and significantly more expensive. For most Voron builders, the TMC5160 is overkill — the TMC2209 handles 24V builds perfectly well.

TMC2209 In-Depth

Run Current Settings

The TMC2209's run_current is configurable via UART. For Voron builds, the recommended run_current values are:

In Klipper, the config block looks like this:

[tmc2209 stepper_x]
uart_pin: PD11
run_current: 0.800
hold_current: 0.500
interpolate: True
microsteps: 16

Hold Current

Hold current is the current applied when the motor is stationary. It can be set lower than run_current to reduce motor heating and power consumption. For X and Y, a hold_current of 0.5-0.6A is typical. For Z, hold_current can be as low as 0.2A since the Z leadscrews or belts hold position mechanically. However, too low of a hold_current can cause the motor to back-drive if the printer is bumped.

Vref Formula (Standalone Mode Only)

If using TMC2209 in standalone mode (no UART — rare in Voron builds), the current is set via a potentiometer (Vref). The formula is: Irms = Vref / (1.77). For 0.8A RMS, set Vref to 1.416V. In UART mode (standard for Voron), Vref is ignored — current is set entirely via Klipper config.

UART vs Standalone Mode

UART mode allows Klipper to read and write driver registers: current, microsteps, stechChop/spreadCycle, diagnostic flags, and stall detection. Standalone mode hard-codes these via hardware pins and potentiometers. Voron always uses UART mode. Ensure the UART pin is correctly assigned in Klipper config and wired to the PDN/UART pin on the driver module.

StealthChop vs SpreadCycle

StealthChop2 is the quietest operating mode, using voltage PWM to create smooth, sinusoidal current waveforms. It is ideal for low-speed operation where noise matters. SpreadCycle uses a more aggressive current regulation scheme (constant off-time) that delivers higher torque at speed but produces audible noise. Klipper can switch between them dynamically using the hybrid threshold (TPWMTHRS setting). Below the threshold speed, stealthChop is used (quiet); above it, spreadCycle takes over (high torque). For Voron, a hybrid threshold of 100-150 mm/s is a good starting point. Default is typically 0 (always stealthChop) or disabled (always spreadCycle).

TMC2240 In-Depth

When to Use TMC2240

The TMC2240 is beneficial in these scenarios:

The TMC2240's configuration in Klipper is similar to the TMC2209 but with additional parameters for ADC current sensing and coolant/fan control.

TMC2240 Specific Klipper Config

[tmc2240 stepper_x]
uart_pin: PD11
run_current: 1.000
hold_current: 0.600
interpolate: True
microsteps: 16
driver_TPFD: 4

TMC5160 In-Depth

48V Builds

The TMC5160 is the driver of choice for 48V Voron builds. At 48V, stepper motors produce significantly more torque at high speeds because the current ramp rate (di/dt) is proportional to the supply voltage. The TMC5160 handles up to 48V and provides the same stealthChop/spreadCycle modes as the TMC2209. However, it requires external MOSFETs (typically two per driver), making the PCB footprint larger and the wiring more complex. Most mainboards with TMC5160 support have dedicated sockets for the driver modules with integrated MOSFETs.

TMC5160 Klipper Config

[tmc5160 stepper_x]
cs_pin: PD11
spi_bus: spi1
run_current: 1.200
hold_current: 0.600
interpolate: True
microsteps: 16
driver_TPFD: 4

Note: TMC5160 uses SPI communication (not UART), so the config requires cs_pin and spi_bus instead of uart_pin.

Common Driver Issues and Troubleshooting

Driver Overheating

Stepper drivers dissipate heat proportional to the current they deliver. At 0.8A RMS, a TMC2209 without heatsink can reach 80-100°C. Solutions:

Current Too Low — Layer Shift

The most common symptom of insufficient run_current is layer shifting during fast acceleration. The motor loses steps because the torque cannot overcome the inertia. Increase run_current in 0.1A increments until the shifting stops. If the motor gets too hot (>70°C surface temperature), the problem is elsewhere (binding rails, high friction, excessive acceleration).

Current Too High — Motor Overheating

Motors running above 70-80°C surface temperature can demagnetize the rotor over time, causing permanent torque loss. Reduce run_current or improve cooling (fan on the motor). NEMA 17 motors can typically handle up to 70-80°C safely. If the motor is too hot to touch (above 70°C), reduce current.

Driver Failing — Dead Stepper Axis

A completely non-responsive axis (motor does not move, no holding torque, no sound) usually indicates a dead driver. Common causes: short circuit on the motor wires, ESD damage, overheating, or manufacturing defect. Replace the driver module. When replacing, ensure the same driver model and orientation. Check the mainboard's driver socket for bent pins or debris.

Sensorless Homing Setup

Sensorless homing (StallGuard) uses the TMC driver's ability to detect when the motor has stalled (hit the endstop) by monitoring the back EMF. This eliminates the need for physical endstop switches on X and Y axes. Setup steps:

  1. Ensure the driver is in spreadCycle mode during homing (stealthChop does not support stall detection).
  2. Set driver_SGTHRS to a value between 0 and 255. Lower values = more sensitive (detects stall earlier). Start at 80 and adjust.
  3. Set homing_retract_dist: 5 so the motor backs off after detecting the stall.
  4. Adjust homing_speed — slower speeds give more reliable stall detection. Start at 20-50 mm/s.
  5. Test homing: the axis should stop a few mm before the actual mechanical stop. Adjust SGTHRS up (less sensitive) if it stops too early, down (more sensitive) if it crashes into the stop.

Example Klipper config for sensorless X homing:

[stepper_x]
endstop_pin: tmc2209_stepper_x:virtual_endstop
homing_speed: 50
homing_retract_dist: 5

[tmc2209 stepper_x]
run_current: 0.800
hold_current: 0.500
interpolate: True
microsteps: 16
diag_pin: PD2
driver_SGTHRS: 80

Hybrid Threshold Tuning

The hybrid threshold (TPWMTHRS) sets the speed at which the driver switches from stealthChop to spreadCycle. Below the threshold, the motor runs quietly but with limited high-speed torque. Above the threshold, it switches to spreadCycle for higher torque at speed. Tuning steps:

  1. Run a speed test print. At low speeds (30-60 mm/s), stealthChop should work fine.
  2. If you hear motor skipping or see missed steps at high speeds, the threshold is too low (motor is still in stealthChop at high speed where torque is insufficient). Increase the threshold value (in velocity units, mm/s).
  3. For most Voron builds, a threshold of 100-150 mm/s works well. The printer operates in stealthChop for most normal printing (60-120 mm/s) and switches to spreadCycle for travel moves and infill at higher speeds.

Set the threshold in the Klipper driver config:

driver_TPWMTHRS: 100

SpreadCycle vs StealthChop — Practical Summary

Need Drivers?

Find tested TMC stepper drivers for your Voron build.

Shop Drivers →
🚨

Voron LDO 商标 · 域名 打包出售

Trademark & domains sold as one package

Voron LDO 商标 (中国区 · China)
voron.cn
voronldo.com
ldovoron.com

有意者请联系 · Contact us:

📧 346290742@qq.com
📞 +86 13522926174