PR

【CNC自作】本番アルミ筐体完成!CNCjs(GRBL)でのテストと「Check Door」エラーの意外すぎる罠(第7回)

CNC自作
スポンサーリンク

はじめに

こんにちは!にんじんです🥕

久々の記事更新です。

サボっていた訳ではないですよ。本番用アルミ筐体用部品の到着待ちでした

前回の第6回記事(【CNC自作】ホーミング失敗(ALARM:8)の原因はこれ!4ステップ動作とZ軸未連動での突破方法(第6回))では、頭を悩ませていたホーミング設定を無事に突破しました。

そして今回、ついに本番用のアルミフレーム筐体が届き、組み立てが完了しました!実験用のXYテーブルとは比べ物にならない剛性と、X350mm × Y340mmという稼働領域を手に入れました。

さっそくペンを持たせての動作テスト(プロッター化)に挑んだのですが……そこで私を待ち受けていたのは、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歯」へ変更しました。歯数が減ったことでトルクと分解能が向上します。

2GTの20歯(ベルト幅6mm対応)を使用します。

5個 プーリー 2GTタイミングベルトプーリー 3Dプリンター交換用 アイドラプーリー

モーターは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回)

スポンサーリンク

他のシリーズ



【ラズパイPico W入門】愛犬を守る!格安IoT温湿度見守りLINE Botの作り方(第1回:ハードウェア準備&温度取得編)
Raspberry Pi Pico Wと温湿度センサーで愛犬の留守番を見守るIoTシステムを自作!第1回はパーツ準備、回路接続からThonnyを使った温度取得まで解説。初心者が必ず躓く「USBケーブルの罠」など、実体験を交えて優しく紹介します。
【CNC自作】1064nm赤外線レーザーで金属刻印!GRBL設定変更とLightBurn素材テスト(第8回)
Arduino+GRBLの自作CNCに1064nm赤外線レーザー(LASER TREE)を搭載!ドライバー基板の配線やGRBLの必須パラメータ設定($32=1)、LightBurnを使ったアルミ板への金属刻印テストまで、CNCをレーザー加工機化する全手順を詳しく解説します。
【CNC自作】本番アルミ筐体完成!CNCjs(GRBL)でのテストと「Check Door」エラーの意外すぎる罠(第7回)
自作CNCマシンの本番用アルミフレーム筐体が完成!GRBLの環境移行設定(移動量・加速度)やペンプロッター化による動作テストを公開。さらにGコードの日本語コメントが引き起こす「Check Door」エラーの意外すぎる原因(UTF-8問題)と解決策を詳しく解説します。
【後編】数千点の部品管理を自動化!ラズパイで作るデジタルピッキングシステム(Excel連携&Web UI編)
ラズパイとPythonで部品管理を自動化!デジタルピッキングシステム自作の【後編】では、Excelデータ(構成表)の読み込みと、Flaskを使ったWeb UIの実装手順を解説します。専用アプリ不要!スマホのブラウザから棚のLED(WS2812B)を操作する実践的なコードを大公開。
【前編】数千点の部品管理を自動化!ラズパイで作るデジタルピッキングシステム(ハードウェア構築編)
「部品探しに時間がかかる…」そんな悩みを解決!Raspberry Pi(ラズパイ)とアドレス指定型LED(WS2812B)を使って、数千点の部品管理を自動化するデジタルピッキングシステムの作り方を解説します。前編は膨大な配線を1本にまとめるハードウェア構築編です。

コメント