Harmonic Drive - 3D Strain-Wave Gear Bench

An elliptical cam bends a thin toothed cup so its teeth walk around a ring with two more teeth: huge reduction, no backlash.

Switch to 2D

Presets

Playback

Gear geometry

Tooth count and module set the ratio and stress. Pick the drive mode with the buttons.

Drive and load

Real speed and torque; slow motion only slows the picture.

View

Camera

Layers

Quality

Model checks

The science

How a strain-wave gear works

A harmonic drive has three parts: a rigid circular spline (CS) with internal teeth, a thin cup-shaped flexspline (FS) with external teeth, and an elliptical wave generator (WG) pressed inside the flexspline through a bearing. The WG bends the flexspline into an ellipse so its teeth mesh with the CS only at the two ends of the major axis. The FS has two fewer teeth than the CS: Nc = Nf + 2.

Ratio

Matching tooth counts around the circumference gives Nf (w_FS - w_WG) = Nc (w_CS - w_WG). With the CS fixed and the WG as input, w_FS / w_WG = 1 - Nc/Nf = -2/Nf: one WG turn advances the flexspline by two teeth in the opposite direction, so the reduction is Nf/2 (e.g. 100:1 for Nf = 200). With the FS fixed the CS output turns forward at w_CS / w_WG = 2/Nc; with the WG held the FS follows the CS at Nc/Nf (almost 1:1).

Deformation and stress

The flexspline neutral line follows r(phi) = r0 + w0 cos 2 phi with w0 = m (the difference between the pitch radii of the two splines is one module) and r0 = Nf m / 2. Keeping the length fixed gives a tangential shift v = -(w0/2) sin 2 phi. The curvature change is 3 w0 cos 2 phi / r0^2, so the wall surface bends with stress sigma = E (t/2) 3 w0 / r0^2 = 6 E t / (Nf^2 m): thinner walls and more teeth reduce it, a high module increases it. The fatigue limit line is illustrative.

Teeth in mesh, torque and friction

Teeth overlap where cos 2 psi > 1 - d (d = working depth / module); the load is spread over those two lobes, about 30 to 40 percent of the teeth, which is why the drive carries so much torque for its size and has no backlash. Tooth sliding is modelled as a wedge on a flank of pressure angle gamma = 30 deg: eta = (1 - mu tan gamma) / (1 + mu / tan gamma); the input torque is T_out / (|R| eta). The output wind-up is T_out / K.

What is simplified

The flexspline is a perfect elliptical ring (nd = 2 lobes); wall thickness only enters the stress formula, not the shape; contact is a smooth cos 2 psi load distribution; the efficiency is the wedge formula with a single friction coefficient (real drives also lose energy in the wave-generator bearing and by flexing, and efficiency depends on speed and load); stiffness is a fixed linear spring. The ratios and stress formula are exact within the thin-ring theory.

What am I looking at
  • Orange cam and balls: the wave generator, an elliptical plate with a ball bearing, turned by the motor shaft at the back.
  • Thin toothed cup: the flexspline. Teeth that are heavily loaded turn orange; its shape is the ellipse made by the cam.
  • Outer toothed ring: the circular spline, held in the casing with the degree scale.
  • Output spider: six spokes bolted to the flexspline; it carries the red pointer.
  • Orange arcs and red line: the two mesh zones and the major axis of the wave generator.
  • Wall board: input and output turn counters, stress bar and efficiency.
What to try
  • Pick the 100:1 preset: one output turn needs 100 input turns, yet the output spider is the only thing that moves visibly. Watch the red marker on the output and on the circular-spline scale.
  • Raise Nf from 40 to 200 with the module fixed: the bending stress on the graph falls, the ratio rises, and the orange mesh zones contain more teeth.
  • Choose the thin-wall preset: the bar on the wall board passes the fatigue limit marker.
  • Switch the mode to FS locked: the circular spline becomes the output and turns forward at only 2/Nc of the input speed.
  • Raise the friction coefficient to 0.25: the efficiency graph drops and the input torque for the same load rises.
Loading model...
Loading Blender model...
Output turns vs input turns
Tooth load around the ring
Bending stress vs tooth count
Efficiency vs tooth friction
Made with 🟠 Blender · Three.js