A Servo for the LegoŽ RCX!
I have modified a Futaba S3003 servo and had it controlled directly by the RCX using a software driver (an NQC program). This modified servo connects to one of the RCX motor outputs and one of the sensor inputs (configured as passive TOUCH_RAW).
The feedback signal from the servo to the RCX is the voltage across the servo's potentiometer. It registers readings in the range 20-320 (which means that you can still connect a touch sensor to the same RCX input port for say, a bumper application).
The output from the RCX powers AND controls the servo's position simultaneously! This is done using a software driver. I should note here that the key to making the servo work properly (i.e., fast, accurate, and stable response) is by providing it with the proper software control (driver). It turns out that the Off('motor') function is very useful in preventing the servo from changing position when at rest and under load.
Based on a simple NQC driver (download test NQC software).
Performance can be improved with a more sophisticated software driver (based on control theory) that regulates the position of the servo .
- 180 degrees rotation.
- Good response speed.
- Stable (slight damped-oscillations when servo is unloaded).
- Resolution: Roughly speaking, a resolution close to 22.5 degrees is attainable with good uniformity. This allows for 9 angle settings (see movie).
- Power: driving the servo at power levels up to 9 Volts is unusual. The RCX is capable of supplying the needed current to drive the servo but should do that for brief moments. Fortunately, once the servo reaches its reference angle, no power is drained.
-Torque: servo was able to attain all 9 reference angles with a 16 oz load dangling from the edge of a 3/4 inch arm connected to the servo axle (see movie).