アプリ版:「スタンプのみでお礼する」機能のリリースについて

PythonSf:http://www.nasuinfo.or.jp/FreeSpace/kenji/sf/pys … と名づけた計算ソフトを作っている物理・電気系の人間です。

・NC 向けのデータが欲しい
・センターずれなどでの滑りの発生の検討がしたい
・PythonSf で 歯車を どれぐらいのサイズのプログラムで書けるかを試したい

ため付録のようなコードを書いてみました。

PythonSf を知らなくても、Python を知っていれば
・`i が 純虚数の 1
・mm` が mili meter
・~[....] がベクトル
・klsp(a,b) で [a,b] 領域をデフォルト 50 等分したベクトル
・np.r_ がベクトルをリストのように繋ぐ
ことを前提とすれば、計算内容は理解してもらえると思います。

ここ:http://www.khkgears.co.jp/gear_technology/basic_ … の説明をもとに
ここ:http://www.khkgears.co.jp/gear_technology/basic_ … の小歯車を描いてみました。

●質問 1
基準円の位置で、穴側と歯側が 50% ずつになるとしたことが正しいでしょうか。添付図の歯車の形を見ていると、この小歯車二つを組み合わせたときは、バックラッシュが大きすぎるように直感的に思えてしまいます。

一方で、歯数が 100 とかに大きくなると 50% ずつにせざるをえないとも思います。

●質問 2
この歯車図形、および添付の計算式で何か拙い点があったら指摘願えますでしょうか。

● ***** 付録コード ******
//@@
d=36mm` # pitch diameter
m = 3mm` # module d/z
αpressure=20degree` # pressure angle
z=12 # number of tooh

db=33.829mm` # diameter of base circle
rb=db/2 # radius of base circle
da,df=42mm`,28.5mm` # outside/root diameter

# require max involute angle determined by outside diameter
αupper=arccos(db/da)
θupper=tan(αupper)
f=λ θ:(λ α=arctan(θ):(rb/cos(α) cos(θ-α)-rb+`i rb/cos(α) sin(θ-α)))()
vInvlt=~[f(x) for x in klsp(0,θupper)]

invα=tan(αpressure)-αpressure
θtoothCenterAngle=2pi/(2z)+2invα
θtoothOpenAngle=2pi/(2z)-2invα

vArc = ~[rb, rb exp(`i θtoothOpenAngle)]
vTooth=np.r_[rb+vInvlt,
(exp(`i θtoothCenterAngle) ( rb + vInvlt.d))[::-1],
exp(`i 0.29160815553359282) vArc
]

plotTrajectory(map(λ x:(x.real,x.imag),
sum([list(exp(2pi `i k/(z)) vTooth) for k in range(z)], [])
)
)
//@@@

上 web ページでの説明では歯車の歯の円周方向の幅についての言及がないので、基準円の位置で中心角が穴側と歯側で一致するものとしました。添付図のような歯車を描けました。(歯元のたけは基礎円の弦で満足するので、穴側は直線で済ませています。)

A 回答 (2件)

技術の森のサイトで質問されたら良いのではと思われます。


http://mori.nc-net.or.jp/EokpControl?&event=TE0001

この回答への補足

ありがとうござうました。整理しなおして紹介先で質問してみます。

補足日時:2012/10/25 13:18
    • good
    • 0

基準円の位置で、穴側と歯側が 50% ずつになるとした


と言うことが何を言いたいのか理解できません。

この回答への補足

御指摘ありがとう誤差います。元々 jpg 画像を張ったのですが、なぜかなくなってしまいました。それがなければ分かるはずもないです。ただ自分からは追加説明もできないことを理解してやってください。

ここ:http://www.nasuinfo.or.jp/FreeSpace/kenji/sf/pys … に画像をおいておきます。

昼までは、先の KHK さんの歯末のたけ 1.00m を 1mm と誤解していました。その誤解をなくし、また二つの歯車を書くように修正したコードを付録においておきます。

このようにして作った歯車の図形を見ていると、「歯みぞの幅」と「円弧歯厚」が等しいことで、歯数が 12 でもバックラッシュは殆どないように見えます。

後もしこの歯車の形でおかしなところがあったら指摘していただけますでしょうか。よろしくお願いします。



● ************ 付録 ***************
# 歯底切り欠き部分の中心角と弦長
ts(); m,αpressure,z,d,db=3mm`,20degree`,12,36mm`,33.829mm`; rb=db/2; invα=tan(αpressure)-αpressure;θtoothBaseRootAngle=2pi/(2z)-2invα; θtoothBaseRootAngle, 2rb sin(θtoothBaseRootAngle/2)
===============================
(0.231990620064706, 0.00391521173663291*m`)


# 歯元のたけ 1.25m=3.75mm` を 0.00391521173663291*m` である基礎円の弦に対して実現する 半径と角度
ts(); m,αpressure,z,d,db=3mm`,20degree`,12,36mm`,33.829mm`; 1.25m
===============================
0.00375*m`
<== 0.00195942552951108*m`, 3.05539221121rad`

2 r sin(θ/2) == 0.00391521173663291*m`
r-r cos(θ/2) == r(1-cos(θ/2))== 3.75mm`
== (1-cos(θ/2)) 0.00391521173663291*m`/(2 sin(θ/2))
ts(); 3.75mm`/(0.00391521173663291*m`)
===============================
0.957802604879042
θ=`X; plotGr((1-cos(θ/2)) /(sin(θ/2))- 0.957802604879042, 0, pi)
<== 見た目 θ == 3.05 rad` で上の関係式を満たす
# より厳密には下の角度で 上の関係式を満たす
θ=`X; invF((1-cos(θ/2)) /(sin(θ/2))- 0.957802604879042,0.1, 4)(0)
===============================
3.05539221121
r ;; ts(); θ=3.05539221121rad`; 0.00391521173663291*m`/(2 sin(θ/2))
===============================
0.00195942552951108*m`

//@@
d=36mm` # pitch diameter
m = 3mm` # module d/z
αpressure=20degree` # pressure angle
z=12 # number of tooh

db=33.829mm` # diameter of base circle
rb=db/2 # radius of base circle
da,df=42mm`,28.5mm` # outside/root diameter

# require max involute angle determined by outside diameter
αupper=arccos(db/da)
θupper=tan(αupper)
f=λ θ:(λ α=arctan(θ):(rb/cos(α) cos(θ-α)-rb+`i rb/cos(α) sin(θ-α)))()
vInvlt=~[f(x) for x in klsp(0,θupper)]

invα=tan(αpressure)-αpressure
θtoothCenterAngle=2pi/(2z)+2invα
θtoothBaseRootAngle=2pi/(2z)-2invα

r,θ= 0.00195942552951108*m`, 3.05539221121rad`
vArc=((-~[r exp(`i x) for x in klsp(-θ/2,θ/2)])[::-1]+ r cos(θ/2)+`i r sin(θ/2)
)*exp( `i arcsin(r sin(θ/2)/rb))+ rb cos(θtoothCenterAngle)


vTooth=np.r_[rb+vInvlt,
(exp(`i θtoothCenterAngle) ( rb + vInvlt.d))[::-1],
exp(`i θtoothCenterAngle) vArc
]

plotTrajectory(map(λ x:(x.real,x.imag),
sum([list(exp(2pi `i k/(z)) vTooth) for k in range(z)], [])
)
)

plotTrajectory(map(λ x:(x.real,x.imag),
sum([list(d+ exp(2pi `i k/(z)) vTooth) for k in range(z)], [])
)
,color=orange
)
//@@@

補足日時:2012/09/26 18:55
    • good
    • 0
この回答へのお礼

最初の部分が抜けての投稿になってしまいました。したの三行を、最初に挿入してください。

-----------------------------------
>穴側と歯側が 50% ずつになるとしたと言うことが何を言いたいのか理解できません。
ここ:http://www.ob-kogyo.co.jp/jp/basic/basic02.htm の言葉でいうと
「歯みぞの幅」と「円弧歯厚」を等しくするという意味です。

お礼日時:2012/09/26 18:58

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!