これまでのあらすじ:
2016年3月、フェルト生地を手で裁断している際にレーザーカッターがあれば複雑なカットが容易にできるなあと思って、安価になってきたレーザーカッターを購入しようと思ったのがきっかけ。調べていくうちに、合板も切れたほうがいいと思うようになって、CNCルーター(CNCミリング)についても考えるようになった。
Arduinoは以前から使っており、CNCシールドがあると気付いて自作も可能と思うようになった。当初はShapeOkoやX-CARVEを参考にMakerSlide、OpenRail、V-Wheel、2GTタイミングベルトなどで5万円くらいで自作しようと思っていた。AliExpressでも部品が安く買えることが分かって、しばらくは部品探し。探せば探すほど安くて本格的な部品も見つかってくるので、そんなにケチらなくてもいいのではないかと徐々にスペックアップ。最終的には剛性や精度のことも考えてボールスクリューやリニアスライドを使うことになり、予想以上に重厚な3軸CNCマシンをつくることに(約7万円)。
構想から約5週間(制作約3週間)でルーターとレーザーともに使えるようになり、現在はgrbl1.1+Arduino CNCシールドV3.5+bCNCを使用中(Macで)。余っていたBluetoothモジュールをつけてワイヤレス化。bCNCのPendant機能でスマホやタブレット上のブラウザからもワイヤレス操作可能。



CNCマシン全般について:
国内レーザー加工機と中国製レーザー加工機の比較
中国製レーザーダイオードについて
CNCミリングマシンとCNCルーターマシンいろいろ
その他:
*CNCマシンの制作記録は2016/04/10〜の投稿に書いてあります。

利用例や付加機能など:
CNCルーター関係:

2016年12月18日日曜日

Grbl1.1 Laser Modeの実験

さてGrbl1.1のレーザーモードの実験をしてみました。
前回も書きましたが、Grbl1.1では新たにLaser Modeが加わり、その中でもM4コマンドをつかった(従来まではM3)Dynamic Laser Modeという、レーザーヘッドの移動スピードに比例するようにレーザー出力をリアルタイムで調節してくれる新機能があります。今までは、スピードが落ちがちなパス折り返し地点や出だしの部分などで、焦げが目立っていましたが、それが解消(緩和)されるというわけです。どの程度効果あるのか、そしてどんな設定やコマンド操作するといいのか試してみました。
結果的には、従来に比べけっこう使えるんじゃないかという感じです。

使っているG Code SenderはbCNCです。今回は90度の扇形(半径20mm)の図面を描いて実験です(Inkscapeで描画、Laser Tool Plug-inでGコード生成)。直線部分、角の部分、そして円弧がある図形という感じです。特にいままでは、角の部分で焦げが目立っていましたが、どうなるかいくつかのパターンで試してみました。
画面左↑にGコードがあります。ちょうど水色の部分にM03があり、ここをM4に変更したりS値を少し書き換えていくつかのパターンをつくってみました。
結果は以下。
材料は厚さ2.2mmのシナベニヤ板。半径20mmの扇形。5.5Wダイオードレーザー使用。
まずは下の段から、
左端は、従来のM3 S1000 F200でカットしたもの(やや角に焦げが見えます)。
左から2番目、M4 S1000 F200。Dynamic Laser Modeなので、あまり角が焦げていません。なかなか効果あり。

M4でもS値を入力する必要がある:
ここで疑問に思ったことがあり(前回の投稿での疑問でもありましたが)、M4はスピード(フィード)に合わせてレーザー出力するのなら(M4の場合、スピードが0だと出力も自動的に0なる)、S1000はコマンド入力しなくてもいいんじゃないか?ということで試してみると、M4だけで出力値Sを入れないでRunさせると、レーザー自体出力していませんでした。つまり、M4 S1000などと出力したい値(おそらく100%のときの出力値)を入力しないとダメです。
ということで、右から2番目のが、M4 S500 F200。出力を半分に下げてのDynamic Laser Mode。少しわかりにくいかもしれませんが、左から2番目のS1000よりは弱いかなと。
わかりにくいので、右端がS100まで出力を落としたDynamic Laser Mode。ということから、M4の場合、Sの値は上限値という感じです。

レーザーモードのオン・オフ設定:
ただ、注意点としては、M3の場合は最初に$32=0という感じで、レーザーモードをオフにしておき、M4を使うなら$32=1に設定変更が必要です。M4での作業が終わればまた$32=0に戻すという感じ。M4が便利そうなので、$32=1のままでよさそうですが(M3はもはや使わないかも)。

リアルタイムオーバーライド機能:
それから、実験結果画像の上のほうにあるのは何かというと、Grbl1.1からはReal-time Overridesが使えるようになったので、もともとbCNCについているオーバーライド機能を使ってみたという結果です。
bCNCには、FeedやSpindleをリアルタイムで調節できるスライダーがついています。加工中ではないときでも、Spindleボタンを押せば、レーザーオン・オフや出力調整が可能です(いきなりレーザー光がでるので注意が必要です)。この画像↑の場合、Feedが最大200になっています。
追記:調べてみると、どうやらこの200は200%とということらしいです。100が100%でそれに対し、25%〜200%で可変制御可能ということみたいです。
このようにスライダを右にずらせばフィード50%などに変更できます。これを加工中(レーザー照射中)に変更するとどうなるかというのが、実験結果画像の上段です。上の段真ん中が、M4で加工中にフィードを200%から50%まで下げてみた結果です。Dynamic Laser Modeなので、理論的にはフィードが途中で変わっても、それに合わせて出力変化してくれるので、均一な加工結果になるはずです。ぐりぐり少しいじったので、円弧の部分でややムラがありますが、縦のラインはフィード200%で横のラインがフィード50%ですが、だいたい同じくらいの出力になっている感じなので、効果はでていると思います。

実験結果画像上段の右端は、M3で同じように加工中にリアルタイムでフィードを変化させたものです。Dynamic Laser Modeではないので、当然200%から50%に下げれば、それだけ焦げが多くなるはずです。まあ、そういう結果になっているので、やはりリアルタイムで調節可能ということが分かりました。

まとめ:
Dynamic Laser Modeはけっこう効果あります(焦げが少なくなるために、きれいに切断できる)。
Dynamic Laser ModeでM4を使うときは$32=1(レーザーモードON)にする。
従来のコマンド(M3)の場合は、
M3 S1000(レーザーON、出力100%)
でしたが、
Dynamic Laser Mode(M4)の場合は、
M4 S1000(S値:レーザー出力上限値、S500なら最高50%で出力)。
リアルタイムでフィード(25%〜200%)や出力値(0〜100%)も調整可能。
結果的には、Grbl1.1のほうがGrbl0.9よりずっと優れている。

要するに、どうすればいいかというと、Gコード上ではM4 S1000で出力値MAX、フィードもやや速め(M3のときの設定に比べれば1.5倍〜2倍)に設定しておき、bCNCならスライダで出力値やフィードを調整するという手順になるかと。なので、今回の実験のように、いちいちGコードファイルを開いて編集する必要もないと思います。

Inkscape Laser Tool Plug-inでの設定:
例えば、Inkscape Laser Tool Plug-inを使うならば、
こんな感じで、
Laser ON Command: M04、
Laser Speed: 200(これはやや速め/レーザーのW数による)、
Laser Power S#:1000(ここはGrblのスピンドルMAX出力値の1000)
にしておいてGコードを生成。
あとでbCNCなどのG Code Senderのほうで出力値やフィードは現場調整という感じ。

bCNCの画面折り畳み機能:
これはレーザーモードには関係ないですが、bCNCの場合以下のようにState▲をクリックすると、画面が折り畳めます(しばらく気づかなかった)。
bCNCの全体表示画面が大きすぎるとき(Raspberry Piの小さなモニターのときなど)、折りたたみ機能を使えば大丈夫というわけです。

4 件のコメント:

  1. スピンドルの回転数の調整に付いて質問です。
    今までMAX(S1000)でしか使った事無かったのですが、実際に今使ってるスピンドルが何回転しているか把握していませんでした。
    NCコード作成の際に5000rpmでポスト処理していたので1500rpmに変えて見た所回転数は変わりませんでした。なのでbCNCの手動操作で回転数のつまみをスライドさせて見た所、スピンドルONにしたら常に回転数MAXだった事が分かりました。
    ちょっと諸事情で回転数を下げる必要が有るかもしれないと分かったので下げたいと思っています。
    よろしくお願いします。

    返信削除
    返信
    1. NCコード上での5000rpmというのは、今使っているスピンドルモーターのデータシートにのっている最大回転数ということでしょうか?
      もし不明であれば、以下のような装置で計測してみるといいと思います。
      http://s.click.aliexpress.com/e/ZnaaUrZ
      例えば、木工用ルーターなら30000rpm程度、金属用スピンドル(400W)なら12000rpmという感じで様々なので、そのスピンドルモーターの100%が何rpmなのか調べた上でS1000がいいのかS500がいいのか決めるといいと思います。
      スピンドル用のドライバがTTL端子付きの出力可変制御用であれば、Grbl1.1からはbCNCのスライダーで0%〜100%(そのスピンドルの最大回転数)まで変えられます。リレーなどのON/OFF制御しかできないものであれば0%か100%(S0かS1000)のどちらかになってしまいます。

      削除
    2. この間、アマゾンで紹介してもらった調整器具が届いたら試してみたいです。
      今はリレーでしかないのでMAXしか出なかったんですね。
      電源を24Vから12Vに変えると回転数が落ちるのですが、調整できない理由が分かってよかったです。
      スピンドルの回転数を落とす理由は、アクリル切削していていくつか問題が起きまして、(ブログを更新しました。http://ycnnc.blogspot.jp/2017/02/blog-post.html)結論はでませんが以前まで逆回転していたスピンドルを正しい回転に戻すと途中で止まる様になったのです。
      この止まる原因が切削油の使用なのです。切削油を使わない場合は止まる事は無いのですが、数滴垂らすだけで止まるのです。おそらくですが、ノイズなのではなく切削油がスピンドルとアクリルを冷やして、アクリルを堅くしてしまうからだと思います。堅くなったアクリルを切削するのに既にMAXで回転しているスピンドルは耐えきれずに逆電流を引き起こし、Arduinoが緊急停止してしまっているのだと推測しています。
      止まる条件としてアクリル切削、切削油使用、最低3mm以上切削している、決まったカーブのポイントなど一定の共通点が有りました。
      なのでスピンドルの回転が少なくなれば、必要な電力も減り、大きな負荷でも逆電流が小さくなり、ダイオードで制御可能になると思っています。

      削除
    3. bCNCのスピンドルスライダーの下限値(Spindle min:rpm)と上限値(Spindle max:rpm)は、Tool>configで各自が設定するようになっています。もしスピンドルの最大回転数が12000であれば(データシートや自分で計測した結果から)、Spindle maxの欄に12000を入力しておき、スライダーを動かす時に回転数rpmを目安に調整するということになります。
      レーザーなら回転数は必要ないので、0~1000のS値やワット数0W〜10Wなど好みに応じて入れておくという感じです。
      ただ、どんな数値を入れようと、Gコード上のS0〜S1000ということです。

      削除