はじめに
こんにちは!にんじんです🥕
久々の記事更新です。
サボっていた訳ではないですよ。本番用アルミ筐体用部品の到着待ちでした
前回の第6回記事(【CNC自作】ホーミング失敗(ALARM:8)の原因はこれ!4ステップ動作とZ軸未連動での突破方法(第6回))では、頭を悩ませていたホーミング設定を無事に突破しました。
さっそくペンを持たせての動作テスト(プロッター化)に挑んだのですが……そこで私を待ち受けていたのは、Gコードならではの「文字コードの罠」でした。
今回は、環境移行に伴うGRBLの再設定から、恐怖の「Check Door」エラー解決、そして図形描画の成功までを一気にお届けします!
アルミ筐体の組み立てとGRBLの再設定
新しいフレームにモーターやベルトを組み込んだことで、物理的な動作環境がガラッと変わりました。まずは新しい筐体に合わせてGRBLの頭脳(設定値)を書き換えます。
X軸の反転($3の設定)
筐体に組み込んだことで、X軸の正回転が実験時と逆になってしまいました。
X軸の回転方向のみを逆にするため、$3(Step direction invert)のビットマスクを再計算します。 Y軸(2)とZ軸(4)の反転に、新たにX軸(1)を足して、$3=7に設定しました。
移動量(step/mm)の再計算
プーリーをこれまでの「2GT・32歯」から、本番用の「2GT・20歯」へ変更しました。歯数が減ったことでトルクと分解能が向上します。
モーターは1.8度(200ステップ)でマイクロステップ16分割なので、以下の計算式になります。
- 理論値:(200 × 16) ÷ (2mmピッチ × 20歯) = 80 step/mm
これで、X軸とY軸の設定を $100=80.000、$101=80.000 にアップデート。さらに最大移動量($130、$131)も新しい稼働領域に合わせて書き換え、準備完了です!
初動テスト!…あれ、動きが遅すぎる?
まずは刃物を持たせずに「空切り(Air Cut)」で、正方形や円を描くGコードを流し込んでみました。
「よし、動いた!」と感動したのも束の間……「なんか、10倍くらい動きが遅いぞ?」
送り速度は F500(500mm/min)を指定しているのに、常にモッサリとした動き。原因を探ると、GRBLの加速度設定($120〜$122)が初期値の 10 と極端に低くなっていたことが判明しました。
これを 100 に引き上げたところ、本来の「スッ!」というキビキビした動きを取り戻しました。
恐怖の「Check Door」エラー連発とノイズ対策の泥沼
ここからが本当の地獄でした。
Gコードを走らせた直後、突然マシンの動きがピタッと止まり、コンソールに無慈悲なメッセージが表示されました。
[MSG:Check Door]
GRBLの安全扉(Safety Door)機能が誤作動し、強制的に一時停止させられてしまったのです。自作しているCNCに扉なんて付いていません。
1回目2回目の指示にCheck Doorが発生し、3回目の指示で動き出したので、「これは強烈なノイズが原因に違いない!」と確信した私は、以下のようなあらゆるハードウェア的ノイズ対策を講じました。

- 外部プルアップ: ArduinoのA1(Hold)ピンと5Vの間に6.8kΩの抵抗を繋ぎ、強力に5Vを維持。
- RCフィルタ: さらにA1とGNDの間に104(0.1μF)のセラミックコンデンサを挿入し、ノイズの波を吸収。
- フェライトコア: ケーブル類にノイズ吸収用のコアを装着。
ハードウェア的には「最強の盾」と呼べる対策を施しました。 しかし……それでも Check Door が出る。 一時停止を解除すると、なぜか3回目くらいで急に動き出すという謎の挙動。モーターの電源を抜いてUSB給電だけにしても発生するため、ハードウェアやノイズは完全に「無実」であることが確定しました。
判明した意外すぎる真犯人(UTF-8の罠)
ノイズではないとすれば何なのか?原因は、送っていた「Gコード」そのものに隠されていました。
Check Doorの原因だったテスト用Gコード(抜粋)
(2. 真円を描画 - 直径200mm)
G0 Z10.0 (Zを上げる) [cite: 1]
G0 X100.0 Y0.0 (円のスタート地点、底辺の中央へ)
G1 Z0.0 F150.0 (Z軸を下ろす) [cite: 1]
(現在地 X100.0 Y0.0 から、中心座標 X100.0 Y100.0 を軸に円を描く) [cite: 1]
G3 X100.0 Y0.0 I0.0 J100.0 F500.0 (反時計回りに円を描画) [cite: 1]
テスト用のGコードには、わかりやすいように (2. 真円を描画 - 直径200mm) といった日本語のコメントをカッコ書きで入れていました。
GRBLには、緊急停止や扉の開閉を即座に処理するための「リアルタイムコマンド(1バイト)」という仕様があり、Safety Doorには 0x84 が割り当てられています。
そして、コメントに入っていた「径」という漢字をUTF-8で変換すると E5 BE 84 になるのです。
おわかりいただけたでしょうか?
Gコードを読み込んだGRBLは、コメントのカッコ内であるにも関わらず、文字コードの一部である 84 を「リアルタイムコマンド」として拾い上げ、「あっ!今、扉が開けられた(0x84)!」と勘違いして緊急停止を発動させていたのです。
解決策は驚くほどシンプル。Gコード内の日本語コメントをすべて削除するだけでした。 あれだけ苦労したノイズ対策の抵抗とコンデンサを外し、コメントなしのGコードを実行すると……エラーは一度も出ず、最後まで完璧に走り切りました!
ペンを持たせて図形描画!CNCプロッターの完成
「Check Door」の呪縛から解放されたCNCにペンを固定し、ついに実際の紙へ描画テスト(200mm角サイズ)を行いました。
結果は……大成功!ピッタリ収まる真円(●)、そして斜めの追従性が試される星型(★)が、紙の上に美しく一筆書きで描かれました。 ガタつきやズレもなく、本番用アルミフレームの剛性の高さが証明された瞬間です。これで、ペンプロッターとしてのCNCマシンは「ほぼ完成」と言って良いでしょう。
実行したテストコード(test_plot.nc)はこちら
G21
G90
G17
G94
G0 Z10.0
G0 X0.0 Y0.0
(2. )
G0 X100.0 Y0.0
G1 Z0.0 F350.0
G3 X100.0 Y0.0 I0.0 J100.0 F500.0
(3.)
G0 Z10.0
G0 X100.0 Y200.0
G1 Z0.0 F350.0
G1 X158.78 Y19.10 F500.0
G1 X4.89 Y130.90
G1 X195.11 Y130.90
G1 X41.22 Y19.10
G1 X100.0 Y200.0
G0 Z20.0
G0 X0.0 Y0.0
M30
次回予告:いよいよ「レーザーモジュール」の搭載へ!
プロッターとしての基盤が完璧に仕上がった自作CNC。
次回の第8回では、手配していた「レーザーモジュール」をついに搭載します!物理的な接触による描画から、光による刻印。一気に広がるレーザー加工へのステップアップ編をお届けする予定です。
ちなみに手配したレーザーモジュールはこちらのメーカー
次回もぜひお楽しみに!ニンジンでした🥕
CNC自作シリーズ
【CNC自作①】Arduino+GRBLでXYテーブルをCNC化してみた
【CNC自作②】リミットスイッチ実装|原点出し(ホーミング)で精度を出す
【CNC自作③】GRBL+CNCjsでPC制御に挑戦!動いたけれど見えてきた「精度の壁」
【CNC自作 ④】ついに届いた本命モーター!精度ブレの解決とGコード初テスト
【CNC自作】2軸同期走行テスト成功!…と思いきや、中華製基板の「致命的な罠」にハマる(第5回)
【CNC自作】ホーミング失敗(ALARM:8)の原因はこれ!4ステップ動作とZ軸未連動での突破方法(第6回)
【CNC自作】1064nm赤外線レーザーで金属刻印!GRBL設定変更とLightBurn素材テスト(第8回)








コメント