Pololu Robotics & Electronics
My account Comments or questions? About Pololu Contact Ordering information Distributors

Pololu Forum

Adjusting current limit with Vref: strange current value in coil

I am starting a project using Arduino, a stepper motor (NEMA 17HS19-2004S1) and a stepper motor driver (DRV8825).
I am having trouble with the current limit of the motor. I read that for the DRV8825 driver, the current limit can be adjusted using the formula: Imax=2*Vref. My motor datasheet indicates “2.0A per phase” so I turned the driver potentiometer in order to measure Vref=1.0V (between the potentiometer screw and the “ground” pin).
But when I measure the current in one of my motor coils, I read approximately 1A. How is that possible?
When its running, my power supply shows approximately 0.4A, but I read in the DRV8825 documentation that it is not a good indicator of the current in the motor coils.

Detailed characteristics:

Power supply: 30V - 10A, which I set on 25V.
-- Angle: 1.8°
-- Precision: 5%
-- Torque: 59Ncm(83.6oz.in)
-- Nominal current/phase: 2.0A
-- Phase resistance: 1.4ohms
-- Tension: 2.8V
Inductance: 3.0mH ± 20%(1KHz)

Thanks for your help!

Our DRV8825 carrier can only handle around 1.5A per phase continuously without additional cooling. So, if you are not using sufficient cooling, I recommend keeping the current limit no higher than 1.5A per phase or the driver will likely go into thermal shutdown. What reading do you get if you lower the current limit to 1.5A (e.g. VREF=0.75V)?

As you mentioned, the reading at your power supply is not a good indication of the current through the stepper motor coils. Measuring the current through the coil directly is a good method. Could you give more details about how you are measuring the coil current? For example, what step mode are you in, what are you doing with the STEP pin, and how are you connecting your current meter? Pictures of how you are measuring the coil current might be helpful, too.

By the way, there are a lot of knockoffs of these boards that might perform differently from ours (e.g. the equation for setting the current limit might be different). Could you post some close-up pictures of both sides of your board so we can confirm it is ours?


Thank you for your answer.
If I set the Vref to 1.5V, I measure 1.5A in the coil.
If I set the Vref to 1V, I measure 1A in the coil.
In order to get the measurement of the current in the coil, I connected my ampermetre (in series) between one of the DRV8825 output pin and the corresponding motor wire (example, on A2). I tested it on all 4 pins and still get Vref (in volts) = I (in amperes). Isn’t it supposed to be I=2*Vref ? I don’t understand.

My DRV8825 chips come from here : https://www.amazon.fr/gp/product/B081JM828X/ref=ppx_yo_dt_b_asin_title_o00_s00?ie=UTF8&psc=1
Aren’t they the same?

Step mode is full step (M0, M1, M2 are disconnected).
RESET and SLEEP are connected to Raspberry 3.3V.
ENABLE and FAULT are disconnected.
I tested with different values of current (between VMOT and GND), up to 30V.
STEP and DIR are connected to Raspbery GPIOs.

The boards shown on that Amazon page are not our boards, so our documentation might not apply to it and we cannot offer support for it.

However, please note that the full-step current on the DRV8825 is ~70% of the current limit, so to get a full-step coil current equal to your motor’s rated current, you would have to set the current limit higher. Unless you have documentation for your specific carrier board, you should probably just use your current measurement to set it.