【XYペンプロッター制作③】CNCシールドの設定「マイクロステップ分解能」

はじめに
こんなこと、やります。 - CNCシールドでマイクロステップ分解能の設定 - 単位mmあたりのステップ数[step/mm]の算出 - Grblで設定値の変更
この記事では、精度を出すためにステッピングモータの動かす単位をできるだけ小さくする「マイクロステップ分解能の設定」を行います。
マイクロステップ分解能の設定
ここでは、ステッピングモータのマイクロステップ分解能の設定を行います。マイクロステップの値を小さくすることで、ステッピングモータをより細かく動かす事ができます。つまりCNC工作の精度を上げたい場合は、マイクロステップ値を適正なものにします。
CNCシールド端子をショート
モータドライバの下に配置されている6つのピンで、マイクロステップの設定を行うことができます。 CNCシールドV3.00、A4988モータドライバの場合、次の表のマイクロステップ値となります。
M0 | M1 | M2 | マイクロステップ |
---|---|---|---|
L | L | L | フルステップ 1/1 |
H | L | L | 1/2 |
L | H | L | 1/4 |
H | H | L | 1/8 |
H | H | H | 1/16 |
開放状態がL、ショートさせるとHになります。ここでは、最大の分解能である1/16に設定しました。


単位mmあたりのステップ数の算出
実際にGコードでCNC工作するためには、ステッピングモータのステップ数でどれだけ移動するかあらかじめ計算し、Grblに設定しなければなりません。当然、ステッピングモータの種類や、タイミングベルト、プーリ、マイクロステップの設定値によって速度は異なります。ここでは次のようにして速度を算出しました。
使用したタイミングベルトのピッチは2mmです。また、タイミングプーリには歯が20個ついているので、1回転すると40mm移動することになります。
ステッピングモータは、
の記事で使用した SM-42BYG011
を使用しました。データシートによれば200[step/回転]となります。
まとめると次のとおりです。
- 分解能、1/16
- タイミングベルト&プーリ、40[mm/回転]
- ステッピングモータ、200[step/回転]
次式により、ステッピングモータを1回転させるためには3200ステップ必要になります。
\[ 200 \times 16 = 3200 [step/回転] \]
さらに次式により、タイミングベルトを使って1mm移動させるには、80ステップ必要です。
\[ \frac{3200}{40} = 80 [step/mm]\]
ここで算出された80[step/mm]を、Grblの設定値に入力します。
Grbl 0.8cの設定値一覧
ここで、Grbl
0.8cの設定値一覧を確認します。ただし、Grbl
0.9以降の場合は、番号と内容が大きく変わってますのでご注意ください。
$$
コマンドで設定値一覧を表示できます。
番号 | 内容 | 設定値 | 意味 |
---|---|---|---|
$0 | x, step/mm | 250 | X軸の単位mmあたりのステップ数 |
$1 | y, step/mm | 250 | y軸の単位mmあたりのステップ数 |
$2 | z, step/mm | 250 | z軸の単位mmあたりのステップ数 |
$3 | step pulse, usec | 10 | |
$4 | default feed, mm/min | 250 | |
$5 | default seek, mm/min | 500 | |
$6 | step port invert mask, int:11000000 | 192 | |
$7 | step idle delay, msec | 25 | |
$8 | acceleration, mm/sec^2 | 10 | |
$9 | junction deviation, mm | 0.05 | |
$10 | arc, mm/segment | 0.1 | |
$11 | n-arc correction, int | 25 | |
$12 | n-decimals, int | 3 | |
$13 | report inches, bool | 0 | |
$14 | auto start, bool | 1 | |
$15 | invert step enable, bool | 0 | |
$16 | hard limits, bool | 0 | リミットスイッチの有効化 |
$17 | homing cycle, bool | 0 | ホーミングサイクルの有効化 |
$18 | homing dir invert mask, int:00000000 | 0 | |
$19 | homing feed, mm/min | 25 | ホーミング中に座標ゼロポイントを決定するときの速度設定 |
$20 | homing seek, mm/min | 250 | ホーミング中にリミットスイッチを探すときの速度設定 |
$21 | homing debounce, msec | 100 | ホーミング時でリミットスイッチを押すときのチャタリング/デバウンス防止のためのディレイ時間設定 |
$22 | homing pull-off, mm | 1 | ホーミングサイクル後、リミットスイッチから少しだけ離れておく距離(事故防止のため) |
この中で、今回変更が必要となる設定値は、$0の「x, step/mm」です。
Grblで設定値の変更
Grblの設定値を変更します。Grbl
0.8cでは、$0
がX軸の単位mmあたりのステップ数[step/mm]になってます。デフォルトでは250[step/mm]ですが、先ほど計算された80[step/mm]を設定します。
GRBLコントローラなどで、つぎのコードを入力して設定値を変更します。
$0=80
この後、たとえばちょうど50mmだけ移動させてみましょう。G01 X50
を命令すると、こちらの動画のようにジャスト50mmの移動ができました。
https://www.youtube.com/shorts/PzahGlPi_ts
ピッタリ50mmの移動に成功です!
分解能1/16 プーリ40mm/回転 モータ200step/回転 以上より80step/mmが導き出され、$0=80で設定値を変更
G01 X50で移動させました。
さて、この後リミットスイッチを取り付けてホーミング(機械原点復帰)を行いたかったのですが、使っていたGRBLコントローラとGrbl v0.8が少し古くて問題があったため、Grbl v0.9をインストールしCNCjsを使うことにしました。
関連記事
- 【XYペンプロッター制作⑤】リミットスイッチでホーミング
- 【XYペンプロッター制作①】CNCシールドでステッピングモータを動かすまで
- 【XYペンプロッター制作④】Grbl v0.9とCNCjsのインストール
- 【XYペンプロッター制作⑦】サーボモータでペンを上下させる(仮完成)
- Arduinoでステッピングモータの制御|ユニポーラ型「28BYJ-48」と「ULN2003」ドライバ