# Gear geometry ## Parameter <div style="text-align: center;"> <img src="https://hackmd.io/_uploads/BkXF-v_Ixe.png" alt="image" width="400"> </div> * $\theta_0$ : circular pitch Angle * $\theta_1$ : Bottom Angle * $\theta_2$ : Involute Angle(base circle to pitch circle) * $\theta_3$ : Involute Angle(pitch circle to addendum circle) * $\theta_4$ : Top Angle * $r_1$ : root circle radius * $r_2$ : base circle radius * $r_3$ : pitch circle radius * $r_4$ : tip circle radius ## Geometric relations $$\theta_0 = \frac{2\pi}{T} = \frac{360^o}{T}\qquad-(0)$$ $$\theta_1+2\theta_2+2\theta_3+\theta_4\qquad-(1)$$ $$\theta_1+2\theta_2 = \theta_4+2\theta_3\qquad-(2)$$ * by Involute $\theta = \tan^{-1}(\frac{1+\phi\tan \phi}{\tan \phi-\phi})$ $\phi = (\sqrt{(\frac Rr)^2-1})$ $$\theta = \tan^{-1}(\frac{1+(\sqrt{(\frac Rr)^2-1})\tan(\sqrt{(\frac Rr)^2-1})}{\tan(\sqrt{(\frac Rr)^2-1})-(\sqrt{(\frac Rr)^2-1})})$$ $$\theta = \tan^{-1}(\frac{1+(\sqrt{(\frac Rr)^2-1})\tan(\sqrt{(\frac Rr)^2-1})}{\tan(\sqrt{(\frac Rr)^2-1})-(\sqrt{(\frac Rr)^2-1})})\qquad-(3)$$ $$r_2,r_3,r_4\Longrightarrow(3)$$ $$\theta_2 = \tan^{-1}(\frac{1+(\sqrt{(\frac {r_3}{r_2})^2-1})\tan(\sqrt{(\frac {r_3}{r_2})^2-1})}{\tan(\sqrt{(\frac {r_3}{r_2})^2-1})-(\sqrt{(\frac {r_3}{r_2})^2-1})})\qquad-(4)$$ $$\theta_2+\theta_3 = \tan^{-1}(\frac{1+(\sqrt{(\frac {r_4}{r_2})^2-1})\tan(\sqrt{(\frac {r_4}{r_2})^2-1})}{\tan(\sqrt{(\frac {r_4}{r_2})^2-1})-(\sqrt{(\frac {r_4}{r_2})^2-1})})\qquad-(5)$$ $$\frac{\theta_0}{2} = \theta_1+2\theta_2 = \theta_4+2\theta_3$$ $$(0)\Longrightarrow\frac{2\pi}{2T} = \frac\pi T = \theta_ 1+2\theta_2 = \theta_4+2\theta_3\qquad-(6)$$ $$(4)\Longrightarrow(6)\qquad2(4)+\theta_1=\frac{\pi}{T}\qquad-(7)$$ $$(5)\Longrightarrow(6)\qquad2(5)+\theta_4 = \frac\pi T\qquad-(8)$$ :::success $$\theta_1 = \frac\pi T-2(4)\qquad-(7)$$ $$\theta_4 = \frac\pi T-2(5)-(4)\qquad-(8)$$ $$\theta_2 = (4)$$ $$\theta_3 = (5)-(4)\qquad-(9)$$ ::: * module $M = \frac DT$ $D = 2r_3$ $$M = \frac{r_3*2}{T}$$ :::success $$r_3 = TM/2\qquad-(10)$$ $$r_2 = \cos(\frac\pi9)r_3 = \cos(\frac\pi9)MT/2\qquad-(11)$$ $$r_1 = (T-2.5)M/2\qquad-(12)$$ $$r_4 = (T+2)M/2\qquad-(13)$$ ::: $$(10),(11)\Longrightarrow(4)\qquad-(14)$$ $$(10),(11),(13)\Longrightarrow(7)\qquad-(15)$$ $$(10),(11)\Longrightarrow(8)\qquad-(16)$$ $$(10),(11),(13)\Longrightarrow(9)\qquad-(17)$$ $$\theta_i = \theta_i+\theta,\qquad S = r\theta\qquad-(18)$$ :::success Topland : $R = r_4,\theta_i>\theta>\theta_i+\theta_4\qquad-(19)$ Bottomland : $R = r_1,\theta_i>\theta>\theta_i+\theta_1\qquad-(20)$ straight line : $r_2>R>r_3,\theta = (\theta_i+\pi M)\qquad-(21)$ Involute Left : $R = \theta\Longrightarrow(6),\theta_i>\theta = \theta_i+\theta_2+\theta_3\qquad-(22)$ Involute right : $R = -\theta\Longrightarrow(6),\theta_i>\theta = \theta_i+\theta_2+\theta_3\qquad-(23)$ $$(18)\Longrightarrow(20)\to(21)\to(22)\to(19)\to(23)\to(21)\to(20)\to...$$ ::: ## Code ```python = import matplotlib.pyplot as plt # Import plotting module import math # Import math module import numpy as np # Import numerical module #===================================================================(Compute radius and angle from number of teeth and module) def involutetheta (R, r): # Involute function phi = ((R/r)**2 - 1)**(1/2) theta = np.arctan((np.tan(phi) - phi) / (1 + phi * np.tan(phi))) return theta T = int(input('T:')) # Number of teeth M = float(input('M:')) # Module rh = float(input('D:')) # Bore diameter theta0 = 2 * np.pi / T # Circular pitch halftheta0 = theta0 / 2 # Tooth thickness or tooth space r1 = (T - 2.5) * M # Root circle radius r2 = T * M * np.cos(np.pi / 9) # Base circle radius r3 = T * M # Pitch circle radius r4 = (T + 2) * M # Addendum circle radius theta2 = involutetheta(r3, r2) # Involute angle: base to pitch circle theta3 = involutetheta(r4, r2) - theta2 # Involute angle: pitch to tip circle theta1 = halftheta0 - 2 * theta2 # Bottom flank angle theta4 = halftheta0 - 2 * theta3 # Top flank angle print('teeth =', T) print('Modulus =', M) print('pitch =', theta0) print('tooth space =', halftheta0) print('tooth width =', halftheta0) print('root diameter =', r1) print('basic diameter =', r2) print('pitch diameter =', r3) print('tip diameter =', r4) print('radius at tooth tip =', 0.236 * M) N = r4 # View limit #===================================================================(Define polar gear tooth profile drawing functions) # Left involute flank def draw_involute_1(i): Rinvolute1 = np.linspace(r4, r1, 200) if r2 > r1: Rinvolute1 = np.linspace(r4, r2, 200) thetainvolute1 = -involutetheta(Rinvolute1, r2) plt.polar(thetainvolute1 + theta0 * i, Rinvolute1, N, color="blue") # Radial line from root to base circle (left side) def draw_line_1(i): if r2 > r1: L = np.linspace(r2, r1, 2) theta = np.zeros_like(L) plt.polar(theta + theta0 * i, L, N, color="green") # Root fillet (bottom) def draw_bottomland(i): thetabottomland = np.linspace(0, theta1, 50) R = np.full_like(thetabottomland, r1) plt.polar(thetabottomland + theta0 * i, R, N, color="red") # Radial line from root to base circle (right side) def draw_line_2(i): if r2 > r1: L = np.linspace(r2, r1, 2) theta = np.full_like(L, theta1) plt.polar(theta + theta0 * i, L, N, color="green") # Right involute flank def draw_involute_2(i): Rinvolute2 = np.linspace(r1, r4, 200) if r2 > r1: Rinvolute2 = np.linspace(r2, r4, 200) thetainvolute2 = involutetheta(Rinvolute2, r2) + theta1 plt.polar(thetainvolute2 + theta0 * i, Rinvolute2, N, color="blue") # Top land (tip arc) def draw_topland(i): thetatopland = np.linspace(theta1 + theta2 + theta3, theta1 + theta2 + theta3 + theta4, 50) R = np.full_like(thetatopland, r4) plt.polar(thetatopland + theta0 * i, R, N, color="red") # Draw shaft hole def draw_hole(r): thetahole = np.linspace(0, 2 * np.pi, 200) rhole = np.full_like(thetahole, r) plt.polar(thetahole, rhole, N, color="red") #===================================================================(Generate plot) print('detail:', end='') print(T, M, theta0, halftheta0, halftheta0, r1, r2, r3, r4, theta1, theta2, theta3, theta4, 0.236 * M, sep=",") fig = plt.figure(linewidth=1, figsize=(5, 5)) plt.subplot(polar=True) for i in range(T): draw_involute_1(i) draw_line_1(i) draw_bottomland(i) draw_line_2(i) draw_involute_2(i) draw_topland(i) draw_hole(rh) plt.axis('off') plt.show() ``` ## Generate graphics <div style="text-align: center;"> <img src="https://hackmd.io/_uploads/H1zrOMhHxe.png" alt="image" width="300"> <img src="https://hackmd.io/_uploads/HJR6uz3Sex.png" alt="image" width="300"> </div>