PR

ArduinoへのGRBL書き込みとCNCjsの導入手順!移動距離が安定しない原因の切り分け【自作CNC】

CNC自作
スポンサーリンク

はじめに

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

それでは自作CNC製作記第3回はじめます。

前回はリミットスイッチを実装したことで、「原点(0, 0)」という物理的な基準を手に入れました。これにより、マシンが自分自身の現在位置を正確に認識できるようになりました。

ハードウェアとしての土台が整いましたので、今回はいよいよPCからマシンを自在に操作できる環境を構築していきます。ただ動かすだけでなく、工作機械として実用的なステップへ進めていきましょう。

スポンサーリンク

今回の検証ゴール(ミッション)

本日の目的は以下の3点です。

  • Arduinoに「GRBL」を導入してコントローラ化する
  • 「CNCjs」を導入してPCから操作できる環境を整える
  • 実際の移動距離を測定し、想定通りの精度が出ているか検証する

最終的には、単に動作するだけでなく、工作機械として使える精度が出ているかを厳しくチェックしていきます。

スポンサーリンク

GRBLとは:ArduinoをCNC専用コントローラにするファームウェア

まず、CNCの中核を担うソフトウェア「GRBL(ガーブル)」について解説します。

簡単に言うと、GRBLは通常のArduinoをCNC専用のコントローラに変身させるためのオープンソースのファームウェアです。主な役割としては以下の通りです。

  • PCから送られてくる「Gコード(座標指示)」を解釈する
  • ステッピングモーターに適切なパルス信号を送り、移動を制御する
  • 加速・減速、そして現在位置を1ステップ単位で管理する。

このファームウェアを書き込むことで、Arduinoは「CNCの脳」として機能するようになります。

GRBLのダウンロードとArduino IDEでの書き込み手順

githubよりGRBLをダウンロード
https://github.com/gnea/grbl

  • Codeをクリック
  • Download ZIOをクリック
  • DownloadしたZIPフォルダを右クリックして「すべて展開」します
  • 展開したフォルダを開く
  • フォルダ内の「grbl」フォルダを右クリックしてZIPに圧縮します。
  • Arduino IDEを開く
  • 「スケッチ」-「ライブラリをインクルード」-「ZIP形式ライブラリをインストール」をクリック
  • 「grbl.zip」を選択する
  • 「開く」をクリック
  • Arduino IDEにて「ファイル」-「スケッチ例」-「grbl」-「grblUpload」をクリック
  • 接続しているArduino Uno R3のポートを選択
  • 「⇒」をクリックしてGRBLをAruduino Uno R3に書き込みしてインストール完了です。

書き込み完了後、Arduino IDEのシリアルモニタを開いて「$$」と入力し、設定一覧が画面に出力されれば成功です。この数値のひとつひとつが、CNCの最高速度や加速度、1mmあたりの移動量(ステップ数)を決定する重要なパラメータになります。

スポンサーリンク

CNCjsの導入:PCから操作するオープンソースのインターフェース

次に、PC側からマシンを操作するためのユーザーインターフェースとして「CNCjs」を準備します。これはブラウザベースで動作するオープンソースのCNC制御ソフトウェアです。

CNCjsを使用することで、以下のような操作が可能になります。

  • ジョグ操作: 画面上のボタン操作で各軸を前後左右に動かす
  • Gコード送信: 作成した切削や刻印のデータをマシンへ転送する
  • 状態監視: 現在の座標やリミットスイッチの反応をリアルタイムで確認する

いわば、CNCマシンの「コックピット」のような存在ですね。

Windows環境へのCNCjs(v1.9.22)のインストールと接続設定

今回はWindows環境に対応した安定版であるバージョン 1.9.22 を使用して進めます。
githubよりCNCjsをダウンロード

https://github.com/cncjs/cncjs/releases/tag/v1.9.22

  • cncjs-app-1.9.22-win-x64.exeをダウンロード
  • インストールを実行します
    インストールは指示に従って「次へ」-「次へ」でOKです
  • CNCjsを開く
  • ポート:Aruduino Uno R3が接続されているポート
  • ポートレート:115200
  • 「開く」をクリック
  • コンソールに初期設定一覧が表示されればCNCjsとAruduino 間の接続完了です。

画面のコンソール領域に初期設定の一覧が表示されれば、CNCjsとArduinoとの間の通信接続は完了です。

スポンサーリンク

動作確認:PCからのジョグ操作と移動距離の測定テスト

PCから「X軸を+10mm」と指示を出すと、静かに、かつスムーズにテーブルが移動します。
「ついに自分専用のCNCが完成した!」と感動する瞬間ですが……ここで避けては通れない「現実」に直面しました。

  • 移動距離を「10mm」に設定する。
  • 「X+」ボタンを押して10mm移動させる

精度に問題あり:0.7mmのバラつき
指示通りの距離を移動しているかノギスで計測してみたところ、衝撃の結果が出ました。

  • 指示値: 10.00mm
  • 実測値: 10.00~10.70mm
スポンサーリンク

精度の壁:キャリブレーションの試行と距離がバラつく原因の考察

GRBLには、移動距離を補正するためのパラメータとして「$100(X軸)」および「$101(Y軸)」が用意されています。これは「1mm進むためにモーターを何ステップ動かすか」を調整する機能です。

通常であれば、理論値と実測値の比率からこの数値を計算して書き換えることで誤差を修正できます。しかし、今回のように「測定のたびに実測値そのものが変化してバラつく」という状態では、いくらパラメータを計算して調整しても、根本的な解決には至りません。

CNCにおいて最も重要となるのは、絶対的な寸法精度以上に「再現性」です。「常に1mm短く動く」という一定の傾向であればソフトウェア側で補正が可能ですが、「ある時は短く、ある時は長い」という不規則な状態では、工作機械としての実用に耐えられません.....。

スポンサーリンク

信号波形と物理駆動系の検証によるハードウェアのボトルネック特定

このバラつきの原因を特定するため、以下の手順で切り分けを行いました。

  • 電気信号の検証: オシロスコープを使用してArduinoからの出力波形を確認したところ、きれいな方形波が確認できました。
  • パルス数の確認: 周波数カウンタを接続して測定したところ、指示通りの正確なパルス数が送信されており、Arduino側の信号抜けはありませんでした。
  • 物理駆動系の確認: タイミングベルトの張りを再調整し、各部のネジの緩みや駆動系のガタつきを確認しましたが、症状に変化はありませんでした。

回路および機構部に問題が見られないことから、消去法としてステッピングモーターそのものに原因がある可能性が高まってきました。テストに使用した秋月電子通商で購入した安価なステッピングモーター(12V仕様)では、今回の駆動負荷に対してトルクや保持力が不足し、動作中に脱調(ステップ抜け)が発生しているものと推測されます。

スポンサーリンク

まとめと次回予告:オリエンタルモーターへの交換によるハードウェア改善へ

今回の挑戦で得られた成果と、突きつけられた課題を整理します。

【今回の成果】

  • GRBLの導入により、ArduinoをCNCコントローラとして機能させることができた
  • CNCjsの環境を構築し、PCからの軸操作を可能にした

【現在の課題】

  • 移動距離に最大0.7mmの不規則なバラつきがあり、加工精度が安定しない

現状の構成のままでは精密な加工を行うことが難しいため、駆動力を強化する目的で、信頼性の高いオリエンタルモーター製のステッピングモーターを新しく手配しました。メーカー製を買わないとダメだったか......

次回予告

第4回では、「ハードウェア改善編:モーターの交換と精度出しのキャリブレーション」として、パーツを変更してどこまで精度を追い込めるかを検証していきます。

スポンサーリンク

CNC自作シリーズ

【CNC自作①】Arduino+GRBLでXYテーブルをCNC化してみた

【CNC自作②】リミットスイッチ実装|原点出し(ホーミング)で精度を出す

【CNC自作③】GRBL+CNCjsでPC制御に挑戦!動いたけれど見えてきた「精度の壁」

【CNC自作 ④】ついに届いた本命モーター!精度ブレの解決とGコード初テスト

【CNC自作】2軸同期走行テスト成功!…と思いきや、中華製基板の「致命的な罠」にハマる(第5回)

【CNC自作】ホーミング失敗(ALARM:8)の原因はこれ!4ステップ動作とZ軸未連動での突破方法(第6回)

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

自作CNC 1064nm赤外線レーザーで金属刻印!GRBL設定変更とLightBurn素材テスト(第8回)

スポンサーリンク

他のシリーズ




【ラズパイ装備図鑑 第3回】Raspberry Pi 4B 周辺機器完全ガイド
Raspberry Pi 4Bの周辺機器、何を揃える?1GB〜8GBの選び方から冷却方式別のケース、AIカメラ・LIDARまで、Amazon・楽天の実売品で徹底比較しました。
【ラズパイ装備図鑑 第2回】Raspberry Pi 3B+ 周辺機器完全ガイド
ロングセラーのRaspberry Pi 3B+、周辺機器は何を揃える?本体セットからケースの冷却方式、電子工作学習キットまでAmazon・楽天の実売品で徹底比較しました。
【ラズパイ装備図鑑 第1回】Raspberry Pi Pico/Pico W 周辺機器完全ガイド
.rzb01-block { position: relative; overflow: hidden; border-radius: 12px; border: 1px solid #f0cba8; background: linear-…
Claude CodeにGemini画像生成を持たせる ― 「AI Plus会員なのにAPIが動かない」を乗り越えるまで
「Claude Codeは画像生成が苦手。GeminiのAPIと安全に連携させる実装方法と、Google AI Plus会員なのにAPIが使えなかった原因・解決策を実体験ベースで解説します。」
【設計データ配布】自作CNCレーザー刻印機の全部品リストと2D/3D図面一式
ArduinoとGRBLで作る自作CNCレーザー刻印機の設計データを配布。板金図面(DXF/STEP)・3D組立図・結線図・全51点のBOMをセットで販売。ミスミmeviyで個人発注可能。製作記録全10回と合わせて活用できます。

コメント