A stepper motor driver can be purchased for around $15
, or one can be programmed on a microcontroller. The microcontroller option is cheaper, and allows us to add features that may not be available on a driver circuit. An ATtiny2313 is again chosen to drive the stepping sequence of the motor. Programming a step limit allows us to tell the motor how far it is required to turn before stopping. A general stepper motor driver was written in C for the ATtiny2313 and several input pins were used to determine various factors about how quickly, and how far the motor would turn. Limit switch inputs were also included in the code as a means of redundantly stopping the motor from turning past its desired bounds.
To provide the motor with enough power to turn a ULN2803 eight Darlington array with a common emitter was used to sink power through the motor terminals. Although only four of the eight Darlington pairs are required to drive the stepper motor a person can use the extra four, and the unused four digital I/O lines on the ATtiny2313, to drive a second motor at the same time for use on a future subsystem. The pinout of the ULN2803 Darlington transistor array can be seen above
The block diagram for this subsystem is shown above as well.