https://youtu.be/KadsL82TdRcThis project is a vehicle for me to learn about steppers, SCARA arms with inverse kinematics, bimodal stability of switches, mechanical linkages and some PLA flex to create friction sliders. It uses a two link SCARA arm to control four binary indicators (a word?) for the hour and a sliding gauge for the minutes. Time slips by quickly but you can’t dwell on every moment that passes by, so this clock is updated around every five minutes or so. https://youtu.be/KadsL82TdRcKey takeaways:1. Buy a kit of M2/3/4 bolts. Having an assortment of lengths and sizes reduces the delays of running to the hardware store. 2. Use 5mm hexagonal brass standoffs for axles, threaded on ends. Get a kit with different lengths. You can iterate faster!
When I set out on this project, I was recovering from a killed project, a single servo-driven binary clock. I had just learned fusion 360 and jumped into a big project that was too much too fast. The Geneva Drive worked fine but there were too many little pieces that didn’t fit right. I set it aside but the desire for a mechanical binary clock remained.
In parallel I wanted to learn how to drive stepper motors. I started with the Adafruit crickit and a few random steppers my dad scavenged from the scrap heap. I found out how to debug the connections on the stepper motors and then was able to get these steppers waving flags.
So I graduated to buy some A4988 step sticks. Got those working with the steppers but they were WAY noisy. Read up about some silent steppers from Trinamic (TMC2208) and got those in and tested. Awesome, almost silent movement.
I targeted a two link arm, so I need two steppers. I bought some NEMA 17 motors. Originally I considered minimizing the footprint of the motors, so I wanted to directly connect one stepper to a gear, but the short shaft of steppers prevented that. So the fall back plan was to use two belts. This ended up being a wise choice since the coupling with belts give some room to accommodate some errors and take up the slack with the belt flex. I chose GT2 belts. I would have preferred narrower belts, but the 6mm width is more readily available (maybe change this in the future).
next problem: Bearing and Shaft selection.
I was going to 3D print everything other than the stepper gears. So, I needed a way to use 3D printed shafts and gears. My main problem was how to make threaded shafts with 3D printing. I gave up on that, and found a solution I HIGHLY RECOMMEND! I needed shafts that were threaded in both ends but we’re small enough to fit through relatively small bearings. I landed on using 5mm hex standoffs.
A benefit of using these hex standoffs is they are inexpensive for a decent kit, have threads in both ends, and come in 5mm length increments. Some in the kit have bolts on one end, so you can build up the length of what you need, within 5 mm increments. And the threaded ends make it easy to bolt to the ends.
To use these 5mm shafts I needed bearings with a large opening. I found these MR128 bearings. They have dimensions of inner diameter of 8mm, outer diameter of 12 mm and thickness of 2 mm (8x12x2mm). As shown I the picture above, this leaves room for the 3d printed shaft to wrap around the 5mm hex shaft. To add some strength to the 3D printed shaft, I ran the soldering iron along the side to melt them a bit. Then I fit them into the bearing. Also keep in mind that the hex shaft can help bear some of the load.
I spent a lot of energy on the previous items. After that it really was just about executing the plan. Of course there were many iterations to get everything to fit. See my “land of misfit prints bin”:
By having the almost infinitely adjustable 5mm hex shaft length and a bin of M2/3/4 bolts, I didn’t have to be slowed down by waiting for bolts or shafts.
SCARA robot design
The shoulder link ended up as three pieces connected by M2 bolts. Original one piece designs failed miserably. By breaking it into three pieces (1) it was stronger than a full 3d printed version and (2) I could re-use some of the pieces if there were minor tolerance adjustments required.
An ASIDE: Changes are going to happen! Don’t fight them, but make them easier to happen. Flow with it! Gravity always finds its way downhill!
The photo above is a simpler version of the two link arm with a dial indicator.
other struggles: I made several revisions of the shaft connection to the fore-arm. I had several versions with weak alignment keys that broke. I ended up with this version:
I used this dual D shaft. It’s not perfect but much stronger than some previous keyed versions I designed. I ran the hot soldering iron along the pulley shaft to strengthen it a bit.
Other design notes: I wanted the forearm to have 360 degree rotation, so the length is controlled by my belt length. I needed up using 200mm GT2 belts for the steppers and 260mm GT2 belt for the forearm. Note: There is one transfer pulley at the shoulder joint to go to the arm.
I needed some binary indicators, and wanted some toggle switches. I looked up videos on mechanical bistable mechanism. There are a lot of good ones here with animation:
I followed this almost verbatim, but subtracted the sliding shaft on the spring. For my design the spring is the only thing between the upper and lower spring holders.
Tip for Fusion360:
To get a quick feel for the geometry of the switch action, I used a sketch and created constraints. If you draw a few lines with the correct constraints you can drag some of the points around and observe the range of motion. If you use parameters for the different links you can adjust the lever lengths and see the impact on the motion. https://twitter.com/CycleMatch/status/1220744316169195520?s=20
The switch indicator uses one spring at the bottom and a rotating dial with two colors:
Here is a view with the front cover removed the curved slots in the switch are to make it easier to register with the robot arm’s end-effector.
The link between the switch lever and dial has an elbow to prevent interference with the indicator shaft. Also (not shown) the dial has rotation stops to keep it from over-rotating and getting at an angle where the link can’t pull or push it.