Introduction: Hack a TowerPro Micro Servo to Spin 360 / Continuous Rotation

Picture of Hack a TowerPro Micro Servo to Spin 360 / Continuous Rotation

Hey guys! Since I've got my servos, I've had two that I set aside for hacking. So, coming to my favorite website for help, I was sorely disappointed when I couldn't seem to find any instructables on how to mod a micro servo. After viewing a few, I went to my workbench and got to work. I was very surprised when I opened up my micro servo and found it to be slightly different then the bigger servos. So, I decided I would make a guide on how to hack into your servo! So what are we waiting for? Lets get started.
But then you ask, doesn't this defeat the whole purpose of a servo? Well, no. We just utilize the gearbox, so that we can use this motor as a drive motor for a robot. So now, let's really get started!

Step 1: Ingredients:

Ingredients needed: (no, not food ingredients unfortunately)

  • Rotary tool or a utility knife
  • Very small screwdriver (phillips)
  • Soldering pencil* and solder
  • Wire snips
  • Needle noes pliers
  • 2x 2.2k resistors
  • Helping Hands (AKA 3rd hand) BTW check out this awesome instructable on making helping hands. Thanks rstraugh!


  • 10 minutes

Step 2: Disassembly

Picture of Disassembly

First remove any servo arms, legs, and limbs from the servo.
Then, using a very small screwdriver, unscrew the four screws on the bottom of the servo. Be very careful not to lose these.
Watch the video for the disassembly of the gears. The top main gear my be hard in coming off. You can see I had a little trouble getting it off in the video.

Clip #285 from AJ on Vimeo.

Step 3: That 5k Potentiometer

Picture of That 5k Potentiometer

Now we are going to turn our focus on the 5k pot. Here is were it's different from the bigger servos. The shaft of the pot is also the shaft on which the gears sit on. So, we cannot get rid of the potentiometer, but we must keep it.

That being said, we must unsolder the 5k variable potentiometer, and solder on 2 [2.2K] resistors. Unsolder the wires on both ends, off of the PCB and potentiometer. Save these wires for a later project.

Take two 2.2K resistors and and bend the top leads over. Then, using the helping hands secure them like you see in the picture. Now solder these two top ends together. Get them as close to each other as you possible can. There should be two leads in the middle. Since this would make it harder to solder bend this wire up and cut it off. You should now have 3 leads.

Solder this new resistor to the PCB as shown in the last picture. Upon request, I made a horrible video of me soldering these on. It's not the best, but at least it held. For instructions on soldering. . .

Noahw and his amazing instructable

Clip #364 from AJ on Vimeo.

Now we must remove the collar that stops the potentiometer from spinning 360. Note, you may need to use needle nose pliers to peel off this plastic. In my case, I had already broken the collar when I was trying to get the gears out. See the video, and see what needs to happen. There also might be a metal stop like my other servo had. Your smart, just figure out how to allow the potentiometer to spin freely, but keeping it intact.

Clip #288 from AJ on Vimeo.

Finally, we need to put the potentiometer back into its original place. But first, we need to bend the leads over them selves inward, so that it won't be in our way later on. Bend the leads over, the put back in it's spot. Make sure it's sitting properly on the plastic. See pictures.

Step 4: Chop Time

Now, we need to get rid of that mechanical stop. Using a dremel or other cutting device, just chop it off level with the gear. 

Oh, and please turn your volume down! My dremel is annoyingly loud for it's tiny size! Sorry, I didn't feel like editing any of my videos!

Clip #313 from AJ on Vimeo.

Step 5: Putting It All Back Together

Now all we need to do is to put it back together! Put the gears back on, the tiny circuit and resistors back in, and screw it together!
The first video shows stuffing the board back in, and the second is the gears.  In the first I was at an awkward angle becuase of the camera, so I couldn't  close the case all the way. You get the Idea. 

Clip #308 from AJ on Vimeo.

Clip #315 from AJ on Vimeo.

Step 6: Code

Here is a link to some test code. Just hook up the ground and power of the servo to the Arduino 5v and GND, then hook up the yellow or orange PWM control wire to pin 9 on Arduino. Copy and paste this code into the program, upload, and see if if works! 
I hope this helps you guys out with your servos. Check out Make Magazine's page on servos. 


rocketbhoom (author)2017-11-09

Um, hello? I am a 9 year old kid who plays with electronic stuff. I am using a BBC Micro:Bit, a Tower Pro SG90 micro servo and a AX-microBIT extension board. I do not have an Arduino. Can this method be used with the Micro:Bit too?

MRX_22 (author)2017-03-08

after all the hack, can this servo rotate with 2 directions? and how about degree rotation ? can we set that ?

thanks so much

rocketbhoom (author)MRX_222017-11-09

yea i wonder the same thing

curtis.newton.104203 (author)2017-02-19

all videos are gone

OH yeah, I accidentially deleted my vimeo account. I'll try to make a new one here soon

rocketbhoom (author)HavocRC2017-11-09

Please send me the link when you re-create your account

I am looking forward to seeing your videos!

Thanks alot.

rocketbhoom (author)HavocRC2017-11-09

Please give me your name on vimeo after you re-uploaded the videos


debbe91 (author)2016-10-17

do you know what is the max voltage input for the motor if i wanted to control the motor bypassing the board?

HavocRC (author)debbe912016-10-26

NimrodC (author)2016-09-29

I Used two 2.2K resistor and this code. It works fine for rotate in two directions. sorry my english

#include <Servo.h>

Servo myservo;

void setup() {



void loop() {

if ( Serial.available())


char ch =;

switch(ch) {

case '1': // direction 1



myservo.write(148); //you can change from 76 to 180 for change speed


case '2': // direction 2



myservo.write(0); //you can change from 72 to 0 for change speed


case '3': // stop





now, I have to find a solution for rotate in an angle with presition


HavocRC (author)NimrodC2016-09-29


pchaure (author)2016-03-22

i have removed the collar from pot and the mechanical stopper so can i use the motor without 2.2k resistor? plz help am stuck at this thing...thank you

HavocRC (author)pchaure2016-03-23

You need to make a voltage divider of some sorts. Use a 1k -3.3k resistor if you have to.

DavidF15 (author)2016-03-06

My SG90 had the pot directly soldered to the board, which made it difficult to remove. So I read the comments and chose to leave it in place. Instead I stripped out the keyway on the main/final/potentiometer gear by twisting it, then eyeballed mid-position on the pot and epoxied the pot wiper and shaft in place.

Testing it with the Arduino Servo:Sweep example works great. The speed then sweeps up, slows down, and reverses, and repeats endlessly.

CameronF (author)2015-12-18

Has anyone found a good way to control the speed? I tried setting the signal pin high and adding a delay then setting it low, but that doesn't accurately work below about a 20 millisecond delay. Thanks.

HavocRC (author)CameronF2015-12-19

Did you try changing this? delayMicroseconds(servoPosition);
servoPosition is set at 2000, try changing that.

Keoves (author)2015-11-19

Thanks! That's Works!

sanketrege (author)2013-11-28

Here's a shortcut that worked for me: only break the plastic stopper on the top most gear (as shown in Clip #313). I didn't have to remove the pot nor the black sleeve thingy. Use the following code:


Servo myservo; // create servo object to control a servo
// a maximum of eight servo objects can be created

int val = 0; // variable to store the servo position

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

void loop()
if ( Serial.available())
char ch =;
switch(ch) {
case '1':
case '2':

by writing 180 degree position you make the servo make infinite ccw rotations and by using the detach command you make it stop!

I can't get it to rotate in the cw direction though..If anyone has a solution please let me know!

HavocRC (author)sanketrege2015-10-07

I like it!

I modified servo before 6 months ,possible i used 2.2 resistance , i am not sure.

On my servo it is a succes.

Try this :

#include <Servo.h>

Servo myservo;
int val = 0;

void setup()

void loop()
for(val = 0; val < 60; val += 1)


1 .Now i have clockwise 45 degrees ABOUT
If i chance myservo.writte(148) i have 45 degrees anticlockwise.

2 .if i change myservo.write(90) and delayMicroseconds(900) i have step 20 degrees.

3.if i change myservo.write(95) and delayMicroseconds(900) i have step 11.25 degrees

4 PLAY with value myservo.write(X) and delayMicroseconds(Y) to find the correct degree you need to your servo.

I put after myservo.detach() , delay(1000) to count the steps .

ZERO in my servo is 102-103 . after that value start anticlockwise.


만들서 (author)sanketrege2015-08-02

need same solutions here.

Romninja (author)2015-02-13

Hey! I just did this in 20 minutes. It works well. Here's code to make it turn in one direction or the other. Can be uploaded directly.

#include <Servo.h>
Servo myservo;
void setup()
myservo.write(0); //this goes backwards

//or do "myservo.write(180);" to go forwards
void loop() {}

tomhuijben (author)Romninja2015-06-01

Hey! Do you know also how to stop the motor for a couple seconds and then continue with turning.

Romninja (author)Romninja2015-02-13

Oh... You probably want to power this from something else than usb power!

I think my ch340 on board chip couldn't handle the current draw and it died.but i can probably still program that same arduino using a cp2102.

ConstantineT (author)2015-05-14

I used 1kOhm resistors and it works. How can I make it turn continuously for only 1000msec? I think the original had only ~180 degrees of rotation. So it wasn't possible to turn it for 270 degrees. I suppose doing the hack it isn't possible to rotate for 800 degrees exactly, right? (unless I measure the msec)

The solution was easy:






RHED (author)2015-01-16

help, how can i run it on reverse. using your test code?

im using the test code to open my sliding door.

now, i need to run it in reverse to close it.

HavocRC (author)RHED2015-01-16

Just try changing servoPosition to something else! I don't know I've never actually tried it.

Cengizhan_19 (author)2015-01-12


I have the same servo and I want it to spin 360 degrees. I just didnt understand collar part of it. Where did you take it from? Can you explain it a little bit more in details please. I have to finish my robot for a contest in my school.

HavocRC (author)Cengizhan_192015-01-12

I'm not really sure what's the problem. I even made a video showing exactly where the collar is and taking it off.

Cengizhan_19 (author)HavocRC2015-01-13

ıs it a must step? I mean what if I just skip this part because I saw some other videos in the web and the only thing they do is soldering the resistors to the pcb and cutting the mechanical stop on the gear.

Here is a video:

HavocRC (author)Cengizhan_192015-01-13

Their pots may not have the ring. On mine it had a ring that stopped the gears from spinning around. If you don't have it then don't worry about it. If you do then just do what i said.

Cengizhan_19 (author)HavocRC2015-01-13

so ı should look at the potentiometer for that ring right?

And one last thing ı have 2k resistors. Will those ones work for that

HavocRC (author)Cengizhan_192015-01-13

Yeah you should be fine with two 2K resistors.

Cengizhan_19 (author)HavocRC2015-01-13

thank you ver much

HavocRC (author)Cengizhan_192015-01-12

Hope that helps

Frederik-WillemF (author)2014-11-10

Nice! Quick hack, worked with my FS90 micro. There was no removable collar to limit the pot, so I just cut it. Thank you!!

Your videos and pictures was very helpful. I'll probably be using this guide several more times!

HavocRC (author)Frederik-WillemF2014-11-10

Awesome! I'm really glad you liked it!

OddTodd (author)2014-04-01

I must commend your efforts sir, for this is by far the best tutorial on the subject I have been able to find. The majority of alternatives just remove the internal board as a whole, rendering their efforts useless to me as my project requires that the ability to control the speed [via PWM] remain intact. To summarize, thank you.

HavocRC (author)OddTodd2014-04-01

Thank you I'm so glad I could be of help to you. Good luck with your project!

agrgic13 (author)2014-03-05

I'm new in electronics, but this two resistors on pictures are 22 ohm, not 2,2k? Am I wrong?

HavocRC (author)agrgic132014-03-05

2.2k ohm resistor is 2,200 ohms!! 22Ω wont work!

piedrabob78 (author)2014-01-16

Hi, great video thanks helped me a lot, I jwanted to share a tip for those of you that does not have a dremel, you can use the soldering pencil to get rid of the mechanical stop, it works perfect.

brunoxyz (author)2014-01-06

Does this hack still allow the control of direction from the code?

HavocRC (author)brunoxyz2014-01-06


brunoxyz (author)HavocRC2014-01-07

actually it works! you can change the direction of rotation, speed and even stop it using arduino. Just tried it.

thanks for the instructable, the two resistors method works like a charm.

HavocRC (author)brunoxyz2014-01-08

Oh sorry I misunderstood you I thought you were asking if you could use it like a regular servo- my bad. It can't position itself because the potentiometer is gone.

Really? I've never really got into the code part for that would you mind sharing your code with me?


brunoxyz (author)HavocRC2014-01-08

hey no problem, I figured you misunderstood my question. The code is very simple, All you need to know is that the servo accepts values from 0 to 180 and that at 90 it won't move and the farther you move from 90 in either direction it will go faster in that direction. It makes sense since it's trying to catch up with the potentiometer that's not working anymore.

Check out this example, they use a potentiometer but you can just manually or dynamically assign different values too.

HavocRC (author)brunoxyz2014-01-08

Haha ok thanks I haven't used a servo in an Arduino project for almost a year now so I'm a bit rusty :D.


Happy Hacking!

About This Instructable




Bio: 19 year old hobbyiest and future EE.
More by HavocRC:DIY FPV Antenna Protector CaseControl Your RC Plane With Your Phone's AcclerometerDIY Receiver Controlled Switch (Cheap and Easy)
Add instructable to: