![]() |
|
Variable Speed Control Modification
Lee Buse (c) August 2000 (Edited by Steven D. Kaehler)
Note: Making the physical and electrical modifications described in this article to a
RC servo will void its manufacturer's warranty. The author makes no
guarantees regarding the success or suitability of this modification for any particular
application or purpose. The reader takes full responsibility for the success or
failure of the servo to perform as indicated or described. In other words, perform
this procedure at your own risk.
Introduction
The Radio Controlled (RC) servo
is an ingenious device that allows remote, proportional actuation of mechanisms by the
simple movement of a lever on a controller or the software of a robot. For hobby
robotics, this enables scanning sensors, walking machines, animatronic devices, and a host
of other interesting moving machines. With a simple hack, these servos
can be converted from proportional actuators to drive motors. This is especially
nice since they come complete with interface electronics, and can be directly connected to
and controlled by a microcontroller's I/O port. Unfortunately, one limitation of
these wonderful little gadgets has been speed control when used as drive motors. By
design, servos drive to their commanded position fairly rapidly. So the command
input normally provides only full forward, stop, and full reverse control of the drive
motor, with nothing in between. This article will describe in detail how you can
modify a commonly available servo (Futaba S3003) such that good variable speed
control will not only be possible, but very practical. With proper technical
data (or dumb luck), this technique can be applied to many different brands of servos.
RC model servos are fairly sophisticated devices that incorporate both position and speed feedback with a goal to provide precise position control. In normal use they compare the 1-2 ms, 50 hertz (50 Hz, 5-10% duty cycle) input pulse signal with an internal linear pulse generator controlled by the feedback servo position potentiometer (pot.) and by the motor back-EMF (voltage generated between power pulses) which is used as a speed sensor. See Figure 1. The difference in pulse width (the error signal) is then "amplified" with a pulse stretcher. This circuit provides the servo control gain. The pulse stretcher output drives the servomotor through an H-bridge circuit to close the servo loop. The speed sensor feedback is normally used only to stabilize the position of the servo so the servo drives quickly to its commanded position with minimal overshoot. Figure 1 shows the S3003 circuit diagram along with the circuit functions believed to be in the BA6688.
Figure 1 - The inside of the S3003 RC servo and the speed control modifications
The Technical Details
When the servo is hacked by replacing the feedback position pot. with fixed equal value
resistors, only the speed control response remains in the feedback path. The servo
now drives the motor forward or reverse when it see pulse widths less or greater than 1.5
mS. Unfortunately, the hacked servo circuit has a very narrow input control range
and is difficult to impossible to speed control accurately, though it has adequate speed
and torque. The main cause of this problem is that while the existing speed control
feedback level is adequate for normal position servo stabilization, it is insufficient to
match the 1 mS (1-2 mS) input pulse width variation when the servo is used as a drive
motor. The result is that the motor is just driven to maximum speed most of the
time.
A fix to this problem is to increase the scale factor (gain) of the speed control feedback so that the maximum motor speed range corresponds to the full 1 mS range (1-2 mS) of the input signal. Since this increases the total servo loop gain by the same factor, the servo will tend to become unstable. That problem can be solved by decreasing the pulse stretcher gain by a similar factor. The result is a well-behaved speed-controlled servo drive with full-range speed control, good torque, and stable operation.
The Modifications
So far, I have made these modifications to a Futaba S3003 (the replacement for the S148),
a popular, inexpensive, currently available servo. They can be purchased from Tower Hobbies among others. The S3003 uses
BA6688 and BAL6686 integrated circuits for which I have been unable to obtain data
sheets. Tests indicate that the BA6688 contains the servo control circuits with the
BAL6686 as a separate H-bridge motor drive circuit. Earlier RC servo designs
combined these functions within a single chip (i.e. NE544
and M51660L).
Figure 2 shows the 330K 1/4-watt resistor attached between the motor terminal and pin 10 of the BA6688. This resistor causes am increase in the speed control feedback. Use insulation on the resistor wire and keep it down close to the board. If you are skilled at surface mount techniques, just replace the 910K resistor (just to the left of 330K, "914") with a 220K-240K surface mount resistor. The round silver button to the right of the 330K resistor is the bottom of the motor.
Figure 2 - The bottom of the RC servo circuit board with the 330K shunt resistor
installed.
Figure 3 shows the 0.1 uF 10% ceramic capacitor (yellow component next to motor), which replaced the 0.47 uF capacitor originally installed. This capacitor causes a decrease in the pulse stretcher gain. You can also see the 22-turn 5K trimpot (gray "box" with brass screw on top) in this photo. The two black brick-like objects between the motor and the trimpot are the servo chips.
Figure 3 - View of the insides of the RC servo showing the new trimpot (gray) and
capacitor (yellow).
1 ea - 5K miniature multi-turn trim pot. |
1 ea - 1/4W or 1/8W, 220K-240K surface mount or 330K shunt resistor |
1 ea - Short length (~1") of insulating sleeving for resistor lead |
1 ea - 0.1 uF <50V ceramic capacitor (good quality) |
You will need a low-power soldering iron with a very small tip to
complete these changes without damaging the board. Make you connections quickly
minimizing the board and component heating. Use solder wick to remove unwanted
solder if you accidentally create a bridge.
Very fine-tipped soldering iron |
Electronic solder (60% lead, 40% tin) |
Small tip phillips screwdriver |
Small blade screwdriver for pot. adjustment |
Needle nose pliers |
Diagonal cutters |
Step-by-Step
The following steps should be followed to convert the RC servo into a high quality, speed
controlled, gear-motor drive:
Checkout
Once you have completed the specified modifications you are
ready to test your servo. A great tool to have is a test circuit that generates the
servo pulses. The servo
driver circuit mentioned above is a simple one-IC project based on the 555 timer, and
can be built on a small protoboard. It generates a manually-controllable 1-2 mS
pulse 50 times a second (50 Hz, 5-10% duty cycle) capable of driving a servo
directly. Build it into a box with a mating connectors for your servos, and you have
a handy tool for working with RC servos now and in the future.
With your servo connected to the servo driver or pulse function generator, you should be able to operate the servo from complete stop to full speed in either direction smoothly and easilty over the 1-1.5 mS and 1.5-2 mS (5-7.5% and 7.5-10% duty cycle) range. You are now ready to put it to work in your next mini robot.
Conclusion
I hope you find this modification useful for your purposes. The modified servo has
excellent full range control and very good low speed torque. The high speed torque
however, is not so wonderful, but tolerable. The modified servo tends to behave more
like a voltage regulator than a well-tuned servo since the speed error will now be
proportional to speed and load. There are limits to what can be done to a RC
servo without a major circuit redesign. This modification accomplishes its goal,
though not perfectly.
When subjected to this continuous rotation mod, the innocuous RC servo becomes a moderately priced, full function wheel drive system for small robots, with a simple and easy microcontroller interface that can give your robot the ability to move about with great dexterity. Since the general operating characteristics of most RC servos are the same, this modification can probably be adapted to most RC servos with some adjustment of the component values.
If you are interested in further reading on what makes
RC servos tick, the following link provides more technical
information on other chips (the NE544 {older} and the M51660L) that are also
used. Also an Internet search using "RC servo" will produce an abundance
of interesting and sometimes useful links.