SLOW Unipolar Stepper Motor

Hey Everybody,

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.

TIA,
--Neal
driver-ic-of-motor.png

driver-ic-of-motor.png

Hi,

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??

Take a look at info HERE

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.

Find a better driver chip.

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.

I purchased a bipolar stepper motor from Jameco P/N 237472.

I also purchased some L293D driver IC's.

I created the circuit based upon THIS YOUTUBE VIDEO.

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???

TIA,
--Neal

You're losing a lot of voltage drop to the L293D.
Raise your power supply voltage, or get a better driver

Avoid L293D and L298 motor drivers. They are old and weak.

geometrix:
I purchased a bipolar stepper motor from Jameco P/N 237472.

No, that's not a low-impedance motor, you choose poorly

I also purchased some L293D driver IC's.

Those are not constant current stepper drivers, not suitable at all.

Have you actually absorbed jremington's reply #2? Its all in there...

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.

I then looked at the modern stepper drivers (Thank you JRemington). I ordered a Pololu A4988 Stepper Motor Driver Carrier, Black Edition that can handle the current...up to 2A per coil.

I think that these purchases should fix the problem.

Thank you everybody for your suggestions and I will provide an update as soon as I receive the motor and driver.

Thank You,
--Neal

Thanks to TerryKing228 and CrossRoads as well for your suggestions as well :slight_smile:

it worked MUCH better...but still NOT great.

Hi Neal, Glad you are learning stuff and moving forward!