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

こんなこと、やります。

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

【XYペンプロッター制作】CNCシールドの設定「マイクロステップ分解能」
【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モータドライバの場合、次の表のマイクロステップ値となります。

M0M1M2マイクロステップ
LLLフルステップ 1/1
HLL1/2
LHL1/4
HHL1/8
HHH1/16

開放状態がL、ショートさせるとHになります。ここでは、最大の分解能である1/16に設定しました。

マイクロステップ1/16に設定
マイクロステップ1/16に設定
マイクロステップ設定ピン
マイクロステップ設定ピン

▼ 写真のように端子をショートさせるためには、こちらのジャンパーキャップが必要です。

単位mmあたりのステップ数の算出

実際にGコードでCNC工作するためには、ステッピングモータのステップ数でどれだけ移動するかあらかじめ計算し、Grblに設定しなければなりません。当然、ステッピングモータの種類や、タイミングベルト、プーリ、マイクロステップの設定値によって速度は異なります。ここでは次のようにして速度を算出しました。

使用したタイミングベルトのピッチは2mmです。また、タイミングプーリには歯が20個ついているので、1回転すると40mm移動することになります。

ステッピングモータは、 Raspberry Piでステッピングモータの制御 の記事で使用した 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以降の場合は、番号と内容が大きく変わってますのでご注意ください。 $$コマンドで設定値一覧を表示できます。

番号内容設定値意味
$0x, step/mm250X軸の単位mmあたりのステップ数
$1y, step/mm250y軸の単位mmあたりのステップ数
$2z, step/mm250z軸の単位mmあたりのステップ数
$3step pulse, usec10
$4default feed, mm/min250
$5default seek, mm/min500
$6step port invert mask, int:11000000192
$7step idle delay, msec25
$8acceleration, mm/sec^210
$9junction deviation, mm0.05
$10arc, mm/segment0.1
$11n-arc correction, int25
$12n-decimals, int3
$13report inches, bool0
$14auto start, bool1
$15invert step enable, bool0
$16hard limits, bool0リミットスイッチの有効化
$17homing cycle, bool0ホーミングサイクルの有効化
$18homing dir invert mask, int:000000000
$19homing feed, mm/min25ホーミング中に座標ゼロポイントを決定するときの速度設定
$20homing seek, mm/min250ホーミング中にリミットスイッチを探すときの速度設定
$21homing debounce, msec100ホーミング時でリミットスイッチを押すときのチャタリング/デバウンス防止のためのディレイ時間設定
$22homing pull-off, mm1ホーミングサイクル後、リミットスイッチから少しだけ離れておく距離(事故防止のため)

この中で、今回変更が必要となる設定値は、$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の移動ができました。

ピッタリ5mm移動【XYプロッターへの道】 - YouTube

ピッタリ50mmの移動に成功です!

分解能1/16 プーリ40mm/回転 モータ200step/回転 以上より80step/mmが導き出され、$0=80で設定値を変更

G01 X50で移動させました。

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

▼ CNCjsの設定はこちら。

関連記事

最後までご覧いただきありがとうございます!

▼ 記事に関するご質問やお仕事のご相談は以下よりお願いいたします。
お問い合わせフォーム

いろいろなCNCマシン
いろいろなArduino
Arduinoのオススメ参考書

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

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

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

関連記事