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

こんなこと、やります。

  • CNCシールドでマイクロステップ分解能の設定
  • 単位mmあたりのステップ数[step/mm]の算出
  • Grblで設定値の変更

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

この記事では、精度を出すためにステッピングモータの動かす単位をできるだけ小さくする「マイクロステップ分解能の設定」を行います。

▼ 本ページを読み進める前に、こちらの記事に目を通しておくと理解がスムーズになると思います。

つかうもの

本記事で使うものはこちらです。

  • Arduino Uno
  • ステッピングモータ
  • CNCシールド
  • モータドライバ
  • スイッチング電源
  • タイミングベルト&タイミングプーリー
  • リニアガイド

CNCシールドのバージョンはV3.00です。また、Arduino Unoに書き込んだGrblはv0.8cとなります。

その他に、細かい部品は3Dプリンタで自作しています。ちなみに、私が使用している3DプリンタはCrealityの「Ender3 V2」になります。

▼ 作ったパーツはThingiverseへ公開してますので、ご参考になさってみてください。

マイクロステップ分解能の設定

ここでは、ステッピングモータのマイクロステップ分解能の設定を行います。マイクロステップの値を小さくすることで、ステッピングモータをより細かく動かす事ができます。つまり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に設定しました。

マイクロステップ1/16に設定
マイクロステップ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の移動ができました。

さて、この後リミットスイッチを取り付けてホーミング(機械原点復帰)を行いたかったのですが、使っていたGRBLコントローラとGrbl v0.8が少し古くて問題があったため、Grbl v0.9をインストールしCNCjsを使うことにしました。設定方法はこちらの記事をご参考になさってみてください。

YouTubeで モノ作りチャンネル料理チャンネルベースチャンネル 始めました!
記事に関するご質問などがあれば、
Twitter または お問い合わせ までご連絡ください。
いろいろなCNCマシン
いろいろなArduino
Arduinoのオススメ参考書

▼ Arduino初心者向きの内容となっています。ほかのArduino書籍と比べて図や説明がとてもていねいで、読みやすかったです。Arduinoでひととおりのセンサーが扱えるようになります。

▼ 外国人が書いた本を翻訳したものです。この手の書籍は、目からうろこな発見をすることが多いです。

▼ Arduinoの入門書をすでに読んでいる方で、次のステップを目指したい人向きの本です。C言語のプログラミングの内容が中心です。ESP32だけでなく、ふつうのArduinoにも役立つ内容でした。

関連記事