Stepper Vref calculator for A4988, DRV8825 and TMC2209 drivers

Vref is the driver's current limit written as a voltage. On a Pololu A4988 set 0.544 V per amp, on a Pololu DRV8825 half the current, and on a BIGTREETECH TMC2209 the RMS current times 1.414. Enter your motor's rated current for the exact value.

What do you want to know
Driver

A board preset fills in its sense resistor. On any other board, read the marking on the two small resistors beside the chip: R068 is 0.068 Ω, R100 is 0.100 Ω, R050 is 0.050 Ω.

Ω
Motor

The rated current per phase is on the motor's label or data sheet.

A
% of rated

Duet3D advises 50 to 85%.

Vref to set

–

Peak current per coil

–

RMS current per coil

–

In UART mode, set this in firmware instead

–

Driver rating

–

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

  1. Target peak: 1.68 × 0.85 = 1.43 A.
  2. Vref: 8 × 1.43 × 0.068 = 0.777 V.
  3. 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

  1. Target peak: 1.68 × 0.85 = 1.43 A.
  2. 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

  1. Target peak: 1.68 × 0.85 = 1.43 A, which is 1.01 A RMS.
  2. 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?

  1. 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.
  2. 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.
  3. Put the red probe on the VREF test point. On Pololu carriers it is a via circled on the underside of the board.
  4. Turn the trimmer slowly until the meter shows the calculator’s value. On BIGTREETECH TMC modules, clockwise lowers Vref and counterclockwise raises it.
  5. 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