Turn that $3 RC-servo into a powerfull bi-directional motor!

2.JPG (349526Bytes)
3.jpg (284863Bytes)
4.JPG (279116Bytes)

RC-servo to motor conversion


This is a smart little trick i had read about in the magazine "Elektor Electronics" a year ago.
In 15 minutes you can turn your cheap servo into a very suitable motor to drive the wheels of a robot.

the purpose of a standard servo is to bring the shaft into a certain position and to keep it there. the position depends on the duration of the digital pulses given to the servo on its input. A 1.5ms pulse tells the servo to go to center and stay there. If we make the pulse duration 1ms then the servo will attempt to turn the shaft to the leftmost position, and a 2ms pulse turns the shaft to the other end.

For position measuring, the internal electronics uses a potentiometer mecanically coupled to the shaft.
The shaft is also limited to 120-180' of turning, because of a mechanical end-stop.

For this modification we must fool the servo's position system into believing that the shaft is at its center position all time, and if we remove the end-stops, the servo wil turn forewer in the direction we tell it to go, and a "go to center position" will make it stop instantly.

Step 1 -open up the servo

there is normally 4 long screws at the back that keeps the whole thing together. Once open be careful not to loose the small gears and pins.

Step 2.
Locate the end-stops, in my case it is the small plastic tabs on the main output gear. look at the picture below where the screwdriwers tip is pointing. Remove those tabs with a sharp knife or something.



Step 3.
Locate the potentiometer that is coupled to the output gear. you may have to remove all the other gears now, so be carefull not to loose them.


remove the leads from the potentiometer and solder in a voltage divider made up of two identical resistors. 10Kohm is fine but the value is not critical.
IMPORTANT: the lead in the center of the potmeter has to be in center of the resistors



Now for the difficult part. try to make room for the resistors with the electronics board. In my case i had to include the old potmeter because the output gear was mounted directly on its shaft. Reassemble the whole thing and that is it!

Find a flat round shaped disc to use as a wheel and mount it on. You now have a reduction-geared motor with a wheel that runs in both directions

I buy my servo's and other rc-stuff from www.hobbycity.com (china) its cheap and they ship worldwide, they let you fill in the declared value of the shipment yourself, so you can avoid the expensive and time consuming customs.

Yes, baby!!I have some

Yes, baby!!

I have some servos like the one on your (nice) picture.

Can’t wait for you to finish this walkthrough, and for me to get time to test it. Boy, we can make some small strong robots then!!


/ Frits

Awesome modification!

I was just wondering: can you adjust the rotation speed of the servo motors or is it just on and off?

- Jimmy

Thank you all for the great feedback.

I hope someone can correct me if i’m wrong, I have newer owned a servo that cost’s more than 8$, but I don’t think the speed can be controlled, since the motor in the servo is on/off controlled but i know the speed and strength depends of the voltage on the +5v input and the load on the shaft. in my example the servo’s speed is rated at 0.08sek to turn the shaft 60degrees at 4.8V.

However you could throw away the electronics inside the servo and connect two of the leads directly to the motor, that modification would take less than 2 minutes and the result is a conventionally motor with a reduction gear. now you can adjust the speed of the motor by adjusting the voltage (pwm control?) and the rotating speed directly, just like a normal motor.



I bought a few of these, i just modded one of them. It works pretty well.

I think you would have to
I think you would have to adjust it’s voltage to adjust the motor speed.

A servos speed can be

A servos speed can be altered.

Most commen however is to just go at full speed / as fast as the servo can go / give it a new place to be and wait for it to be there.

But more sophisticated servo controllers sets speed as well by regulating PWM.

More expansive servos also have all sorts of smart things going / control in higher resolution etc.

/ Fritsl

Speed control is possible

The servo typically works well with a pulse train whose rising edge is every 18.5ms. If the pulse is 1ms in duration, that will cause the motor to stay still. The sorter you make teh pulse width (down to abotu 500us) the faster it will go in one direction. The more you increase the pulse width path 1ms (to about 1500us), the faster the motor willrotate in the other direction.

I suppose, in a way, this is pulse width modulation in that you’re modulating the width of the pulse, but when you mention PWM to most people, what they’re concerned about is the ratio between the high part of the pulse an the low part. Very often this is translated into a DC voltage. With the servos, the pulse rate is less critical. I’ve worked them between 5ms and 20ms. Futher, there doesn’t appear to be a relationship between the length of the “on” and the length of the “off”: all that matters is the length of the “on.”

Yes, but you’d need to build an H-bridge, or use a ready-made motor controller if you wanted to reverse it.

resistors value

I just did the thing using 330 ohm restistors and probably due to ‘little’ differences in their value it’s not that easy to stop the servo. The voltage divider is not accurate, I quess… Command ‘servo 0, 157’ turns the servo one way and 158 turns the other :slight_smile:

So supposinlgy using such resistors like 10 kohm seems to be a really good idea because then the little differences in resistance don’t matter that much (that’s just my theory)

Don’t repeat my mistake folks and use something around 10 kohms :wink:

where do you get these
where do you get these little servos?

try these






Speed control is possible!
Im using the cheap Topline S-035 servo from Conrad for driving my robot arround. Centered the pot (at 1000 pulse) and am able to regulate the speed by changing the servo pulse in the code… Forward and backwards. This way i tuned my code to make the robot drive exactly straight. So its possibe to control the speed of a servo. Using only 1 I/O of the PIC microcontroller.