Continuous Servo Mod

by fkeel in Circuits > Robots

4936 Views, 31 Favorites, 0 Comments

Continuous Servo Mod

servo06.jpg

Servos are amazing. They basically are a motor & a gear box & a control circuit in one. The only problem is that a lot of it is hidden away. I will show you the process of modifying a standard servo in order to enable continuous rotation. This is really simple and nothing you can't figure out on your own with a little fiddling around. I am mainly writing this tutorial simply to encourage you to do it. You should be able to do this with most cheap servos, however, make sure that they have plastic gears.

(note: there are different methods of doing this, check out other tutorials as well. This simply happens to be my preferred method.)

Open It.

IMG_5540.JPG

Use a Phillips screwdriver to remove the four long screws.

Ply Out the Electronics.

servo02.jpg
servo03.jpg

There is a PCB inside the box, which has the motor, a potentiometer as well as all the other electronics attached. Use a flat screwdriver to gently ply the PCB out. This may require some force, as it may or may not be glued in. Just make sure to apply the force evenly so as not to damage the PCB. Also the potentiometer may be attached to one of the gears. If it absolutely does not want to come out, remove the cap and the gears as well, and check if there is anything you can do from the other side to help the process.

Calibrate the Servo.

servo04.jpg
servo05.jpg
servo06.jpg

Next to the motor you should find a potentiometer. This gives the electronics feedback on the position of the gears. Assuming the potentiometer tells the servo that it is set to 180, then the motor will not move if you set it to 180 again. However it will slowly start to rotate if you set it to 178 and it will start rotating very fast if you set it to a very low value such as 12.

(If you wanted to use the servo as a measuring instrument you could attach additional leads to the potentiometer in order to always have information on the servos position. I need a continuous servo, so this is irrelevant for what I am doing.)

In order to calibrate the servo I attach it to an Arduino (red to +5v, black to GND, yellow/white to any PWM enabled pin, I chose 9 - second image) and set it to go to 90 like this:

#include <Servo.h>

Servo myservo; // create servo object to control a servo

void setup() {

myservo.attach(9); // attaches the servo on pin 9 to the servo object

}

void loop() {

myservo.write(90); // tell servo to go to 90

}

Unless the potentiometer is already exactly at the 90 position, it will start spinning. If you turn the potentiometer you will find that the motor spins slower the closer you get to the 90 position. The motor will reverse direction if you pass the 90 position. Adjust the potentiometer until the motor stops moving. Finally bend it over, so it's out of the way for re-assembly (last picture).

Modify the Gears for Continuous Rotation.

servo07.jpg
servo08.jpg
servo09.jpg
servo10.jpg
servo11.jpg

In case you have not done so yet, ply off the top part of the servo-box. One of the gears has a little knob, carefully cut it away (also, keep in mind that you will have to re-assemble them).

Re-assemble.

servo12.jpg
servo13.jpg

One thing you should look out for is that the white gear which attaches to the motor is actually connected to the motor. I had to use some pressure in order to get the gears to connect and it did so with a little 'click'.

Before you put the screws back in pop a servo-horn on it and check whether it actually can rotate continuously. I find that I usually have to go back and fix some detail or remove some little speck of dust or something in order for it to move smoothly.

Control It.

Assuming you did not move the potentiometer while re-assembling, you can set the motor to stop by calling 90. You can set it to rotate forward by calling anything higher than 90 (the further away from 90 the value is, the faster the motor will move) and backwards by calling values lower than 90.

tadaaa! Finished: