Controlling DC Motors from your Linux Box
Oct 06, 2010, 12:04 (1 Talkback[s])
(Other stories by P. J. Radcliffe)
"Linux is the best general purpose operating system for
controlling hardware. It allows fast and well-controlled access to
Input/Output ports such as the parallel port and serial port as
well as plug in cards. The Linux Gazette has two good articles on
how to achieve this, see [1] and [2]. If you need real time
response, consider the RTAI extension of Linux, again Linux Gazette
has some very useful articles that use RTAI to achieve motor
control [3], make a stroboscope [4], and use a joy-stick to control
servo motors [5] .
"Many of these approaches rely on direct access to ports such as
the parallel port, but this is becoming increasingly difficult as
laptops and newer desktops rely on USB as the sole input-output
(IO) mechanism. Hardware access via USB requires a plug-in USB
module that translates USB to basic digital IO, and if possible
analogue IO. These boards are relatively cheap, starting from about
US$35. It's also possible to build your own USB interface based on
Open Source designs such as VUSB [6] .
"In this article we will show you how to use a very flexible USB
interface board called Open-USB-IO [7] to achieve speed control of
a DC motor without any form of shaft encoder. Open-USB-IO provides
a lot of options for a very reasonable price. Notable hardware
interfaces include digital IO with switches and LEDs, analogue
inputs, three channels of PWM (Pulse Width Modulation), a serial
port, and seven open collector drivers for motors. The USB stack is
written in C that runs on an ATMEGA32 microprocessor; remarkably,
you can add your own code to the USB code and then use a symbolic
debugger to debug that code. Open-USB-IO hardware can thus be
controlled from code running on the Linux box as we will do in this
article, or from code that runs on the ATMEGA32 microprocessor (if
we get enough requests to the editor I will write an article
showing how to write and debug code on the microprocessor from the
Linux environment). The web site also has an extensive manual with
many examples, and the full circuit of the board."
Complete
Story
Related Stories: