<robrotics/>

<archived/>

This is HDP30 v1.0 (RevB), with a PETG flexspline. It has been superseded by the Rinnegan drive (HDP30 v2.0, RevC), which moves the flexspline to PLA, adds an alignment tool, held 1.49 N·m on the load cell without skipping a tooth and survived 5,700 flex cycles in endurance testing. Everything below still works and the files are still up, so if you have already printed this one, nothing has been taken away from you.

Don't mix parts between the two. RevC re-cut both circular splines for a third shear pin, and its PLA flexspline advice only applies to the RevC build. This page's PETG warning still stands for v1.0.

<archived/> · v1.0 (RevB)

HDP30

A 3D-printable 30:1 harmonic drive that bolts onto any standard NEMA 17 stepper. Half again the reduction of our HD20, in a thinner stack, off the same $4 of hardware.

Free and open under CC BY-SA 4.0. Build it, change it, sell it. Just credit us and share alike.

The assembled HDP30 held in gloved hands: a thin white printed gearbox with a knurled output ring, bolted to the face of a black NEMA 17 stepper.
30:1reduction
1.47 N·mheld before it ratchets
~$3.96hardware per unit
10printed parts
Load-cell tested, and it has a torque limit you need to know about. The HDP30 has no backlash our rig can measure and is stiff for a printed drive. But at about 1.5 N·m the teeth start ratcheting, jumping over each other one tooth at a time, and every round of that leaves the drive permanently weaker. Keep it under about 1 N·m. Read the full test report.

If you need torque today, build the HD20 instead. It's archived, but it 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/>

The HD20 got 20:1 out of a 40-tooth flexspline at module 0.8. The HDP30 keeps the same two-tooth difference but packs in 60 teeth at module 0.55, which buys half again the reduction at roughly the same pitch diameter, and lets the whole stack get thinner. Hence pancake.

Six parts were re-cut for the new profile: the flexspline, both circular splines, the wave generator, the ball cage and the output preloader. The interface plate, the base preloader and the shear pins are unchanged, and so is every piece of hardware: same eleven balls, same 30 × 42 × 7 bearing, same eight screws, same twelve inserts. If you've already built an HD20, your leftovers cover this one.

What you give up is torque. The smaller teeth ratchet at about 1.5 N·m, where the HD20 reached 3.3 N·m. In return you get the higher ratio, a thinner stack and no measurable backlash. The test report has the details.

<specs/>

Reduction30:1
Tooth profileCycloidal, module 0.55, 60-tooth flexspline against a 62-tooth circular spline
Measured torqueHeld 1.47 N·m, then ratchets at about 1.5 N·m. Weaker after it has ratcheted. Keep it under about 1 N·m.
Efficiency43-55% static (stalled), falling as load rises
BacklashToo small to measure: under 0.3° at the output
Torsional stiffness36 N·m/rad (0.63 N·m per degree)
Hysteresis0.08° loop width, about 10% loss per cycle, mostly creep
Test reportPlots, method and raw data
MotorAny 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.
LubricationSuper Lube synthetic PTFE grease
Printed parts10 pieces across 9 unique parts, including 2 shear pins
Fasteners8 × M3×0.5 × 6 mm button head screws per drive
MaterialsPLA throughout, PETG for the flexspline
Versionv1.0 (RevB), 30 August 2026
LicenseCC BY-SA 4.0

<what-you-need/>

Beyond the bill of materials below, you supply:

Do not print the flexspline in PLA. It flexes on every single revolution of the motor. PLA has almost no fatigue life under that duty and will crack, usually within minutes of running. This matters more here than on the HD20, not less. Module 0.55 teeth are smaller, and the wall they sit on is thin.

<bill-of-materials/>

Unchanged from the HD20. We checked that part by part against the CAD rather than assuming it: the cage has the same eleven ball pockets, and every screw bore and insert boss lines up one for one.

loading the bill of materials…

<printed-parts/>

PartQtyMaterial
Circular spline (base)1PLA
Circular spline (output)1PLA
Base preloader1PLA
Output preloader1PLA
Interface / motor mount1PLA
Wave generator1PLA
Ball cage1PLA
Flexspline1PETG
Shear pin2PLA

Both shear pins are required, and they're the same part printed twice, 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 PETG for the flexspline), 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 supports; everything else prints unsupported. And we set seam position to random on all parts, so a single seam line doesn't stack up into a weak spot or a visible ridge on the round surfaces.

<the-files/>

Everything for this revision lives on the v1.0 tag of robrotics/hdp30. The main branch has moved on to RevC. Grab the packaged bundles from the releases page. The STEP files are large, so you probably don't want to clone the whole repo.

Slice the STEP with the print settings above, so the geometry you print is always the current one.

<assembly/>

Half a second of the assembled drive, on loop. Output turns; motor barely does.

📹 Quick run-through: watch the assembly reel on Instagram. It's fast (it's a reel), but it shows the stack-up and the order things go together in.

📹 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. Written step-by-step instructions are being put together alongside it.

<known-behaviour/>

Some of this was measured on the HDP30 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

Carried over from the HD20

Still open

Exactly why it ratchets (we have suspects, not an answer yet), running efficiency under load, thermal behaviour, and long-term wear below the ratcheting limit. The module 0.55 teeth turned out not to hold up as well as the HD20's 0.8 teeth. Fixing that is what RevC is for.

Hit something we haven't listed? Please open an issue and tell us your version, filament and printer.

<test-data/>

Tested on 11 October 2026 with a 100 mm arm between two load cells, like the HD20, against a no-gearbox baseline of the same motor.

TorqueHeld 1.47 N·m; ratchets at about 1.5 N·m, lower afterwards
Efficiency43-55% (static)
BacklashUnder 0.3° (below the rig's resolution)
Stiffness36 N·m/rad
Hysteresis0.08° wide, ~10% loss per cycle

The report has every plot, the method, the caveats and the raw CSVs, along with the scripts that turn them 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 v1.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 →