loading

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.)

Step 1: Open It.

Use a Phillips screwdriver to remove the four long screws.

Step 2: Ply Out the Electronics.

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.

Step 3: Calibrate the Servo.

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).

Step 4: Modify the Gears for Continuous Rotation.

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).

Step 5: Re-assemble.

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.

Step 6: 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:

<p>I want to make a small LED light to auto turn on (with a 3 vol battery) while the main resource was out. Which mean, when I connect it to the main battery, the light OFF. and when I disconnect from the main battery, the light ON. Please guide me to make this simple device to work? Thank you.</p>
<p>Wow, this is pretty cool! I've taken ll kinds of motors, computers and other stuff apart but never gotten around to servos until know. And is that c++ programming? Just wondering since I'm studying it for with my arduino course</p>
<p>its just plain arduino code. you're right, it does look a lot more like c++ or java than c.<br><br>a hack that I've never needed, but really want to do at some point is add an extra lead so that the arduino can read the position of the potentiometer...<br><br>there's a full fledged uC in there though. you should be able to program basic reflexes into it, if you're building a robot. <br><br>This product is super interesting in this context: https://www.sparkfun.com/products/9014</p>
Ok thanks

About This Instructable

1,313views

29favorites

License:

Bio: I like understanding how things work and doing things well.
More by fkeel:ETextile Electronics: Differential Pressure Sensor IR MultiTouch Sensors for augmenting Objects and Human Skin Yet Another DIY Flex Circuits Tutorial 
Add instructable to: