I purchased the 3 stepper motors from a surplus supply house for $25 each, and have been very happy with them. The fact that they include a screw drive mechanism has really simplified my mechanical construction. They are manufactured by HSI inc, and are Model 43000 external linear actuators.
The electronics that control the stepper motors on my CNC mill were purchased from Ocean Controls (An Australian company) in kit form. Specifically, I purchased
- Three KT-5158 Bipolar Stepper Motor Driver Kit for $23.50 (AUD) each
- One KT-5190 Serial Stepper Motor Controller as Kit for $50.00 (AUD) Later replaced with an upgraded version, pre-assembled for $65(AUD)
The bipolar stepper motor drivers have a “step” and “direction” input which are controlled by binary signals, and could be connected directly to a computer’s parallel port. However, I wanted to control them over a serial link, so I also purchased the serial controller kit. Ocean controls have subsequently replaced these models by more modern versions. The new bipolar stepper driver kits look to have several new features that would be nice to have. (Specifically, an “enable” line that will turn off power to the motor when you are not moving it…currently my stepper motors dissipate power and get hot to the touch even when they are not moving.) I mounted some of the drive electronics by using small pieces of plastic hose as standoffs.
I have not been completely happy with the serial control board, as it’s maximum stepping rate is 1kHz, you must start each servo with a separate command (so they don’t start at exactly the same time), and it has no way to notify a program when a movement has stopped, so you have to continuously poll the position of the steppers. Continuous polling wouldn’t be a serious problem except for the fact that whenever you issue a command it skips a step! The current model serial stepper controller board fixes these issues with a 6kHz stepping rate, the ability to issue movement commands to all four axis at once, and feedback output when motion is finished. I went ahead and purchased the improved model and look forward to receiving it. Until then, I have written a small bit of python code that issues movement commands and waits until they are finished before moving to the next movement command.