Modifying a Tower SG90 Servo for Continuous Rotation with Potentiometer Position Sensing, Part 1: Investigation and Continuous Rotation

A common strategy in the world of hobby robotics is to modify a servo for continuous rotation to use to drive the wheels of a tabletop robot.

Tower SG90 Servo in hand for scale

On its own, the servo takes power, ground, and a position input and moves the shaft within a range of rotation to match the angle requested on its input wire. It has one or more stops in its gearbox to prevent it from rotating past the end of its range; these need to be removed. It also has a potentiometer as part of its positioning system, which — for the usual modification — needs to be tricked into thinking it’s always centered. The modified servo then runs at full speed forward or backward trying to reach a requested position and thinking it has never succeeded in doing so; and the controller requires extra, external rotation sensing if you want to detect what the servo has actually done so far.

I wanted something a little different — PWM H-bridge control of the servo’s motor for variable speed forward and backward and access to the potentiometer to detect position (crudely and at low speed) and count wheel rotations (acceptably and at high speed). This is actually an easier modification — but, though I’m surely not the first to do it, I’ve not run across it before. I started last night.

Tower SG90 Servo base with screws

The cute little SG90 has four screws holding its case together.

Tower SG90 Servo with base removed

After removing them, the base can be pulled off, revealing the back of the motor and the back of the control board.

Tower SG90 Servo motor and potentiometer

With the control board pulled out, it’s easy to see that the motor and potentiometer are wired exactly as would be expected; and nicely color-coded, making it easy to see how to rewire the servo.

Tower SG90 Servo gearbox with cap removed

The top of the case also pops off to reveal the gearbox. The output shaft is in the lower right and the two nubs on the back side of the output gear are the stop that prevents continuous rotation. I snipped them off in place using a very sharp diagonal cutter.

Next steps: Select wiring harnesses and rewire the motor and potentiometer.

3 Responses to “Modifying a Tower SG90 Servo for Continuous Rotation with Potentiometer Position Sensing, Part 1: Investigation and Continuous Rotation”

  1. Dithermaster says:

    The first time I saw this was in the late 90′s for the original ChiaBot minibots (http://battlebots.wikia.com/wiki/Chiabot). They each had two modified servos and two wheels. A standard RC controller drove them around with tank-style steering. It’s a great hack!

  2. William says:

    I’ve always enjoyed your blog, glad to see a post. Hope the new year treats you well.

  3. MCoale says:

    I did something similar with a HiTec servo for a robotics project (also for a robot). It seemed to work very well. I notice you’re using a micro servo. Will these same methods work for other servos as well?

Leave a Reply