Step in time, step in time
Come on, mateys, step in time
Step in time
Step in time, step in time
Step in time, step in time
Never need a reason, never need a rhyme
We step in time, we step in time

"Step In Time"
Robert B. Sherman and Richard M. Sherman
Driving a stepper motor is a bit more complicated than driving a regular brushed DC motor. Stepper motors require a stepper controller to energize the phases in a timely sequence to make the motor turn.

Simple Unipolar Driver

The simplest type of driver can be built with a handful of transistors. These are simply switched on and off in sequence to energize the phases and step the motor. Unipolar drivers are relatively inexpensive to build, but only work with unipolar motors. There is an excellent tutorial on how to build one at the Arduino site.

Simple Dual H-Bridge Driver

Driving a bipolar motor requires 2 full H-bridges so it can reverse the current to the phases. H-bridges can be tricky to build from scratch. But there are plenty of H-bridge chips available to simplify the task.

The L293D is one of the most popular and economical chips. These can be found at the heart of most first-generation motor shields, including the incredibly popular V1 Adafruit Motor Shield.

There is an excellent tutorial on using a bare L293D with an Arduino in the Adafruit Learning System:

Adafruit Motor Shield V2

The Adafruit Motor Shield V2 is a big step up from the basic L293D based controllers. The V2 shield uses two TB6612 MOSFET drivers. Compared to the L293D, the TB6612 offers twice the current capacity and much lower voltage drops to drive your steppers more efficiently.

With 2 driver chips and 4 full H-bridges total, each shield can drive up to two stepper motors. The driver chips are interfaced via a dedicated PWM driver chip with an I2C interface. This frees up lots of GPIO pins for other uses, and makes the shield stackable too. You can stack up to 32 of them to control 64 motors with just 2 IO pins!

Compete details of this driver can be found in the Learning system.

Advanced CNC Controllers

The gShield and TinyG CNC controller boards take you one step closer to industrial level stepper performance. These boards feature constant-current "chopper" drivers that can be tuned to deliver maximum torque and speed from your motors.

The TinyG CNC features an on-board G-code interpreter and 4 motor outputs making this a complete embedded solution for a small to medium sized 4-axis CNC machine.

As you might expect, these advanced, high-performance boards are more complex to work with and are recommended for experienced users.
Details on these boards and their operation can be found in the TinyG Wiki and the Synthetos Forums.


This guide was first published on May 05, 2014. It was last updated on Mar 08, 2024.

This page (Driving a Stepper) was last updated on Apr 26, 2014.

Text editor powered by tinymce.