Overview and Purpose
Radio control servos (RC Servos) are inexpensive motors that can drive a number
of robotic applications. RC Servos come in all sizes, torque capabilities, and speeds. RC Servos are
controlled using an electronic Pulse Width Modulation (PWM) signal. Maintaining the electrical pulse on serial IO line can use up a
significant amount of most embedded computers' processing power, so dedicated servo control circuits
are often used.
In support of our Digital Gear OBDII product idea, we have been working with various serial port and USB APIs on different operating systems. Before working with the OBDII interface, which is moderately complex and unreliable, we needed to develop and test our serial & USB frameworks using a simpler application. We decided the best way to do so would be to play around with various servo controller ideas.
FerretTronics FT639 Controller
FerretTronics makes small electronic components for robotics related applications. One of their products, the FT639, is a small integrated circuit (IC) for RC servo control via an RS232 line. The FT639 requires a simple support circuit, and uses an easily understood protocol. Sending a single position command to the FT639 causes the FT639 to automatically position the servo and maintain the correct signal pulse.
Electronics and circuits are not a well developed skill at jgs-technical, and so building the circuit, simple as it was, required some significant learning and inhalation of solder fumes. Initially, we built the circuit on a hobbiest breadboard. After playing around with it for a while, we used the printed circuit board supplied by FerretTronics, and built the circuit and components into an enclosed plastic box, with external power and serial port connectors. In this arrangement, the module can be used to control up to five servos. In retrospect, the only thing we would have done differently regarding the electronics module, is build an opto-isolator into the circuit to prevent ground loops between the computer's serial line and the circuits power supply. (This would normally not have been a problem, however, we've found certain laptops do wierd things to the serial line when running on batteries versus AC power.)
On the software side, FerretTronics provides a Java based SDK using the JavaComm APIs. We wanted to experiment with the serial APIs on a number of operating systems though; this was the reason for starting this project in the first place. So far, we've written a working FT639 control frameworks for the Win32 API implemented with C++, and our own framework using Java. We've also started working on a POSIX based framework for Linux, and a derivative of the Win32 framework that runs on the Pocket PC 2002. The Pocket PC 2002 is our ultimate goal since this is the target platform for the handheld version of Digital Gear. However, the Pocket PC serial and IO APIs have a number of limitations, and working around them has been difficult so far.
Coming soon. The demo consists of a web interface implemented with Flash MX allowing remote
control of a pan-tilt platform. The pan-tilt platform is mechanized using two RC servos connected to the
FerretTronics circuit described above. Strapped to the platform is a web camera. The video
stream from the web camera will be streamed using Flash MX Communications server. The web interface
and corresponding server-side component has a queuing mechanism, insuring only one user is in control of the platform at any one
The current pan-tilt mechanism is custom-made of wood. (Another side project in itself for us.) The wood platform, superbly built as it is, tends to wobble for a second or two after a quick servo movement. Eventually, a
pan-tilt kit from Lynxmotion might be used instead.