A stepper motor

The goal for this week is to prototype the driver circuit for the two stepper motors. Check out the Make It Last Build Series landing page for full info, prize details, and info about the first two builds in the series.

A pin of a microcontroller can source enough current to power an LED, but not much else. It is best to think of the voltage at the pin as logical high or logical low signals, not as voltages that can provide current to a circuit. For a load larger than an LED (i.e. 20 mA or so) we will need a driver circuit to provide power to the load. The Drawbot stepper motors will draw significantly more than 20mA each!

Depending on the application, the driver can be as simple as a transistor or a MOSFET. In this project we will need to drive two stepper motors, which can be done simply with eight transistors. A better solution for an inductive load (i.e., a motor) is an H-Bridge. Let’s review all of the parts needed this week:

  • 4x 10k resistor (Digi-Key 10.0KASCT-ND)
  • 4x 1k resistor 1/4 W (Digi-Key P1.0KBACT-ND)
  • 2x H-Bridge IC SN754410 (Digi-Key 296-9911-5-ND)
  • 1x MCP1702 regulator (Digi-key MCP1702-3302E/TO-ND)
  • 4x switching transistor (Digi-key PN2222AD26ZCT-ND)
  • 1x AC/DC Power Supply 5V 2.5A (Jameco 252736)
  • 2x Stepper motors 400 steps/revolution (Jameco 1581231)
  • 2x more breadboards and hookup wire

Before we get into the details of the driver circuit, let’s look at how a stepper motor works.

Stepper motor states

A stepper motor is a type of electric motor driven by a ring of electromagnets around a geared iron shaft. The electromagnets are alternately energized, pulling the next gear on the shaft into place. The order the magnet windings are energized to make the motor rotate continuously is shown in the illustration above.

Stepper motors come in two flavors: unipolar and bipolar. Bipolar motors have four wires, and unipolar motors have six wires (and can also be used as bipolar motors by ignoring two of them). The main considerations when selecting a motor are:

  • the number steps per rotation, typically between 45 and 400 steps (note that this is usually expressed as “step angle” where 360/stepangle = number of steps).
  • voltage required to energize the coils, which could be anywhere from 5V-24V
  • the current drawn by the motor, which could be anywhere from 500mA to 1.5A
  • the holding torque of the motor

The motor I selected for the Drawbot is a 400-step unipolar motor (which we will use as a bipolar motor) that draws 900 mA at 5V. This choice sacrifices current efficiency for very high resolution (number of steps) at an affordable price ($20).

For more about stepper motors, see Tom Igoe’s page, which also has sample code for Arduino and the Basic Stamp.

Follow the Drawbot build by signing up for the weekly newsletter at the Make It Last landing page.