はじめに
自作CNCシリーズ 第5回
はじめに:触れていないのに「Pn:Z」が常時ONになる
こんにちは、にんじんです🥕
Y軸を追加して2軸同期走行までは動いたのに、ホーミングを有効にした瞬間、リミットスイッチに触れてもいないのに「Pn:Z」が常時ONになる——。この記事では、その原因がGRBL v0.9以降で入れ替わったD11(スピンドル制御)とD12(Z軸リミット)のピンアサインにあったこと、そして格安CNCシールドのシルク印刷を信じてはいけない理由を、実際の切り分け作業とともに解説します。あわせて、Y軸追加後の2軸同期テスト(スクエア走行・円弧補間)と、モーターが逆に回るときの $3 による対処もまとめます。
この記事で分かること
- Y軸を追加したあとの2軸同期テスト(四角形・円弧補間)で確認すべきポイント
- モーターが逆方向・斜めに動くときに配線を触らず直す
$3(Step direction invert) - リミットスイッチ未操作なのに
Pn:Zが常時ONになる現象の正体 - GRBL v0.8以前と v0.9以降で D11とD12(スピンドル/Z軸リミット)が入れ替わった歴史
- 「基板のシルク印刷どおりに配線しても動かない」ときにテスターで確認する手順
Y軸の追加と2軸同期テスト走行(Gコード実行)
テスト環境は、以前製作したXYテーブルを流用したプロトタイプ機です。可動範囲はX・Yともに250mm。本番の筐体を組む前に、まずこの構成で制御系を仕上げます。今回のテストで確認するのは次の3点です。
- 範囲内(250mm)で問題なく動作するか
- X軸とY軸を同時に動かす複雑な動作ができるか
- 繰り返し動作でステップのズレ(脱調)が発生しないか
スクエア走行テスト(test02.nc)で四角形を描く
まずは基本の四角形。CNCjsからテスト用のGコード(.ncファイル)を実行します。イメージは 200mm四方を2周です。
(10,210) ┌─────┐ (210,210)
│ │
(10,10) └─────┘ (210,10)「test02.nc」は以下の通りです。
G21 ; mm単位
G90 ; 絶対座標
F500 ; 送り速度
G0 X10 Y10 ; スタート位置(少し内側)
; 四角形1周(200mmサイズ)
G1 X210 Y10
G1 X210 Y210
G1 X10 Y210
G1 X10 Y10
; もう一周(動作確認)
G1 X210 Y10
G1 X210 Y210
G1 X10 Y210
G1 X10 Y10円弧補間テスト(test03.nc)で同期と脱調をチェック
四角形が確認できたら、次は円を描く動作です。きれいな円にはX軸とY軸が互いに加減速を連携させる必要があります。このテスト(test03.nc)で、2軸の同期と脱調(ステップ抜け)の有無を細かくチェックします。
「test03.nc」は以下の通りです。
G21
G90
F500
G0 X110 Y110
G2 X110 Y110 I50 J0モーターが逆方向に動くときは $3(Step direction invert)
テスト中にモーターが想定と逆方向に動いたり斜めに走ったりする場合、配線を物理的に差し替えなくても、GRBLの $3(Step direction invert)でソフト側から回転方向を反転できます。
$3=1:X反転$3=2:Y反転$3=3:X+Y両方反転
GRBLでのホーミング(原点復帰)の有効化と事前準備
2軸の動作が確認できたので、次は「ホーミング(原点復帰)」の設定です。これは電源を入れたときにマシンへ正確な現在位置を認識させるための重要な設定です。
Z軸未実装環境でのリミットスイッチとモーターの仮配線
GRBL・CNCjsの仕様上、Z軸の環境が確認できないとホーミング全体を実行できません。ニンジンの環境はXYテーブル流用のためZ軸を物理固定できないので、単独のステッピングモーター(Nema17)とリミットスイッチ(オムロン D2JW-01K1A1)を一時的に配線して検証します。
CNCjsからのホーミング関連パラメータの設定
CNCjsのコンソールで以下を実行し、設定を流し込みます。
$130=250 ; X最大移動距離
$131=250 ; Y最大移動距離
$132=10 ; Z適当(まだ仮です)
$22=1 ; ホーミングON
$23=3 ; ホーミング方向(今回は左奥を原点に設定)GRBLの仕様上の注意:$22=1(ホーミング有効)にすると、起動直後は必ずアラーム状態(ロック)になります。これは現在地が未確定のまま誤動作するのを防ぐ安全設計で、ホーミングが正常に完了すれば自動的に解除されます。
原因究明:CNCシールドの仕様とGRBLの歴史(D11とD12の入れ替わり)
テスターでArduino UnoとCNCシールドの回路を1本ずつ確認したところ、原因が判明しました。
結論として、Amazonで購入した市販のCNCシールドで、D11ピンとD12ピンの配線が入れ替わっていました。
- 本来の想定:ArduinoのD12ピンがシールド上の「Z軸リミット端子」に接続
- 実際の回路:ArduinoのD11ピンがシールド上の「Z軸リミット端子」に導通
- 付随:D11であるべき「SpnEN(スピンドル有効)」信号がD12ピンに接続
つまり D11ピンとD12ピンが完全に入れ替わっている状態でした。これでは、Z軸のリミットスイッチを基板のシルク印刷どおりに配線しても、現行のGRBL仕様では正常に認識されません。
旧GRBL(v0.8以前)と現行GRBL(v0.9以降)のピンアサインの違い
さらに調べると、基板の不良というより「GRBLのバージョンの歴史」が関係していました。
- 旧GRBL(v0.8まで):D11ピンが「Z軸リミット」に割り当てられていた
- 現行GRBL(v0.9以降):D11ピンが「スピンドル制御(PWM出力)」に変更され、Z軸リミットはD12ピンへ移された
D11はPWM(パルス幅変調)が得意なピンで、スピンドルの回転数制御に向いています。より高度なCNC制御に対応するため、GRBLの開発元が「D11をスピンドル用に、Z軸リミットをD12へ移設」と決めた背景があります。ニンジンはその歴史を知らず「基板がNG」と思い込んでいました。一概にコピー不良とは言えないようです。
※ニンジンが購入したCNCシールドが対象の話です。注意喚起の意味で記事にしています。購入品によって差異があるため、テスター等で結線を確認することを推奨します。
まとめと次回予告:入れ替わったピンへの対策と4ステップホーミング
ピン配置が入れ替わっている原因は特定できましたが、ホーミングを成功させるにはこの回路構成に合わせた対策が必要です。さらに「物理的なZ軸ユニットがまだない」というプロトタイプ機ならではの難題も控えています。
次回・第6回では、ホーミング動作の挙動を検証し、ON → OFF → ON → OFF の4ステップ手順を攻略する方法を解説します。
次に読む記事
🚨 次回はこちら(第6回) GRBLホーミング失敗「ALARM:8」の原因と解決策!4ステップの動作原理を徹底解説 Z軸未連動の環境でホーミングを通すための考え方と、ALARM:8の切り分けを解説します。 → 🔧 前回はこちら(第4回) GRBLの$100キャリブレーションと$110速度制限の解除|CNCjsでステップ数を実測補正 モーター交換と $100 / $110 の設定。2軸を揃える前の準備がここにあります。 → 🗺️ シリーズ全体像 ゼロから自作するCNCの全手順ロードマップ|Arduino・GRBL・CNCjsでレーザー刻印機を作る 第1回〜第10回の全工程をまとめたロードマップ。 →よくある質問(FAQ)
Qリミットスイッチに触れていないのに Pn:Z が表示されます。
AGRBLのステータスの Pn: はトリガー中の入力ピンを示します。触れていないのにZが出る場合、配線ミス、NC/NOとGRBLの $5(limit invert)設定の不一致、そしてCNCシールドのD11/D12ピン入れ替わりが主な原因です。まずテスターでArduinoの該当ピンとシールド端子の導通を確認してください。
QGRBLのv0.8とv0.9でピン配置はどう変わりましたか?
Av0.8まではD11がZ軸リミットでしたが、v0.9以降はD11がスピンドルPWM出力になり、Z軸リミットはD12へ移されました。古いCNCシールドは旧アサイン前提のことがあり、シルク印刷どおりに配線すると現行GRBLで認識されません。
Q基板のシルク印刷どおりに配線したのに動きません。
A格安のCNCシールドはコピー基板が多く、シルクと実際の導通が一致しないことがあります。Arduino側のピン(D9〜D12など)とシールドの端子をテスターの導通モードで1本ずつ当たって、実際の結線を図に起こしてから配線するのが確実です。
Qモーターが逆方向や斜めに動きます。配線をやり直すべきですか?
Aやり直さなくて構いません。GRBLの $3(Step direction invert mask)で軸ごとに回転方向を反転できます。$3=1でX、$3=2でY、$3=3で両方。Z軸まで含めるとビットマスクで指定します。
Q$22=1 にしたらアラームでロックされて動きません。
A正常な動作です。ホーミング有効時は起動直後に必ずAlarmになります。$H でホーミングを実行して正常完了すればロックは解除されます。どうしても手動で解除したいときは $X ですが、原点が未確定のままになる点に注意してください。
QZ軸のハードがまだ無くてもホーミングの検証はできますか?
Aできます。Z軸用に単独のステッピングモーターとリミットスイッチを仮配線すれば、GRBLはZ軸ありと認識してホーミングシーケンスを実行します。本記事ではNema17とオムロンD2JW-01K1A1を仮設して検証しています。
自作CNCシリーズ 全10回
- XYテーブルをCNC化!ArduinoとA4988を使ったステッピングモーター制御の基本【自作CNC第1回】
- 自作CNCのリミットスイッチ配線とホーミング設定|プルアップ回路・チャタリング対策【自作CNC第2回】
- ArduinoへGRBLを書き込む手順とCNCjsの使い方|XYテーブルをPC制御【自作CNC第3回】
- GRBLの$100キャリブレーションと$110速度制限の解除|CNCjsでステップ数を実測補正【自作CNC第4回】
- CNCシールドでリミットが常時ON(Pn:Z)になる原因|GRBLのD11・D12ピン反転の罠【自作CNC第5回】(この記事)
- GRBLホーミング失敗「ALARM:8」の原因と解決策!4ステップの動作原理を徹底解説
- CNCjsで「Check Door」エラーが出る原因と解決策!GコードのUTF-8文字コードの罠
- 自作CNC 1064nm赤外線レーザーで金属刻印!GRBL設定変更とLightBurn素材テスト
- 自作CNCのレーザー加工を10倍高速化!アルミフレーム剛性強化と速度検証
- 【設計データ配布】自作CNCレーザー刻印機の全部品リストと2D/3D図面一式
Follow me on X
本ブログの中の人「ニンジン🥕」はXやってます。新着記事はいち早くポストでお知らせしているので、見逃したくない方は @ninjin_py_vba をフォローしてみてください🥕
@ninjin_py_vba をフォローシリーズ記事一覧
電子工作・自動化ツールの製作記録をシリーズごとにまとめています。気になるテーマからお読みください。
-
FILE.01 — IoT
Raspberry Pi Pico W × GASラズパイPico W×GASで自作!「LINEで動く温湿度&スマートリモコン」完全ロードマップ
「外出中のペットの室温が心配…」そんな思いからスタートしたIoT自作プロジェクトの総集編。温湿度監視からエアコン遠隔操作まで、仕組みをゼロから作りたい方のための全5回の開発記録です。
シリーズを読む -
FILE.02 — CNC
Arduino × レーザー刻印CNCCNC自作シリーズ
高精度な加工を目指し、本格的な自作CNC製作に挑戦中。現在は基幹パーツであるオリエンタルモーターの納品を待つ「設計・準備編」を公開。ハードとソフトの両面から、理想のマシンを形にする過程をリアルタイムにお届けします。
シリーズを読む -
FILE.03 — XY軸制御
Raspberry Pi × ステッピングモーターXYテーブルシリーズ
Raspberry Piとステッパモーターを使い、ゼロから2軸制御に挑む記録。OS設定から回路設計、多軸制御のPythonコードまで、躓きやすいポイントを徹底図解。電子工作初心者が「動く感動」を味わうための実戦ガイドです。
シリーズを読む -
FILE.04 — 業務自動化
Python × Excel × CustomTkinter【Python開発記】NINJIN Mail制作記
PythonとExcelを連携させ、実務で即戦力となるメール送信ツールを開発。CustomTkinterによるUI構築や、ミスを防ぐテンプレート活用術など、現場の「痒い所に手が届く」自動化ノウハウを細部まで丁寧に解説します。
シリーズを読む -
FILE.05 — 業務自動化
Python × Excel × GUIアプリ化Invoice Maker(請求書・見積書自動作成)
手作業の請求書作成から卒業!PythonでExcelデータを読み込み一括PDF化する「Invoice_Maker」の作り方を全3回で解説。基本ロジックからGUIアプリ化まで、実務で役立つ自動化ノウハウが満載です。
シリーズを読む












コメント