Voron Stepper Motor Current Tuning Guide — Perfect Driver Settings
Calibration Electronics Motion
Why Stepper Motor Current Matters
Stepper motor current is the most important tuning parameter for motion reliability on a Voron. The current setting directly controls:
- Torque — Higher current = higher torque. The motor can accelerate faster and handle more load without skipping steps.
- Heat — Higher current = more heat. Motors above 70-80℃ lose torque (magnetic strength decreases with heat) and can damage the motor windings or the printed parts they are mounted to.
- Driver temperature — TMC drivers (2209, 2240, 5160) have built-in over-temperature protection. Exceeding the driver's current rating causes thermal throttling or shutdown.
- Noise and vibration — Incorrect current causes motor vibration, which translates to VFA (vertical fine artifacts) on prints.
- Step loss — Current too low causes skipped steps (layer shifts, print crashes). Current too high can also cause skipped steps from thermal overload.
Motor Current Ratings by Size
Stepper motors are rated by their phase current (current per coil). This rating assumes the motor is in free air at 25℃ ambient. In an enclosed Voron at 45-60℃ chamber temperature, the effective safe current is lower.
| Motor Size | Length | Rated Current (typical) | Voron-Safe Current |
|---|---|---|---|
| NEMA14 (V0.2 Z) | 20-30mm | 0.5-0.8A | 0.35-0.55A |
| NEMA17 (V0.2 XY) | 34-36mm | 1.0-1.5A | 0.60-1.00A |
| NEMA17 (V2.4/Trident XY) | 40-48mm | 1.2-2.0A | 0.75-1.20A |
| NEMA17 (V2.4/Trident Z) | 40-48mm | 1.2-2.0A | 0.65-1.00A |
| NEMA17 (Extruder, CW2) | 36-42mm | 0.8-1.5A | 0.50-0.80A |
| NEMA23 (Large Z, rarely Voron) | 50-80mm | 2.8-4.2A | 2.00-3.00A |
Important: Always check your specific motor's datasheet. The rated current is printed on the motor label (e.g., "1.68A" or "1.2A/phase"). Do not exceed the rated current.
TMC Driver Current Limits
Each TMC driver has a maximum RMS current it can handle. The RMS current matters because TMC drivers are rated by RMS current, not peak current. The conversion is: peak = RMS x 1.41.
| Driver | Max RMS Current | Max Peak Current | Notes |
|---|---|---|---|
| TMC2209 | 1.2A RMS | 1.7A peak | Most common Voron driver. 1.2A RMS is per driver, with proper heatsinking. |
| TMC2240 | 1.5A RMS | 2.1A peak | Higher current than 2209. Has SPI interface, more tuning options. |
| TMC5160 | 3.0A RMS | 4.2A peak | High-current driver for NEMA23 or high-torque NEMA17. Requires external heatsink. |
| TMC2130 | 1.1A RMS | 1.6A peak | Older, less common. Similar limits to 2209. |
Critical: You cannot set run_current higher than the driver's max RMS current, even if the motor can handle more. The driver will overheat, throttle, or get damaged. For example, a NEMA17 rated at 1.68A on a TMC2209 is limited to 1.2A RMS by the driver — the motor will never reach its full torque potential.
Run_Current vs Hold_Current
Klipper supports two current settings for each stepper:
- run_current — Current applied when the motor is moving or holding position during a print. This is the main tuning parameter.
- hold_current — Current applied when the motor is stationary and the printer is idle (e.g., between prints, during standby). Typically 30-60% of run_current. Saves power and reduces heat.
In Klipper config:
[tmc2209 stepper_x]
run_current: 0.800
hold_current: 0.500
When hold_current matters: On Voron 2.4, the Z motors must hold the gantry position when powered. If hold_current is too low, the gantry can sag when idle (causing a tilted first layer). For Z motors, keep hold_current at 70-80% of run_current. For X/Y, 50-60% is fine. For extruder, hold_current at 50-60% prevents idle filament ooze reduction due to pressure release (though modern Klipper handles this through other means).
Recommended Starting Currents by Axis and Model
Voron 0.2
| Axis | Motor | Run_Current | Hold_Current |
|---|---|---|---|
| X | NEMA17 34mm (LDO-42STH34) | 0.65-0.80A | 0.40-0.50A |
| Y | NEMA17 34mm | 0.65-0.80A | 0.40-0.50A |
| Z | NEMA14 30mm (LDO-42STH14) | 0.40-0.55A | 0.35-0.45A |
| E | NEMA17 36mm | 0.55-0.75A | 0.35-0.50A |
Voron Trident 250/300/350
| Axis | Motor | Run_Current | Hold_Current |
|---|---|---|---|
| X | NEMA17 48mm (LDO-42STH48) | 0.80-1.10A | 0.50-0.70A |
| Y | NEMA17 48mm | 0.80-1.10A | 0.50-0.70A |
| Z1-Z3 | NEMA17 40-48mm | 0.70-0.95A | 0.55-0.80A |
| E | NEMA17 36-42mm | 0.60-0.80A | 0.40-0.55A |
Voron 2.4 250/300/350
| Axis | Motor | Run_Current | Hold_Current |
|---|---|---|---|
| X | NEMA17 48mm | 0.80-1.10A | 0.50-0.70A |
| Y | NEMA17 48mm | 0.80-1.10A | 0.50-0.70A |
| Z1-Z4 | NEMA17 40-48mm | 0.70-0.95A | 0.55-0.80A |
| E | NEMA17 36-42mm | 0.60-0.80A | 0.40-0.55A |
Current Testing Method — Find Your Optimal Setting
Do not blindly copy values from the internet. Find the exact current your printer needs:
Step 1: Torque Test
With the printer off, disconnect the motor from its load (remove the belt or coupler). Turn the motor shaft by hand and feel the detent torque (the magnetic resistance when the motor is unpowered). This gives you a baseline for the motor's strength.
Step 2: Minimum Working Current
Set run_current to a low value (e.g., 0.5A for X/Y). Home the printer. Move the axis at 50mm/s and then 150mm/s. If the motor stalls or makes grinding noises, increase current by 0.05A and retest. Find the minimum current where the motor moves smoothly at all speeds.
Step 3: Acceleration Test
Increase acceleration to 8000mm/s² for X/Y. Run a back-and-forth move at 150mm/s with 50mm of travel. Listen for skipped steps (a distinctive "thunk" or grinding sound). If you hear skipping, increase current by 0.05A and retest. Find the current where the motor reliably handles your planned acceleration.
Step 4: Temperature Test
Run the motor at the current found in Step 3 for 10 minutes of continuous movement. Measure the motor surface temperature with an infrared thermometer or thermal camera:
- Below 50℃ — Safe. You can increase current for more torque.
- 50-70℃ — Acceptable. Do not increase further.
- 70-80℃ — Marginal. Reduce current by 0.05-0.10A.
- Above 80℃ — Unsafe. Reduce current immediately.
Also check the driver temperature on the board. TMC2209 chips should be below 70℃. If the driver is hotter than the motor, the driver is the limiting factor — reduce current.
Step 5: Print Test
Print a high-speed calibration cube at your target current setting. Examine for:
- Layer shifts (too little current or too much acceleration).
- VFA lines on vertical walls (too much current causing motor vibration).
- Inconsistent extrusion from Z motor binding (Z current too low or too high).
- Extruder skipping during retractions (extruder current too low).
Balancing Torque vs Heat — Practical Guidelines
- X/Y motors need the most current — They accelerate the toolhead (up to 10,000mm/s² on some builds). Prioritize torque over heat for X/Y. Stay at the high end of the recommended range.
- Z motors need moderate current — They move the gantry or bed at low speeds and mostly hold position. Low current (minimum needed to avoid skipped steps) keeps the chamber cooler. On V2.4, Z motors need enough torque for Quad Gantry Leveling — test Z current with QGL active.
- Extruder motors need the least current — The extruder moves slow (10-50mm/s linear, depending on gearing). High current only adds heat. Set extruder current conservatively. A hot extruder motor contributes to heat creep and can soften filament in the heatbreak area.
- Chamber temperature reduces all currents — For every 10℃ above 25℃ ambient, reduce current by 5-8%. This is not a rule from physics, it is a practical guideline based on motor temperature rise in Vorons with heated enclosures.
- Use the same current for paired motors — On Voron 2.4 (4 Z motors) and Trident (3 Z motors), all Z motors should use the same run_current setting. Mismatched currents cause uneven torque and can skew gantry leveling.
Klipper Config Examples by TMC Driver
TMC2209 (Most Common)
[tmc2209 stepper_x]
uart_pin: PA1
run_current: 0.900
hold_current: 0.500
stealthchop_threshold: 999999
interpolate: True
sense_resistor: 0.110 # Standard for most Voron boards
# For specific boards: BTT uses 0.110, MKS uses 0.150, Fysetc uses 0.110
TMC2240 (Higher Current)
[tmc2240 stepper_x]
cs_pin: PA1
spi_speed: 4000000
run_current: 1.200
hold_current: 0.700
stealthchop_threshold: 999999
interpolate: True
sense_resistor: 0.150
# TMC2240 supports higher current than 2209
# Use for high-torque builds or NEMA23 motors
TMC5160 (High Current / NEMA23)
[tmc5160 stepper_x]
cs_pin: PA1
spi_speed: 4000000
run_current: 1.800
hold_current: 0.900
stealthchop_threshold: 999999
interpolate: True
# TMC5160 requires external heatsinking
# Do not exceed 3.0A RMS (4.2A peak) datasheet limit
Troubleshooting Current-Related Issues
Symptom: Motor Gets Very Hot (Above 80℃)
Causes: run_current too high, hold_current too high, inadequate heatsinking, high ambient chamber temperature, or motor shorted winding.
Fixes: Reduce run_current by 0.1A. Reduce hold_current to 50% of run_current. Improve airflow over the motor. If the motor still overheats at 50% of rated current, the motor may have a shorted winding — test by swapping with another motor.
Symptom: Driver Overheating / Thermal Shutdown (Printer Stops Mid-Print)
Causes: run_current exceeds driver RMS rating, poor airflow over driver heatsink, VREF too high (if using standalone mode), or incorrect sense_resistor value.
Fixes: Verify run_current is below the driver's max RMS rating (1.2A for TMC2209). Add a heatsink to the driver chip. Add a fan over the board. Check the sense_resistor setting matches your board's hardware (0.110Ω for BTT boards, 0.150Ω for MKS).
Symptom: Layer Shift at High Speed
Causes: run_current too low for the acceleration/speed being used, or motor torque insufficient for the load.
Fixes: Increase run_current (stay within driver and motor limits). Reduce max_accel. Check for mechanical binding (tight belts, dirty rails, tight eccentric nuts). Switch to a higher-torque motor or 0.9° motor for better torque at speed.
Symptom: Motor Makes Grinding / Buzzing Noise When Idle
Causes: hold_current too low causing the motor to dither between microsteps, or too high causing audible coil whine from the PWM frequency.
Fixes: Increase hold_current slightly (try +0.05A). Change to SpreadCycle mode to eliminate the PWM whine. Add a 100µF capacitor across the motor power pins on the board.
Advanced: Using Sensorless Homing Current Settings
If you use TMC sensorless homing (stall detection), the driver needs enough current to detect stalls accurately. Sensorless homing generally works best at 70-100% of the motor's rated current. If you have sensorless homing issues (false triggers or missed stalls), increase run_current on those axes.
Klipper also supports a stallguard parameter per TMC driver that adjusts the sensitivity of stall detection. Finding the right combination of run_current and stallguard threshold is iterative and specific to your build's mechanical resistance.