自作CNCシリーズ 第7回
はじめに:ノイズ対策をしても消えない「Check Door」
こんにちは。ニンジンです🥕
本番用アルミフレーム筐体の部品がようやく揃い、実験用XYテーブルからの移行を進めました。新しい筐体は剛性が段違いで、X350mm × Y340mmの広い稼働領域を確保できています。
さっそくペンを持たせてプロッター化しようとしたところ、Gコードを走らせるたびにマシンが止まり、コンソールに [MSG:Check Door] が連発しました。外部プルアップ・RCフィルタ・フェライトコアとハードのノイズ対策を徹底しても消えず、真犯人はGコードのカッコ内に書いた日本語コメントでした。この記事では、その仕組みと対策、そして筐体移行に伴うGRBLの再設定($3 ビットマスク・step/mm 再計算・加速度 $120)までをまとめます。
この記事で分かること
- プーリーを32歯→20歯に変えたときの
step/mm($100/$101)の再計算式 - X軸だけ回転方向が逆になったときの
$3(Step direction invert)ビットマスクの考え方 - 動作が「10倍遅い」ときに疑う加速度設定
$120〜$122 [MSG:Check Door](Safety Door)が実機に扉がないのに誤作動する理由- 「径」などの漢字のUTF-8バイト列に含まれる
0x84がGRBLのリアルタイムコマンドと誤認される仕組みと対策
アルミ筐体への移行とGRBLの再設定(・step/mm)
新しいアルミフレーム筐体は、実験用XYテーブルとは比べ物にならない剛性があり、X350mm × Y340mmの稼働領域を確保しています。物理的な動作環境が変わったので、まず筐体に合わせて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
この結果をもとに $100=80.000、$101=80.000 に更新し、最大移動量($130/$131)も新しい稼働領域に合わせて書き換えました。
初動テストで動作が極端に遅い:加速度 0〜2 の初期値
まず刃物を持たせず「空切り(Air Cut)」で正方形や円を描くGコードを流しました。動いた感動も束の間、「10倍くらい動きが遅い」。
送り速度は F500(500mm/min)を指定しているのに、常にモッサリした動き。原因は、GRBLの加速度設定($120〜$122)が初期値の 10 と極端に低かったことでした。これを 100 に引き上げると、本来のキビキビした動きに戻りました。
「Check Door」が連発:まずノイズを疑って対策する
速度の問題が解決した後、Gコードを走らせた直後にマシンがピタッと止まり、コンソールに次が表示されました。
[MSG:Check Door]
これはGRBLの安全扉(Safety Door)機能が働き、強制的に一時停止させられている状態です。しかし自作CNCに扉は付けていません。1回目・2回目でこのエラーが出て、なぜか3回目で動き出す、という挙動でした。
「強烈な電気的ノイズだろう」と考え、ハードのノイズ対策を徹底しました。
- 外部プルアップ:A1(Hold)ピンと5Vの間に6.8kΩ抵抗を入れ、電圧を5Vに固定
- RCフィルタ:A1ピンとGNDの間に104(0.1μF)のセラミックコンデンサを入れてノイズ吸収
- フェライトコア:各種ケーブルにノイズ吸収用コアを装着
十分に対策したつもりでしたが「Check Door」は消えませんでした。モーター電源を抜いてUSB給電だけにしても発生するため、ノイズが原因ではない可能性が高まりました。
真犯人はGコード内の日本語コメント(UTF-8の 0x84)
ノイズでないなら何か。原因は送っていたGコードそのものにありました。
Check Doorの原因だったテスト用Gコード(抜粋)
(2. 真円を描画 - 直径200mm)
G0 Z10.0 (Zを上げる)
G0 X100.0 Y0.0 (円のスタート地点、底辺の中央へ)
G1 Z0.0 F150.0 (Z軸を下ろす)
(現在地 X100.0 Y0.0 から、中心座標 X100.0 Y100.0 を軸に円を描く)
G3 X100.0 Y0.0 I0.0 J100.0 F500.0 (反時計回りに円を描画)このコードでは、分かりやすいように「(2. 真円を描画 – 直径200mm)」のような日本語コメントをカッコ書きで入れていました。
GRBLには、緊急停止や扉の開閉を即座に処理する「リアルタイムコマンド(1バイト)」という仕様があり、Safety Doorには 0x84 が割り当てられています。
そして、コメントに入っていた「径」という漢字をUTF-8に変換すると E5 BE 84 になります。GRBLはコメントのカッコ内であっても、バイト列に含まれる 84 を「リアルタイムコマンド」として拾い、「今、扉が開けられた(0x84)」と勘違いして緊急停止していたのです。
解決策はシンプルで、Gコード内の日本語コメントをすべて削除するだけ。あれだけ苦労した抵抗やコンデンサを外し、コメントなしのGコードを実行すると、エラーは一度も出ず最後まで走り切りました。
対策のまとめ:Gコードのコメントは半角英数字のみにする。CAM・エディタの文字コードをUTF-8以外にしても回避できることがあるが、コメントを英数字にするのが最も確実。
ペンプロッターとして図形を描画(動作テスト成功)
「Check Door」から解放されたCNCにペンを固定し、実際の紙へ200mm角サイズの描画テストを行いました。
結果は成功。ぴったり収まる真円(●)と、斜めの追従性が試される星型(★)が、ガタつきやズレもなく一筆書きで描かれました。本番用アルミフレームの剛性が証明された瞬間です。
実行したテストコード(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赤外線レーザーモジュール」をこの筐体に搭載し、金属への刻印テストに進みます。
次に読む記事
🔴 次回はこちら(第8回) 自作CNCに1064nm赤外線レーザーで金属刻印|GRBL設定($32=1)とLightBurn素材テスト レーザーモジュールの配線、$32=1などの必須設定、アルミ板への刻印テストとLightBurnの使い方。 → 🚨 前回はこちら(第6回) GRBLホーミング失敗「ALARM:8」の原因と対策|4ステップ動作とプルオフ設定 ホーミングの4ステップ動作と、Z軸未連動でのALARM:8突破方法。 → 🗺️ シリーズ全体像 ゼロから自作するCNCの全手順ロードマップ|Arduino・GRBL・CNCjsでレーザー刻印機を作る 第1回〜第10回の全工程をまとめたロードマップ。 →よくある質問(FAQ)
QGRBLで [MSG:Check Door] が出て止まります。扉は付けていません。
ASafety Door機能の誤作動です。実機に扉がなくても、Gコードのコメントに日本語(マルチバイト文字)が含まれていると発生することがあります。漢字のUTF-8バイト列にSafetyDoorのリアルタイムコマンド 0x84 と同じバイトが含まれ、GRBLがそれを拾ってしまうためです。コメントを半角英数字だけにすると解決します。
Qなぜ「径」という漢字が原因になるのですか?
A「径」をUTF-8でエンコードすると E5 BE 84 という3バイトになります。GRBLはリアルタイムコマンドを1バイト単位で先読み処理するため、コメント内であっても末尾の 0x84(Safety Door)を実行コマンドとして解釈し、緊急停止を発動します。
Qノイズ対策(抵抗・コンデンサ・フェライトコア)は無駄でしたか?
A今回の Check Door の原因ではありませんでしたが、CNCのリミット/コントロール入力のチャタリングやノイズ対策としては有効です。原因の切り分け(USB給電のみでも再現する→ノイズではない)ができた点に意味がありました。
Qプーリーを20歯に変えたら step/mm はいくつになりますか?
A(モーター200ステップ × マイクロステップ16) ÷ (ベルトピッチ2mm × 歯数20) = 80 step/mm です。$100 と $101 を 80.000 に設定します。歯数32のときは50 step/mmでした。
QX軸だけ回転が逆です。$3 は何に設定しますか?
A$3 は軸ごとのビットマスクで、X=1・Y=2・Z=4を足し合わせます。すでにY・Zを反転していて $3=6 なら、X(1)を足して $3=7 にします。配線を差し替えずソフトだけで直せます。
Q動作が異常に遅いです。F値は上げています。
A加速度 $120〜$122 が初期値の10前後になっていないか確認してください。端で減速・加速するのに時間がかかり、指定した送り速度に到達できません。100程度に引き上げると改善します。最大速度 $110/$111 の頭打ちも併せて確認します。
自作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ステップ動作とプルオフ設定【自作CNC第6回】
- GRBLで「Check Door」が誤発生する原因|Gコードの日本語コメント(UTF-8)の罠【自作CNC第7回】(この記事)
- 自作CNCに1064nm赤外線レーザーで金属刻印|GRBL設定($32=1)とLightBurn素材テスト【自作CNC第8回】
- 自作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アプリ化まで、実務で役立つ自動化ノウハウが満載です。
シリーズを読む






コメント