Fusion360歯車切削スクリプト/ウォームホイール の履歴(No.5)
更新このページ、今となっては古い内容です!†
その後、無料公開中の自作歯車生成スクリプト内で、このページで行ったのと実質的に同じ計算をワンクリックでできるようになってしまったので、わざわざこのページの手順を踏む必要はなくなってしまいました。めでたしめでたし。
ウォーム型のホブを使って円柱からウォームホイールを切り出す†
ウォームホイールは形状を簡単に計算で求めることができないので、 切削シミュレーションにより形状を得るのは実用的だと思います。
目次†
ホブ形状を作成†
工作/Fusion360歯車切削スクリプト/平歯車 の時と同様に、 歯先をフィレット付きで延長したウォームに負のバックラッシュを付けて生成し、 切削具(ホブ)として利用します。
- Backlash -0.05 mm
- Tip Fillet 0.30
通常のウォーム形状と比べると、ちゃんと歯先がフィレット付きで延長されていること、 負のバックラッシュにより歯が太くなっていること、を確認できます。
現状ではフィレット付きのウォームの歯先に少々グリッチが生じてしまっているようです? 計算誤差なのか何なのか、このせいで切削に失敗することがあるようなので困るのですが、 ちょっと解決方法が思い浮かばずそのままになっています。
→ どうも Fusion360 のひねり角付きスイープは精度が残念になりがちなようなので、その後、スイープをやめてロフトで形状を切り出すようにしました。おかげでかなりまともな形状が得られるようになりました。
ただそうするとシームレスにはできなくて、継ぎ目ができてしまうのですが、今のところこれ以上にいい方法は思い浮かんでいません。
ウォームホイールに加工する円盤を生成†
原点を中心に円柱を生成します。
平歯車の時と同じで、モジュール4で歯数12とするため、 直径は 4 mm * 12 = 48 mm の基準円直径の両側にモジュールと等しい歯末の丈を加えて、 48 mm + 4 mm x 2 = 56 mm とします。
ウォームホイールの厚さは、ある程度厚い方が特殊な形状がよく反映されるので、 ウォームの直径が 30 mm であるところ、20 mm としました。
ん、ウォームホイールがはすば歯車的になることを考えるとここの直径の計算は間違ってますね。
「転位ゼロ」を目指すなら正面モジュールを $1/\cos(\text{はすば角})$ だけ大きくしないと。
以下では丁度 48 mm の距離に来るよう転位されたウォームホイールの切削になっているのだと思います
噛み合い位置に移動する†
工作/歯車について勉強する3#d447e0da の計算機を使うことではすば角度 7.662255660766066 deg を求め、 これを使って円盤を噛み合い位置に移動します。
- x 軸移動量は ウォーム径 30 mm と ウォームホイール基準円径 48 mm を足して2で割る
- y 軸移動量はピッチが 4 mm x PI / cos(7.662255660766066 deg) になるのでその2倍
- z 軸移動量はウォームホイール厚さの半分
噛み合い状態を真横から見るとこんな感じ。
回転軸を生成し、切削する†
歯先のグリッチのせいで(?)、切削中に論理演算ができないというエラーが出て止まってしまうことが多かった。
ダメな角度に当たらないようステップ数を調節して、22 にしたらたまたま最後まで切削が行えた。
1ピッチ分だけ切り出す†
360 deg / 12 = 30 deg だけ切り出すと、それが1ピッチ分になる。
平歯車の時と違って歯形は複雑な曲線で区切られた不揃いな曲面で構成されている。 後々便利なように、z軸を中心とするように回しておく。
さらに半ピッチを切り出す†
中心から歯溝の中心あたりへ線を引く。
裏面でも同じように線を引いて、サーフェスメニューのロフトで2本の線の間に曲面を張る。
この曲面で歯形を2つに割る。
歯末部分は曲線が良い感じに並んでいるけれど、 歯元部分は曲線が強くカーブしていて、 さらに途中で分岐したり、途切れたり、 曲線を繋いで曲面を得るのが難しい形状をしている。
スムーズな曲面で近似する†
そこで、曲線を繋いで曲面を作る前に、歯元部分の曲線を延長して、 隣同士を繋いだ時にうまく曲面を張れるように前処理が必要だった。
この作業は 工作/Fusion360曲面生成スクリプト の2つ目のタブで行える。
そのようにして短い曲線をうまく延長しておくと、 それらを繋いで曲面を作り、歯の表面を滑らかにできる。
LANG: p5js_live // =============== ここが設定 const gif_url = 'https://dora.bk.tsukuba.ac.jp/~takeuchi/?plugin=attach&refer=%E5%B7%A5%E4%BD%9C%2FFusion360%E6%AD%AF%E8%BB%8A%E5%88%87%E5%89%8A%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%97%E3%83%88%2F%E3%82%A6%E3%82%A9%E3%83%BC%E3%83%A0%E3%83%9B%E3%82%A4%E3%83%BC%E3%83%AB&openfile=hobbing-b21.gif'; const multi = 1; // スライダーは multi 回ループで最大値になる const fps = 2; // 描画頻度 (frame per second) const maxWidth = 600; // 横幅最大値 // ================ ここから下は汎用コード let gif = null; let frameSlider = null; let w, h; p.preload = () => gif = p.loadImage(gif_url); const draw = () => { let index = frameSlider.value(); gif.setFrame(index % gif.numFrames()); // フレームを選択して p.image(gif, 0, 0, w, h); // 描画 } p.setup = () => { p.frameRate(fps); w = Math.min(maxWidth, gif.width); h = gif.height * w / gif.width; p.createCanvas(w, h + 20); frameSlider = p.createSlider(0, gif.numFrames() * multi - 1); frameSlider.value(0); frameSlider.position(0, h); frameSlider.size(w); frameSlider.input(draw); draw(); } p.draw = () => { if(p.mouseIsPressed) return; frameSlider.value((frameSlider.value() + 1) % (gif.numFrames() * multi)); draw(); }
- 左下の部分はうまく削れなかったので、段差部分を面取りして角をなくしただけでそのまま残した
- 右上の非常に小さなでっぱりが残ってしまったので、プッシュ・プルでへこませた
- 回転させて複製したものを張り合わせることで反対側の面を作れる
- 12個複製してみたところ、初めに歯形を2つに割った時にうまく対称な面で割れていなかったようで隙間が空いてしまった
- 隙間を挟む2つの面を選択してロフトで体積を付けてやることで隙間を埋めることができた
- 最後にすべて結合して完成
得られたウォームホイール†
ウォームホイールの歯は両端が張り出した独特な形状をしている。
回転軸を付けて回してみる†
コンポーネント化して、回転軸を付ける
モーションリンクでウォームと連動させる。
ん?拡大してみるとなんだかうまく行っていないぞ?!
上で回転複製したとき歯溝部分にギャップが生じたのでロフトで埋めたのだけれど、 本当は歯先にギャップを生じさせてそちらを埋めるべきだったっポイですね💦
歯が薄くなりすぎてしまっているためにウォームの下面とウォームホイールの上面はしっかり噛み合っていますが、ウォームの上面とウォームホイールの下面との間に大きな隙間が生じてしまっています。。。
歯当たりの確認†
一応、片側はちゃんとできているということで、 そちっらの面を使ってウォームとウォームホイールとの歯当たりがどのようになるかを確認しておきます。
ウォームのバックラッシュを -0.1 mm とすることで、バックラッシュ 0.05 mm + α となっているウォームホイールとわざと干渉させて、どこが干渉するかを見ることで歯当たりの確認ができます。
正しく切られたウォームホイールはウォームと歯面全域に渡ってしっかりと接触することを確認できました。
まとめ†
ここまでやっておいて残念な結果になってしまいましたが、 おおよその作業手順は紹介できたのではないかと思います。
反省点としては、 はすば歯車の一部を切り出して曲面を張る際には、一旦歯車を原点中心となる位置まで動かして、 面対称や点対称操作で切りのいい部分で切ったり張ったりできるようにして作業した方が 間違いなさそうです。
もともと上の作業手順では切りのいい位置になるように調整してあったので、 複製パーツを軸との交点を原点に動かして、z 軸を中心に回転して張り合わせ、 元の位置に戻して回転複製、歯先にできたギャップをロフトで埋める、という手順で 歯車形状を修正できました。
このように、ちゃんと歯の上下ともに歯幅いっぱいの接触が得られていることを確認できます。
めでたしめでたし!
歯車生成スクリプトを使えばクリック一発で計算可能です†
この記事を書いた後、無料公開中の自作歯車生成スクリプト内で、このページで行ったのと実質的に同じ計算をワンクリックでできるよう機能を追加しました。(厚さ方向に何枚か平面を取り、その面内で切削演算を行うことで断面図を作成し、最後にロフトで繋いでいます)
したがって今はわざわざこのページの手順を踏まなくてもクリック一発でウォームホイールを生成できます。