How to choose the suitable battery for 6 stepper motors?

I am new to electronics and trying to build a robot that uses 6 stepper motors. I bought 6 of this stepper motor and used Pololu stepper motor driver A4988 to drive them but I have an issue with the power supply. The datasheet says that the motor operates at 12V , 0.33A current. My application requires that only one motor works at a time, no overlap between any 2 of them, so I assumed that a 12v 1A battery will do the job.

I connected the circuit with Arduino for 1 motor and powered it with the battery and it worked well, but when I connected all of the 6 motors, no one worked, instead, I heard some noise for 2-3 seconds.

When I tested 1 motor, I noticed that when the motor is powered -not receiving commands from Arduino yet to move- the shaft is holding -I can't rotate it with my hand- so it seems that it is drawing current and when I connect all of the 6 altogether without moving, they require more current than the battery provide.

So I think that the motors did not work because I mischoosed the Battery, if so, I need your help to choose the suitable power supply please. Any help will be appreciated. Thanks a lot.

• Your question contains an error; the datasheet says the motor current is 0.33A, not, as you have written, 0.33mA. Please provide a link to the battery you are using. Also please provide a schematic of the circuit. – gbulmer Jun 12 '16 at 2:44
• First, read WhatRoughBeast's answer below. Now keep in mind that steppers are inherently inefficient, drawing power even when not needed. Then, you can do a number of things, including: 1) Disable any motors that you are not actually moving, if your mechanics allow it, or 2) Upgrade to dc servos, as they only draw the current that they need at the time, or 3) Find the problem with your power system that's causing your issue, and live with the shortened run-time that come with steppers. – Mark Jun 12 '16 at 4:05
• Thank you @Mark for your suggestions, I think I will go with (3) as my application requires a motor that rotates 360 degrees precisely, so I will deal with the power issue. – A.Sahl Jun 14 '16 at 4:33

As others have already mentioned, stepper motors draw power continuously when they are "ON". The data sheet says the winding resistance is 32.6 ohms, so applying Ohm's law you can determine how much current each winding will draw from the battery:

V = I x R --> I = V / R = 12 V / 32.6 ohms = 0.368 Amps


which is roughly the motor's rated current specification of 0.33A (as stated on SparkFun's website). Each bipolar stepper motor has two windings, each continuously drawing 0.368 amps; therefore, each motor continuously draws approximately 0.736 amps when it is energized.

Note that a stepper motor's shaft position is maintained only when the stepper motor is energized. If you de-energize the motor (turn it "OFF"), there is no magnetic field to maintain the shaft's current position, and the shaft free rotates.

Also, the Arduino's digital I/O pins cannot provide enough drive current to adequately energize your stepper motor's windings. Typically, the Arduino sends its low power digital "control" signals to an H-bridge circuit that provides the required voltage polarity and amperage to the stepper motor's windings.

Your system does not work because you don't understand your driver. Even when not moving the motor, the driver produces a current in both phases. Because you are using a microstepper, the relationship is not exactly simple, but the easiest way to look at it is that for each motor, count on about 0.33 amps per motor. So your motors will draw 2 amps regardless of whether they are stepping or not. It is that current which causes the shaft to be so stiff.

Furthermore, your identification of your battery is "12v 1A" is simply wrong. Batteries are not rated by current, but by current times time, or capacity (not to be confused with capacitance). Your battery is probably 12v 1 A-hr, which means it can produce 1 amp for 1 hour, or 0.5 amps for 2 hours, or 0.33 amps for 3 hours, etc.

It seems unlikely that your battery is the problem, provided that it is fully charged. I suspect you're doing something else wrong.

• Looking at the data sheet, each winding's power is 12 VDC with 0.368 amps (assuming the winding resistance is 32.6 ohms as stated on the data sheet). Each bipolar stepper motor has two windings, so that's 0.736 amps per motor x 6 motors = 4.42 amps drawn from the power source. – Jim Fischer Jun 12 '16 at 8:05
• Thank you for your explanation, you are right my battery was not the problem of keeping the motors off. I disconnected all wires and reconnected them again but after testing them with multi-meter buzzer, some jumper wires were broken. but another issue appeared, after I set the current limit for all motors they worked properly without any load with RPM lower than 200, but after putting load they hardly move meaning that the torque is not high enough. The load is about 75 grams only. – A.Sahl Jun 14 '16 at 4:52
• I did more tests on my motors and I found the solution for my problem. Setting the current limit by adjusting the Vref and multiplly by 2.5 -the method provided in the driver page mentioned in the question- is not always correct for all drivers. The other method -also provided in the driver page- is to measure the current through one coil, adjust the Vref and measure again until you reach the current limit of the motor. This method worked for me to reach the current limit and increase the torque of the motor. – A.Sahl Jun 15 '16 at 4:09