Go Down

Topic: Stepper motor seems underpowered - (Arduino/Genuino Mega and Pololu A4988) (Read 94 times) previous topic - next topic

JacquesBoum

I'm new to this forum, so a brief "hello and thanks for your help"!

I already posted on reddit but figured this place would be better... ;)


Sooo:
I am working on a project which will use 8 stepper motors, so I built a setup on a circuit board with 8 motor drivers (Pololu A4988).

My setup:


The motors I will be using are these ones: clickediclick for specs.
The datasheet from the motors says, that the current they draw is .350A per phase, so I calculated the value for the limiter on the Pololus via the formula from the Pololu page as follows:


Current Limit = VREF × 2.5


which brought the value for VREF to .14, which I set on the chips' potentiometers.
For power supply I used a programmable power supply. The product page of the motor drivers says that they can operate with a voltage between 8 and 35 Volts, while the datasheet of the motors mentions a "rated Voltage" of 12V. I was planning to use an old ATX pc power supply for the final project which should give me 12V.

However, when I supplied the circuit board with 12V from the super fancy programmable power supply (current not limited, I noticed a flow of up to .5 Amps or so), the motor was losing most steps from the full turns it should have been doing. The circulations only started when I cranked up the power to 11, ehm, 13V. The movement became even more powerful up to around 20V where the motor seemed to have stabilized.


[edit]
Just in case it is relevant, here's the code I am using to test the setup:
Code: [Select]
*     Simple Stepper Motor Control Exaple Code
 *     
 *  by Dejan Nedelkovski, www.HowToMechatronics.com
 * 
 */
// defines pins numbers
const int stepPin = 48;
const int dirPin = 52;
 
void setup() {
  // Sets the two pins as Outputs
  pinMode(stepPin,OUTPUT);
  pinMode(dirPin,OUTPUT);
}
void loop() {

//Serial.print(stepPin);
 
  digitalWrite(dirPin,HIGH); // Enables the motor to move in a particular direction
  // Makes 200 pulses for making one full cycle rotation
  for(int x = 0; x < 200; x++) {
    digitalWrite(stepPin,HIGH);
    delayMicroseconds(500);
    digitalWrite(stepPin,LOW);
    delayMicroseconds(500);
  }
  delay(1000); // One second delay
 
  digitalWrite(dirPin,LOW); //Changes the rotations direction
  // Makes 400 pulses for making two full cycle rotation
  for(int x = 0; x < 400; x++) {
    digitalWrite(stepPin,HIGH);
    delayMicroseconds(500);
    digitalWrite(stepPin,LOW);
    delayMicroseconds(500);
  }
  delay(1000);
}

[/edit]


My question(s):

What is this, and why is it happening?

Is it possible that there is so much of a drop in voltage on the way through the circuitry, that the motor is undersupplied and loses *that much* torque? (The motor specs are listing a "rated voltage" of 12V after all...)

How should I best deal with this?


Any help will be greatly appreciated, thanks a lot!

rpt007

Hi and welcome,

looking at the motor specs:
resistance/phase = 35 Ohm !!

That is way too high for driving the motor with a pololu at 12V.
Even 20V would be too low to give you satisfying results.

You should go with motors that have very low resistance (say 3..5 Ohms).
Reason: Ohms Law ..

If you power a 35 Ohm device at 12V, the resulting current would be around 0,35 A - but you have voltage drops at the driver, you have a growing inductance in the motor ... -> resulting current is much lower and you won't get enough torque.
Before you ask:
Do you have already some solution or is a part of the problem sitting in front of the screen?  :)

JacquesBoum

Oh wow, thanks for figuring that out!

This is my first real project, so I wasn't aware of that. I just followed these guidelines: adafruit.com: "matching-the-driver-to-the-stepper".

If I calculate according to Ohm's law: V=IR, -> V = 34ohms*.35A = 11,9V, right?


So according to the "official" guide, I should be good, shouldn't I?
I don't get how I could have known that my setup doesn't work, also, nowhere could I find information on voltage drops (internal in the pololu a4988) I should consider.

To be fair, I don't have a very extensive understanding of electronics, even "inductance" is already techno-babble to me... :D
I'm puzzled... ;)


edit:
Oh, and to just use a 24V power supply wouldn't be a (temporary) solution? I' m working on a very, very tight deadline... ;) :D

Robin2

If you have already bought the motors I would certainly try a 24v supply before spending money on different motors.

You say the motors seem underpowered - but that is rather meaningless without some data. What will they actually do and what do you want them to do?

...R
Stepper Motor Basics
Simple Stepper Code
Two or three hours spent thinking and reading documentation solves most programming problems.

JacquesBoum

Hey Robin2!

The final project will be an installation of bamboo rods which should act as kind of bells. I use the motors to drive clappers made from bamboo.

Up to now, I only tried to test the functionality of the setup, see the code I posted above.
I didn't measure the output voltage after the pololus, which I will do tomorrow, as my multimeter fell apart on my way home after work today, unfortunately.
So far, I can only say that the motor seemed to have not even enough torque to turn itself. Instead of full revolutions, it more or less jerked a bit, and progressed maybe 15 degrees while doing so.

Hope that helps?

Robin2

I didn't measure the output voltage after the pololus, which I will do tomorrow, as my multimeter fell apart on my way home after work today, unfortunately.
That will only make sense if you have an oscilloscope. A multimeter won't give any useful information. In any case the performance of the motor is a more useful indicator.

Quote
So far, I can only say that the motor seemed to have not even enough torque to turn itself. Instead of full revolutions, it more or less jerked a bit, and progressed maybe 15 degrees while doing so.
I have similar (but not identical) high impedance stepper motors and they work fine without a load (and with a low load) at 12v - they just won't move very fast because a 12v supply can't "push" the electricity in fast enough. With an 18v power supply mine do about 1000 steps per second.

I presume you are doing your initial tests with a single motor. The Pololu A4988 web page has a good wiring diagram.

...R
Two or three hours spent thinking and reading documentation solves most programming problems.

JacquesBoum

Yes, I used a single motor for testing.

The wiring I used is the minimal wiring setup proposed by pololu, only that I used it eight times and forked (hope that's the right word) the power supplies from one single source.

If you look at the code I posted above, for testing, my motor should have made one step every .5 millis if I get that right, which equals 2000 steps per second. So if the Motor can't handle that, it seems similar to yours and therefore normal, I guess? :)
After all, with 20 volts it works fine...

Maybe I'll be able to test again, this time with slower paced pulses.

rpt007

If it works with 20V - it will work even better with a slower speed.
Before you ask:
Do you have already some solution or is a part of the problem sitting in front of the screen?  :)

Robin2

Always start testing a stepper at very slow speed - perhaps 1 or 2 steps per second - and then gradually explore how much faster it can operate.

...R
Two or three hours spent thinking and reading documentation solves most programming problems.

Go Up
 


Please enter a valid email to subscribe

Confirm your email address

We need to confirm your email address.
To complete the subscription, please click the link in the email we just sent you.

Thank you for subscribing!

Arduino
via Egeo 16
Torino, 10131
Italy