歯車の形に興味のある人に

インボリュート曲線計算式(2)

インボリュート曲線計算式 - 歯車のハナシ」記事において、インボリュート曲線計算式を2つ紹介しました。
その後投稿した「歯末のたけ」設定可能なインボリュート曲線計算ツール - 歯車のハナシでは、そのどちらでもない3つ目の計算式を使っているので紹介します。

3つ目のインボリュート曲線計算式

インボリュート曲線の特徴として、つぎの性質があります。
インボリュート曲線上の1点の半径と円弧歯厚、圧力角がわかれば、異なる半径位置の円弧歯厚が求められる」
これを利用して、曲線の基礎円から歯先円までを、微小区間に分割して座標を求めていく方法です。

記号

Riインボリュート曲線上の任意の点の半径
SiRiにおける円弧歯厚
φRiにおける圧力角
θiSiのなす角
m:モジュール
z:歯数
α:基準圧力角
R:基準円半径
R_b:基礎円半径
S:基準円円弧歯厚
θSのなす角

円弧歯厚S_iの計算

対象は標準平歯車としたとき、z,α,mを与えて、任意点(R_i)の円弧歯厚S_iを求めるには、下図のようにします。

図1.円弧歯厚計算


m=2,z=30,α=20degのとき、基準円半径+1mm位置の円弧歯厚を、実際に求めてみましょう。

基本諸元の計算

R=mz/2=30
S=m\pi/2=\pi
R_b=R\cos α=28.1907
R_i=R+1=31

φの計算

φ=\arccos\frac{R_b}{R_i}=0.429005rad=24.58019deg

S_iの計算

図1より、円弧歯厚Sの張る角度はθ=S/R、Siの張る角度θi=Si/Riです。
基準円半径RからRiまでの角度はinv (φ) - inv (α)なので、次式が成り立ちます。
θi=θ-2(inv (φ) - inv (α))=0.0777038
\frac{S_i}{R_i}=\frac{S}{R}-2(inv (φ) - inv (α))
∴S_i=(\frac{S}{R}-2(inv φ - inv \alpha))\cdot R_i=2.40881
よって半径31での円弧歯厚は2.40881であることがわかりました。
ここでinv(a)=tan(a)-a

座標計算

円弧歯厚とその角度が計算できましたが、インボリュート曲線にあるのは円弧の端点なので、直交座標系に変換します。
x=R_i \sin (\theta_i/2)=1.2041\\y=R_i \cos (\theta_i/2)=30.97660

図2.座標計算

検算1

「歯末のたけ」設定可能なインボリュート曲線計算ツール - 歯車のハナシにおいて、歯数30、モジュール2、圧力角20と入力します。
歯末のたけ係数は、R=31なので0.5を入力します。
計算実行して、CSVの最終行を見ると次のようになっていて、同じ結果を得ています。
[1.20410607,30.97660615,0]

検算2

実際にCADで確認してみましょう。
図3は、Fusion360にアドイン「igears」で作図した上記諸元の歯形のR31位置円弧とその端点を、「計測」機能で測定した結果です。igearsでは今まで紹介した3種類とは異なる計算式を用いているのですが、まったく同一の円弧長、および座標値となっていることから、今回の計算式は正しいと判断します。なお、図中の「2.4083」は弦長であって、弧長ではありません。

図3.igearsで作図したZ30,m2の歯形

python

上記の計算過程をpythonでべた書きした例です。評価点半径のところから以降を、Riが基礎円から歯先円までの反復処理に代えたもののjavascript版が「歯末のたけ」設定可能なインボリュート曲線計算ツール - 歯車のハナシで使われています。

import math

def inv(v):
    return math.tan(v)-v

m=2                     # モジュール
z=30                    # 歯数
al=20                   # 圧力角
al=math.radians(al)
R=m*z/2                 # 基準円半径
Ri=R+1                  # 評価点半径⇒ここから以降をRb<=Ri<=Ra(歯先円半径)間で繰り返す
Rb=R*math.cos(al)       # 基礎円半径
phi=math.acos(Rb/Ri)    # Riの圧力角
S=m*math.pi/2           # 基準円半径
th=S/R                  # Sのなす角度
thi=th-2*(inv(phi)-inv(al))# Siのなす角度
Si=Ri*thi               # 円弧半径
yi=Ri*math.cos(thi/2)   # 半径Ri位置のx座標
xi=Ri*math.sin(thi/2)   # 半径Ri位置のy座標
print(xi,yi)