Selecting a stepper motor

When choosing a stepper motor, is there anything I should be aware of regarding unipolar/bipolar, number of wires, etc...

Are some easier to interface to the Arduino than others?


Unipolar steppers (5 or 6 wires) are a little easier to interface.

Bipolar steppers (4 wires) generally have more torque.

The software part is more or less the same.

If you can find old printers / scanners / fax machines there are usually one or two steppers inside.

If you use a chip like the ULN2003 you're limited to uni-polar steppers; if you use the L293D (or equivalent, like the SN754410NE) instead, you can run uni-polar and bi-polar motors with the same code.

i found a stepper in my old printer, and it had 4 wires, but i tried putting inj voltage and it never worked... and i even tried looking for a data sheet, but none...

i cant figure out how to work the damn thing


Stepper motors don't work with single dc voltage. Needs correct order sequencial bits.

take a look at this

Aside from driver requirements, you should probably keep an eye out for coil voltage, rated current, and number of steps per revolution. Particular values aren't that important, but they need to match what you have and what you need...

Do you have the make and model number ?

I have found (hard work :-) ) quite a few datasheets for steppers from old printers, maybe i have the one you need.

This site

and here

has very good information on using stepper motors. It's focus is on controlling them with a PC's parallel port, but thats basically the same as using digital pins on the Aduino board.


Old printers like ImageWriters and early Laserjets, as well as 5.25" disk drives, are great places to salvage steppers from.

In the older machines, you can often get a matched motor driver as well, which saves a lot of extra work. A stepper driver will typically have two inputs, labeled STEP and DIR[ection]. DIR set to logic hi or lo will set the rotation direction of the motor clockwise or counter-clockwise, while each logic pulse to STEP will advance the motor one step.

A regular electric motor commutates itself mechanically to produce continuous rotation. You can't easily use a plain old DC motor to turn a shaft precisely 1/4 turn. Steppers are designed to do just that; to do it you need to commutate the signal in the driver circuit.

If you are just playing, a small unipolar or bipolar stepper can be controlled directly by an Arduino, and this will teach you a lot about how these work. The big difference between unipolar and bipolar motors is that in bipolar motors, current in the motor coils flows in both directions, while a unipolar only goes one way. The result is that all 4 coils in a bipolar motor are hot all the time, while in a unipolar motor, only 2 coils are active at any one time, so there is less electromagnetic force generated and thus less torque. The basic rule is that all unipolar motors can be driven by a bipolar circuit, but a unipolar circuit can only drive a unipolar motor.

Besides the basic type, steppers are rated according to: - Resolution, typically in degrees. 1.8 deg/step (200 steps/revolution) and 7.5deg are very common. This tells you how fine the positioning ability is.

  • Holding torque, given in newton-meters (NM) or ounce-inches. If the load on the stepper exceeds the holding torque, problems will occur. A slight overload will cause "lost steps" when running, which cause inaccurate positioning. Past that, the motor will stall completely. Holding torque is rated at 0rpm, and decreases rapidly with speed. Spec sheets may also refer to "detent torque," which is the mechanical resistance of the motor without power. This is usually irrelevant to the hobbyist.

  • The electrical characteristics: coil resistance, max current, and nominal voltage. You can actually feed the motor far more than the rated voltage, but then you need to control the current either through PWM (aka a "chopper driver") or a limiting resistor. If you drive the motor over current for too long, it will overheat and fail. However, with current limiting, you can feed in 5-10x rated voltage and get the same torque at much higher RPMs, so this is often recommended. At rated voltage or below, the coil resistance will take care of the current for you.

Even relatively small steppers can often sink 250-500ma, so an external driver circuit is almost always used. The simplest ones I know of are unipolar drivers based on the L297 chip. This controls the commutation so you can drive the motor with STEP and DIR signals from an Arduino. Add 4 TIP120 FETs and 2 power resistors and you can drive a ~2A unipolar motor pretty easily for $20 or so. Add an L298 and power diodes for an H-bridge and you can drive bipolar motors. There are also many newer chips like the ULN2003 which can have many nice features but are sometimes more fidgety to use.

A good place to go for more info are the various DIY CNC machinery sites out there like There are a number of very well-developed suppliers as well as open designs for stepper drivers. is where I got the kit I use for my router and milling machine.