The formula
Each driver turns the voltage on its VREF pin into a current limit through the sense resistor (Rs) beside the chip. The chip datasheets give:
A4988: current limit (peak) = Vref / (8 × Rs)
DRV8825: current limit (peak) = Vref / (5 × Rs)
TMC2208, TMC2209 in standalone mode:
I_RMS = 0.325 V / (Rs + 0.020 Ω) × (1 / √2) × (Vref / 2.5 V)
Solved for the voltage to set:
A4988: Vref = 8 × I_peak × Rs
DRV8825: Vref = 5 × I_peak × Rs
TMC: Vref = I_peak × 2.5 × (Rs + 0.020) / 0.325
The A4988 and DRV8825 limit the peak current in each coil. Trinamic states the TMC current as RMS (root mean square). While microstepping, each coil carries a sine wave, so peak = RMS × 1.414 and RMS = peak × 0.707.
The calculator’s target peak is the motor’s rated current per phase times the run percentage. Its defaults are a 1.68 A NEMA 17 (Pololu #2267) at 85%:
peak = 1.68 A × 0.85 = 1.43 A
RMS = 1.43 A × 0.707 = 1.01 A
How do you calculate Vref for an A4988?
Multiply the current limit by 8 and by the sense resistor: Vref = 8 × I × Rs. Pololu A4988 carriers made since 2017 use 0.068 Ω, so Vref is 0.544 V per amp. A 1.68 A motor run at 85% needs a 1.43 A peak, so set 0.777 V. That current is the peak in each coil.
Worked example: Pololu A4988, 1.68 A motor
- Target peak: 1.68 × 0.85 = 1.43 A.
- Vref: 8 × 1.43 × 0.068 = 0.777 V.
- Pololu’s own examples: 1 A needs 0.54 V. In full-step mode each coil carries only about 70% of the limit, so 1 A per coil at full step needs a 1.4 A limit.
Read the sense resistor before you trust the formula
The formula is only as good as Rs. Pololu A4988 carriers made before 2017 have green 0.050 Ω resistors, and other makers’ boards vary. Read the code printed on the two small resistors beside the chip. Low values use “R” as the decimal point, so R068 is 0.068 Ω, R050 is 0.050 Ω and R100 is 0.100 Ω.
| Marking | Rs (Ω) | Vref per amp | Vref for 1.43 A peak |
|---|---|---|---|
| R050 | 0.050 | 0.400 V | 0.571 V |
| R068 | 0.068 | 0.544 V | 0.777 V |
| R100 | 0.100 | 0.800 V | 1.142 V |
Using the wrong value can overdrive the motor. Set 1.142 V (the R100 figure) on a 0.068 Ω board and the motor gets 2.1 A, 47% more than intended. Pick “A4988, other board” and type the resistor you read.
The A4988’s reference follows its logic supply. Pololu says to set the limit again if the logic voltage changes, for example when the driver moves from a 5 V board to a 3.3 V one.
What is the DRV8825 Vref formula?
Texas Instruments’ datasheet gives the full-scale current as Vref ÷ (5 × Rsense). Pololu’s DRV8825 carrier uses 0.100 Ω sense resistors, so the current limit is Vref × 2 and the Vref to set is the current ÷ 2. A 1.43 A peak needs 0.714 V. As on the A4988, this is the peak current in each coil.
Worked example: Pololu DRV8825, 1.68 A motor
- Target peak: 1.68 × 0.85 = 1.43 A.
- Vref: 5 × 1.43 × 0.100 = 0.714 V, the same as 1.43 / 2.
TI’s own example uses a 0.2 Ω resistor: 1.25 A needs 1.25 V. On another maker’s board, read the resistor first, exactly as for the A4988.
TI specifies VREF from 1 V to 3.5 V and notes the chip still works below 1 V with lower accuracy. On Pololu’s 0.100 Ω carrier, any limit under 2 A means a Vref under 1 V. Pololu rates the carrier for about 1.5 A per coil without a heat sink or airflow and 2.2 A with enough cooling.
How do you calculate Vref for a TMC2209?
In standalone mode, Trinamic’s datasheet gives I_RMS = 0.325 ÷ (Rs + 0.02) × 0.707 × Vref ÷ 2.5. BIGTREETECH modules use 0.110 Ω resistors, which reduces that to Vref = I_RMS × 1.414, the peak current. For 1.01 A RMS, set 1.43 V. The TMC2208 datasheet uses the same formula.
Worked example: BIGTREETECH TMC2209, 1.68 A motor
- Target peak: 1.68 × 0.85 = 1.43 A, which is 1.01 A RMS.
- Vref: 1.43 × 2.5 × (0.110 + 0.020) / 0.325 = 1.43 V.
BIGTREETECH publishes the same shortcut for its TMC2209 module: I_RMS = Vref / √2, and I_peak = Vref.
Limits that apply only to Trinamic drivers
- Vref stops at 2.5 V. Trinamic says any voltage from 2.5 V to 5 V gives the same current as 2.5 V. With 0.110 Ω resistors that ceiling is 1.77 A RMS.
- BIGTREETECH gives a Vref range of 0.2 to 2.2 V for its TMC2209 module and 0 to 2 V for its TMC2208 V3.0.
- Trinamic advises against a full-scale Vref below about 0.5 to 1 V, where board noise affects the current more.
- Trinamic’s design guideline is 1.4 A RMS per coil for the TMC2209 (2.8 A peak) and 1.2 A RMS for the TMC2208 (2.0 A peak).
In UART mode, Vref does nothing
On a board that talks to the driver over UART, the chip’s serial link, firmware sets the current. Marlin’s driver setup clears the chip’s i_scale_analog bit, so the trimmer no longer scales anything. Both firmwares take the current as RMS:
Marlin, Configuration_adv.h: #define X_CURRENT 1010 // mA RMS
Klipper, printer.cfg: [tmc2209 stepper_x]
run_current: 1.010 # A RMS
Klipper’s sense_resistor defaults to 0.110 Ω. Change it only if your driver board’s resistors read differently.
Vref chart for common currents
Each row is one peak current. Use the column for your board.
| Peak per coil | RMS | A4988, 0.068 Ω | DRV8825, 0.100 Ω | TMC2208/TMC2209, 0.110 Ω |
|---|---|---|---|---|
| 0.80 A | 0.57 A | 0.435 V | 0.400 V | 0.800 V |
| 1.00 A | 0.71 A | 0.544 V | 0.500 V | 1.000 V |
| 1.20 A | 0.85 A | 0.653 V | 0.600 V | 1.200 V |
| 1.50 A | 1.06 A | 0.816 V | 0.750 V | 1.500 V |
| 1.70 A | 1.20 A | 0.925 V | 0.850 V | 1.700 V |
| 2.00 A | 1.41 A | 1.088 V | 1.000 V | 2.000 V |
The 2.00 A row is at the A4988’s rating and above both Trinamic RMS guidelines. On a TMC2208, stop at the 1.70 A row.
How much current should a stepper motor run at?
Duet3D advises setting the peak current to 50 to 85% of the motor’s rated current. The rated current is what one phase carries continuously with both phases on. A peak equal to the rating makes half the rated heat while moving, but a stopped motor can hold the full peak in one coil.
That is why the calculator applies the run percentage to the peak. It defaults to 85%, the figure Duet3D gives as an example of a setting that keeps the motor cooler. Torque follows current: Duet3D works out that an 85% peak gives about 60% of the motor’s specified holding torque.
Mixing up peak and RMS overdrives motors. A 1.68 A motor set to run_current: 1.68 in Klipper gets 2.38 A peak, 41% above its rating. Set the RMS to 0.707 times your target peak instead.
How do you set Vref with a multimeter?
- Power the printer from its normal supply. The A4988’s reference needs its logic supply. The DRV8825 makes its own 3.3 V from the motor supply. BIGTREETECH says a TMC2208 V3.0 reads true only with the board on 12 V or 24 V.
- Set the meter to DC volts. Put the black probe on any GND pin of the driver, as Pololu shows in its current-limit video.
- Put the red probe on the VREF test point. On Pololu carriers it is a via circled on the underside of the board.
- Turn the trimmer slowly until the meter shows the calculator’s value. On BIGTREETECH TMC modules, clockwise lowers Vref and counterclockwise raises it.
- Keep the motors still while you measure, and never plug or unplug a motor with the power on. Pololu warns that this can destroy the driver.
To check a driver someone else set up, switch the calculator to “A Vref I measured”. A Pololu A4988 reading 0.8 V gives 1.47 A peak, 88% of a 1.68 A motor’s rating. The same 0.8 V on a Pololu DRV8825 gives 1.6 A.
Once the current is set, the e-steps calculator and the rotation distance calculator set how far each motor moves.
Published · Figures last checked
Sources
- Allegro MicroSystems, A4988 DMOS microstepping driver with translator and overcurrent protection, datasheet (accessed 2026-10-14)
- Texas Instruments, DRV8825 stepper motor controller IC, datasheet SLVSA73F (accessed 2026-10-14)
- TRINAMIC (Analog Devices), TMC2209 datasheet Rev. 1.08, copy hosted by Digi-Key (accessed 2026-10-14)
- TRINAMIC, TMC220x / TMC222x datasheet Rev. 1.02, copy hosted by LCSC (accessed 2026-10-14)
- Pololu, A4988 stepper motor driver carrier (accessed 2026-10-14)
- Pololu, DRV8825 stepper motor driver carrier, high current (accessed 2026-10-14)
- Pololu, Video: setting the current limit on Pololu stepper motor driver carriers (accessed 2026-10-14)
- Pololu, Stepper motor: bipolar, 200 steps/rev, 42×38 mm, 2.8 V, 1.7 A/phase (accessed 2026-10-14)
- BIGTREETECH wiki, TMC2209 (accessed 2026-10-14)
- BIGTREETECH, TMC2209 V1.2 manual (accessed 2026-10-14)
- BIGTREETECH wiki, TMC2208 (accessed 2026-10-14)
- Marlin firmware, Configuration_adv.h (X_CURRENT) (accessed 2026-10-14)
- Marlin firmware, src/module/stepper/trinamic.cpp (i_scale_analog) (accessed 2026-10-14)
- Klipper documentation, Configuration reference: tmc2208 and tmc2209 (accessed 2026-10-14)
- Duet3D documentation, Choosing stepper motors (rated current) (accessed 2026-10-14)
- TT Electronics, TN004 Methods for marking values on resistors (accessed 2026-10-14)