Sep 16

Print this Post

Modifying servos for continuing rotation

If you ever thought of better ways to control your robot’s locomotion, you might have googled and found that more and more people are using servos. But why? Well, firstly servos are easy accessible and cheap (you can buy a standard hobby servomotor for under $13). In a very small package you get a DC motor, gearbox, and feedback control system.

However, there is a major drawback of such devices. They are designed to be position-controled in a 180 degree range, which means that if you “tell” the servo to point in 90º, it will turn to that position as fast as it possibly can and will stay still. This is not what we intend to use it for, so we are doing some hardware modification to allow it to rotate continuously, but in a way you can still control which direction, and at which velocity, it turns.

There are some companies that sell servomotors already modified for continuous rotation, but they are usually more expensive, and by doing the modification yourself you lower your project cost.

A little theory

Before we start, let’s first understand how the servomotor is designed. It is controlled by a pulse signal that is HIGH for a brief time (1 to 2 milliseconds). It is not enough to connect power to the motor to make it do something. You must have some sort of circuit that generates this pulsed signal and by varying the pulse ON time (formelly the pulse width), the motor will move to a certain position in its range.

The feedback control system that I mentioned before is what is responsible to match the position of the motor to the desired position and it does that by continuously comparing both. By measuring that error = (target position – current position), the system will drive the DC motor inside to minimize that error. The more error it measures, the faster it will make the motor turn.

This is the basics of any servomotor and, really, it’s all you need to know to understand how our modification works!

The way this control system measures the current position is by a potentiometer that shares the same axis of the servo arm that you see outside. We are going to decouple them, so that if you move the arm, the potentiomenter will still be in the same position. Here is the plan:


By fixing the “measured” current position, you can change the target position around that fixed value and by doing that you will trick the feedback system by inducing a fake error. Remember: more error, more speed.

Here is a resume:

  • If your target position matches the potentiometer position, the motor will stop.
  • If your target position is higher than the potetiomenter position, the motor will turn, and more difference between those positions will make it turn faster.
  • If your target position is less than the potentiometer position, the motor will turn in the opposite direction. The same applies with respect to the velocity.

Now that you master the theory, let’s move on to the practice… :)

Let’s do some DIY!

Here is our overview:

  1. Enable the gearbox to mechanically allow for full rotations.
  2. Disconnect the feedback potentiometer from the output shaft

Firstly I strongly recommend that you do not follow this guide straightaway! What I mean is: there are lots of tutorials out there for many kinds of servos, and the difficulty of this modification varies with the servo itself. You should read some to make sure you have some safe background knowledge before you attempt to do the modification.

The first thing you need to do is remove the front cover of the servo. The screws for this extend all the way through the servo, so you unscrew them from the back. Pay special attention to how it goes back together, so you can assemble it again in the end.

The gearbox usually has some kind of end stop mechanism that prevents the servo from rotating beyond the range supported by the potentiometer. This mechanism is most commonly some kind of nub that is molded into a plastic final gear or a dowel pin in a metal gear. You need to cut or grind the nub off of the output gear, but you might need to check the case to make sure nothing interferes with the final gear.

Finally, attached to the gear that was connected to the pot is a little slot for the pot to fit in. Remove the slot from the gear, by drilling it or if you are lucky, maybe you can just pull it right out with a flathead screwdriver.

Replace the modified outer gear on the servo. Make sure the output shaft rotates continuously and the potentiometer didn’t moved! If it’s ok, then you are almost done. You may need to drill a bit more until you can separate completely the gear from the pot.

Next, reassemble the gear train as it was before. Then replace the front panel on the servo to hold all the gears in place and screw back the cover.

Congratulations! You now have a full-rotation servomotor to use in your projects.

Leave a comment if you are having trouble or just to give your opinion ;)

About the author

Ricardo Dias

Ricardo Dias was born in Entroncamento, Portugal and is studying Electronic and Telecommunications Engineering at University of Aveiro. He is a researcher in robotics and is currently the Team Leader of CAMBADA@MSL team. As a hobby, he is also a freelancer Stage Lighting Designer.

Permanent link to this article: http://ricardo-dias.com/2012/09/16/modifying-servos-for-continuing-rotation/

Leave a Reply

Your email address will not be published. Required fields are marked *