自作CNCを動かし始めると、「軸端へぶつかる前に止めたい」「電源を入れ直しても機械の基準位置を再現したい」と考えるようになります。そのために使われるのが、リミットスイッチとホーミングです。
ただし、スイッチを取り付けて設定を一度に有効化すると、配線論理や移動方向が逆だった場合に、停止すべき方向へ機械が走り続ける危険があります。最初に現在の設定を保存し、入力確認、ホーミング、ソフトリミット、ハードリミットの順に、一段階ずつ確認することが大切です。
安全上の注意:この記事は一般的なGRBL 1.1の説明です。Studio Kuraの実機で使っているCNCシールドの版、LIMIT端子の並び、スイッチ形式、配線、電圧、GRBL設定値は未確認です。実物のシルク印刷、基板回路、GRBL版、メーカー資料を確認するまで、端子名や設定値を断定しません。
リミットスイッチとは
リミットスイッチは、軸が機械の端や基準位置へ到達したことをコントローラーへ知らせる入力装置です。機械式マイクロスイッチのほか、光学式や磁気式のセンサーもあります。
GRBLでは、同じスイッチを次の2つの目的に使えます。
- ホーミング:毎回同じ位置を検出し、機械座標の基準を作る
- ハードリミット:動作中にスイッチが反応したら、緊急性の高い停止を行う
スイッチを付けただけでは、CNC全体の安全が保証されるわけではありません。スイッチの故障、配線断線、ノイズ、設定ミス、機械の惰性などがあるため、非常停止や主電源遮断をすぐ行える状態も必要です。
ハードリミットとソフトリミットの違い
ハードリミット $21
ハードリミットは、物理スイッチの入力を監視します。GRBL公式資料では、スイッチが作動すると直ちに動作を停止し、接続されている場合はスピンドルやクーラントも停止して、ALARM状態へ入ると説明されています。
急停止ではステッピングモーターが指令位置を失っている可能性があるため、ハードリミット作動後の機械座標は信用しません。原因と機械状態を確認し、通常はリセットと再ホーミングが必要です。
$21=0 ハードリミット無効
$21=1 ハードリミット有効
ハードリミットは物理的な安全補助になりますが、長い信号線やスピンドルからのノイズで誤検知すると、加工中でも即座に停止します。配線と入力論理が確認できる前に有効化しないでください。
ソフトリミット $20
ソフトリミットは、物理スイッチの反応を直接使うのではなく、GRBLが把握している機械座標と最大移動量から、指令先が可動範囲外かを判断します。
$20=0 ソフトリミット無効
$20=1 ソフトリミット有効
ソフトリミットを正しく使うには、少なくとも次が必要です。
- ホーミングが有効で、正常に完了している
- X・Y・Z軸の最大移動量
$130・$131・$132が実機に合っている - ホーミング方向と機械座標の考え方が合っている
- steps/mmが大きく外れていない
ソフトリミットは、コントローラーが現在位置を正しく把握していることが前提です。脱調、リセット、手動での軸移動などで位置関係が崩れた場合、そのまま信用してはいけません。
ホーミングとは
ホーミングは、固定位置に取り付けたスイッチを探し、毎回同じ機械座標の基準を作る動作です。GRBLでは$22=1でホーミング機能を有効にし、通常は$Hコマンドでホーミングサイクルを開始します。
$22=0 ホーミング無効
$22=1 ホーミング有効
標準的なGRBL構成では、最初にZ軸を正方向へ逃がし、その後X軸とY軸を正方向へ動かしてスイッチを探します。しかし、コンパイル時の設定や派生ファームウェアによって順序は変わり得ます。Studio Kura実機の動作順は未確認です。
ホーミングを有効にすると、起動後にホーミングが完了するまで通常の移動コマンドがロックされる構成があります。$XでALARMロックを解除できる場合もありますが、原因を確認せず、ホーミングの代わりとして常用しないでください。
NOとNCの考え方
機械式スイッチには、主に次の接点があります。
- NO(Normally Open/通常開):普段は回路が開き、押すと導通する
- NC(Normally Closed/通常閉):普段は導通し、押すと回路が開く
- COM(Common/共通):NOまたはNCと組み合わせる共通端子
GRBL公式の標準構成では、リミット入力にArduinoの内部プルアップが使われ、通常は入力がHighに保たれます。公式設定資料で説明されている基本配線は、NOスイッチをリミット入力とGNDの間へ接続し、作動時に入力をLowへ落とす方式です。
NC配線を使う場合は、入力論理の反転$5が関係します。
$5=0 標準のリミット入力論理
$5=1 リミット入力論理を反転
NC配線は、回路の構成によっては断線を異常として検出しやすくでき、外来ノイズに強くなる場合があります。ただし、CNCシールドの回路、信号電圧、プルアップ、フィルター、センサー種類によって適切な配線は変わります。「NCなら必ず安全」「$5=1なら必ず正しい」とは断定できません。
NO・NCを決める前に確認するもの
- スイッチのCOM・NO・NC表記
- CNCシールドの正確な版と回路
- LIMIT端子の信号・GND・電源の並び
- GRBLの版と
$5の現在値 - センサーが機械接点式か、電源を必要とする方式か
- 入力が作動したとき、UGSまたはGRBLの状態表示でどのピンが反応するか
端子の並びを想像で判断しないでください。電源端子を信号端子へ誤接続すると、Arduinoやシールドを破損する可能性があります。
ノイズと誤検知への対策
リミット入力は、スピンドル、ステッピングモーター、電源、長い配線などからの電気的干渉を受けることがあります。ハードリミットを有効にした状態で誤検知すると、加工中でも突然ALARMになります。
まず、部品を追加する前に次を確認します。
- リミット線をスピンドル線やモーター線から離す
- 信号線と対応するGND線を一組として配線する
- 配線を必要以上に長くしない
- コネクター、ねじ端子、圧着部分の緩みをなくす
- ケーブルを可動部や電源線と束ねない
- 主軸停止時と主軸回転時で誤検知の有無を比較する
- USB通信切断とリミット入力の誤検知を区別する
- UGS Consoleの
ALARM、Pn:などの表示を記録する
ツイストペア、シールド線、フェライトコア、外部プルアップ、RCフィルター、フォトカプラー等が有効な場合もありますが、値や接続方法は基板回路に依存します。インターネット上のコンデンサー値をそのまま追加せず、CNCシールドと入力回路を確認してから検討します。
$26だけでは加工中の誤検知対策にならない
$26はホーミング時のスイッチバウンスを待つデバウンス時間です。公式資料では一般的な機械式スイッチについて5〜25 msが目安として説明されていますが、これはStudio Kura実機の推奨値ではありません。
重要なのは、$26がホーミングで基準位置を探す際の待ち時間であり、ハードリミットの電気ノイズを常時除去する万能設定ではないことです。加工中の誤検知は、配線経路や入力回路を含めて原因を確認します。
$20〜$27の役割
| 設定 | 役割 | 確認ポイント |
|---|---|---|
$20 |
ソフトリミットの有効・無効 | ホーミングと正確な$130〜$132が前提 |
$21 |
ハードリミットの有効・無効 | 誤検知すると即時停止。配線確認後に有効化 |
$22 |
ホーミングサイクルの有効・無効 | スイッチ位置、移動方向、起動時ロックを確認 |
$23 |
ホーミング方向反転マスク | 実際のスイッチ位置に合わせる。最初は一軸ずつ方向確認 |
$24 |
ホーミングの低速な位置決め速度(mm/min) | 再現性を確認する速度。速すぎる値を入れない |
$25 |
スイッチを探すホーミング探索速度(mm/min) | スイッチへ衝突しない速度から確認 |
$26 |
ホーミング時のデバウンス時間(ms) | 機械接点のバウンス用。常時ノイズ対策ではない |
$27 |
ホーミング完了後のプルオフ距離(mm) | スイッチを確実に解除できる距離が必要 |
$23の方向反転マスク
$23は、どの軸を通常と反対方向へホーミングさせるかをビットマスクで指定します。標準的な3軸GRBLでは、X=1、Y=2、Z=4を組み合わせます。
$23 |
反転する軸 |
|---|---|
| 0 | なし |
| 1 | X |
| 2 | Y |
| 3 | X・Y |
| 4 | Z |
| 5 | X・Z |
| 6 | Y・Z |
| 7 | X・Y・Z |
これは一般的なGRBL 3軸構成の説明です。軸割り当てや派生ファームウェアが異なる場合は、その資料を優先してください。
$23を変更すると、ホーミング開始時に軸が向かう方向が変わります。スイッチと反対方向へ動き始めた場合、探索距離いっぱいまで止まらない可能性があります。最初の試験では刃物と材料を外し、短時間で電源を切れる状態で、動き始めの方向だけを確認します。
$24・$25・$26・$27
$24:ホーミングの位置決め速度
GRBLは、スイッチを見つけた後、より遅い速度で再度スイッチ位置を探し、基準位置を精密に決めます。$24はこの低速な位置決め速度です。目標は速さではなく、毎回同じ位置を再現できることです。
$25:ホーミングの探索速度
最初にスイッチを探しに行く速度です。高すぎると、スイッチや機械端へ強く衝突する危険があります。Studio Kura実機の安全な速度は未確認のため、具体値は提示しません。
$26:ホーミングのデバウンス時間
機械式スイッチを押した瞬間に接点が細かくON・OFFする現象を待つ時間です。大きくすれば配線ノイズが解決するとは限らず、ホーミング時間も増えます。
$27:ホーミング後のプルオフ距離
ホーミング完了後、スイッチから少し離れて入力を解除する距離です。短すぎるとスイッチが作動したままになり、ハードリミットや次回動作で問題になります。長すぎると不要な移動が増えます。
GRBLのALARM:8は、ホーミング後のプルオフでスイッチを解除できなかった場合に関連します。機械が動かない理由を$27だけの問題と決めつけず、スイッチ機構、配線論理、移動方向も確認します。
設定前に$$を保存する
設定を変更する前に、UGSでGRBLへ接続し、Consoleから次を送ります。
$$
表示された全設定を、日付と機械名を付けてテキストで保存します。最低限、次を記録します。
確認日:
機械名:
GRBLバージョン:
UGSバージョン:
$5:
$20:
$21:
$22:
$23:
$24:
$25:
$26:
$27:
$100 / $101 / $102:
$130 / $131 / $132:
スクリーンショットだけでなく、検索・比較できるテキストでも残します。設定変更は一項目ずつ行い、変更前、変更後、確認結果を記録してください。
段階的な確認手順
1. 電源を切って機械と配線を確認する
- 刃物と材料を外す、または安全に退避する
- スピンドルが誤始動しないよう、スピンドル電源を切る
- 各軸が機械端から十分離れていることを確認する
- スイッチの取付けが緩んでいないか確認する
- COM・NO・NCと、シールド側端子を資料で確認する
- 配線の抜き差しはUSB、外部電源、スピンドル電源を切って行う
2. 現在の$$を保存する
UGS Consoleで$$を取得します。GRBL版、UGS版、CNCシールド版も分かる範囲で記録します。分からない項目は推測せず「未確認」とします。
3. 動かさずにスイッチ入力を確認する
ハードリミットとホーミングを無効のままにし、安全な状態でスイッチを一つずつ操作して、GRBLのリアルタイム状態表示を確認します。GRBL 1.1では、入力が作動している場合に状態レポートのPn:欄へ対応文字が表示される構成があります。
- 押していない状態で入力が作動扱いになっていないか
- 押したスイッチと対応する軸が一致するか
- X・Y・Zを同時に判定していないか
- 手を離すと確実に解除されるか
- 主軸停止時に入力が安定しているか
この段階で論理が逆、入力が不安定、軸対応が違う場合は、機械を動かしません。
4. ホーミング方向を確認する
スイッチ入力が正しく読めることを確認してから、ホーミングを準備します。非常停止または主電源遮断へすぐ手が届く状態で、最初は軸が動き始める方向だけを確認します。
スイッチと反対方向へ動く場合は直ちに停止し、$23と機械のスイッチ位置を再確認します。方向を直すために複数設定を同時変更しないでください。
5. 低速でホーミングを確認する
Studio Kura実機の$24・$25は未確認です。現在値、機械サイズ、スイッチ強度、軸の質量を確認し、衝突しない安全な条件で試験します。
ホーミング完了後は、次を確認します。
- 各軸がスイッチを検出したか
- スイッチ位置を再度低速で探したか
$27分だけ離れ、スイッチ入力が解除されたか- 複数回行って基準位置が再現するか
- UGS ConsoleにALARMやエラーが出ていないか
6. 最大移動量を確認してソフトリミットを検討する
ホーミングが安定した後に、$130・$131・$132と実際の安全な移動範囲を確認します。機械の物理的な全長ではなく、工具、主軸、固定具、配線を含めた安全に使える範囲を基準にします。
最大移動量が未確認のまま$20=1にしないでください。
7. ハードリミットは最後に有効化する
入力論理、ノイズ、ホーミング、プルオフが安定してから、ハードリミットを検討します。有効化後は、主軸を停止した安全な短距離動作から確認します。
ハードリミットが作動した場合は、単にALARMを解除して作業を続けず、次を確認します。
- どのスイッチが反応したか
- 実際に機械端へ到達したのか、誤検知か
- 機械や工具に衝突・緩みがないか
- 配線と入力状態が正常か
- リセットと再ホーミングが必要か
よくある症状と確認項目
ホーミングを始めるとスイッチと反対へ動く
$23の方向マスク- スイッチが置かれている軸端
- 軸方向の定義
- GRBLのコンパイル設定
起動直後からLIMITが作動扱いになる
- NO・NCの選択
$5の入力論理- 信号とGNDの端子
- 配線短絡、端子の緩み
- 電源を必要とするセンサーの仕様
主軸を回すとALARMになる
- スピンドル線とリミット線の距離
- 信号線とGNDの配線方法
- コネクター、接地、シールド
- USB通信切断か、
Pn:のリミット反応か - 入力回路に適したノイズ対策
ホーミング後もスイッチが押されたままになる
$27のプルオフ距離- スイッチのストロークと取付け
- ホーミング方向
- 入力論理
- 機械的な引っ掛かり
ソフトリミットが想定位置で作動しない
- ホーミングが完了しているか
$130・$131・$132$100・$101・$102- 機械座標とワーク座標を混同していないか
- 脱調やリセット後に再ホーミングしたか
Studio Kura実機で公開前に確認する事項
次の項目は、現時点では未確認です。記事へ実機写真や固有値を追加する場合、松崎宏史社長による目視確認が必要です。
- Arduino UnoとCNCシールドの正確な型番・版
- X・Y・ZのLIMIT端子の表記と並び
- LIMIT端子に電源端子が含まれるか
- 使用中または取付け予定のスイッチ・センサー種類
- COM・NO・NCの使用接点
$5および$20〜$27の現在値$130・$131・$132の現在値と安全な移動量- 標準GRBL 1.1か、別版・派生版か
- ホーミング時の軸順序と移動方向
- 配線長、スピンドル線との位置関係、既存ノイズ対策
- 非常停止または安全な電源遮断方法
関連記事
リミットスイッチを追加する前に、CNCシールドとモーター配線の基本を確認したい方は、次の記事をご覧ください。
ソフトリミットに必要な移動量の基礎設定は、steps/mm校正の記事で解説しています。
誤作動が、リミット入力ではなくモーター配線、速度、加速度、電流、電源に関係している場合は、症状別の記事も参考にしてください。
まとめ
GRBLのリミットスイッチとホーミングは、次の順で導入すると原因を切り分けやすくなります。
- 実機の基板、端子、スイッチ、配線論理を確認する
- UGSで
$$を取得し、変更前設定を保存する - 機械を動かさず、一つずつスイッチ入力を確認する
$23とスイッチ位置を照合し、ホーミング方向を確認する$24〜$27を実機に合わせ、低速でホーミングを試す- 最大移動量を確認してからソフトリミットを検討する
- ノイズと誤検知がないことを確認し、ハードリミットを最後に有効化する
設定値をコピーして一度に変更するのではなく、現在値と結果を記録しながら一項目ずつ進めてください。リミットスイッチは便利な安全補助ですが、非常停止、電源遮断、機械的な点検の代わりにはなりません。