grblを使用してCNC制御するまでにCNCマシンの仕様をgrblに設定しておく必要があります。
パラメータの数は色々ありますが、必ず設定しなければならないパラメータは多くありません。
ここではgrblで設定できるパラメータの詳細をご紹介していきます。
パラメータの確認方法と設定方法
grblの各パラメータはマイコン上のeepromに記録されています。
最初には初期値が書き込まれていますので確認してみましょう。
grblの書き込まれたArduinoをPCに接続して、ArduinoIDEかgrblコントローラーを起動します。
パラメータの確認
ArduinoIDEならツール>>シリアルモニタを開き「$$」と入力します。
grblコントローラーの場合コンソールが用意されているはずなので同じく「$$」と入力します。
Grbl 1.1h [‘$’ for help]
$0=10
$1=25
$2=0
$3=0
$4=0
$5=0
$6=0
$10=3
$11=0.010
$12=0.002
$13=0
$20=0
$21=0
$22=0
$23=0
$24=25.000
$25=500.000
$26=250
$27=1.000
$30=1000 grbl1.1で追加
$31=0 grbl1.1で追加
$32=0 grbl1.1で追加
$100=250.000
$101=250.000
$102=250.000
$110=500.000
$111=500.000
$112=500.000
$120=10.000
$121=10.000
$122=10.000
$130=200.000
$131=200.000
$132=200.000
ok
このようにgrblの初期設定パラメータを確認できます。
パラメータの設定方法
パラメータを設定するには「$xxx=y」となります。
例えば、$0=10を20へ変更するには「$0=20」とすれば変更できます。
ある程度変更したら「$$」でちゃんと設定変更出来ているか確認すれば完璧です。
その他の使い方はコンソールに「$」と入力すれば確認できます。
grblパラメータの詳細
$0=10 (step pulse time)
初期値 : 10
単位 : マイクロ秒
モータードライバへ送る最小パルスの長さ、確実にドライバに認識される範囲にします。
基本的に弄る必要はありませんが、設定を追い込みたい場合には使用するモータドライバのデータシートを確認して設定します。
$1=25 (step idle delay)
初期値 : 25 (0-255)
単位 : ミリ秒
モーターが止まったときすぐに電力を切らずに指定時間だけ電力カットを遅らせる。
つまりモーター停止から指定時間モーターがロックするということです。外力に強くなりますがその分電力を消費します。
0に設定すると無効化でき、255に設定すると常時ロック状態になります。
$2=0 (step port invert)
初期値 : 0
単位 : マスク値(整数)
ステッピングモーターのステップパルスを反転させます。
デフォルトではステップパルスはオフ=Low,オン=Highで動作しますが反転するとその逆になります。
設定値 | マスク | Xを反転 | Yを反転 | Zを反転 |
---|---|---|---|---|
0 | 00000000 | N | N | N |
1 | 00000001 | Y | N | N |
2 | 00000010 | N | Y | N |
3 | 00000011 | Y | Y | N |
4 | 00000100 | N | N | Y |
5 | 00000101 | Y | N | Y |
6 | 00000110 | N | Y | Y |
7 | 00000111 | Y | Y | Y |
$3=0 (dir port invert)
初期値 : 0
単位 : マスク値(整数)
ステッピングモーターの方向ピンの信号を反転します。
組み立てたCNCマシンのある軸の移動方向が意図した方向と逆の場合はここで設定することにより、移動方向が反転します。
CNCマシンの配線変更でも対応できるので配線変更が難しい場合はこちらで設定してしまうと楽です。
設定値 | マスク | Xを反転 | Yを反転 | Zを反転 |
---|---|---|---|---|
0 | 00000000 | N | N | N |
1 | 00000001 | Y | N | N |
2 | 00000010 | N | Y | N |
3 | 00000011 | Y | Y | N |
4 | 00000100 | N | N | Y |
5 | 00000101 | Y | N | Y |
6 | 00000110 | N | Y | Y |
7 | 00000111 | Y | Y | Y |
$4=0 (step enable invert)
初期値 : 0
単位 : bool
モータードライバのイネーブルピンへの出力を反転するかを設定できます。
$5=0 (limit pins invert)
初期値 : 0
単位 : bool
初期状態では内部プルアップが機能しているのでLowでリミットスイッチが押されたと認識されます。
逆にHighでリミットスイッチが押されたと認識させたい場合は$5=1として、各リミットスイッチをプルダウンにします。
$6=0 (probe pin invert)
初期値 : 0
単位 : bool
内部プルアップによりLowでオンと認識されます。プルダウン回路を追加して入力を反転させた時には$6=1に設定します。
$10=3 (status report)
初期値 : 3
単位 : 整数値
「?」によりリアルタイムのステータスレポートを返します。
新たに設定するには以下の表を参考に必要なレポートの値を合計した値を$10=xxで書き込みます。
デフォルトでは機械位置と作業位置を返すので1+2で$10=3が書き込まれています。
レポートの種類 | 値 |
---|---|
機械位置 | 1 |
作業位置 | 2 |
プランナーバッファ | 4 |
RXバッファ | 8 |
制限ピン | 16 |
$11=0.020 (junction deviation)
初期値 : 0.020
単位 : mm
最速で移動している時にそのままの速度で急なコーナー等に入った時にステップ値や現在位置を見失う可能性があり、適切にコーナーでの減速をさせる為にここに設定します。
設定値は数値が大きければコーナー通過速度は速くなり、小さくするとゆっくり通過するようになります。
$12=0.002 (arc tolerance)
初期値 : 0.002
単位 : mm
円や円弧の精度に関する設定です。
更に精度を上げたい場合は数値を小さく、速度を稼ぎたければ大きくします。
基本的にそのままで問題ないと思われます。
$13=0 (report inches)
初期値 : 0
単位 : bool
座標系の単位をミリで返すかインチで返すかを設定します。
デフォルトでは$13=0でミリです。インチに変更するなら$13=1です。
$20=0 (soft limits)
初期値 : 0
単位 : bool
マシンの移動限界をソフト的に制御するかどうかを設定します。
$20=1にしたら$130,$131,$132の最大移動量も設定する必要があります。
ソフトリミットが作動するとスピンドルやクーラントなどすべてが停止して警告を発しますが、位置情報は保持されています。
$21=0 (hard limits)
初期値 : 0
単位 : bool
ソフトリミットと近い動作ですがこちらは物理的なスイッチを使用します。
各軸の稼働限界点に取り付けて使用します。
ソフトリミットとの違いはハードリミットが作動したらgrbl自体をリセットする必要があることです。
そのため位置情報などは失われてしまうので再設定が必要になります。
$21=0でハードリミット無効
$21=1でハードリミット有効
$22=0 (homing cycle)
初期値 : 0
単位 : bool
各軸の原点移動を行えるようになります。
$22=1に設定した場合はロックされた状態で起動するので、最初にロック解除する必要があります。
ホーミングサイクルを$22=1にするにはリミットスイッチを設置する事が前提になります。
$23=0 (homing dir invert)
初期値 : 0
単位 : マスク値(整数)
デフォルトでは正方向へホーミングします。
リミットスイッチが負方向にしか取り付けていないという時にはここを設定してホーミング方向を反転します。
正負どちらにもリミットスイッチがあるなら、自身の思う原点をホームポジションに設定できるようになります。
設定値 | マスク | Xを反転 | Yを反転 | Zを反転 |
---|---|---|---|---|
0 | 00000000 | N | N | N |
1 | 00000001 | Y | N | N |
2 | 00000010 | N | Y | N |
3 | 00000011 | Y | Y | N |
4 | 00000100 | N | N | Y |
5 | 00000101 | Y | N | Y |
6 | 00000110 | N | Y | Y |
7 | 00000111 | Y | Y | Y |
$24=25.000 (homing feed)
初期値 : 25.000
単位 : mm/min
ホーミングは2段階の速度で機械原点を探します。
最初は高速で移動してリミットスイッチを見つけると正確な位置を見つける為にゆっくり探します。
この2回目のゆっくりリミットスイッチを探す時の速度を設定します。
$25=500.000 (homing seek)
初期値 : 500.000
単位 : mm/min
ホーミング時1段階目のリミットスイッチを探す時の速度を設定します。
$26=250 (homing debounce)
初期値 : 250
単位 : ミリ秒
リミットスイッチに機械式を使用している場合、チャタリングによる誤検出を防ぐための余裕時間です。初期値を例にすると、最初の検出から250ミリ秒待って再検出されれば正式にスイッチオンとみなされます。
$27=1.000 (homing pull-off)
初期値 : 1.000
単位 : mm
リミットスイッチを検出した位置を原点としてしまうとリミットスイッチが入りっぱなしになってしまうため、設定した距離だけ原点をずらします。
$30=1000 (Maximum spindle speed) grbl1.1
初期値 : 1000
単位 : RPM
スピンドルモーターの最大回転数
$31=0 (Minimum spindle speed) grbl1.1
初期値 : 0
単位 : RPM
スピンドルモーターの最小回転数
$32=0 (Laser-mode enable) grbl1.1
初期値 : 0
単位 : bool
$32=1でレーザー移動時に自動でレーザーをオフにし、照射時には自動でオン出来るようになる。
$100=250.000 (x, step/mm)
$101=250.000 (y, step/mm)
$102=250.000 (z, step/mm)
初期値 : 250.000
単位 : step/mm
各軸が1ミリ進むのに必要なステッピングモーターのステップ数を設定します。
例
ステッピングモーターの1回転のステップ数(200)
マイクロステップ(2)
リードネジのピッチ(2ミリ)
step/mm = (200 * 2) / 2
stei/mm = 200
マイクロステップを使用しない場合は0ではなく1として計算します。
$110=500.000 (x max rate, mm/min)
$111=500.000 (y max rate, mm/min)
$112=500.000 (z max rate, mm/min)
初期値 : 500.000
単位 : 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)
初期値 : 10.000
単位 : mm/sec^2
各軸の移動時の速度を加速します。
値が小さいとゆっくりで大きいと加速幅が大きくなります。
移動距離が長い時ほど恩恵が得られます。設定値を弄るならテスト用Gコードで試しながら調整する必要があります。
$130=200.000 (x max travel, mm)
$131=200.000 (y max travel, mm)
$132=200.000 (z max travel, mm)
初期値 : 200.000
単位 : mm
$20=1 (soft limits)の時に使われる各軸の最大移動量になります。
ここの設定値によってソフトウェアリミット機能が働きます。
ここは押さえておきたい設定項目
すべてのパラメータを設定しなくてもとりあえずは動かせます。
とはいえ最低限設定しておくと良さそうなパラメータはこんな感じです。
$20=0 (soft limits)
有効範囲外に出てしまう危険を回避できますし、ハードウェアの追加も必要ないので設定しておくといいでしょう。
$100=250.000 (x, step/mm)
$101=250.000 (y, step/mm)
$102=250.000 (z, step/mm)
これらの設定は必須です。使用しているステッピングモータの仕様とリードネジの仕様により変化するからです。この設定が正確に出来ていないと意図した移動量を得られません。
$110=500.000 (x max rate, mm/min)
$111=500.000 (y max rate, mm/min)
$112=500.000 (z max rate, mm/min)
とりえず動かして各軸の速度に不満が出てきたら調整してあげます。
$130=200.000 (x max travel, mm)
$131=200.000 (y max travel, mm)
$132=200.000 (z max travel, mm)
$20(soft limits)を有効にしたら必ず設定しておきましょう。
$3=0 (dir port invert)
配線の問題で思った方向と反対方向に動いてしまった時には、ここを設定すれば移動方向を反転させられます。
簡単に配線の入れ替えが出来るならその必要はありません。
まとめ
いかがでしたか、ちょっと設定項目が多いので何が何やらという感じになってしまうかもしれませんね。
私自身完璧に理解できている訳ではないので説明不足のところもありそうなのですが、grblの設定のちょっとでも一助になればうれしいです。