Go Down

Topic: Controling a 3.6V 1.2A Unipolar stepper motor (Read 1 time) previous topic - next topic

gfh_gfh1

Hi  :)
I want to control a 3.6V 1.2A stepper motor,
I have an Arduino Uno R3, a breadboard, and all necessary components (including an L9110 H-Bridge)
The problem is that I can't find any solution of providing 1.2A of current to the motor through the Arduino nor the H-Bridge (It supplies a maximum current of 800mA)
How can I get the necessary current without using an external power supply? (I don't have any external power supply which will suit the project)
Thank you in advance!

MarkT

That's rather low impedance for a unipolar stepper - how many wires?  Which motor?
[ I won't respond to messages, use the forum please ]

gfh_gfh1

The motor has 6 wires, it is a 200 step motor, 103H548-0471 which is similar to 103H548-0440:

http://il.farnell.com/sanyo-denki-sanmotion/103h548-0440/stepper-motor-1-8deg-3-6v/dp/9948260

I would really appreciate your help..
Thanks!

semicolo

You will need an external supply, the arduino onboard regulator cannot provide 2.4A (max current when both phases are on), nor does the USB port.

If you want to use this motor in unipolar mode you can just drive each phase with a darlington (just like with an uln2003) or fet.
If you want to drive it like a bipolar motor you'll need a driver like a Pololu DRV8825 (or a Gecko G250X, that's more expensive but professional quality)

gfh_gfh1

Hi,
I have a few ULN2003s laying around :)
I just want to clear things out:
If I want to operate the motor in unipolar mode, can I supply the voltage through the arduino (3.3v or 5v through some resistors and diodes) and supply the current throught the arduino as well, but through a darlington array such as the ULN2003?
If I do that I don't need an external power supply?
Thanks!

MarkT

1.2A is too much - you need an external supply.
[ I won't respond to messages, use the forum please ]

gfh_gfh1

OK, so what can I use?
I have a 12V 2A power supply laying around, will it suit the project? If so, how do I convert the 12V to 3.6V?
Thanks!

semicolo

If you're using simple transistors in unipolar mode, you must use a supply that'll deliver the exact needed voltage (if using darlingtons, voltage across the transistor could be 1.5V so a 5V supply would work)
If you're using a stepper driver then you can use a 12V or more supply, the driver chops the input voltage to limit the current to a desired value.
Using a driver (like the Pololu DRV8825) is recommended if you want the best performances (speed/torque) but it really depends on what you want to achieve.

gfh_gfh1

Thank you for the answer,
can I use the ULN2003AN to drive the motor, and use the 3.3V from the Arduino and transfer it through a few darlington transistors as a power source?
I also saw somewhere that you can connect 2x ULN2003AN in darlington and double their output current..is that possible? can I use that to power the motor?
Thanks

Runaway Pancake

$63 !

Forget all that ULN stuff. 
Get some logic-level MOSFETs (IRLZ44, STP40NF10L.)

For motor supply use 3 NiMH batteries (1.2V ea.)
"Hello, I must be going..."
"You gotta fight -- for your right -- to party!"
Don't react - Read.
"Who is like unto the beast? who is able to make war with him?"

semicolo

Yes you can connect darlingtons in parallel but you better get bigger ones instead (unless you have a few unused ones of course).

And you HAVE to use an external supply, the arduino cannot push the current needed for your motor.

gfh_gfh1

#11
Jun 24, 2013, 02:55 pm Last Edit: Jun 24, 2013, 03:59 pm by gfh_gfh1 Reason: 1
Hey guys thank you so much!
I found a suitable power supply and the motor runs perfecly! really smooth and powerful  :)
but I have a problem with the software I saw somewhere, the motor keeps shaking like crazy and jiggling back and forth when running this program:

#include <Stepper.h>
// change this to the number of steps on your motor
#define STEPS 200

// create an instance of the stepper class, specifying
// the number of steps of the motor and the pins it's
// attached to
Stepper stepper(STEPS, 8, 9, 10, 11);

void setup(){ }

void loop()
{
 stepper.setSpeed(10);
 stepper.step(100);
 stepper.step(-100);

 delay(500);

}

I should say it works perfectly by using another program, I just want to know what is the problem with this program
can you help me solving this?
Thanks!

semicolo

This program is supposed to turn the motor 100 steps in one direction, this should be a half turn if your STEPS define is correct, then another half turn in the opposite direction, wait a bit and do it again.

Have a look at the definition Stepper stepper(STEPS, 8, 9, 10, 11);
if it isn't the same in the other program that works, just use the same settings.

Go Up