I purchased a unipolar stepper motor at Jameco P/N 238538.
I am trying to drive this with an Arduino Uno and a ULN2003A. I have figured out the order of the coils as I have successfully been able to run the stepper motor SLOWLY at about 60 RPM's.
But I cannot make it go any faster than about 60 RPM's. I have written my own code, and I could not speed up the motor. So I used the example code with the Stepper library, and that didn't work. I have tried using port assignments to speed up the "switching" algorithm. But NOTHING WORKS!!!
The 238538 is rated for up to 600 RPM's and 200 steps per revolution. I really would like to drive the stepper motor at about 120 RPM. This equates to about 2.5milliseconds per step. But when I change the delay between steps any shorter than 10milliseconds, the motor will hardly turn.
I am using the most basic circuit for the Arduino Uno and ULN2003A...see attached JPEG.
So what am I missing???? How do I get this motor to turn faster.
Also, the torque seems a bit weak.
I am driving the common with 12VDC. Everything is grounded as I have double and triple checked.
I have figured out the order of the coils as I have successfully been able to run the stepper motor SLOWLY at about 60 RPM's.
I suspect you do not have the coil order correct... the usual symptom of that is "vibrating not running" at maybe 20 steps/second. What do you see at some speed like that??
You would be better off using that as a bipolar motor -- just leave the winding center taps unconnected (especially to each other) and run it at 24V (or higher) using a modern bipolar motor driver. That will give you much larger torque, as all windings are energized at once, rather than just 1 of 4.
Use a much higher voltage power supply (as high as the driver will allow) to obtain even better performance, but be sure to set the current limit correctly.
However, if you want a fast stepper, that is not a good choice. You need a low impedance stepper with winding resistance on the order of a 1-3 Ohms, a high voltage power supply and an appropriate driver.
Everything you ever wanted to know about stepper motors can be found at Jones on Stepping Motors
ULN2003:
500-mA-Rated Collector Current (Single Output)
I think that could be a problem when you try and drive multiple coils at one time.
Also, with IC = 300 mA, voltage output across the open collector to Gnd can be 3V, with 400mA even higher.
Unipolars are slow. That's why they are seldom used these days as bipolar low-impedance motors perform
way better (but require complex electronics to drive them, which weren't available cheaply 50 years ago)
The basic issue is that a stepper motor is a 50 pole-pair motor, so that even modest rotation rates lead to
very high AC frequencies in the windings (in the kHz range), such that the self-inductance of the windings
limits the current from 50rpm upwards and reducing torque rapidly, if the windings are high impedance for
12V or 24V operation.
The solution is to drastically reduce the winding inductance by using low impedance windings (1 ohm or
so, a few mH of inductance), and to use current control, not voltage control. A typical bipolar stepper
might be driven at 2A, from a 48V supply - only 2V is needed at low speeds, but as the motor speed increases
the inductance increases the voltage needed to the limit of 48V, at which point the motor looses torque
again with speed, but at 1000's of rpm not a 100 or so. (This is all somewhat simplified, many factors come
into play)
Stepper drivers are efficient by acting as buck-converters with programmed output current. A simple 24 ohm
100W series resistor could be employed instead in my example, wasting vast amounts of power, and indeed this is
how old unipolar motors were made to go fast, a power resistor farm to act as current-limiting elements.
When I run my code, the NEW bipolar motor also runs SLOW and is EXTREMELY WEAK...NOWHERE near the listed spec's. I have tried my own code as well as published code from the Arduino examples and I still experience the same issues. WHAT AM I MISSING???
Okay. I had a Sparkfun Easy Driver Stepper Motor Driver P/N ROB-12779 "laying" around my office that I purchased about 5 years ago but never used. I connected this to the Jameco P/N 237472, wrote some additional code for the Arduino Uno, created the circuit below from the Hookup info on the Arduino website, and it worked MUCH better...but still NOT great.
So I went back on Jameco's website and found a LOW IMPEDANCE stepper motor P/N 2158531 (Thank you MarkT). I did not select this motor previously because its current requirement was too high for the L293D. I ordered one of these motors from Jameco and should take delivery early next week.