PR

GRBLホーミング失敗「ALARM:8」の原因と解決策!4ステップの動作原理を徹底解説【自作CNC】

CNC自作
スポンサーリンク

はじめに

こんにちは、にんじんです🥕

それでは自作CNC制作記第6回をはじめます。
前回、中華製CNCシールドの致命的なピン配置ミス(D11とD12の入れ替わり)を突き止めました。

今回は、そのミスを物理的にねじ伏せ、**「実機がないZ軸のホーミング」**という、プロトタイプ機ならではの難題を力技で突破した記録です。これを乗り越えれば、要素設計はついに完了です!

スポンサーリンク

CNCシールドの配線修正:基板の表記ミスへの対策とZ軸の仮実装

特定した基板のコピーミスを修正します。安価な海外製基板の場合、シルク印刷の表記よりもテスターによる導通確認の結果を信じるのが確実です。

  • 対策: Z軸のリミットスイッチを、基板上の「SpnEN」(本来はD12が割り当てられるべき場所)に接続します。

Z軸リミットスイッチの接続とステータス確認

GRBLおよびCNCjsの仕様として、Z軸が実装されていないとホーミング全体の処理を完了できません。そのため、今回はテスト用に仮の環境を作ります。

ニンジンの環境ではXYテーブルを流用しているため、現段階ではZ軸を筐体に固定できません。そこで、XYテーブルとは別に、単独のステッピングモーターとリミットスイッチを配線して検証を行います。

確認: CNCjsのコンソールで ? を実行して、ステータスを確認します。

> ?
<Alarm|MPos:0.000,0.000,0.000|FS:0,0>
ok

Pn:Z(Z軸リミットON状態)の表示が消えました! これでようやく、ホーミングのスタートラインに立つことができました。

スポンサーリンク

Z軸未連動環境での課題:ホーミング時の「ALARM:8」エラー発生

リミットスイッチが正常に認識されましたので、実際にホーミングのテストを進めます。しかし、ここでZ軸が仮組み状態であることによる問題が発生します。

ここで1つ問題があります(Z軸の仮で実装中での弊害)

現在の環境はXYテーブル流用中で、Z軸はユニット構成外のためスイッチと連動していません。

■GRBL(CNCJs)の仕様として

  • ホーミングは「Z軸」「X軸Y軸」の順番で実施されます
  • Z軸のホーミング中にエラーが発生すると、ホーミングが中断(ALARM8)されます。

■Z軸が仮組み状態で、ホーミングを正常終了させるために

  • Z軸モーターの動きに合わせて、リミットスイッチをON⇒OFF⇒ONすれば
    GRBL(CNCJs)はZ軸がホーミングしたと認識すると仮定して進めます

満を持してホーミング

リミットスイッチが正常に認識されたので、満を持して、CNCjsのコンソールに$Hコマンドを打ちこんでホーミングを実行します。

コマンド: $H

> $H
ALARM:8 (Homing fail)
ok
Grbl 1.1h ['$' for help] [MSG:'$H'|'$X' to unlock]

ダメでした。ですが、Z軸のモーターは確かに回りました。

現実はそう甘くありませんでした。

そもそも、モーターの回転(スピンドル)に合わせてスイッチを叩くタイミングを合わせるのが至難の業です。

作戦変更:ゆっくりにしてタイミングを合わせる。

動きが速すぎてタイミングが合わないなら、遅くすればいい。設定を変更して、動作を視認しやすくします。

  • $132=200:Zの移動距離を確保
  • $27=3.000:プルオフ(スイッチから離れる距離)をアップ

これでもう一度 $H を実行!……しかし、結果はまたしても ALARM:8

スポンサーリンク

解明したGRBLの仕様:ホーミング成功に必要な「4ステップ動作」

八方塞がりかと思いながら、何度もスイッチを叩いてトライしていたその時……なんとホーミングに成功しました!

なぜ成功したのか? 試行錯誤の結果、CNCjs(GRBL)が求めている正確な挙動が見えてきました。

  • 高速アプローチ: モーターが移動し、スイッチに当たる(スイッチON)
  • 一時退避: モーターが少し逆回転して離れる(スイッチOFF)
  • 精密アプローチ: 低速でもう一度当たる(スイッチON)
  • 最終退避: 少し離れて停止する(スイッチOFF)

つまり、スイッチの動きとしては ON ⇒ OFF ⇒ ON ⇒ OFF だったのです!
私が当初想定していた「ON ⇒ OFF ⇒ ON」では、最後の「離れる」動作を確認できていなかったため、エラーとして処理されていたのが原因でした。

この動作原理が分かれば対策は容易です。モーターの回転音と動作のタイミングに合わせて、手元で「カチ、カチ、カチ、カチ」と4回リズムよくスイッチを押すことで、確実にホーミングを成功させることができるようになりました。

CNCjsでのワーク位置(座標)をゼロに初期化する手順

ホーミング後にワーク位置が「0,0,0」に
なっていない場合

そのままでも正常なのですが

気持ちの問題で「0,0,0」にしたいですよね

  • ▼印をクリック
  • 「ワークオフセットP1をゼロにする(G10 L20 P1 X0 Y0 Z0) 」をクリック
  • ワーク位置が「0,0,0」になります。
スポンサーリンク

加工用レーザーを想定した出力信号(PWM)の制御確認

ホーミングの課題をクリアしたため、最終段階である「加工工具(レーザーモジュール)」の制御検証に入ります。

ピンと設定の解説

信号の出力には、ArduinoのDigital 11番ピン(Spindle PWM)を使用します。このピンから出力されるPWM信号(パルス幅変調)のデューティ比を変えることで、レーザーの出力を0〜100%まで無段階に調整することが可能です。

レーザーモード()と出力範囲(・)のパラメータ設定

GRBL側でレーザーを正しく制御するために、以下のパラメータを設定します。

  • $32=1: レーザーモードを有効化します。これにより、移動コマンド(G0)の最中はレーザーが自動で消灯し、切削送りコマンド(G1, G2, G3)の時だけ照射される仕様に切り替わります。
  • $30=1000: 最大出力を設定します。
  • $31=0: 最小出力を設定します。この設定により、Gコード内で「S1000」を指定すれば出力100%、「S500」を指定すれば出力50%として扱われます。
スポンサーリンク

本番前の動作テスト:ひし形運動とLED調光による「Lチカ」検証

実際にレーザーモジュールを接続する前に、LEDを使って出力信号のテストを行います。

ピンと設定の解説

  • 配線の注意点:
    先述した通り、シールド基板の配線ミスがあるため、接続先はシールド上の「Z-」ピン(実体はD11)になります。「D11ピン → 抵抗 → LED → GND」の形で回路を構成します。。
  • CNCjsでの設定:
    テスト中は軸が停止している状態でもLEDを点灯させたいため、一時的に「$32=0(レーザーモードOFF)」に設定を変更します。合わせて「$30=1000」になっていることも確認しておきます。

テスト用Gコード(test04_LED.nc)の実行と調光結果

ワーク位置をゼロにし、テストコード test04_LED.nc を実行します。

「test02.nc」は以下の通りです

G21          ; 単位をmmに設定 [cite: 1]
G90 ; 絶対座標モード [cite: 1]
F1000 ; 速度を少し早めに設定(変化を見やすくするため) [cite: 1]

; --- スタート地点へ移動 ---
G0 X110 Y110 ; 円の開始点へ移動 [cite: 1]

; --- 出力テスト開始(4分割で強さを変える例) ---
M3 S250 ; レーザーON(25%出力)
G2 X160 Y160 I50 J0 ; 1/4円

S500 ; 出力アップ(50%)
G2 X110 Y210 I0 J50 ; 1/4円

S750 ; 出力アップ(75%)
G2 X60 Y160 I-50 J0 ; 1/4円

S1000 ; 出力最大(100%)
G2 X110 Y110 I0 J-50 ; 1/4円(元の位置に戻る)

M5 ; レーザー停止
G0 X0 Y0 ; 原点復帰

【test04_LED.nc】のダウンロードはこちらをクリック

結果は大成功!

このテストコードを実行したところ、ひし形(円運動)を描く過程で「S250 → S500 → S750 → S1000」とコマンドが切り替わるのに同期して、LEDの輝度が段階的に明るくなる様子が確認できました。また、「M3」での点灯および「M5」での消灯動作も正常に機能しています。

スポンサーリンク

まとめ:検証フェーズの完了と次回のアルミフレーム筐体組み立てについて

XYテーブルの流用から始まった各要素の動作検証ですが、今回のテストをもちましてすべて完了となりました。ここまでの成果は以下の通りです。

  • 2軸の同期走行テストの実施
  • コピー基板の配線ミスの特定と物理的な回路修正
  • GRBLにおけるホーミング動作(4ステップ)の仕様解明
  • PWM信号によるレーザー出力制御の視覚的確認

手元にある限られた機材を使い、事前にここまで詳細な検証を行えたことは、今後の製作において大きな強みとなります。こうした試行錯誤のプロセスこそが、自作CNC開発の醍醐味であると感じています。

次回予告:

要素設計が完了しましたので、次回はいよいよ本番用となる「アルミフレーム式の筐体」の組み立てに着手します。実験機での知見を活かし、本格的なマシン製作へと進んでいきます。

スポンサーリンク

CNC自作シリーズ

【CNC自作①】Arduino+GRBLでXYテーブルをCNC化してみた

【CNC自作②】リミットスイッチ実装|原点出し(ホーミング)で精度を出す

【CNC自作③】GRBL+CNCjsでPC制御に挑戦!動いたけれど見えてきた「精度の壁」

【CNC自作 ④】ついに届いた本命モーター!精度ブレの解決とGコード初テスト

【CNC自作】2軸同期走行テスト成功!…と思いきや、中華製基板の「致命的な罠」にハマる(第5回)

【CNC自作】本番アルミ筐体完成!CNCjs(GRBL)でのテストと「Check Door」エラーの意外すぎる罠(第7回)

スポンサーリンク

他のシリーズ



Tapo P110Mの消費電力をExcelレポート化する【年次集計・電気代試算・セキュリティ判断編】
FastAPI+openpyxlでTapo P110Mの消費電力をExcelレポート化。15秒間隔の生ログを日次集計する設計や、31円/kWhでの電気代試算、外部公開を見送った理由まで解説します。
Tapo P110M × FastAPIで電力監視ダッシュボードを作る【SQLite記録・リアルタイム堅牢化編】
Tapo P110MのデータをSQLiteに記録し、FastAPI+Uvicornでリアルタイム電力監視ダッシュボードを作る方法を解説。通信失敗時の自動復旧など堅牢化のポイントも紹介します。
Tapo P110M × python-kasaで自作PDUを作る【環境構築・Unsupported device(TPAP)エラー解決編】
Tapo P110Mをpython-kasaで自作PDU化。「Unsupported device」TPAPエラーの原因と対処法、MACアドレスでIP変動に強くする設計、個別/一括ON-OFFの実装コードまで解説します。
Raspberry Pi Pico Wで作る熱中症警戒アラート表示器
Raspberry Pi Pico WとDHT11、0.96インチOLEDで熱中症警戒アラート表示器を自作。気温・湿度から簡易的な暑さ指数を計算し、5段階の顔アイコンで危険度を表示する作り方をコード付きで解説します。
CustomTkinterでオリジナルのメニューバー(File・表示・設定・Help)を自作する
CustomTkinterには無いメニューバー(File・表示・設定・Help)を、CTkFrameとCTkButtonで自作する方法を、5段階のサンプルコードとダウンロード付きで解説します。

コメント