Go Down

Topic: Increasing the torque on 4 12 volts. (Read 5514 times) previous topic - next topic

Skorb

Apr 03, 2011, 03:56 am Last Edit: Apr 05, 2011, 04:12 am by Skorb Reason: 1
Hi,

I am currently using arduino to control 4 12 volt .33 amp 200 step bi-polar steppers.
Data sheet: www.sparkfun.com/datasheets/Robotics/SM-42BYG011-25.pdf

I utilized the circuit diagram for bi-polar steppers listed here: http://www.arduino.cc/en/Tutorial/MotorKnob

I am using 16 pins connected to 4 Edited: L293NE motorcontrollers.

However, my steppers have very little torque.

I was previously using a 5 volt, 1 amp power adapter, but this provided very little power, I then shifted to a 9 volt battery, run in series with 3 1.5 volt batteries, but this produced little noticeable change.

I am new to motorcontrol and was wondering where I am going wrong?

Thanks in advance, SKORB.

RuggedCircuits

Four 0.33A steppers means you need 4*0.33*2 = 2.64A of current at maximum power (each stepper has two coils, 0.33A per coil).

No way is a 9V battery going to supply that kind of current. You need a REAL power source, either a big battery pack, or a 12V/3A power supply, etc.

--
The Rugged Motor Driver: two H-bridges, more power than an L298, fully protected

Skorb

Thanks a lot.

If the torque was still too low, would it be possible to increase the voltage?

Say to 15, or 16 with 3 amps in order to raise torque?

RuggedCircuits

What matters most to stepper motors (really, any motor) is the current. The more current, the more torque.

Now, voltage gets into the mix since it is the force by which current flows. In a stepper motor, you change the direction of current in each coil to make it take steps. The faster you can change the direction of current, the more torque you will get. The more current there is after the direction has changed, the more torque you will get.

So higher voltages only help with the first part: changing the direction of current faster. That helps a bit, but is no substitute for having a power supply that can deliver the current needed.

--
The Gadget Shield: accelerometer, RGB LED, IR transmit/receive, speaker, microphone, light sensor, potentiometer, pushbuttons


Skorb

Amazing, thank you very much RuggedCircuits.

Skorb

I found an 18 volt 3.5 amp power supply from an old laptop, would it be possible to drop the voltage down and use this with my steppers?

And if so where would I need resistors/voltage regulators?

Cheers, Skorb.

RuggedCircuits

No need to drop the voltage down, you can use PWM (analogWrite()) to keep the current within the motor's limits. The PWM is applied to the EN (enable) pin of your motor drivers. Setting a 50% duty cycle PWM from an 18V source is (mostly) equivalent to leaving a 9V source on full time.

You just have to watch out for low-inductance coils, as high voltage can exceed your motor driver's instantaneous current. Your steppers have 46mH/coil so should be OK.

--
Beat707: MIDI drum machine / sequencer / groove-box for Arduino

Skorb

Hey RuggedCircuits,

Thanks for being awesome.

I'm still really new to this, so can you tell me if I have this straight:

I can use 4 of my analog pins to output analogWrite(127); to the EN pin of my 4 motor driver chips, and this will reduce the voltage by half?

I'm getting this from; http://www.arduino.cc/en/Tutorial/PWM

I looked at inductance listed here: http://www.tpub.com/neets/book2/2b.htm

And it seems to me that inductance is determined by the size or space between the coils? If so, how do I know how low/high my sizes should be?
Or is this just something you learn with experience?

Finally, I've been using the Arduino stepper library, do I need to rework my code to allow for the inclusion of PWM? as at the moment I have the steppers declared as stepper1...stepper4

and I just use stepper1.step(30); to send a signal.

Thanks again man.

RuggedCircuits

Quote
I can use 4 of my analog pins to output analogWrite(127); to the EN pin of my 4 motor driver chips, and this will reduce the voltage by half?


Yes, that should work. It reduces the effective power to the motors, not the voltage, but that's splitting hairs.

Quote
And it seems to me that inductance is determined by the size or space between the coils? If so, how do I know how low/high my sizes should be?
Or is this just something you learn with experience?


Inductance is a property of the motor coils. Generally the more powerful the motor the greater the inductance. What matters most is the ratio of inductance to coil resistance (L/R). If this value is small then you can have problems for low PWM frequencies. Your L/R is 0.046/34=1.4ms so as long as your PWM frequency (not duty cycle) is around 1/1.4ms=730 Hz or faster it should be OK, and I seem to remember that's what the Arduino analogWrite() frequency is (or thereabouts).

Quote
Finally, I've been using the Arduino stepper library, do I need to rework my code to allow for the inclusion of PWM? as at the moment I have the steppers declared as stepper1...stepper4


No changes should be required as the stepper library just controls the step sequencing. It doesn't do anything with the ENABLE lines in a typical bipolar motor setup. Those are under your control.

--
Beat707: MIDI drum machine / sequencer / groove-box for Arduino

MarkT

In general high performance stepper motors just quote the current and inductance - it is assumed they will be current-driven rather than voltage driven.  Typical high-performance stepper controllers run from anything upto 50V using PWM to step down to the actual voltage required (which depends on the actual motor speed).

Stepper motors with a high resistance winding like yours are designed for ease of control (voltage drive) rather than motor performance (high speed and high torque).  Yours is rated for 12V, drive it from 12v to get its rated behaviour.

The main rule is don't exceed the rated current (this can cause overheating and/or magnetic saturation) - so you can improve things by moving to a current-controlling PWM driver circuit (set for a max of 0.33A, 12V or more), but don't use a direct (non PWM) driver greater than 12V.  Because of the high-inductance high-resistance windings the max speed will not be as high as a high-performance motor.
[ I will NOT respond to personal messages, I WILL delete them, use the forum please ]

MarkT

Quote
I am using 16 pins connected to 4 LN93NE motorcontrollers.


By the way google doesn't know that device.
[ I will NOT respond to personal messages, I WILL delete them, use the forum please ]

Daanii


Your L/R is 0.046/34=1.4ms so as long as your PWM frequency (not duty cycle) is around 1/1.4ms=730 Hz or faster it should be OK, and I seem to remember that's what the Arduino analogWrite() frequency is (or thereabouts).


Unless changed, the Arduino PWM frequency is 500 Hertz.

MarkT

The standard Arduino runs timer0 as fast PWM and timer1/timer2 as phase-correct PWM.  They are all set to divide-by-64 prescale - this means that pins 3, 9, 10, 11 are about 500Hz and pins 5 and 6 are about 1kHz.  It could be worthwhile increasing the frequency by reconfiguring the prescale values.
[ I will NOT respond to personal messages, I WILL delete them, use the forum please ]

Skorb

#13
Apr 05, 2011, 04:19 am Last Edit: Apr 05, 2011, 04:43 am by Skorb Reason: 1
Sorry about that MarkT the motorcontroller is actually an L293NE.

My teammate has rigged up 4 L7812CV http://www.alldatasheet.com/datasheet-pdf/pdf/22640/STMICROELECTRONICS/L7812CV.html voltage regulators between a 19 volt 3.42 amp and the 4 motorcontrollers. Is this a possible way we should go about incorporating a more powerful power supply into the circuit? We were told this would work by someone at the electronics store, but when the voltage regulators are added, all that happens is the voltage regulator for the first stepper gets really really hot.

Cheers, Skorb.

RuggedCircuits

Let's see, each 7812 drops 19V to 12V and carries 2*0.33A = 0.66A hence dissipates (19-12)*0.66 = 4.62W of power.

Nope, not going to work, unless you put some decent heatsinks on them and/or put a fan on them.

Also, it's really inefficient.

I'd just leave it at 19V and use PWM....just like I suggested before :)

--
The Aussie Shield: breakout all 28 pins to quick-connect terminals

Go Up