自作CNCで「100 mm動かしたつもりなのに、実際には少し短い」「X軸とY軸で寸法のずれ方が違う」という場合、最初に確認したいのがGRBLのsteps/mmです。
Studio Kuraでは、GRBLを搭載したCNCの操作にUniversal Gcode Sender(UGS)を使っています。この記事では、UGSから現在の設定を確認し、X・Y・Z軸を実際に動かして、$100・$101・$102を校正する流れを紹介します。
ただし、steps/mmはすべての精度問題を解決する設定ではありません。バックラッシュ、脱調、ベルトの緩み、フレームの直角ずれなどは別に点検する必要があります。まずは「指令した距離と実際の移動距離の比率」を合わせる作業だと考えてください。
Universal Gcode Sender(UGS)とは
UGSは、パソコンからCNCコントローラーへG-codeを送り、機械の状態確認、手動移動(Jog)、設定変更、加工データの送信などを行うためのオープンソースソフトウェアです。Javaベースのクロスプラットフォームアプリケーションで、GRBLをはじめ複数のコントローラーに対応しています。
UGSには複数の配布形態があります。本記事では、一般的に使われているUGS Platformを前提に説明します。Windows、macOS、Linux向けの配布ファイルはUGS公式GitHubまたは公式リリースページから入手できます。
OS、UGSのバージョン、画面レイアウトのカスタマイズによって、ボタン名やパネルの位置が異なることがあります。「接続」「Console」「Jog Controller」「DRO」など、同じ役割の項目を探してください。公式配布元以外からのダウンロードは避けましょう。
作業前に準備するもの
- GRBLを搭載したCNCコントローラー
- UGSをインストールしたパソコン
- データ通信に対応したUSBケーブル
- 定規、ノギス、ダイヤルゲージなど、移動量を測れる道具
- 測定位置の印を付けるためのテープや細いペン
- 現在の設定値を保存するメモ
測定精度は測定器具と測り方に左右されます。定規だけで大まかに合わせることはできますが、細かな校正にはノギスやダイヤルゲージが向いています。
安全のため、最初に確認すること
- スピンドルやルーターの電源を切り、誤って回転しない状態にします。
- 刃物は可能なら外します。外せない場合は、手や測定器具が届かない安全な位置に退避させます。
- 各軸を動かす方向に十分な余裕があることを確認します。
- リミットスイッチの有無にかかわらず、非常停止や電源遮断をすぐ行えるようにします。
- 最初は低い送り速度と短い移動距離で、軸の向きと動作を確認します。
設定変更やJog中はCNCから離れないでください。座標系や移動モードを誤ると、想定外の方向へ動くことがあります。
UGSを起動してGRBLへ接続する
1. USBで接続する
CNCコントローラーとパソコンをUSBケーブルで接続し、CNCコントローラーの電源を入れます。充電専用ケーブルでは通信できないため、認識されない場合はケーブルも確認してください。
2. 接続ポートを選ぶ
UGSを起動し、接続欄からCNCコントローラーに割り当てられたシリアルポートを選びます。表示名はOSやUSBシリアル変換チップによって異なります。
- Windowsでは
COMから始まる名前 - macOSやLinuxでは
/dev/から始まる名前
複数候補がある場合は、USBを抜いたときに消え、挿したときに現れるポートを手掛かりにします。
3. 通信速度を設定する
公式のGRBL 1.1は、シリアル接続に115200 bps、8-N-1を使用します。UGS側のBaud rateを115200に設定して接続します。
接続後、ConsoleにGRBLのバージョン情報や応答が表示されれば通信できています。接続できない場合は、次を順番に確認します。
- 選択したポートが正しいか
- Baud rateが115200になっているか
- 他のシリアルモニターが同じポートを使用していないか
- USBケーブルがデータ通信対応か
- OSがUSBシリアル機器を認識しているか
- コントローラーがGRBL 1.1か、それ以外のファームウェアか
UGSの基本画面
校正で主に使用するのは次の機能です。名称と配置はUGSの版やレイアウトによって変わる場合があります。
- 接続欄:ポートと通信速度を選び、接続・切断する
- Console:
$$などのコマンドを送り、GRBLからの応答を確認する - DRO/Position:現在の機械座標やワーク座標を表示する
- Jog Controller:軸、移動量、送り速度を指定して手動移動する
- File/Visualizer:G-codeファイルを開き、軌跡を確認して送信する
- Controller State:Idle、Run、Alarmなど、コントローラーの状態を確認する
今回のsteps/mm校正では、主にConsoleとJog Controllerを使います。
まず$$で現在の設定値を保存する
設定を変更する前に、Consoleから次のコマンドを送ります。
$$
GRBLは、保存されている設定一覧を返します。その中から少なくとも次の3行をコピーし、日付と機械名を付けてメモへ保存してください。
$100=現在のX軸steps/mm
$101=現在のY軸steps/mm
$102=現在のZ軸steps/mm
$100:X軸のsteps/mm$101:Y軸のsteps/mm$102:Z軸のsteps/mm
ここでいう「保存」は、$$の表示結果をメモやファイルへ控えることです。$$自体は設定を変更しません。変更前の値を残しておけば、結果が悪かったときに元へ戻せます。
なお、画面に表示される具体的な数値は、モーター、マイクロステップ、プーリー、ベルト、送りねじなどの構成によって異なります。他の機械の値をそのままコピーしないでください。
steps/mmの意味
steps/mmは、軸を1 mm動かすためにGRBLが何ステップ出力するかを表す値です。理論上は、モーターの1回転あたりのステップ数、マイクロステップ設定、プーリーや送りねじの移動量から計算できます。
GRBL公式資料に示されている基本式は次のとおりです。
steps/mm = (1回転あたりのフルステップ数 × マイクロステップ数)÷ 1回転あたりの移動量mm
組み立て誤差や部品の実寸差も含めて合わせたい場合は、実際の移動量を測って補正します。
実測による校正の計算式
校正には、次の式を使います。
新steps/mm = 現在steps/mm × 指令距離 ÷ 実移動距離
実際の移動距離が指令より短ければsteps/mmを増やし、長ければ減らす計算になります。
X軸を校正する手順
1. 移動できる範囲を確認する
X軸がプラス方向へ100 mm以上、安全に動ける位置へ移動します。100 mmを確保できない小型機では、無理に100 mm動かさず、機械に収まる距離を使います。一般に、測定できる範囲で距離を長く取ると測定誤差の影響を小さくできます。
2. 開始位置を記録する
テープ、定規、ノギス、ダイヤルゲージなどで開始位置を決めます。測定中に測定器具が主軸やフレームへ巻き込まれないよう固定してください。
3. 100 mm移動を指令する
最も安全なのは、UGSのJog Controllerで移動量を100 mmに設定し、Xプラス方向へJogする方法です。最初は1 mmや10 mmで方向を確かめてから100 mmを実行します。
ConsoleからG-codeを送る場合は、単位をmmに指定し、相対移動を使う例は次のようになります。
G21
G91
G0 X100
G90
G21:単位をmmにするG91:相対移動モードにするG0 X100:現在位置からX方向へ100 mm移動するG90:絶対移動モードへ戻す
G91のまま後の加工を始めると危険です。GRBL 1.1のJogは通常のG-codeモードとは独立しているため、初心者にはUGSのJog操作を推奨します。
4. 実際の移動距離を測る
停止後に実移動距離を測ります。移動中に測定器具や手を可動部へ近づけないでください。
5. 新しい値を計算する
たとえば、現在の$100が250.000 steps/mm、指令距離が100.00 mm、実移動距離が98.40 mmだった場合は次のように計算します。
新しい$100
= 250.000 × 100.00 ÷ 98.40
= 254.065... steps/mm
この例では、適切な桁数に丸めて次のように設定します。
$100=254.065
これは計算例であり、Studio KuraのCNCや他の機械の設定値を示すものではありません。必ず自分の機械で測った数値を使ってください。
6. 設定が反映されたことを確認する
Consoleから$100=計算した値を送ると、GRBLは設定値を不揮発メモリーへ書き込みます。okなどの正常応答を確認した後、もう一度$$を送り、$100が意図した値になっているか確認します。
Y軸とZ軸も同じ方法で校正する
Y軸も、可能であれば100 mm程度の移動距離を使い、同じ手順で測定します。計算後の値は$101へ設定します。
$101=計算したY軸の新しい値
Z軸は移動可能距離が短く、主軸やテーブルへの衝突リスクも高いため、機械に合った安全な短距離で測定します。最初はさらに短いJogで方向を確認し、低い送り速度で動かしてください。計算後の値は$102へ設定します。
$102=計算したZ軸の新しい値
Z軸をX・Y軸と同じ100 mm動かしてはいけません。可動範囲、工具長、材料、固定具、リミット位置を確認し、その機械で安全に測れる距離を選びます。
1回で終わらせず、3回程度再測定する
設定を反映したら、開始位置を取り直し、同じ指令距離で再測定します。偶然の測定誤差で値を決めないよう、次の流れを3回程度繰り返します。
- 同じ方向から開始位置へ近づく
- 一定距離を指令する
- 実移動距離を測る
- 結果を記録する
- 大きな差やばらつきがないか確認する
行きと帰りで測定値が変わる場合は、steps/mmだけでなくバックラッシュの可能性があります。往復させながら数値だけを追い込むと、別の機械的問題を隠してしまうことがあります。
steps/mmを変えても直らない症状
steps/mmは、移動距離に一定の比率で出る誤差を補正する設定です。次の問題は、$100・$101・$102だけでは直せません。
バックラッシュ
移動方向を反転したときに、送りねじやナット、ギアなどの隙間分だけ動きが遅れる現象です。同じ方向から測ると正確でも、反転するとずれる場合は疑います。機械側の調整や部品の見直しが必要です。
脱調
負荷、速度、加速度、電流設定などが原因でステッピングモーターが指令どおり動けず、位置を失う現象です。測るたびに結果が不規則に変わる、異音がする、特定の速度で止まる場合は、最大速度や加速度、ドライバー電流、機械抵抗などを確認します。
ベルトやプーリーの緩み
ベルトの張り不足、プーリーの止めねじの緩み、軸との空転があると、steps/mmを合わせても安定しません。モーター軸の平面部と止めねじの位置も確認します。
フレームやX・Y軸の直角ずれ
X方向とY方向の寸法が合っていても、軸同士が直角でなければ四角形が平行四辺形になります。対角線を測り、フレームやガイドの直角を機械的に調整します。
主軸や工具の振れ、機械のたわみ
無負荷移動では正しくても、加工すると寸法がずれる場合は、工具径、切削負荷、主軸の振れ、材料の固定、フレームの剛性なども調べます。
校正記録を残しておく
調整日、変更前後の値、指令距離、実移動距離、測定方法を記録しておくと、部品交換や不具合調査に役立ちます。
機械名:
調整日:
測定器具:
X軸
変更前 $100:
指令距離:
実移動距離:
変更後 $100:
Y軸
変更前 $101:
指令距離:
実移動距離:
変更後 $101:
Z軸
変更前 $102:
指令距離:
実移動距離:
変更後 $102:
Arduino CNCシールドのマイクロステップ設定、モーター、プーリー、ベルト、送りねじ、ステッピングドライバーを変更した場合は、steps/mmが変わる可能性があります。構成変更の前後で$$の記録を残し、改めて校正してください。
まとめ
UGSを使ったGRBLのsteps/mm校正は、次の順番で進めます。
- UGSから正しいポートと115200 bpsでGRBL 1.1へ接続する
$$を送り、変更前の$100・$101・$102を保存するG21でmm単位を確認し、UGSのJogまたは安全な相対移動で一定距離を動かす- X・Y軸は可能なら100 mm、Z軸は安全な短距離で実測する
新steps/mm=現在steps/mm×指令距離÷実移動距離で計算する$100・$101・$102へ軸ごとの新しい値を設定する$$で反映を確認し、3回程度再測定する- 結果が安定しなければ、バックラッシュ、脱調、ベルト、直角、剛性を点検する
数値を一度入力して終わりにするのではなく、変更前の設定と測定結果を残しながら、一軸ずつ確認するのが安全です。正確な移動量が得られるようになったら、主軸を回さないドライランを行い、その後に安全な材料と条件で試し切りを行いましょう。