This is a project that was jumbling around in the back of my head for years. In the past I built a lot of experimental robots that used harmonic drives in most or all joints. Harmonic drives are pretty cool, but damn are they expensive. I always wondered if I could print a harmonic drive that was good enough for at least hobby purposes. One random day recently I decided to try it out. It was a lot easier than I expected.
Buying from the Harmonic Drive company, I always purchased the traditional cup-style drives with cup-shaped wave generators. But that cup would be a nightmare to 3D print. There's just no way to make it properly with isometric properties. Luckily there are other designs. I decided to print ring-style drives with a simple cylindrical wave generator and two ring gears, one for the inlet side and one for the outlet side, with a difference of two teeth between them. My first drive was 50:1 (100 teeth on the inlet gear and 98 teeth on the outlet gear) and it worked surprisingly well. It's not enormous, outer diameter of only 75mm with a thickness of 20mm. Not surprisingly, it has very high internal friction. But compared to commercial Harmonic Drives, it actually has better stiffness. That was always a major limitation with the cup-style drives: very low stiffness. But the cup-style drives with their elliptical wave generators were sometimes actually backdrivable, which was cool. My drives certainly are not backdrivable. If you actually install these, you could install them in either
direction. It wouldn't actually matter which one you call the "input"
ring and which you call the "output" ring. The only thing that changes when you reverse the direction of the drive is that the direction of the output motion inverts. So that's good to know. If you want to switch between same-direction and opposite-direction, you can just turn the drive around.
Next up I decided to see how small I could make one. I'm using standard 608ZZ bearings for the wave generator, so I made a drive with a flexspline just slightly larger than two 608ZZs. I managed to fit a 40:1 reduction in that form factor. I made this one 10mm thick with only a single layer of bearings. It definitely has more friction than the 50:1 drive, as the teeth don't mesh nearly as smoothly on the output ring. I could probably improve the design to decrease friction quite a bit, but I probably won't because this was just a quick curiosity project. As always, parts are posted on GrabCAD and Thingiverse.