前回の投稿 では「レーザー加工機のPCが立ち上がらなくなり、この機会に今までLinuxCNCで制御していたのをGRBLに変更しようと検討していたらPCが復活してしまった」 件を書きました。 しかしGRBL化はその後も続けていて、途中色々とハマりながらも使える様になってきたのでその備忘録です。 なおGRBL といっても最近は32bitマイコン上で動作するものが多数リリースされているので、今回はESP32 で動作するFluidNC を使う予定です。 ※以下ではGRBLとFluidNCという単語は同じ意味で使っています。
まずは今までの制御回路を紹介
今までは古いPCにインストールしたLinuxCNC から、写真の基板にパラレルポート(プリンタポート)で接続していました。しかし今どきパラレルポートを備えたPCは見掛けないので、いつかはUSB化する必要があります。 なお「USB-パラレル変換ケーブル使えば?」 と思われるかもしれませんが、これだとタイミングの問題があってダメなのです。
この基板は下の回路になっていて、左側の36ピンコネクタがパラレルポートです。 このパラレルポートにGRBL基板を繋いでやれば手っ取り早くできそうです。 なお変更点として、これまでレーザーのON/OFFはZ軸モーターの方向信号が下向きだったらON、上向きだったらOFFとし、レーザーパワーはレーザー電源にボリュームを接続した人力設定としていました(これだとCNCフライスで切削するGコードで済むのです)。 今後はGコードのM3,M4,M5命令でレーザーをON/OFFさせ、S値でパワーを決める様に変更しようと思います。
FluidNC基板
FluidNCはESP32マイコン上で走るので下の様な回路を描きました。ESP32は先日3枚959円(送料無料)で買ったDevKitボードを載せることにします。 この図の36ピンパラレルコネクタを上図のパラレルコネクタに接続する訳です。 一応、水流センサーとドアオープンセンサーの端子も載せていますが、当面これらのセンサーは元の基板に接続した状態で使う予定です。
そして作った基板がこれ。 コネクタ付きフラットケーブル(45cm)はいつだったか10本入りのジャンクを買ったもの。これまで電線取り用途にしか使っていませんでしたが、今回はコネクタも含めて使用します。
こんな感じで元基板とGRBL基板とを接続しました。
元の基板を少し改造
なおESP32は3.3Vで動作しますが元基板R1~4のプルアップ電源は5Vです。抵抗が100KΩと大きいのでESP32の保護ダイオードが効いて3.3V+α程度に収まる事を期待していましたが、やってみたら5V近くまで上がっていました。たぶん壊す事はないと思いますが定格を超えているので念のため対策します。 これにはプルアップ電源をパラレルコネクタの18ピンに接続し、GRBL基板から3.3Vを貰う様に改造しました。
FluidNCをインストール
下記リンクページに書いてある通りにダウンロードしてバッチファイルを実行すればインストールできました。http://wiki.fluidnc.com/en/installation なお書き込むバイナリには3種類あり、「無線LANを使う」 、「Bluetoothを使う」 、「無線は全く使わない」 に分かれていて、私は無線LAN版を書き込みました。
FluidNCの設定
インストールが終わったら設定です。 FluidNCの設定にはコンフィグファイルに書いて読み込ませる項目と、(WiFi設定の様に)コンフィグファイルに含まれない項目があります。 モーター制御やホーミングの情報設定はコンフィグファイルをconfig.yamlのファイル名で作成してWebインストーラーからアップロードします。 なおWebインストーラーは下の画面から入ります。 Connctを押してCOM*番号を選び・・・
そして下の画面が出たら「File brouwer」を押してアップロードします・・・
実際のコンフィグファイルは夫々のマシン毎に違うでしょうけど、ウチのを参考に載せておきます。 →config.yaml
なお無線LANの設定はコンフィグファイルには含まれてなくて、下図の様に直接Webインストーラーから設定します。
座標位置が表示されない問題対策
また実際に動作させてみたらレーザーヘッドの座標位置がLaserWeb4に表示されませんでした。どうやらFluidNCがレポートする情報がLaserWEB4が想定しているものと違うらしく、WebインストーラーのTerminalから次のコマンドで設定を変更する事で表示される様になりました。
$Report/Status=2
LaserWeb4をインストール
PC側のソフトはLaserWeb4 を使う事にします。これはPCからGRBL基板にGコードを送るので「センダーソフト」と言われるものです。 またこれまでGコードはNCVCで作っていましたが、LaserWeb4はGコード生成もやってくれるので作業の手間が省けることを期待しています。 更にLaserWeb4とFluidNCの組み合わせなら、PC⇔ESP32間を無線LANで接続できるので、今まで使っていたLinuxマシンを使わず、少し離れたメインPCから接続できてとっても便利になる予感です。 LaserWeb4のインストールはインストーラーをダウンロードページ から取ってきて実行するだけでした。
LaserWeb4の設定
まずは起動します。
ウィンドウ左側の「Settings」ボタンを押すと下図の様に幾つかのカテゴリに分かれたメニューが現れます。この中で今回書き換えたのはMachine Profile 、Machine 、Gcode の3カ所です。
それぞれ次の様に設定しました。
〇Machine Profile Machine Id:HOIHOI-Laser ←装置名 〇Machine MACHINE WIDTH:435mm ←X方向の最大値 MACHINE HEIGHT:350mm ←Y方向の最大値 〇Gcode GCODE END: M5 ; Disable Laser/Spindle G0Z1.0 G0X0Y0 G30 TOOL ON: M4 TOOL OFF: M5 PWM MAX S VALUE: 255
LaserWeb4とFluidNCの接続
ここまで来たらLaserWeb4とFluidNCを接続します。 といってもインストールの時点でPC-FluidNC間にはUSBケーブルを接続していましたよね。もしWebインストーラーとFluidNCが繋がったままなら切っておきます。 このままUSBで接続するにはLaserWeb4のCommsメニューを開きます。USB/SERIAL PORTのところは自分の環境のCOM*を選択して「Connect」ボタンを押すと・・・
右下に「接続したよ」っぽいメッセージが出て繋がった事が分かります。
でも折角なので無線LANで接続してみます。これには「MACHINE CONNECTION」をTelnetに変更してIPアドレスを設定しConnectを押します。
これで基本的には接続OKなのですが、我が家のレーザー加工機はWiFiアクセスポイントから少し距離があり、GRBL基板の前に人が経つと接続が切れたりしました。 これではマズいので工作室にWiFiアクセスポイントを増設する事にします。 という事で2ndSTREETに行って買ってきました(税込¥1210-)。これをアクセスポイントにすると安定して接続できる様になりました。
ベクターカットしてみる。
その他の色々とハマった部分は省略してベクターカットの実行です。ここからは順を追って・・・ まずjw-cad で下の様なテスト用の図を描きました。従来もそうでしたがカットする線と補助線とはレイヤーを分けておきます。 なおNCVC の場合だとレイヤー名に決まり(カットするレイヤーは”CAM01″等)がありましたがLaserWeb4の場合は後でカットするレイヤーを選択するので特に必要ありません(分かりやすいというメリットはあるけど)。 そしてdxf形式で保存し、念のためjww形式でも保存しておきます。
LaserWeb4の画面に戻り、Filesメニューから「Add Document」ボタンを押すとファイルセレクションが開くので、先ほどのdxfファイルを選択します。
この時点で画面上に図形が見える場合もありますが表示範囲を超えていて見えない場合もあります。そこでファイル名の部分(図では「テストカット.dxf」)をクリックすると、何やら数値を入れる小窓が開きます。ここでX-Min、Y-Minが図形を置く最小座標値なので5mm程度の小さめの値を入れると原点に近い場所に図形が移動します。 なお表示がシマシマ線なのは現在選択中の印です。
そしてカットしたいレイヤーだけを選択する為、ファイル名左側の「+」印を押すとファイルに含まれているレイヤーがそれぞれ表示されます。この中からカットしたいレイヤーをマウスでドラッグし、少し下にある「Drag document(s) here to add」にドロップしてやるとそのレイヤーがカット対象となり下に設定画面が開きます。
ここでレーザーパワーやカットレートを入れて・・・
「Generate」ボタンを押すとGコードを生成します。生成したコードを確認したい場合は目玉マークをクリックすると表示されます。
これで準備完了。 Control画面に戻って「Home all」を実行後、「run job」を押すと加工機が動作し・・
カット完了です。 だいぶお手軽に作業できる様になりましたね。
ESP32 Devkit基板への電源供給について
ここまでESP32基板へはUSBケーブルから給電していました。無線LAN化後も電源供給だけUSB電源を使っても良いのですが、スッキリさせるために加工機側から5Vを供給する端子を追加しました。
次、ラスター描画をしてみる。
みら太氏のブログによると LaserWeb4によるラスター描画は動作が遅い上に上手く描画できなくてLightBurn に移行したという事が書かれています。LigutBurnはメチャ良いらしいですが有料ソフトなので、どちらにしても一旦LaserWeb4を試してから検討する事にします。我が家の用途では99%がベクターカットですしね。。。
という事で、とりあえずLaserWeb4でラスター描画をやってみました・・・が、案の定上手くいきません。
こういうテストパターンを描画したのですが・・・
結果がこれ。 レーザーOFFのところでも弱く漏れ出ている感じです。
レーザーの強弱はレーザー電源にPWMを入れる事で制御しており、この辺りが上手くいっていないのかも。。。
ならばとFluidNCの設定を「disable_with_s0=true」 にしてみました。この設定をtrueにするとGコードの命令でS値を0にした際、(M5命令同様に)出力も止めるという意味になります。 なんか言葉では説明し辛いですね。下図のレーザー電源図でいうとINに入れるPWMを0に設定した時にK端子も一緒にOFFになるので完全にレーザーが出なくなる筈です。
レーザー電源
この設定で同じGコードを実行したらこの様になりました。
不要なお漏らしは消えていますが、往路と復路でレーザー発射点がずれているっぽいです。上記みら太氏のブログ でも往復でずれると言われているのはこの症状かもしれません。
この後色々とイジって現在は何とかなったのですが、そのあたりは次の投稿で・・・