Variable Stroke Pt. 1

I’ve been experimenting with variable stroke linkages for a while, with most of my new prototypes being 3d printed. These linkages have two inputs – the crankshaft and the stroke amplitude input – so I’ve been using gears to drive the two from one input.

Traditional gear manufacture involves using off-the-shelf tools to cut gears from blanks, and proper use of the tools will give accurate geometry. But 3d printing the gears requires an exact model of the involute tooth surface, which is a bit more tricky. Solidworks includes a “gear” template, but this is just a placeholder, not an accurate model. Some models can be found online, but these are almost always in imperial units. I wanted a parametric model of a precise involute cylindrical gear, using the metric standard, so I made my own.

There are 5 key numbers that define a given gear:

  • m – module
  • z – number of teeth
  • \alpha – pressure angle
  • \psi – helix angle
  • x – profile shift

I’ll discuss the last two in a later post. For now we can assume they are equal to zero, so that the model is only dependent on the first three.

A metric gear has two primary tooth size measurements aside from m: h_a – the addendum height, and c – the root clearance. These are shown below in a sketch of an “unrolled” tooth. Typically, h_a = 1.0 and c = 0.25. Four important dimensions associated with the gear are:

  • D_p = m \cdot z – the pitch diameter
  • D_a = D_p + 2 \cdot h_a – the tip diameter
  • D_f = D_p - 2 (h_a + c) – the root diameter
  • D_b = D_p \cdot cos\alpha – the base circle diameter

Involute gears use a tooth profile following an involute curve – this is by definition the curve obtained by unrolling a string from a circle. The “string” is always tangent to it’s “base circle” and perpendicular to the curve obtained, as shown below for a base circle of radius r. The position of point O is (x_O, y_O) = (r cos\theta, r sin\theta). Point Q on the involute is then:

    \begin{align*} (x_Q, y_Q) &= (x_O + l sin\theta, y_O - l cos\theta) \\ &= r(cos\theta + \theta sin\theta, sin\theta - \theta cos\theta) \end{align*}

This equation can be used directly in Solidworks as an equation curve defining the tooth face, however it only defines one side of one tooth. Ideally the modelled tooth will be symmetric about the x-axis, so the involute needs to be offset (rotated around the base circle) by the appropriate amount. We also need to know when to start and end the curve.

The rotated involute curve can be formulated by multiplying the involute equation above by a rotation matrix R(\gamma), which rotates the curve counter-clockwise about the origin by \gamma radians. The generic equation for an involute of a base circle with radius r_b, rotated by angle \gamma is:

    \begin{align*} \begin{bmatrix} x_\theta \\ y_\theta \end{bmatrix} &= \begin{bmatrix} cos\gamma & -sin\gamma \\ sin\gamma & cos\gamma \end{bmatrix} \cdot \begin{bmatrix} cos\theta + \theta sin\theta \\ sin\theta - \theta cos\theta \end{bmatrix} \\ &= r_b \cdot \begin{bmatrix} cos(\theta+\gamma) + \theta sin(\theta+\gamma) \\ sin(\theta+\gamma) - \theta cos(\theta+\gamma) \end{bmatrix} \end{align*}

The involute curve needs to be rotated such that the tooth axis lies on the x-axis, as depicted below. This angle \beta can be separated into two components:

  • The half-tooth-width angle \phi = \frac{2\pi}{z} \cdot \frac{1}{4} = \frac{\pi}{2 \cdot z}
  • The involute angle inv(\alpha) = tan\alpha-\alpha

So \beta = \frac{\pi}{2 \cdot z} + tan\alpha - \alpha, and the involute should be rotated clockwise by this angle, so \gamma=-\beta. The equation for this curve is:

    \begin{equation*} \begin{bmatrix} x_\theta \\ y_\theta \end{bmatrix} = \frac{D_b}{2} \cdot \begin{bmatrix} cos(\theta-\beta) + \theta sin(\theta-\beta) \\ sin(\theta-\beta) - \theta cos(\theta-\beta) \end{bmatrix} \end{equation*}

For the opposite of the tooth, the involute “string” is beign unrolled clockwise: simply take \theta\rightarrow-\theta. The curve is then rotated counter-clockwise, so take \beta\rightarrow-\beta.

What are the limits of the curve? From the above diagram, the distance between the origin and Q is \frac{D_Q}{2}. Then l = \sqrt{\frac{D_Q}{2}^2 - \frac{D_b}{2}^2}. But we also have l = \frac{D_b}{2}\cdot\theta, so the angle \theta where point Q is at a diameter D_Q is given by:

    \begin{align*} \theta_Q &= \frac{l}{(\frac{D_b}{2})} \\ &= \frac{\sqrt{D_Q^2-D_b^2}}{D_b} \end{align*}

The maximum point of the curve (at the tip) is then given by \theta_a = \frac{\sqrt{D_a^2-D_b^2}}{D_b}.
The minimum point (at the root) is given by \theta_f = \frac{\sqrt{D_f^2-D_b^2}}{D_b}.
The tooth profile is then formed by tracing the involute curve (x_\theta, y_\theta) between these limits. Except for some gears (z <\approx 40 – see below) the root is actually below the base circle – and the involute is not defined below the base circle.

In this case I model the tooth flank as a straight, radial line. In reality the tooth flank is sometimes undercut, and I will go into this in another post.

Leave a Reply

Your email address will not be published. Required fields are marked *