Skip to main content

Questions about Stepper Motors, Control, and Regulation

Hello,

For example, I want to make various handicrafts with a NEMA17 stepper motor and am looking for a suitable driver. However, I'm not very clear on the current and voltage information.

In the sales materials from large distributors, I found that the motor's voltage range is 3 to 12 volts, and the current range is 0.3 to 2.5 amps. As for drivers, there's a wide variety, from small drivers like the common DRV8825 (https://www.oyostepper.com/goods-887-5PCSPack-DRV8825-Stepper-Driver-Module-with-Heat-Sink-for-3d-Printer-Reprap.html) to large modules with multiple outputs.

Some motor manuals state a voltage of 3 volts and a current of 2.5 amps, requiring a 12-volt power supply and paired with a DRV8825 driver. This seems unreasonable, doesn't it? Of course, it's possible to control a high-performance motor with a "small" chip using PWM technology. So I still don't understand how to interpret this motor information.

The supplier means that if the motor voltage is 3 volts, then the driver voltage should also be set to 3 volts. Or, does 3 volts refer to the actual operating voltage of the motor? During testing, when I energize one of the motor windings, it draws more than 2 amps of current at 3V DC.

It seems I can't connect it to a 12V driver? The same motor is also mounted on my Mega development board. This stepper motor issue is still a bit of a mystery to me.

Besides factors like size, power, and torque, what should I be aware of now? I just want to do some simple testing with an Arduino and some common small drivers.

Chris Annin

The short version is: the “3 V” rating on a NEMA17 motor is not the supply voltage you should run it at. It’s just the voltage you’d get across the coil at its rated current (Ohm’s law). In practice, stepper motors are almost always driven with a higher supply voltage (12 V, 24 V, etc.) and a current-limiting driver like the DRV8825 or A4988.

Drivers like the DRV8825 use PWM and current control to limit the coil current to whatever the motor is rated for (e.g., 1–2.5 A), regardless of the supply voltage. That’s why it’s totally normal to run a “3 V” motor from a 12 V supply. The driver, not the motor, controls the current.

If you apply 3 V DC directly to a coil and see 2+ amps, that’s expected — but that’s exactly why you don’t drive steppers directly from a voltage source. You always use a current-limiting driver.

For simple Arduino testing:

Use a common driver like DRV8825 or A4988

Power it with 12 V (or 24 V if supported)

Set the current limit on the driver to match the motor

Don’t worry about the motor’s “voltage” rating — current rating matters far more

Once you get that distinction (coil voltage vs supply voltage + current limiting), the specs start to make a lot more sense.

John Dammeyer

A bit of technical background. If you've ever played around with a DC motor and increase the voltage you'll see the motor turns faster. Why is that?

Well a motor is also a generator. As it turns it creates the opposite voltage to the applied voltage and the faster it turns the higher the voltage. At some RPM this backwards voltage (called Back EMF) matches the applied voltage and that's the max RPM the motor can do at that applied voltage.

Double the voltage and the motor spins faster until again the back EMF matches applied voltage.

Now a stepper motor is a bit different but the same issues still surface. There are two windings. When current is sent through the windings they become magnetic and the armature with the magnets in it orients itself to that pair of magnetic fields.

Reverse the current in one of the windings and the magnetic field is also reversed and the motor armature realigns with the new pair of fields. That's called a step. With the two windings and current in either direction you therefore have 4 possible positions. The stepper motor controller applies a voltage across the windings and then as Chris Annin stated waits until the current reaches the specified value and then starts alternating that voltage on and off to hold the current at say 1 Amp.

All pretty simple so far. Here's where it gets more complicated. When you want to change the direction of the magnetic field you have reverse the polarity of the voltage applied to that winding. The problem is that there is still current flowing through the winding creating a magnetic field and as the motor turns there is also a voltage generated just like with the DC motor.

When the current is stopped that magnetic field collapses and generates a voltage across the windings that is the opposite polarity of the new applied voltage. So it fights the new applied voltage preventing current from flowing in the new direction. Until that magnetic field has collapsed and the back EMF is gone you don't get full current and therefore torque in the other direction.

So what voltage is generated and how long does it take before current starts to flow in the new direction? Well that depends on the inductance of the windings and how much current is going through them and how fast the motor is turning but we'll ignore the motor speed for now.

The best way to get that current to reverse is to apply a stronger force in the other direction. Let's pretend we have a motor that has a winding that draws 1 Amp at 10V. So even thought the winding voltage is 10V we could apply 30 volts to help push and start the new current flowing in the other direction. The controller makes sure the voltage never goes above 10V once the current has reached 1 Amp.

So if a step takes X milliseconds with an applied voltage of 10V you may well get 1/3X millseconds with 30V. So where a stepper motor can only turn say 100 RPM with 10V limited to 1A it can turn 300 RPM with 30V because the current is reversed so much faster and the step pulses can occur sooner.

So if we use the 14HS11-1004D-PG19-AR4 motor for example it has 1A max with a winding resistance of 3.5 Ohms so the maximum coil voltage is 3.5V. But if the stepper driver has 24V there's a lot of extra voltage to help change the winding current direction.

And as I said before there is a complication that as the motor turns the magnets inside the windings it also acts like a generator so this prevents the current from reaching 1A as the motor goes faster and faster. In fact the current doesn't even reach 1A before it's time for the next step pulse and current reversal. This combination is why you see the torque fall off as the motor goes faster and faster. The graph shows how the torque starts at the same point from a stop but only if the applied voltage is higher does it stay there. And eventually as the motor speeds up and the current has to reverse faster the torque falls off.