There are many ways to power your next project but I’m quite partial to the continuous rotation servo because it’s very easy to hook up to your micro controller, you don’t need to build or buy a separate controller or h-bridge to power the motor. In a servo all that is built in. All you need to do is connect the power directly to your battery and send a low-voltage control signal to tell it what you want it to do.
Servos out of the box are meant to rotate in a fixed range of 180 degrees, but modifying them for continuous rotation is easy, my first servo took about 30 minutes, and now I can do them in about 15 with no problems.
- Take the back cover off
You’ll need a small jewelers screw driver. There is one long screw in each corner.
- Take out the gears
The gears will slip out easily from the casing, you may need a small pliers for the main (largest) gear.
Make sure that the largest gear has teeth all around the outside of large part of the gear. I've recently come across some micro servos that do not have teeth all the way around and are impossible to modify for continuous rotation.
- Cut the mechanical stops off
Usually there is a small tab on the inside of the gear cover, easily removed
There may also be a stop inside the potentiometer, since the pot is essentially also the axel you’ll have to leave it in, but make sure that it can rotate all the way around. You may need to snip off some small metal tabs on the inside of the pot.
- Add some resistors
There are three wires coming off of the pot, snip all three off and solder two resistors starting from the middle wire, connecting one to each of the other wires. In these photos the wires are Green Red and Yellow.
I used 1.75k resistors, but your servo may be different, use a multimeter to determine what is best for you.
Note: I hoped to take to pot off the axle and glue it into it’s center point, but that’s impossible with most micro servos since the axle is part of the pot.
- Re-assemble
- Center
The one thing about modifying servos for continuous rotation is that when you use the resistor method it's likely that they are not perfectly balanced. You can tell if you have that problem when the center PWM value sent to the servo and it starts rotating, when it should be stopped. I use the SoftwareServo.h library that lets you adjust the center PWM value to compensate in software
If your using the Arduino, here is a script that uses the SoftwareServo library and a loop to continually adjust the “setMaximumPulse” property on the servo object.
Upload the sketch, open your serial monitor pane, and wait for the servo to stop spinning, when it does write down the last number shown in the serial monitor and use it in the setup of your servo. For more details see the script source:
Continuous_Rotation_Servo_Test.pde