はじめに
こんにちは、py-vbalab管理人の「にんじん」です。 前回まではX軸単体の動きを確認してきましたが、ついにY軸用のステッピングモーターが届きました!
これでようやく「点と線」の動きから、**「面(2D)」**の制御へと進化します。しかし、喜びも束の間。自作CNCの洗礼とも言える「中華製パーツの罠」が私を待ち受けていました……。
CNCjs Y軸参戦!CNC(gcode)で2軸を動かしてみる
今回のテスト環境は、以前製作したXYテーブルを流用したプロトタイプ機です。可動範囲はX・Yともに250mm。本番の筐体を組む前に、まずはこの構成で制御系を仕上げる(いわゆる要素設計)が狙いです。
🎯 テスト内容(安全&実用)
- 範囲内(250mm)でしっかり動くか
- X・Y軸を同時に使った複雑な動きができるか
- 繰り返しの動作でズレが出ないか
2軸同期テスト走行(Gコード実行)
さっそく、CNCjsからテスト用のGコード(.ncファイル)を流してみます。
●test02.nc:200mmのスクエア走行

まずは基本中の基本、四角形を描く動きです。
🧠 動きのイメージ
👉 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:円っぽい動き(同期確認)
「test03.nc」は以下の通りです
G21
G90
F500
G0 X110 Y110
G2 X110 Y110 I50 J0
🔧 もし動きがおかしい場合
テスト中、モーターが逆方向に動いたり、斜めに走ったりすることがあります。そんな時は焦らず設定を確認しましょう。
- 逆方向に動く場合: GRBLの設定値
$3を変更します。配線を差し替えなくてもソフト側で反転可能です。
$3=1:X反転$3=2:Y反転$3=3:X+Y両方反転
準備:ホーミング(原点復帰)設定
2軸が動いたら、次は「ホーミング」の設定です。
マシンの電源を入れるたびに「ここが原点だよ」と教える重要な儀式ですね。
準備1:Z軸も必要
GRBL(CNCjs)ではZ軸が実装されていないと、そもそもホーミング出来ないので仮で実装しておきます。
■使用した部品
準備2:CNCjsでの設定

CNCjsのコンソールで以下のコマンドを実行し、設定を流し込みます。
$130=250 ; X最大移動距離
$131=250 ; Y最大移動距離
$132=10 ; Z適当(まだ仮です)
$22=1 ; ホーミングON
$23=3 ; ホーミング方向(今回は左奥を原点に設定)
※GRBLの仕様上の注意
$22=1(ホーミング有効)にすると、起動直後は必ずALARM状態になります。「現在地がわからないのに動かすのは危険!」という安全設計によるロックです。ホーミングに成功すれば解除されます。
異常事態:何もしてないのに「Pn:Z」が消えない
いざホーミングを実行!…と思いましたが、その前にリミットスイッチの状態をチェック。コンソールから ? コマンドを叩きます。
※?コマンドとは:
主にGRBL(ガーブル)などの制御ファームウェアで使用される**「ステータスレポート要求(Status Report Query)」**というリアルタイムコマンドです。
「ん? Pn:Z って出てる……」
これは「Z軸のリミットスイッチが押されていますよ」というサイン。 ですが、私はまだスイッチに触れてもいません。 結線も「NC(ノーマルクローズ)」で正しく行っているはずなのに、なぜか「常時ON」扱い。
ここから、長い切り分けが始まりました……。
犯人はお前だ!CNCシールドの致命的なミス
テスターを片手に、Arduino UnoとCNCシールドの回路を1本ずつ追いかけました。そして、事実を突き止めます。

結論から言うと、Amazonで購入した市販のCNCシールド(おそらくC国製のコピー品)に、設計ミス(コピーミス)がありました!
- 本来の設計: ArduinoのD12ピンがZ軸リミットスイッチに繋がるはず。
- この基板の現実: なぜかD11ピンがシールド上の「Z-リミット端子」に導通している!
- さらに: D11であるべき「SpnEN(スピンドル有効)」信号が、D12に繋がっている……。
つまり、D11とD12が完全に入れ替わっていたのです。 これでは、Z軸のスイッチをいくら正しい場所に配線しても、GRBL(v0.9以降の仕様)は認識してくれるはずがありません。

この写真が正しい結線になります。
※見た目上はSpnENに接続されていて誤配のように見えますが正しいです。
安価な中華製パーツの洗礼。「基板のシルク印刷を信じてはいけない」という教訓を身を以て体験することになりました。
※ニンジンが購入したCNCシールド基板が対象です。あくまでも注意喚起の意味合いで記事にしています。購入品によって差異があるかも知れませんのでテスター等にて結線を確認することを推奨します。
CNCシールド基板の捕捉
原因は「GRBLのバージョン」と「歴史」にありました
CNCを制御するソフト「GRBL」は、途中で大きな仕様変更をしていたんです。
- 昔のGRBL(v0.8まで):D11が「Z軸リミット」だった
- 今のGRBL(v0.9以降):D11が**「スピンドル制御(PWM)」に変わり、Z軸リミットはD12**へお引越しした
「なんでわざわざ変えるの?」と思ったのですが、これにはちゃんとした理由がありました。
D11ピンは「PWM」という、電圧を細かく調整してスピンドルの回転数を変えるのが得意なピンなんです。より高機能なCNCにするために、GRBLの開発者さんたちが「D11はスピンドル用に空けよう!」と決めたそう。
ニンジンはそんな歴史も知らずに、「CNCシールド基板がNG」と思い込んでいました…。
一概にはコピー不良とは言えないようです。
ただ説明文にGRBL(v0.8)以前の対応品と明記してほしいですね
次回予告
致命的な設計ミスを暴いたものの、ホーミングを成功させるには、この「入れ替わったピン」をどうにかしなければなりません。
さらに、**「物理的なZ軸ユニットがない」**というプロトタイプ機ならではの難題が、私をさらなる迷路へと誘います……。
次回、「ホーミング挙動の真実!ON→OFF→ON→OFFの4ステップを攻略せよ」。 お楽しみに!
CNC自作シリーズ
【CNC自作①】Arduino+GRBLでXYテーブルをCNC化してみた
【CNC自作②】リミットスイッチ実装|原点出し(ホーミング)で精度を出す
【CNC自作③】GRBL+CNCjsでPC制御に挑戦!動いたけれど見えてきた「精度の壁」
【CNC自作 ④】ついに届いた本命モーター!精度ブレの解決とGコード初テスト
【CNC自作】2軸同期走行テスト成功!…と思いきや、中華製基板の「致命的な罠」にハマる(第5回)
【CNC自作】ホーミング失敗(ALARM:8)の原因はこれ!4ステップ動作とZ軸未連動での突破方法(第6回)










コメント