This article is from the Robotics FAQ, by Kevin Dowling email@example.com with numerous contributions by others.
The easiest way to do this is to hit your R/C hobby shop and buy a
servo reverser. This is a dedicated electronic module that plugs
between the servo and the controller (usually the R/C receiver) and
processes the pulse to "reverse" it. Basically, the device uses a 3
msec one-shot and an XOR gate. If your local hobby shop doesn't have
them, check Ace R/C catalog. See ads in any R/C magazine.
A harder way is as follows: You have to reverse both the motor and
the potentiometer leads.
It would be much easier to reverse the control input. All modern
radios have "reverse" switches for all channels. In the past you
could have one of 3 solutions:
1. Live with the servo as-is. Design your model with the servo
direction in mind.
2. Some companies had "reversed" servos. Probably no longer
3. Use a gadget between the receiver and radio that reverses the
servo. Possibly a single 4538 (Motorola MC14538) with 2 resistors,
3 capacitors and a trimmer pot.
4. Modify the servo. This is the most difficult and least desired
solution. Impossible if the motor is soldered directly to the PCB
(seen in some servos). [from Itai Nashon]
The following article is an excellent source on servo facts and a
PIC-based circuit to control R/C Servos. (See the Microcontrollers
Section for more info on the PIC)
The Juggler's Delight: PIC-based Controller For Up To Eight Servos
by Scott Edward. The Computer Applications Journal, October 1994 p14
[A kit is available as well for the circuit, including PC board,
10.2.1 RC-Servos: How can you control a servo from a parallel port?
From Stew Bailey (firstname.lastname@example.org):
With one of the PC's internal timers cranked up, it is possible to
control eight servos from a common parallel port with nothing but a
simple TSR interrupt service routine and a cable. In fact, power can
be pulled from the disk drive power connector and the PC can run all
servos directly with no additional hardware. The only down side is
that the PC wastes some processing power servicing the interrupt
10.2.1 RC-Servos: How can you implement force servoing with RC
From Dave Hershberger, email@example.com
I successfully built a force-feedback circuit for my Futaba hobby
servos. I took the back off the servo case to expose the solder
side of the control PC board, and using my scope with the servo
active, I looked for contacts whose signal looked like it varied
with how much work the motor was doing. I found 2 pulse-width
modulated signals which correspond to the difference between the
command signal and the current shaft angle, one for each rotation
The signals are not logic-level, but vary between, say, 1 and 2
volts, so I built a simple comparator circuit to convert these to
logic level. I fed these into my 68HC11 and used the Input Compare
feature to measure the timing.
To connect to these points, I used some thin stranded wire and
soldered directly to the PC board in the servo. Obviously you need
to be careful when doing this to avoid damaging the servo. Then I
threaded the pair out through the same hole that the control and
power wires use.
One thing to keep in mind with this setup is that it measures the
error signal, not the force. Therefore when you tell your servo to
move to a different angle, you'll get an error signal for a few
wavelengths until it is able to turn the shaft to the new position,
even if there is no resistance to the movement. If your software
can take this into account, it works fairly well.
There's also the problem of saturation - if the external torque on
the servo shaft is actually turning the shaft against the motor,
the error signal will be saturated, and you won't know how much
past saturation you are.
10.2.1 RC-Servos: How to implement RC servo control from a
Microcontroller like the HC11?
This is commonly done with the HC11. The simplist method uses a 32mS
pulse, which works with all RC servos I (Tom) have tried. This is
the natural roll-over time of the free-running clock (FRC) (assuming
an 8MHz XTAL). The output-compare IO lines can be configured to go
high on the FRC roll-over, and then to go low when their set value
matches the FRC. With this set up, just place the correct value in
the timer's compare register and the PWM signal is generated; no
If you want to generate PWM with 20mS, you can set up an interrupt
to go off after 20mS, set the output line(s) high, and set the
output compare(s) to the current time plus the desired offset. Then
set the next interrupt to occur after another 20mS. Still pretty
For code examples, check out the TRP2 and TRP3 files in:
ftp://cherupakha.media.mit.edu/pub/incoming/ This is the
code for 2 articles Tom Dickens wrote in The Robot Practitioner.
Commercial controller for RC servos:
401 E 17th St Suite B
Costa Mesa, CA 92627
Pontech has a SV100 Servo Motor Controller which is based on the PIC
16C84 microcontroller. It accepts RS232 serial data signal from a
host computer and poutput PWM to control up to four RC servo motors.
Multiple boards can be parallel together to allow more servos. They
also sell FUTABA FP-S148 servos. boards: $49.95, servos: $16.95, +
$5.00 shipping and handling "Vantec "
460 Casa Real Pl.
Nipomo, CA 93444
Design and manufacture of Electronic Systems for remote control
mobile robots and vehicles. Vantec makes a servo control that has
been used successfully in this type of application and can be used
for velocity or position closed loop control. We can also modify R/C
transmitters for operation on special frequencies. contact: Rich