はじめに
こんにちは!ニンジンです🥕
久々の記事更新です。
サボっていた訳ではないですよ。本番用アルミ筐体用部品の到着待ちでした
それでは第7回自作CNC製作記はじめます。
前回の第6回記事(【CNC自作】ホーミング失敗(ALARM:8)の原因はこれ!4ステップ動作とZ軸未連動での突破方法(第6回))では、頭を悩ませていたホーミング設定を無事に突破しました。
さっそくペンを持たせての動作テスト(プロッター化)に挑んだのですが、そこでGコードならではの「文字コードの罠」に直面しました。環境移行に伴うGRBLの再設定から、「Check Door」エラーの解決、そして図形描画が成功するまでの手順を詳しく解説します。
アルミ筐体の組み立てとGRBLの再設定
新しいフレームにモーターやベルトを組み込んだことで、物理的な動作環境がガラッと変わりました。まずは新しい筐体に合わせてGRBLの頭脳(設定値)を書き換えます。
X軸の回転方向反転(の設定変更)
筐体に組み込んだことで、X軸の正回転が実験時と逆になってしまいました。
X軸の回転方向のみを逆にするため、$3(Step direction invert)のビットマスクを再計算します。 Y軸(2)とZ軸(4)の反転に、新たにX軸(1)を足して、$3=7に設定しました。
プーリー変更に伴う移動量(step/mm)の再計算
プーリーをこれまでの「2GT・32歯」から、本番用の「2GT・20歯(ベルト幅6mm対応)」へ変更しました。歯数が減ったことで、トルクと分解能が向上します。
使用しているステッピングモーターは1.8度(1回転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 に引き上げたところ、本来の「スッ!」というキビキビした動きを取り戻しました。
GRBLで「Check Door」エラーが連発する原因とノイズ対策の検証
速度の問題が解決した後に、深刻なトラブルが発生しました。
Gコードを走らせた直後、突然マシンの動きがピタッと止まり、コンソールに以下のメッセージが表示されました。
[MSG:Check Door]
これはGRBLに搭載されている安全扉(Safety Door)機能が誤作動し、強制的に一時停止させられている状態です。しかし、私が自作しているCNCに扉は取り付けていません。
1回目と2回目の指示ではこのエラーが発生し、なぜか3回目の指示で動き出すという挙動を示しました。この段階では「強烈な電気的ノイズが原因だろう」と考え、以下のようなハードウェア的なノイズ対策を徹底的に施しました。

- 外部プルアップ: ArduinoのA1(Hold)ピンと5Vの間に6.8kΩの抵抗を繋ぎ、電圧を5Vに固定する
- RCフィルタ: A1ピンとGNDの間に104(0.1μF)のセラミックコンデンサを挿入し、ノイズを吸収する
- フェライトコア: 各種ケーブル類にノイズ吸収用のコアを装着する
ハードウェアとしては十分な対策を施したつもりでしたが、それでも「Check Door」エラーは消えませんでした。一時停止を解除すると3回目くらいで動き出す謎の挙動に加え、モーターの電源を抜いてUSB給電だけにしても発生するため、ノイズが原因ではない可能性が高まってきました。
意外すぎる真犯人はGコード内の日本語コメント(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]
このコードでは、分かりやすいように「(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
まとめと次回予告:1064nmレーザーモジュールの搭載へ
無事に筐体の移行と、文字コードに起因する特殊なエラーを解決し、ペンプロッターとしての基盤が仕上がりました。
次回の第8回では、手配していた「LASER TREE製 1064nm赤外線レーザーモジュール」をこの筐体に搭載します。物理的なペンによる描画から、光を使った金属への刻印へとステップアップする過程をお届けする予定です。
ちなみに手配したレーザーモジュールはこちらのメーカー
それでは、次回もよろしくお願いいたします。!ニンジンでした🥕
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回)









コメント