Servo modification
To build the drive system for our first robot, we decided to use servo motors that have been modified for continuous rotation. We found a page which had directions which we used as as starting point. The pictures weren't an exact match for what we saw, but were close enough that we got the job done. I have to apologize for the blurry pictures. Alex took them using her camera, instead of the good camera my wife uses. Next time we'll use that, if she'll let us.
This is the initial setup. Before modifying the servo motor, I wanted to make sure that the servo worked, and I wanted to show Alex how it worked. So I designed a cable for connecting the Arduino to the servo motor.
I picked the Arduino because it is easy to program, and easy to work with. I wanted something that could be used to teach Alex simple embedded programming, but that would not limit what we would be able to achieve too much.
The first thing we did was the "blinking LED" test. This was just to make sure the Arduino was working, and the software environment worked. I had to let the windows machine I was using figure out the USB drivers, which didn't work the first time.
We connected to the servo using the standard three pin connector. I wanted to do as little modification of the servo as possible. However, the cable from the servo motor is rather long, and I suspect we'll need to shorten it before we're done.
Yes, my workbench is messy, but I like it that way. Everything is where I can find it.
Oops. the servo control signal was connected to the TX pin on the Arduino. This means that when I downloaded the blinking LED program, the motor started moving, which surprised both of us. So we went back and changed the cable to move the control signal to digital pin 2 instead of digital pin 1.
This is the control pulse that we were using to move the servo. At the time this was running, we had the pulse width sweeping back and forth so that the motor would move back and forth. Since the servo was working well, and I felt that Alex understood how we were controlling it, it was time to start modifying the servo.
Alex seems to like the black nail polish now. That's her had holding the opened servo motor, showing some of the gears. Most of them actually fell out when I took the top housing off.
Here are all of the parts from the servo, pulled apart and spread out on the static mat.
This is the output shaft, which we will ream out using a drill bit. I ended up putting the bit in the drill press back in the shop, and turning the gear by hand. I had to use a smaller bit at first to get the corners cut, then step up to a larger one. I think the largest one I used was an 0.196" bit.
At first, we tried to drill (by hand) the access hole for adjusting the servo from the outer side of the gear, but I soon realized that this was just not going to work. The drill bit we had to use was so small that the screwdriver would never fit, and it would take forever to drill by hand. Finally, I put the part in a vise, and drilled from the inner side of the gear. I used a larger drill bit, I think it was 0.083, and just use the drill press. It worked great.
I couldn't find the dremel tool, so we used a hack saw to cut a slot into the feedback potentiometer. It worked surprisingly well.
We put all the gears back on, which took a little figuring out, since they all fell out when the housing was removed. The pictures didn't exactly match the instructions we were using, but it was close enough.
Finally, I put the rest of the housing on, and put the long screws back in.
And here is our completed modified servo. We reloaded the first servo test program, which just outputs a 1.5 ms pulse every 20 ms, and adjusted the pot so that it stopped moving.
Finally, we switched back to the sweeping back and forth program, and watched the servo move several rotations in each direction, repeatedly. Looks like it was all working. The last thing we did was mark the outside of the servo with a paint pen, since it looks just like an unmodified servo. Our final design will probably include at least 4 servos, and we don't want to mix them up.