Stepper motor power requirements

Hello everyone,

I'm trying to build a motorized cameraslider with an arduino + steppermotor. For the driver I'm using the drv8825 and for power I want to use a sony npf battery (with about 7.5v 2.5a).
I want to know, if I can use this battery to power a bipolar nema 17 stepper motor with a voltage of 2.8 and 2 amps/phase?

The nominal voltage of a stepper motor is largely irrelevant. The important thing is the coil current - in your case 2 amps.

  • The first problem you face is that a DRV8825 has a minimum voltage of 8.2v so your battery is not suitable.
  • The next problem is that a DRV8825 will struggle to provide 2amps without a heatsink and forced cooling.
  • The third problem (or is it really the first) is that stepper motors are very inefficient and not suited for battery power. It will drain your battery very quickly. If the motor draws about 5.6watts (2.8 * 2) and the battery has a capacity of 18 watt-hours (7.5 x 2 Ah) then, in theory the battery might power the motor for about 3 hours. But with all sorts of losses that I am not able to account for I suspect 1 hour would generous.

...R
Stepper Motor Basics
Simple Stepper Code

Thanks for your reply Robin

The first problem isn't a problem, because I've already tested it and it works just fine with a steppermotor that uses 0.4 Amps. I've also added the provided heatsink to the drv 8825 and with heatsink it's rated for up to 2.2 amps.
The battery is also a pretty big one (it has 48.8 wh) isn't this enough?

If you have all the answers I don't understand the reason for your Thread ?

Don't be surprised to find that the 2.2 amps includes some marketing hype :slight_smile:

Did I do my maths wrong when I calculated 18 Watt-hrs ? (It would not be the first time).

...R

VinSei:
I've also added the provided heatsink to the drv 8825 and with heatsink it's rated for up to 2.2 amps.

I strongly recommend not trying to push the tiny little DRV8825 modules too hard thermally - the
chip is designed to lose most of its heat through the copper heat slug on its underside to a multilayer PCB
with lots of surface area to spread the heat.

1.7A is a good guide to a reliable level of current from a DRV8825 module with the
little heatsink added. The standard DRV8825 module is far too small to allow PCB heat sinking to be
effective.

If you want more, expect to need active cooling (fan pointing at the module).

I suggest 12V or greater supply is the way to go. More voltage will mean more speed is available
from the motor, and more torque at speed too.

Sorry @robin, it wasn't meant like I'm knowing everything already, I just wanted to know, if the drv8825 is compatable with the stepper motor :slight_smile:

@MarkT thanks for your reply, I've tryed the stepper motor on an L298N driver with the battery and it had the power to pull up and hold my camera with a lens and trypodhead (around 2.5 - 3 kg) verticaly, which is enough for my uses, so the battery is ok for my project.
Do you have any suggestions for a small stepper driver which would work?

VinSei:
Do you have any suggestions for a small stepper driver which would work?

If you already have the DRV8825 then it is worth trying it with the current limit set to (say) 1.7 amps and see if you have enough performance.

...R

I've tried it, but I'm heaving the problem that the motor is getting power and I can't rotate it if its standing still, but if I run the code it doesn't rotate, it just makes some beeps :confused:

VinSei:
but if I run the code it doesn't rotate,

What code?

...R

The code was one of the example codes from the arduino side and it also works with an other motor.
Maybe the problem is realy, that the driver doesn't work very well with my battery and the motor.
I think, that I'm propaply going to try to use an A9488 like this guy:camera slider with my battery.
Do you have a suggestion for a motor, which matches the stats of an a4988 and would be able to pull up about 3 kg verticaly and hold it?
Maybe this one:motor? For this one I could even use the DRV8834 which operates from 2.5–10.8 V right?
I'm going to use a 6 mm tooth belt like on 3d printers to conect the motor to the camera sled.

VinSei:
The code was one of the example codes from the arduino side and it also works with an other motor.

You may be surprised to know that I still can't see it.

...R

VinSei:
Do you have any suggestions for a small stepper driver which would work?

No small single chip driver can do much better. You either need one with a giant heatsink,
or move to a stepper driver using discrete MOSFETs (much less on-resistance). Any single
chip driver is limited to using DMOS MOSFETs which have much more resistance than
VFETs (which have vertical current flow but can't be integrated on the same chip as the drain
contact is the chip substrate).

Getting a motor with 1A or 1.5A current rating is the recipe for worry-free small stepper
driver modules.

For 2A and above the best solution is a discrete MOSFET design of driver, much bigger, much
more expensive, basically standard industrial parts.

The halfway house are single chip drivers that are designed to bolt onto a metal heatsink.
TB6560 is one example. These tend to waste more power in the heatsink than goes to the
motor.

I've now got an DRV 8834 and everything is working fine.

I only have one problem:
I can't figure out, how to get it in to microstepping mode to let the motor run smooth when turning slow :confused:

DRV 8834 on this page is a little bit of informations.

I've tried for example to conect M1 to 5v so that it should do 1/32 stepps, but the only thing that changes is, that the motor is now going a shorter distance then before with the same step resolution.

VinSei:
I've tried for example to conect M1 to 5v so that it should do 1/32 stepps, but the only thing that changes is, that the motor is now going a shorter distance then before with the same step resolution.

You need to post the latest version of your program so we can understand your question.

I had not understood from your Original Post that you were trying to operate the motor with a power supply voltage that is too low for a DRV8825. In general, stepper motors perform better with higher voltages.

...R

This is the stepper motor part of my program:

digitalWrite(dirPin,HIGH);
            for (int j = 0; j < (stepperlength); j++) { 
              if (interrupt == 0) {                       
                digitalWrite(stepPin,HIGH);
                delayMicroseconds(stepperdelay);
                digitalWrite(stepPin,LOW);
                delayMicroseconds(stepperdelay);
                
                buttonStateA = digitalRead(PinA);
                if (buttonStateA == HIGH) {
                  interrupt = 1; 
                }  
              }
                      
            }

(the interrupt part is just to stop it with a button)

I've tried for example to conect M1 to 5v so that it should do 1/32 stepps, but the only thing that changes is, that the motor is now going a shorter distance then before with the same step resolution.

Well yes, that is the point of microsteps, they are smaller!

Steppers need speed ramping (unless tiny tiny stepper motor), otherwise they will simply skip
steps if you try to go fast.

Have you used the AccelStepper library which makes ramping automatic? I'd never expect a stepper
motor like yours to accelerate instantly, its just not going to happen.

VinSei:
This is the stepper motor part of my program:

Please post the complete program. With that snippet we can't see what value stepperDelay has and that value could be the problem.

If it is long them just make a short program that illustrates the problem. When you have a problem like this a short program is always a better way to solve it.

...R

const int stepPin = 12; 
const int dirPin = 7; 
 
void setup() { 
  pinMode(stepPin,OUTPUT); 
  pinMode(dirPin,OUTPUT);
}

void loop() {
  digitalWrite(dirPin,HIGH);  
  digitalWrite(stepPin,HIGH); 
  delay(50);
  digitalWrite(stepPin,LOW); 
  delay(50); 
}

This is the basic code and I've conected the drv 8834 like shown on the first picture on the Pololu page.
I'm now trying to for example conect the M1 pin of the DRV to 5v to get 1/32 step but it doesn't microstep. Am I conecting the microstepping pins wrong?

That certainly should switch to 1/32 microstepping.

Did you read my previous reply?

Yes, I'm already driving the stepper realy slow and I want it to go smooth when it's turning slow, but it's not going smoother, then in full step mode.
It is just doing around 30 full steps (with no microsteps between) instead of 1000 full steps in 1/32.