Baumkuchen’s Workshop

バイオリンと電子工作、DIY、ジョギングなど。

作りかけの自作CNCを完成させます#8-Grblコントローラ

コントローラソフトの続きです。Grblを使ってコントローラーを構成します(暫定的にです)。

baum-kuchen.hatenablog.com

ArduinoへのGrbl構築

使うのは、arduino nanoです。Githubからファイルをダウンロードして、Githubの解説通りに行って、特に問題なくコンパイル&ローディングができました。簡単に手順をまとめると以下の通り。

  1. GithubからGrblをダウンロードし、展開
  2. Arduino IDEを立ち上げ
  3. GrblをAruduinoのライブラリとして読み込み
  4. ”スケッチ例”から”カスタムライブラリスケッチ例”を開く
  5. コンパイル&ロードを行う

Grblのセッティング

TeraTermを使って、Grblに接続し、セッティングを行います。$$コマンドで、現在のパラメータを確認し、$x=数値コマンドで変更します。1mmあたりのステップ数とDIRの方向は必須ですが、あとは適当です。各パラメータの意味はここにあり。

  • $0:stepパルスのパルス幅。ドライバの仕様に合わせ設定。現状ドライバボードが5KHzサンプルで動いているので、まずは最大値128に設定。
  • $3:DIRの方向ですが、Y軸だけ極性を反転(=2)を設定
  • $100、$101、$102:1mmあたりのステップ数。200Stepに設定。ステッピングモータの1回転あたりのstep数÷ネジピッチで計算。マイクロステップは無し。
  • $120、$121、$122:最大加速度。適当。0.3sで、3mm/sに加速できるだろうとして、10mm/s^2を設定。
  • $130、$131、$132:最大可動範囲。それぞれ、290、150、40mmを設定。ただし、$20(ソフトリミット)を1にしないと、まだ有効ではない。

設定した結果を$$コマンドで確認します。ちなみに、設定値は、EEPROMに書かれるので、電源をOFF/ONしても値は保持されます。

$0=244 (step pulse, usec)
$1=25 (step idle delay, msec)
$2=0 (step port invert mask:00000000)
$3=2 (dir port invert mask:00000010)
$4=0 (step enable invert, bool)
$5=0 (limit pins invert, bool)
$6=0 (probe pin invert, bool)
$10=3 (status report mask:00000011)
$11=0.010 (junction deviation, mm)
$12=0.002 (arc tolerance, mm)
$13=0 (report inches, bool)
$20=0 (soft limits, bool)
$21=0 (hard limits, bool)
$22=0 (homing cycle, bool)
$23=0 (homing dir invert mask:00000000)
$24=25.000 (homing feed, mm/min)
$25=500.000 (homing seek, mm/min)
$26=250 (homing debounce, msec)
$27=1.000 (homing pull-off, mm)
$100=200.000 (x, step/mm)
$101=200.000 (y, step/mm)
$102=200.000 (z, step/mm)
$110=200.000 (x max rate, mm/min)
$111=200.000 (y max rate, mm/min)
$112=200.000 (z max rate, mm/min)
$120=10.000 (x accel, mm/sec^2)
$121=10.000 (y accel, mm/sec^2)
$122=10.000 (z accel, mm/sec^2)
$130=290.000 (x max travel, mm)
$131=150.000 (y max travel, mm)
$132=40.000 (z max travel, mm)
ok

中継基板の作成

直接ケーブル類をAruduinoにバンダ付けしてもいいですが、一応まだまだArduinoを使うのは一時的としているので、中継用のユニバーサル基板に載せることとします。単純なコネクタが載っただけの基板です。

フラットケーブルが、XYZ軸ドライバへの接続用。基板上の一列の4pピンヘッダは、スピンドル用のインターフェスですが、現在未使用。Arduino Nanoの横の4pピンヘッダは、Feed hold(一時停止)とCycle Start(再始動)のスイッチ用です。

f:id:Baum_kuchen:20210925002647j:plain

CNC本体に仮止めしたところ。

f:id:Baum_kuchen:20210925002747j:plain

Candle(Gコードセンダー)

 Gコードセンダーは、Candleを使うことにしました。実際にそれぞgrblの載ったarduinoと繋げてみて、素直を動いたのが決め手です。

動作確認

まずは、手書きの簡単なGコードサンプルで動作確認。多角形近似で円を書いてみました。

f:id:Baum_kuchen:20210925112723j:plain

円がかなり、いびつです。多分、ペン先のガタを含めたバックラッシュの問題ではないかと思います。とにかく、何とかコントロールはできるようになったので、問題点を一つ一つ改善していくのみ。

f:id:Baum_kuchen:20210925112742j:plain

今後について

次は、スピンドルの作成に行きたいところですが、XYだけでも精度が出ていないので調整をするというのもありますが、この段階でCAMソフトと連携し、CAD→CAM→Grblの流れを一通りやってみます。

FreeCADで書いたモデルからDXFファイルを生成、これに基づきGsimpleでGコード生成、最後にCNCで加工(まずは、XYのプロットのみ)といったところでしょうか。

今回も短いですが、少しずつ前進していきます。よろしかったら、引き続き、お付き合い願います。