はじめに
こんにちは、py-vbalab管理人の「にんじん」です。 前回、中華製CNCシールドの致命的なピン配置ミス(D11とD12の入れ替わり)を突き止めました。
今回は、そのミスを物理的にねじ伏せ、**「実機がないZ軸のホーミング」**という、プロトタイプ機ならではの難題を力技で突破した記録です。これを乗り越えれば、要素設計はついに完了です!
配線修正:基板の表記は「無視」して正解へ

特定した基板のコピーミスを修正します。安価な基板の場合、シルク印刷よりもテスターの結果を信じるのが自作の鉄則です。
- 対策: Z軸のリミットスイッチを、基板上の**「SpnEN」**(本来はD12が来るべき場所)に接続します。
結線図(第5回のおさらい)
GRBL(CNCjs)ではZ軸が実装されていないと、そもそもホーミング出来ないので仮で実装しておきます。
確認: CNCjsのコンソールで ? を実行して、ステータスを確認します。

> ?
<Alarm|MPos:0.000,0.000,0.000|FS:0,0>
ok
Pn:Z(Z軸リミットON状態)の表示が消えました! これでようやく、ホーミングのスタートラインに立つことができました。
第2の壁:リミットスイッチの手動操作が通じない?
リミットスイッチが正常に認識されたので、満を持してホーミング!って進みたいところですが、進むまえに1つ問題があります。
ここで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。
【発見】ホーミング成功の鍵は「4ステップ」だった
八方塞がりかと思いながら、何度もスイッチを叩いてトライしていたその時……なんとホーミングに成功しました!
なぜ成功したのか? 試行錯誤の結果、CNCjs(GRBL)が求めている正確な挙動が見えてきました。
- 高速アプローチ: スイッチに当たる(ON)
- 一時退避: ちょっと戻る(OFF)
- 精密アプローチ: ゆっくりもう一度当たる(ON)
- 最終退避: ちょっと戻って完了(OFF)
つまり、スイッチの動きとしては ON ⇒ OFF ⇒ ON ⇒ OFF だったのです!
私が当初想定していた「ON ⇒ OFF ⇒ ON」では、最後の「離れる」動作を確認できていなかったため、エラーになっていたわけです。
動作原理が分かればこっちのもの。モーターの音と動きに合わせて「カチ・カチ・カチ・カチ」と手動連打することで、百発百中でホーミングを成功させることができるようになりました!
CNCjsのワーク位置について

- ワーク位置が「0,0,0」になります。
出力信号(レーザー用PWM)の確認
無事にホーミングを突破したので、最終段階の「加工工具(レーザー)」の制御確認に入ります。
ピンと設定の解説
使用するのは Digital 11番ピン(Spindle PWM) です。 このピンからのPWM信号(パルス幅変調)を変えることで、レーザーの出力を0〜100%まで無段階に調整します。
- レーザーモード設定($32):
$32=1(Laser-mode enable) に設定。これにより、移動中(G0)はレーザーが自動で消え、切削送り(G1, G2, G3)の時だけ照射されるようになります。 - 出力範囲の設定($30, $31):
$30=1000(最大出力)、$31=0(最小出力)に設定。GコードでS1000なら全開、S500なら半分になります。
本番前の「Lチカ」出力テスト
ピンと設定の解説
- 配線の注意点:
例のコピーミスのため、接続先はシールド上の**「Z-」**ピン(実体はD11)になります。 D11ピン → 抵抗 → LED → GND で結線します。 - CNCjsでの設定:
テスト中は「軸が移動していない状態」でも光らせたいので、一時的に$32=0(レーザーモードOFF)にしておきます。$30=1000であることも併せて確認。
ひし形運動+LED調光テスト

ワーク位置をゼロにし、テストコード 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回)








コメント