PR

GRBLの$100キャリブレーションと$110速度制限の解除|CNCjsでステップ数を実測補正【自作CNC第4回】

CNC自作

自作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 の実物

今回導入したのは、信頼のオリエンタルモーター製 PKP244D08A2 です。既存のモーターと交換します。接続ケーブルも同時に購入しました(型番:LC2B10E)。

モーター電源には 24V 6A を使用しました。本当は余裕を持って8Aが欲しかったのですが、手元になかったので今回は6Aで進めます。

おすすめパーツはこちら:

※一部のリンクはアフィリエイトプログラムを利用しています。


スポンサーリンク

CNCjsでの実測とGRBL 0(ステップ数)のキャリブレーション

CNCjsのジョグ操作でX軸を移動させ、定規で実測している様子

CNCjsのジョグ(手動操作)でX軸を10mm移動させ、実測値を測ります。

  • 測定結果:9.93mm(何度やっても安定)

これまでの精度ブレの原因は、完全に以前のステッピングモーターにあったと特定できました。

実測値に基づくステップ数(0)の計算式と設定手順

GRBLの$100設定値を実測値から再計算する電卓の画面

実測9.93mmで、指示した10mmにわずかに足りないので、GRBLの設定値 $100(X軸の1mmあたりのステップ数)を書き換えて補正します。

  • 現在の $100:50.000
  • 計算式:現在値 ×(指示距離 ÷ 実測距離)
  • 計算:50 ×(10 ÷ 9.93)= 50.352

CNCjsのターミナルから $100=50.352 と入力して設定を変更すると、指示通りにぴったり10mm動くようになります。

CNCjs接続時に「ワーク位置が0にならない」ときの考え方

CNCjsのワーク座標がX 0.000 / Y 0.000になっていない状態の表示

Arduinoに接続した直後、ワーク位置が「X 0.000 / Y 0.000」になっていないことがあります。結論として、運用上これは問題ありません。実際の加工では次の手順を踏むためです。

  1. ジョグで工具を材料の加工開始位置へ移動
  2. 工具先端(またはレーザー)を材料表面に合わせる
  3. その位置を基準(ローカル原点)としてゼロに設定
G10 L20 P1 X0 Y0 Z0 コマンドを実行してワーク座標が0になった画面

どうしても接続初期の座標をリセットしたい場合は、実機を基準位置に戻してから、CNCjsのターミナルで次を実行します。

G10 L20 P1 X0 Y0 Z0

※環境によってはコピー&ペーストだとエラーになることがあります。その場合はコンソールへ直接手打ちで入力してください。


スポンサーリンク

テスト用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コード内の F800F500 は送り速度(Feedrate、1分間に何mm進むか)の指定です。F500 なら分速500mm、F1000 なら分速1000mmです。

今回、速度に変化を付けるため F800F500 を混在させましたが、実機ではどちらも同じ速度で動作してしまいました。調査すると、原因はGRBLの $110(X軸の最大速度)でした。初期値が「500」に制限されていたため、Gコードでそれ以上を指定しても頭打ちになっていたのです。

ターミナルから $110=800 に変更して再実行すると、指示通りに速度が切り替わることを確認できました。



スポンサーリンク

よくある質問(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コード走行だけを検証しています。



ニンジン🥕アイコン

Follow me on X

本ブログの中の人「ニンジン🥕」はXやってます。新着記事はいち早くポストでお知らせしているので、見逃したくない方は @ninjin_py_vba をフォローしてみてください🥕

@ninjin_py_vba をフォロー

この記事が役に立ったら、シェアしてもらえると嬉しいです🥕

Xでポスト はてブ LINE Pocket

PROJECT LOG — SERIES INDEX
スポンサーリンク

シリーズ記事一覧

電子工作・自動化ツールの製作記録をシリーズごとにまとめています。気になるテーマからお読みください。


超音波距離センサーHC-SR04をRaspberry Pi Picoで使う|仕組み・配線・精度検証
.uds1-block { position: relative; overflow: hidden; border-radius: 12px; border: 1px solid #f0cba8; background: linear-g…
今週の注目ガジェット〜09/07週〜|電子工作・自作向け新製品まとめ(TickrCast/Radxa Linkr ほか)
ニンジンのガジェット通信 09/07週。ESP32-P4の自作気象モニター、極小IP-KVM「Radxa Linkr」、ESP32のDINレール型PLC、LTE開発キットなど、電子工作で使えそうな新製品5つを解説。
サーボモータの角度をタクトスイッチで可変|OLED(SSD1306)に現在角度をリアルタイム表示
Raspberry Pi Pico 2W×MG996RにタクトスイッチとOLED(SSD1306)を追加。ボタンで角度を可変しながら現在角度をリアルタイム表示するMicroPython実装を、framebufの文字拡大やサーボの遊び対策まで実機ベースで解説します。
MG996RサーボモーターをRaspberry Pi Pico 2Wで動かす:PWM制御とキャリブレーション実践
MG996RサーボモーターをRaspberry Pi Pico 2Wで動かす方法を解説。公称180度のはずが実測198度だった個体差の原因究明から、ホーンのズレ補正、タクトスイッチでの角度制御まで実機検証の様子を紹介します。
Tapo P110Mの消費電力をExcelレポート化する【年次集計・電気代試算・セキュリティ判断編】
FastAPI+openpyxlでTapo P110Mの消費電力をExcelレポート化。15秒間隔の生ログを日次集計する設計や、31円/kWhでの電気代試算、外部公開を見送った理由まで解説します。

コメント