When we need precision and repeatability, a stepper motor is always the solution. With the way it is designed, a stepper can only move from one step to the next and fix in that position. A typical motor has 200 steps per revolution; if we tell the motor to go 100 steps in one direction, it will turn exactly 180 degrees. It gets interesting when we only tell it to go one step and it turns exactly 1.8 degrees.

Stepper motors are found in printers, scanners, industrial robot arms, 3D printers, and pretty much in every precision motion device.

There are two types of stepper motors: unipolar and bipolar. Unipolar stepper motors are easy to control at the cost of low efficiency and power. Bipolar stepper motors have much higher efficiency and torque; however they are much harder to control. To fully control one, two H-bridges are required. Luckily there are multiple Arduino compatible bipolar stepper drivers out there. Here we will explore a few options.

We can control a bipolar stepper motor using the Arduino Motor Shield. Here is what we need:

An Arduino board connected to a computer via USB

An Arduino Motor Shield

A bipolar stepper motor, available at Sparkfun, Pololu, Adafruit or in an old printer.

This is a simple guide on identifying the type. A four-cable stepper motor is usually bipolar. With six cables, it is most probably unipolar where the two center coil cables have to be connected together. There are some versions with only five cables that are also unipolar and already have the two center coils connected together internally. Also, there are stepper motors with eight cables, but they are incredibly rare. They are also unipolar and the four center cables have to be connected together.

This instructable and many more can be found in my Arduino Development Cookbook available here. :D