自作CNCシリーズ 第4回
はじめに:距離がずれる原因はモーターとGRBLの設定にあった
こんにちは。にんじんです🥕
自作CNCで「指示した距離と実際の移動量がずれる」——第3回で見えてきた精度の壁の原因は、モーターの品質とGRBLのパラメータ設定にありました。この記事では、精度の要となるオリエンタルモーター製ステッピングモーターへの交換から、GRBLの $100(X軸の1mmあたりステップ数)を実測値から補正するキャリブレーション、$110 の最大速度制限の解除、そして初めてのGコードによるテスト走行までを解説します。
なお今回は検証のため、ステッピングモーターは1台だけ購入しました。距離が不安定な原因がモーター以外(フレームの剛性不足や基板の不具合)にあった場合に無駄な出費を避けるためです。
この記事で分かること
- 精度ブレの原因を切り分ける手順(モーターだけを1台交換して比較する)
- CNCjsのジョグで10mm動かし、実測値からGRBLの $100 を補正する計算式
- 接続直後にワーク座標が0にならないのは問題ないという話と、
G10 L20 P1 X0 Y0 Z0での初期化 - Gコードで
F800を指定しても速度が変わらないときに疑う $110(最大速度)の制限と解除方法 - 24V電源の選定と、初めてのGコード(test.nc)によるX軸テスト走行
高品質なステッピングモーターへの交換と24V電源の準備
オリエンタルモーター製「PKP244D08A2」の導入
今回導入したのは、信頼のオリエンタルモーター製 PKP244D08A2 です。既存のモーターと交換します。接続ケーブルも同時に購入しました(型番:LC2B10E)。
モーター電源には 24V 6A を使用しました。本当は余裕を持って8Aが欲しかったのですが、手元になかったので今回は6Aで進めます。
おすすめパーツはこちら:
※一部のリンクはアフィリエイトプログラムを利用しています。
CNCjsでの実測とGRBL 0(ステップ数)のキャリブレーション
CNCjsのジョグ(手動操作)でX軸を10mm移動させ、実測値を測ります。
- 測定結果:9.93mm(何度やっても安定)
これまでの精度ブレの原因は、完全に以前のステッピングモーターにあったと特定できました。
実測値に基づくステップ数(0)の計算式と設定手順
実測9.93mmで、指示した10mmにわずかに足りないので、GRBLの設定値 $100(X軸の1mmあたりのステップ数)を書き換えて補正します。
- 現在の $100:50.000
- 計算式:現在値 ×(指示距離 ÷ 実測距離)
- 計算:50 ×(10 ÷ 9.93)= 50.352
CNCjsのターミナルから $100=50.352 と入力して設定を変更すると、指示通りにぴったり10mm動くようになります。
CNCjs接続時に「ワーク位置が0にならない」ときの考え方
Arduinoに接続した直後、ワーク位置が「X 0.000 / Y 0.000」になっていないことがあります。結論として、運用上これは問題ありません。実際の加工では次の手順を踏むためです。
- ジョグで工具を材料の加工開始位置へ移動
- 工具先端(またはレーザー)を材料表面に合わせる
- その位置を基準(ローカル原点)としてゼロに設定
テスト用GコードによるX軸の動作確認と送り速度(F値)
本来は次に「ホーミング」や「ソフトリミット」の検証に進みたいところですが、GRBLの仕様上、これらはY軸も正常に実装されていないと有効化できません。そこで今回は先行して、X軸のみをGコードで動かすテストを行います。test.nc というファイルを作り、CNCjsにアップロードして実行します。
G21 ; 単位をミリメートルに設定
G90 ; アブソリュート(絶対座標)モード
G0 X10 ; X10の位置へ早送り
G1 X110 F800 ; 速度800でX110へ移動
G1 X10 F800 ; 速度800でX10へ戻る
G1 X110 F500 ; 速度500でX110へ移動
G1 X10 F500 ; 速度500でX10へ戻る
G1 X110 F800 ; 速度800でX110へ移動
G1 X10 F800 ; 速度800でX10へ戻るGコードで速度が変わらない? 0(最大速度)の制限と解除
Gコード内の F800 や F500 は送り速度(Feedrate、1分間に何mm進むか)の指定です。F500 なら分速500mm、F1000 なら分速1000mmです。
今回、速度に変化を付けるため F800 と F500 を混在させましたが、実機ではどちらも同じ速度で動作してしまいました。調査すると、原因はGRBLの $110(X軸の最大速度)でした。初期値が「500」に制限されていたため、Gコードでそれ以上を指定しても頭打ちになっていたのです。
ターミナルから $110=800 に変更して再実行すると、指示通りに速度が切り替わることを確認できました。
まとめと次回予告:両軸を揃えたホーミングとソフトリミットへ
精度の問題がクリアできたので、もう1台のステッピングモーターを追加手配しました。次回・第5回では、X軸・Y軸の両軸を揃えた環境を構築し、いよいよ「ホーミング」と「ソフトリミット」の本格的な設定へ進みます。
次に読む記事
⚙️ 次回はこちら(第5回) CNCシールドでリミットが常時ON(Pn:Z)になる原因|GRBLのD11・D12ピン反転の罠 2軸同期テストの後、格安CNCシールドでハマったピン配置の罠と、GRBLのバージョン間の歴史を解説します。 → 🔧 前回はこちら(第3回) ArduinoへGRBLを書き込む手順とCNCjsの使い方|XYテーブルをPC制御 GRBLの書き込みとCNCjsの接続・操作。ここで見えた精度の壁が今回の出発点です。 → 🗺️ シリーズ全体像 ゼロから自作するCNCの全手順ロードマップ|Arduino・GRBL・CNCjsでレーザー刻印機を作る 第1回〜第10回の全工程をまとめたロードマップ。 →よくある質問(FAQ)
QGRBLの $100 は何の値ですか?
Aその軸を1mm動かすのに必要なステップ数(steps/mm)です。X軸が $100、Y軸が $101、Z軸が $102。実測距離が指示値とずれたら、現在値 ×(指示距離 ÷ 実測距離)で再計算して設定します。
Q$100 の補正は何回も繰り返す必要がありますか?
A通常は1〜2回で十分な精度に収束します。1回補正したあと、もう一度10mmや100mmを動かして実測し、まだずれるようなら同じ計算式で微調整します。移動距離が大きいほど誤差を測りやすくなります。
Q接続直後にワーク座標が0になっていないのは故障ですか?
A故障ではありません。GRBLは前回の座標を保持することがあり、実際の加工ではジョグで材料の加工開始位置に合わせてからゼロ設定するため問題ありません。リセットしたいときは基準位置に戻して G10 L20 P1 X0 Y0 Z0 を実行します。
QGコードで F 値を上げても速度が変わりません。
AGRBLの $110 / $111 / $112(各軸の最大速度 mm/min)で頭打ちになっている可能性が高いです。$110=800 のように上限を引き上げてから再実行してください。加速度は $120 で調整します。
Qモーター電源は24Vでないとダメですか?
A12Vでも動きますが、電圧が高いほど高速時のトルクが出やすくなります。使用するモーターとドライバの定格範囲内で、24V程度がバランスの良い選択です。電流容量(A)はモーター定格電流の合計に余裕を持たせます。
Qなぜホーミングは今回やらないのですか?
AGRBLの仕様上、ホーミングとソフトリミットはX・Y(・Z)が揃った状態でないと有効化できないためです。今回はモーター1台のみのため、先行してX軸のGコード走行だけを検証しています。
自作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ステップの動作原理を徹底解説
- CNCjsで「Check Door」エラーが出る原因と解決策!GコードのUTF-8文字コードの罠
- 自作CNC 1064nm赤外線レーザーで金属刻印!GRBL設定変更とLightBurn素材テスト
- 自作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アプリ化まで、実務で役立つ自動化ノウハウが満載です。
シリーズを読む







コメント