<robrotics/>

<actuator/> · 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
not yetmeasured torque
~$3.96hardware per unit
10printed parts
This revision has not been tested on a load cell yet. There is no torque number, no efficiency number and no backlash number for the HDP30. We would rather ship the files with that gap stated plainly than quote you the HD20's figures and let you assume they carry over. They don't, because the tooth module dropped from 0.8 to 0.55, so the teeth are smaller and the engagement is different. Testing is queued, and this page gets the numbers when the numbers exist.

If you need a drive with data behind it today, build the HD20 instead. It's archived, but it's measured.

<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 the test data. The HD20 is the measured design; the HDP30 is the newer one. That's the whole trade.

<specs/>

Reduction30:1
Tooth profileCycloidal, module 0.55, 60-tooth flexspline against a 62-tooth circular spline
Measured torquenot yet measured
Efficiencynot yet measured
Backlashnot yet measured
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 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.

Slice the STEP with the print settings above, so the geometry you print is always the current one. There's a convenience 3MF mesh export on the release for slicers that won't take STEP, but note it doesn't include the two shear pins, which are STEP-only.

<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/>

The HDP30 hasn't been characterised yet, so this section is explicit about where each item comes from. Read it before you conclude you assembled it wrong.

Applies to this drive

Not yet known for this drive

Torque, efficiency, backlash, thermal behaviour, and whether the module 0.55 teeth hold up as well as the 0.8 teeth under load. That last one is the open question this revision exists to answer.

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

<test-data/>

None yet. The load cell rig that produced the HD20's report hasn't been run against this revision. When it has, the report gets linked here.

If you build one and measure it before we do, please open an issue with your setup and your numbers. We'll credit you on this page.

read the HD20 report instead →

<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 →