CNCルーター(5)
2021 2 25 (art21-0319)
CNCルーターの指令言語(Gコード)には、直線と円弧の移動を指令するものがあります。この2つのコードを組み合わせて、前回、文字「ABC」を彫らせたところ、なかなかの出来でした。今回は、楕円の線彫りに挑戦です。残念ながら、Gコードには、楕円移動を指令するコードがありません。機械がどのような制御系で作動しているかは、その道の専門家にまかせて、ここでは、回転刃のXY平面上の動きを取り上げます。移動先の座標 (Xn, Yn) を与えてやれば現在の座標 (Xn-1, Yn-1) から (Xn, Yn) へ直線移動するものとします。変化量を ΔX (=Xn-Xn-1),ΔY (=Yn-Yn-1) とすれば、移動距離は√(ΔX^2+ΔY^2)になります。(X1, Y1), (X2, Y2), (X3, Y3), --- (Xn, Yn)と、(X, Y)座標を指定すると、回転刃はそれらの座標を直線でつなぎます。この時、ΔX、ΔYを小さくして、隣接する2点間の移動距離を小さくすれば、どのような曲線でも、近似的に曲線にそって回転刃を動かすことができます。
隣接する2点間の移動距離が大きいと、カックン、カックンとした線となりますから、移動距離は出来るだけ小さくとったほうが、滑らかな線になります。しかし、そうすると、座標点を多数とることになり、その分、指令の数、結果として行数、が増えます。10cmの曲線を彫るのに、2mm間隔の移動距離では50行ですが、1mmでは倍の100行になり、0.1mmにすれば1000行になります。玩具遊びであれば、とりあえず、なめらかな曲線に見えればOKとすべきでしょう。一つ、細かく刻んだ座標を指定して、円と楕円を彫らせてみます。
円は半径15mm。中心角の増分を1度とし、360点の円周上の (X, Y) 座標を計算しました。出発点を (15, 0) とすれば、中心角45度前後の座標は、(10.420, 10.790), (10.607, 10.607), (10.790, 10.420) となります。隣接する2点間の距離は0.262mmと算出されます。
楕円はつぶれた円とみなし、半径15mmの円をX軸方向へつぶします。つぶす程度は50%(これを、扁平率と呼びます)としました。長軸15mm、短軸7.5mmの楕円になります。元の円に対応する楕円の座標は (0.5X, Y) となります。そうすると、楕円上にも360点の座標が構成されます。隣接する2点間の距離は、円の場合はどこでも同じですが、楕円の場合は変動し、尖ったところで大きくなり、平らなところで小さくなります。最大値は、長軸上(Y座標)の0.262mm、最小値は短軸上(X座標)の0.131mmです。
円を描く360点の (X, Y) 座標、そして、楕円用の 360点の (X, Y) 座標を指定するGコードを組み込みプログラムを書きました。切削刃を移動させるコードだけで、360の倍、720行になります。プログラムをCNCルーターへ送り、切削を実行させました。
結果は、なかなかの出来です。円、楕円とも、滑らかな彫線になりました。切削刃には、2mm径のエンドミルを使っています。これだと、0.262mm間隔の直線移動をつなげても、見た目では、曲線に見えることが分かりました。10cmの曲線にあてはめると、必要な指令数は382となり、1指令1行で書くと、382行ですみます。