Introduction: How to Hack a Servo for Continuous Rotation - TowerPro MG995

About: Electronics are a newly re-found hobby for me. I'm not an engineer - I'm an ordinary guy who likes to tinker with electronics in his free time. You can see more about my projects at www.meanpc.com.
Why would you want or need to modify your perfectly good servo?  It turns out that servo motors are great little gear motors that can connect directly to a microcontroller without the need for a motor driver circuit.  The problem is that servo motors are made to turn between 90 and 180 degrees, for turning the front wheels of a remote control car, turning a rudder, controlling ailerons, etc.

But we want to use these cheap high-torque motors to turn the wheels on our robot.  This instructable will show you how to make your servo spin 360 degrees.

Why the TowerPro MG995?  It's cheap and powerful.  At 4.8 volts, the MG995 produces 138.9 oz/in of torque and spins 360 degrees in 1.2 seconds.  The MG995's are all over eBay for just under ten dollars apiece.  I might not use these to steer a $1,000 RC plane, but they are terrific for powering the drive wheels on your robot.

I highly recommend watching the YouTube video first so you have an overall view of what you will be doing in this project.

Step 1: Parts and Tools

Parts and tools

MG 995 Servo
Two 2.2k ohm resistors

Soldering iron
solder
sponge
Needle-nose and diagonal pliers
Flat and phillips head screwdrivers
Helping hands
Electrical tape

**Optional - for testing purposes
Arduino or microcontroller of your choice
3 jumper wires

Step 2: Remove 4 Screws

Use your phillips screwdrive to remove the four captive screws on the servo.

Step 3: Remove Cover

Remove the cover that has the 4 screws, exposing the motor and PCB.

Step 4: Examine the PCB

These 3 white wires are currently connected to the potentiometer.  By the end of this instructable these wires will be gone.

Step 5: Remove Servo Horn

If there is a horn attached to your servo - remove it.

Step 6: Remove Backside Cover From Servo

Carefully remove the cover from the back of the servo.  This will expose the gears.

Step 7: Take a Picture

Take a picture of your gears, to be sure you remember how they go in when you are done.

Step 8: Remove Top Gear

Remove the upper most gear and set it somewhere clean and safe.  Try not to get the gear dirty.

Step 9: Remove Gear With Spindle

Remove the gear that has the spindle that pokes outside of the servo.  This is usually pretty tight, so pull it off with your needle-nose pliers if you have to.

Step 10: The Pin

If you look at the gear you just removed, you will see a small shiny pin.  Look at your gear and identify it.

Step 11: Pull the Pin!

Grip the spindle with your needle-nose and pry the pin out with your side-cutter.  It will take a little prying but it will come out.

Step 12: Before Photo of the Bottom of the Gear

Now that you have the pin out, look at the bottom of the gear.  You will see a plastic insert.

Step 13: Pry Plastic Insert Out

Use your flathead screwdrivers to pry the plastic piece out of the bottom of the gear.  Try to get the plastic out of the inside of the gear without leaving too much debris.

Step 14: After Photo of Gear

This is what your gear should look like after you take the plastic out.

Step 15: Put the Gears Back Together

Put the gears back together just like you found them.

Step 16: Close the Cover on the Gears

Snap the cover back over the gears.  We're done with this side of the servo now.  

Step 17: Cut the Wires!

Pull the PCB out and cut the 3 wires that connect it to the potentiometer.

Step 18: Remove Wires From Potentiometer

Remove the three wires from the potentiometer.  You can de-solder them if you like, or you can do it like I did and just pull them off.

Step 19: Bend the Potentiometer Pins Down

We don't want the potentiometer pins getting in the way, so just bend them down so they are flat.

Step 20: Twist the Resistors Together

Twist the resistors together, then bend one of the leads down like this.

Step 21: Solder the Resistors Together

Solder the resistors together at the twist.

Step 22: Trim the Resistor

Trim the excess wire above the solder joint you just made.

Step 23: Trim the Other Two Resistor Leads

Trim the other two leads so they are the same length as the one in the middle.

Step 24: The Completed Resistors

They should look something like the picture when you are done.

Step 25: Desolder Wires From the PCB

Carefully desolder the wires from the PCB.  Gently pull the wire while heating up the solder joint and it will come right off.

Step 26: Solder Resistors to PCB

Solder the resistors to the PCB.  

Step 27: Wrap PCB in Electrical Tape

Just a precaution to make sure the resistors don't short against something.  Also, be sure the leads on your resistors aren't making contact with anything on the PCB.

Step 28: Replace Motor

Stick the motor back in.  Make sure it is all the way in and meshing with the gears in the case.

Step 29: Position PCB

Carefully position the PCB in the case.  It may be a tight fit with the tape on it.  Just make sure you will be able to get all of the screws in.

Step 30: Replace Lid

Attach cover over the motor and PCB.

Step 31: Fasten Screws

Fasten the 4 screws and you are done!

Step 32: The Code

This is the code you can use to test your servo if you are using an Arduino.  The myservo.write(90); line sets a standard servo to it's mid-point.  It will tell our hacked servo to stop.

You will need to find the exact null point of your servo.  The servo in this instructable nulled out at 105.  Anything above that would turn in one direction, and anything below it would turn in the other.  The max speed is 180 in one direction and 0 in the other.  You can control the speed by using values in between.

Step 33: Hook the Servo Up to Your Microcontroller

The servo connector has three wires - Brown, Red and Orange.  Brown connects to the ground of the Arduino.  Red connects to the 5V on the Arduino.  Orange connects to the I/O pin on the arduino, in this case digital pin 9.  Use jumper wires to connect between the female connectors on the servo cable and Arduino headers.

Step 34: Test Your Servo

If you did everything right, you should be done.  Try nulling out the servo, then setting the servo to spin at various speeds in both directions.