3D-printed high torque strain wave gearbox - Harmonic drive

I was fascinated by this type of gearbox and always wanted to make one. This type of gearbox is one of the most used in industrial robots. This type of gearbox only has a single reduction (in this case 2 because of the belt reduction) with a very high reduction ratio. Because of the single stage reduction there's almost no tolerance/play between input and output shaft. Conventional gearboxes use more gears to achieve the same reduction ratio, the tolerances between the gears add up resulting in greater tolerances/play between the input and output shaft.


thank you to PCBWay for sponsoring this project. More info about them can be found in the speed controller section further down.

Here are some specifications of the gearbox:

Max tested torque at 12V: 41.3kg*cm or 4N*m

Reduction ratios:

Circular spline teeth amount: 50 teeth
Flex spline teeth amount: 48 teeth
Small GT2 pulley: 16 teeth
Big GT2 pulley: 36 teeth

Reduction ratio strain wave gear: (48 - 50)/48 = -0.0416
1/0.0416 = 24.038
Reduction ratio = 24.038:1

Reduction ratio belt drive: 36/16= 2.25
Reduction ratio = 2.25:1

Total reduction ratio = 54.0855:1

Electrical specifications:

Motor type: 775 brushed motor (see parts list)

Motor Voltage: 0-24VDC

Idle power consumption at 12V: 10W

PCB rated voltage: 12VDC

PCB rated voltage with jumpers for Arduino power supply removed and replaced by a separate DC-DC converter module: 24VDC

Working principle

A strain wave gearbox has 3 main components:
-Wave generator
-Flex spline
-Circular spline

Strain wave gear working principle. Picture source: Wikipedia.org
Strain wave gear working principle. Picture source: Wikipedia.org

The wave generator (green) generally is the input side of the gearbox and has the highest RPM. The wave generator is being used to deform the flex spline and make the teeth interlock with the fixed outer circular spline (blue). The flex spline (red) is generally the output of the gearbox and has the lowest RPM. One full rotation of the wave generator will move the flex spline 2 teeth in the opposite direction.

Circular, flex spline and wave generator design

The design of the teeth for the circular and flex spline turned out to be a little harder then expected. I originally wanted to use double helical gear generator to create the teeth but the teeth ended up interlocking over the complete circumference of the splines, even with a 4 teeth difference between them. Then I tried regular spur gears but these gave the same problems as the double helical teeth. It turns out strain wave gears don't use regular teeth but a much shorter and more straight tooth profile.

After the tooth profile was figured out I 3D-printed a first test with a flex spline in PLA. This initially seemed to work pretty good but after a few minutes of turning the flex spline made a few weird noises and pretty much exploded. So this was not going to work. Then I tried printing it TPU filament (flexible filament) which worked a lot better. The dimensions and structure of the flex spline and wave generator needed to be modified a bit in order prevent the flex spline from slipping inside the housing (tighter tolerances needed).

The wave generator originally used 4 bearings to push the flex spline in the outer circular spline but when I switched the material of the flex spline from PLA to TPU I changed this number to 6 to make the contact area bigger and prevent slipping of the flex spline.


Originally the limiting factor of the gearbox was belt reduction used to drive the wave generator. After changing out the plexiglass lid for a 3D-printed lid and adding an extra motor spacer between the case and motor this issue was resolved. The limiting factor now is the motor itself in combination with the reduction ratio of 54:1. The strain wave gearbox has a stall torque of around 41.3kg*cm or 4N*m.

Speed controller

First of all a big thank you to PCBWay for sponsoring this project. Due a price drop in raw materials, PCBWay can now provide PCB's at a reduced price. Use my referral link to get a 5$ discount when you sing up as a new user: https://www.pcbway.com/setinvite.aspx?inviteid=586251

To control the speed and direction of the motor I designed a custom Arduino Nano based PCB. The PCB features a reverse polarity circuit, a voltage divider to measure the supply voltage, some resistors for LEDs and some header pins to connect the PCB to the IBT2 motor driver.

The gerber file for the PCB can be found in the files section on this page.

Print Settings
Filament used:

Creality PLA

Printer used:
Flsun Q5 




STL-files and the Fusion 360 source files can be downloaded here: https://bbprojects.technology/collections/stl-fusion-360-source-files/products/3d-printable-high-torque-strain-wave-gearbox-harmonic-drive

PCB gerber files can be downloaded here

Arduino Code can be found here

1 × Arduino NanoLink: https://www.banggood.com/Geekcreit-ATmega328P-Nano-V3-Controller-Board-Improved-Version-Module-Development-Board-p-940937.html?warehouse=CN&ID=6300464&p=E01411629100201406T1&custlinkid=1873237
1 × 3D-printed partslink: https://bbprojects.technology/products/3d-printable-high-torque-strain-wave-gearbox-harmonic-drive
2 × 6004-2RS bearing 20 x 42 x 12 mmlink: https://shop.jvl-europe.com/epages/61425996.sf/nl_NL/?ObjectPath=/Shops/61425996/Products/6004-2RS
4 × 606ZZ bearing 6 x 17 x 6 mmlink: https://shop.jvl-europe.com/epages/61425996.sf/nl_NL/?ObjectPath=/Shops/61425996/Products/606ZZ
2 × MF105 ZZ bearing 5 x 10 x 4 mmlink: https://shop.jvl-europe.com/epages/61425996.sf/nl_NL/?ObjectPath=/Shops/61425996/Products/MF105ZZ
12 × Wood screws 4.5 x 30 mm
1 × Aluminum tube 100 x 10 x 2 mmlink: https://dhzstore.nl/product/aluminium-ronde-buis/
2 × Aluminum shaft 50 x 6 mmlink: https://dhzstore.nl/product/aluminium-rondstaf/
1 × Aluminum shaft 60 x 5 mmlink: https://dhzstore.nl/product/aluminium-rondstaf/
1 × 775 motor 12-24 VDClink: https://www.benselectronics.nl/high-speed-high-torque-775-dc-motor.html
1 × GT2 Timing belt 6mm 188link: https://www.123-3d.nl/123-3D-GT2-timing-belt-6-mm-gesloten-188-mm-i2748-t3046.html
1 × GT2 pulley 5mm 16 teethlink: https://www.bitsandparts.nl/Pulleys/c1-61-231
1 × GT2 pulley 5mm 36 teethlink: https://www.bitsandparts.nl/Pulleys/c1-61-231

Leave a comment

Please note, comments must be approved before they are published