<actuator/> · HDP30 · v2.0 (RevC)
Rinnegan drive
The Rinnegan drive, aka HDP30: a 3D-printable 30:1 harmonic drive that bolts onto any standard NEMA 17 stepper, with about 2 arcmin of backlash, measured. That's close to commercial strain-wave territory, from a printer and $4 of hardware. Half again the reduction of our HD20, in a thinner stack, now all PLA.
Free and open under CC BY-SA 4.0. Build it, change it, sell it. Just credit us and share alike.
Longer life testing is still to come. 5,700 cycles is about 40 minutes of running, not months. If you need torque today, the archived HD20 was tested to 3.3 N·m.
<how-it-works/>
Three parts do the work. A wave generator, an ellipse riding on eleven loose 5 mm balls in a printed cage, pushes a flexible toothed ring (the flexspline) into an oval, so its teeth engage a rigid circular spline at only two points. The circular spline has two more teeth than the flexspline, so a full turn of the motor walks the output around by just two teeth. With a 60-tooth flexspline, that tiny slip per revolution is the 30:1.
New to strain wave gearing? We wrote a plain-language explainer. And every tooth profile in this drive came out of our own free harmonic maker, including the exact settings used here, which you can open and edit.
<what-changed/>
v1.0 (RevB) held 1.47 N·m and then started ratcheting: the flexspline teeth rode over the circular spline one tooth at a time, and every round of that left the drive weaker. v2.0 goes after that with two changes.
- The flexspline is now PLA instead of PETG. Same geometry, stiffer material. It also creeps about half as much under a steady load.
- The flexspline lines up better. A new printed alignment tool sets the wave generator at the right height on the motor shaft, so the flexspline teeth sit square in both circular splines. Both circular splines were also re-cut to take a third shear pin.
On the load cell that bought no tooth skips up to 1.49 N·m, about 40% less twist at the same torque, the same efficiency, and 5,700 flex cycles under load without damage. The tooth profile, the wave generator, the cage, the interface and both preloaders are unchanged, and so is every piece of hardware.
We changed two things at once, so we can't fully split the credit. The way the stiffness rises with load points at the alignment, and the lower creep points at the PLA.
<specs/>
| Reduction | 30:1 |
|---|---|
| Backlash | About 0.03° at the output (2 arcmin). No run of 12 slow runs showed more than about 0.1°. How we measured it |
| Tooth profile | Cycloidal, module 0.55, 60-tooth flexspline against a 62-tooth circular spline |
| Working limit | Keep peaks under about 1.3 N·m. The flexspline wall starts cracking at 1.5-1.67 N·m, and it broke at about 2.0 N·m on a single overload. |
| Measured torque | Held 1.49 N·m with no tooth skips. Above about 0.8 A of motor current, held torque levels off near 1.35 N·m. |
| Endurance | 5,744 flex cycles and 188 hard stops at 1.0-1.2 N·m, no damage. Longer life test still to come. |
| Efficiency | 47-60% static (stalled), across two units |
| Torsional stiffness | 40 N·m/rad at 0.85 N·m, rising to 61 N·m/rad at 1.5 N·m |
| Creep | About 5% of the torque relaxes in a 2 s hold, and about 3.5% more for every 10× longer you hold it |
| Unpowered hold | Holds about 1 N·m with the motor off. It doesn't backdrive at that load. |
| Test report | Plots, method and raw data |
| Motor | Any NEMA 17 with a 5 mm shaft. The interface plate is unchanged from the HD20, which was validated with an OMC StepperOnline 17HE12-1204S: 42 × 42 × 30 mm, 26 N·cm, 1.2 A, 4-wire. |
| Lubrication | Super Lube synthetic PTFE grease |
| Printed parts | 11 pieces across 9 unique parts, including 3 shear pins, plus a printed alignment tool |
| Fasteners | 8 × M3×0.5 × 6 mm button head screws per drive, motor screws included |
| Materials | PLA throughout, including the flexspline |
| Version | v2.0 (RevC), 18 October 2026. v1.0 (RevB) is archived. |
| License | CC BY-SA 4.0 |
<how-it-compares/>
Backlash is where this drive stands out. Even at its worst measured reading (6.7 arcmin; typical is about 2), it's tighter than every off-the-shelf NEMA 17 planetary gearbox under $200, for about $5 without a motor. Metal strain-wave gearboxes are tighter still, from about $100. It gives up torque against all of them: keep peaks under about 1.3 N·m.
Sources, method and the script are in the test report.
<what-you-need/>
Beyond the bill of materials below, you supply:
- A NEMA 17 stepper with a 5 mm shaft. The mounting face is identical to the HD20's, which we ran with an OMC StepperOnline 17HE12-1204S (26 N·cm, 1.2 A) under closed-loop FOC control.
- A soldering iron for the heat-set inserts, and hex keys.
- PLA for everything, flexspline included.
- Super Lube on the wave generator and the tooth mesh. It's in the bill of materials below. Don't run it dry.
<bill-of-materials/>
Unchanged from v1.0 and from the HD20. We checked that against the CAD rather than assuming it: the cage, the interface, both preloaders and the wave generator are identical to v1.0, so the same screws, inserts, balls and bearing fit.
loading the bill of materials…
<printed-parts/>
| Part | Qty | Material |
|---|---|---|
| Circular spline (base) | 1 | PLA |
| Circular spline (output) | 1 | PLA |
| Base preloader | 1 | PLA |
| Output preloader | 1 | PLA |
| Interface / motor mount | 1 | PLA |
| Wave generator | 1 | PLA |
| Ball cage | 1 | PLA |
| Flexspline | 1 | PLA |
| Shear pin | 3 | PLA |
| Alignment tool (assembly jig) | 1 | PLA |
All three shear pins are required, and they're the same part printed three times, so there's only one file to download. They carry shear load across the output joint directly, so the connection doesn't have to rely on friction from the preloaded screws to resist it. The screws clamp; the pins take the sideways load.
Print settings
No custom temperatures and no special bed prep. The HD20 was printed on a Bambu Lab P1S with Bambu PLA, and the HDP30 uses the same settings: the Arachne variable-width wall generator and one extra wall loop for strength.
Two things are not the default. The output circular spline and the interface both need tree supports; everything else prints unsupported. And we turn on scarf seam for all parts, so the seam blends in instead of leaving a ridge on the round surfaces.
<the-files/>
Everything lives in robrotics/hdp30. Grab the packaged bundles from the releases page. The STEP files are large, so you probably don't want to clone the whole repo. The v1.0 bundles are still on the releases page too.
Slice the STEP with the print settings above, so the geometry you print is always the current one.
<assembly/>
📹 Quick run-through: watch the assembly reel on Instagram. It's fast (it's a reel), and it was filmed on v1.0, before the alignment tool, but the stack-up and the order things go together in are the same.
📹 the proper build video is in the works
A full, properly paced walkthrough is being filmed now and will be posted to youtube.com/@robrotics and embedded right here.
<known-behaviour/>
Some of this was measured on v2.0 itself, and some carries over from the HD20. Each heading says which. Read it before you conclude you assembled it wrong.
Measured on this drive
- The flexspline cracks from about 1.5 N·m. The PLA wall started cracking audibly there on one unit and at 1.67 N·m on another. Once a crack starts, the drive gets softer and gives way a little more on every hit until the wall breaks. We never saw v2.0 ratchet, so don't count on v1.0's buzzing as a warning. Limit the motor current.
- More current stops buying torque past about 0.8 A. Held torque levelled off near 1.35 N·m, but impacts kept getting harder. On a NEMA 17 like ours, about 0.6 A is the sweet spot.
- It holds its position unpowered. With the motor switched off, it kept pushing about 1 N·m into the load cell. Handy for an arm joint, but don't rely on it to slip safely when overloaded.
- It softens a little when warm. After 20 minutes of running it was warm to the touch and about 12% softer.
- About 2 arcmin of backlash, but it twists. The slack is only about 0.03° at the output. What you'll feel is elastic twist: about 1° at 0.85 N·m and about 1.6° at 1.5 N·m. That's give, not slack.
- Torque relaxes a little under a steady hold. With the motor held still, output torque dropped about 5% over two seconds and then levelled off. v1.0's PETG flexspline lost about 10%.
Carried over from the HD20
- PLA creeps under sustained load. Holding a heavy static load for hours will slowly deform the splines, and that now includes the flexspline.
- Unit-to-unit variation is real. Two HD20s of the same design differed by up to 18% at the same current. Printed gearboxes are not precision parts.
- Output spline preload is the biggest tuning knob. On the HD20, tightening it further took one unit from 2.37 to 2.55 N·m. Expect it to matter here too.
Still open
Life beyond a few thousand cycles (a multi-hour test is next), running efficiency under load, and long-term wear below the cracking limit. If you run one for a long time, please open an issue and tell us how it held up, with your version, filament and printer. We'll credit you.
<test-data/>
Tested on 18 October 2026 with a 100 mm arm between two load cells, on the same rig and against the same no-gearbox baseline as v1.0, then run for 41 minutes of endurance testing at rising current until the flexspline cracked.
| v2.0 (RevC) | v1.0 (RevB) | |
|---|---|---|
| Backlash | About 0.03° (2 arcmin) | Under 0.3° (not resolved) |
| Torque | Held 1.49 N·m, no skips. Cracks from 1.5-1.67 | Held 1.47 N·m, then ratcheted |
| Endurance | 5,744 flex cycles at 1.0-1.2 N·m, no damage | Not tested |
| Efficiency | 47-60% (static) | 43-55% |
| Stiffness | 40-61 N·m/rad | 31-44 N·m/rad |
| Creep, 2 s hold | about 5% | about 10% |
The report has every plot, the method, the caveats and the raw CSV, along with the script that turns it into these numbers. If you measure your own build, please open an issue with your setup and your numbers. We'll credit you on this page.
read the v2.0 test report →<make-your-own/>
Two ways in, depending on how deep you want to go.
Change the tooth profile. This link opens our free harmonic maker loaded with the exact settings used for the HDP30, so you can nudge one number and export a new DXF.
open the HDP30 profile in the harmonic maker →Change the mechanics. The full parametric model is public on Onshape. Copy it into your own workspace and change whatever you like: a different motor face, a different output interface, a different ratio. If you build a variant we would genuinely like to see it: open an issue on the repo or tag @robrotics.
open the model in onshape →<whats-next/>
We're working on a cup-style harmonic drive, the classic layout where the flexspline is a thin-walled cup instead of a flat ring. It'll get its own page here when it's ready. Follow @robrotics to hear when it lands.