Stepper Motor Controller Circuit and Driver Software
Part of my amateur electronics hobby, this project was really fun. The Stepper Motor Controller circuit is designed to control up to eight stepper motors independently. I also wrote a Linux kernel module to drive the controller circuit and software to control the driver with an XBox game pad.
The Circuit
The circuit is designed with modularity so that any number of stepper controllers can be interfaced and so that different technology can be used at different stages. For example, the Stepper Controller Board is self-contained in it’s design and functionality, regardless of the computer interface or channel selection method.
- Stepper Controller Board - the controller board is designed to drive one stepper motor using logic inputs. The board features separate power supplies for the logic components and the stepper motor. This allows for the use of up to 40VDC.
- Stepper Selector Board - the selector board is designed to be externally configured for a specific channel (via DIP switch selection). Logic signals intended only for that channel are routed to the logic signal output.
- Stepper Interface Board - the interface board is designed to interface with a computer’s parallel port and route the logic signals to the selector bus.
At any point, any one of these modules can be replaced with a different implementation to suit forward development of the overall system.
The Driver Module
The Stepper Driver is a Linux kernel module. This is definitely experimental code and is offered to the public domain AS-IS.
Source tar ball: stepper.tar.gz
More details to follow.
The XBox Gamepad Interface
The gamepad interface is designed to control two stepper motors via the Stepper Driver module. The X/Y coordinates of the right stick control steppers on channels 0 and 1. Obviously this design can be extended to support all 8 channels with the different gamepad inputs (i.e., left stick, triggers, D-pad, etc.). With multitude of gamepad inputs and stepper motor types, the capabilities of this overall system are overwhelming!
The program source is experimental as is offered to the public domain AS-IS.
Source and more details to follow.
Next Steps
Some other things I want to do with this circuit include:
- Building in radio communication so steppers can be distributed remotely
- Modifying the circuit and driver for USB - and possibly power the logic circuit with USB - the parallel port is so last century!
- Improve the driver module
Stay tuned for updates to this page.
