Stepper Motors Essay example
This is the first in a series of articles on using Forth to interact with the real world. We will explore how to control motors of various types (such as servomotors and stepper motors), switch power to devices, and sense the environment. Each article will present a project that can be used to demonstrate the ideas we are going to discuss.
In this first article, I want to lay the foundation for the future columns and discuss the use of the PC parallel port to control stepper motors. We will adopt the fantasy that we are working on some microprocessor-based control application and will be using the PC parallel port as a proxy for the digital I/O channels on our controller. To the extent possible, the code will be …show more content…
Figure Two. The interface circuit to control unipolar stepper motors from a four-bit I/O port.
Stepper motors vary in the amount of rotation delivered per step. They can turn as little as 0.72 degree to as much as 90 degrees per step. The most common motors are in the 7.5 degrees- to 18 degrees-per-step range. Many have integral reduction gear trains so that they have even higher angular resolution. The motor shaft will freely rotate when none of the coils are energized, but if the last pattern in a series is maintained, the motor will resist being moved to a different position. Because the motors are open-loop, if you do manage to mechanically overwhelm the motor and turn the shaft to a new position, the motor will not try to restore itself to the old position.
There are stepper motor driver ICs available, but these can be very expensive (as much as $20 to $50). The sequences are relatively easy to generate with a couple of TTL or CMOS chips at a much lower cost. This is the approach I typically use for most of my real stepper motor applications, since it is a good compromise between parts cost and part count, and it has a low impact on my I/O pin budget.
The easiest way to control a stepper motor is by using four bits of a parallel I/O port from a computer or microprocessor. I usually use this approach when experimenting or when the part count must be as small as