Perpetual Rotation Servo
This is my design for a servo motor which can rotate as many times as you want
It never breaks from rotating too far, and it knows its position, always.
This peculiar device differs from other servos because the double sensor I designed. It uses two potentiometers which oscillate in sine waves to measure the angle, as opposed to a fixed potentiometer which has a limit to how much it can turn.
I had a lot of fun designing and programming this little motor. I am excited to see who else builds one.
For this instructable, you will need:
- A printer which can do 0.1mm layer heights
- Files/screwdrivers/pliers and other general tools.
- A DC motor which runs at 6V and has high torque Adafruit DC motor
- 2 basic 10k potentiometers Potentiometer on amazon
- Wires and male/female header pins
- Transistors and various resistors, or you will need some sort of H-Bridge to control the motor PNP Transistor NPN Transistor
- An Arduino (Google it if you've never heard of one)
Let's begin!
Print the Parts!
Most of the parts you only need one of.
The exceptions are:
- arched sensor shaft x2
- sensor cover x2
- standard gear x5
- adjustment lock x2
- axle spacer as many as needed, probably 3-5
- case spacer x2
- threaded plate x2
- case screw x2
I would print each type of part separately, around 40 mm/s, 0.2mm layer height. That would mean all 5 standard gears can be printed at once but then print the top standard gear separate.
The gears should be done at 30 mm/s, 0.1mm layer height except the sensor gear.
The sensor gear should be printed with the print cylinder at 0.2mm layer height
PRINT WITH NO SUPPORTS AND FANS ON HIGH
Most prints are fairly easy to print, just watch out for the 3 biggest pieces, the main case, case top, and case bottom. All three should be printed with brims and the main case needs to have a specific pattern in the walls, like in the pictures above^^^:
Clean Off the Parts!
Use a Stanley Knife/Box cutter or file to clean off the parts, pay special attention to the areas shown in the pictures. Clean off the brim for the main case, case top, and case bottom.
Some of the gears may require a bit of work to get them to fit on the gear holder. Use the fitting axle and twist them around and loosen them up a bit. It may help to use the axle as a rolling pin and push the gears with some force on either a towel or a rug or carpet so the gears will be spun while being pushed. It doesn't work as well on a hard surface, because the gears just slip. CAUTION Don't spin the gears so much that the friction melts them.
Try using a pencil to get graphite on the fitting axle if the gears are really tight.
Assemble the Gears!
Put the bottom spacer on the axle with the notch in it. put the bottom half-spacer on the opposite.
If you'd like, put graphite or some sort of lubrication on the axles. (I prefered graphite because it's available in pencils, and won't easiy degrade PLA)
After the first three gears are placed on the axle, add the spacer clip, but in the opposite orientation from how it was printed.
Then place the mid standard gear opposite the spacer clip. Add the remaining two standard gears. Finally, top it off with the top standard gear.
Assemble Case Pieces
Put the threaded plates with adjustment screws in the square holes in the side. (The longer screw goes in the side with the DC motor)
Then put the adjuster plate on top of the beam inside the servo case.
put the motor gear on the DC motor and slide it into place. After the motor is in, put the spring plate into the slot by the motor. Push down till it clicks into place.
Now you can put the stack of gears into the main case.
Prepare the Sensor
First, make sure the output gear can fit in the hole in the case top.
Lightly push in the bars on the case top sensor box.
slide in one of the arched sensor shafts and have it rest against one of those same bars. Push from above to make it click into place. This can be a bit tricky, so use some care to avoid breaking anything.
Repeat for the other one. Put some graphite on the top of the box, and place the sensor gear so it fits into the notches of the sensor shafts.
Soldering the Electronics
You'll need to trim the potentiometers so their pins aren't too long, and then solder the wires to them.
The header pins (1x6) go in the square in the corner. You may need to sand them down. It's meant to be a tight fit.
The pins are numbered with the meaning:
- ground or negative voltage
- motor input 1
- motor input 2
- x signal
- y signal
- positive voltage.
Solder some header pins on some wires for connecting the DC motor to the external header pins later on.
Then place the potentiometers in the sensor slots. You may have to turn the sensor gear to make the sensor shafts line up with the potentiometer.
Finally, put the sensor cover over the potentiometers.
Final Assembly
Now you'll need to close up the servo.
Find the tooth of the sensor gear which has the angled rod on it. Line that up with the gap between teeth on the output gear. The gap between teeth should be opposite the notch on the top. Flip the output gear so it can go through the hole in the top of the case. Connect the DC motor to the top wires, and then while making sure the wires don't get caught, close it up!
The adjustment screws can be turned to allow the motor to be closer or further from the gears. Same thing with the output gear on the other side.
Put the case spacers and the case screws on and tighten it down.
H-Bridge
If you have an H-Bridge chip, use that. I didn't have one so I had to make one with transistors.
I've included pictures of my breadboard, and a circuit diagram of a generic H-Bridge.
Arduino Servo Library
I've also made a servo library for this servo.
It contains the example code I used to get the angle measurements in the intro to this instructable.