先日買ったステッピングモーター(STH-35D204)を、実際にGRBLを使ってコントロール出来るか試してみました。
配線
モーター用の電源には、家に転がっていた12V 1.5AのスイッチングACアダプターを利用。
モーターの接続は、GRBLシールドのドライバーの横の4本のピンに接続する。
上から、モーターの端子を赤・黄・橙・茶の順番で接続する。
今回は、X軸用とY軸用の2つのモーターを接続しました。
モータードライバーの電流調整は、125mA流れる設定にしました。
125mAと言うのは根拠が有りません。適当です。
モータードライバー(A4988)の電流調整は、可変抵抗~GND間の電圧(Vref)を測って調整します。
私の購入したモータードライバーは、Vrefの1.25倍の電流が流れる設定。
つまりVrefを100mVに調整しました。
PCからコントロール
GRBLのコントロールには、bCNCを利用しました。
bCNCでGRBL(Arduino)に接続し、コントロールのパネルでX軸、Y軸を操作してみる。
デフォルトの設定でも、 1mm毎の移動は問題無くモーターが回転しました。
しかし、移動距離を10mmに変更して試してみると、うまく回りません。
回り始めと止まる寸前だけ回転して、途中は回転が停止してしまいます。
途中の回転が停止している状態の時、モーターに触れてみると、わずかに振動を感じたことから、どうやら脱調しているようです。
始めと終わりだけはモーターが回転しているので、移動の速度が速すぎるんじゃないかと考え、GRBLの設定で移動のmax rateを下げてみると、脱腸せずにうまく回転するようになりました。
max rateの変更は、$110~$112の設定コマンドで指定しました。
max rate以外の設定はデフォルト状態だと、max rateは200の指定が限界のようでした。
※実際の移動速度ではありません。
実際の利用に合わせて・・・
自作CNC用に、GT2のベルトと20歯のプーリーを買いました。
なので、GRBLの設定をこれ用に行います。
GT2は2mmピッチのベルトで、プーリーは20歯なので、1回転は2mm×20歯で40mmの移動になります。
モーターは1回転で200ステップなので、1mm移動するのに5ステップと言うことになります。
GRBLの1mm移動するのに必要なステップ数の設定($100~$102)には、5を指定。
max rateはデフォルトの数値(500)に戻した。
もともと、250steps/mmだったのを、5steps/mmに変えたので、軸の回転数が減りスピードが遅くなったが、実際の移動量分の回転に変わった。
マイクロステップ設定
実際の移動量分の回転に変わったのですが、1mmの移動で、5ステップと言うのは、0.2mmの分解能と言うことで、流石にこれでは荒すぎるので、もうちょっと細かくしたい。
こう言う時に、使えるのがモータードライバーのマイクロステップの機能。
これは、ステッピングモーターの持つステップを、さらに分割してステップさせる機能。
A4988では、最大16分割まで指定できる。
マイクロステップの設定は、GRBLシールドの各モータードライバーの下にあるピンにジャンパーを差して設定する。
左からM0、M1、M2となっていて、これはA4988モータードライバーのM1、M2、M3に相当する。
上下のピンをジャンパーでショートさせて設定する。
M0 | M1 | M2 | マイクロステップ |
OPEN | OPEN | OPEN | 1/1ステップ |
SHORT | OPEN | OPEN | 1/2ステップ |
OPEN | SHORT | OPEN | 1/4ステップ |
SHORT | SHORT | OPEN | 1/8ステップ |
SHORT | SHORT | SHORT | 1/16ステップ |
ちなみに、私が買ったGRBLシールドには、ジャンパーは付属しておらず、自分で用意する必要が有った。
ジャンパーピン黒(2.54mmピッチ)(25個入) – 秋月電子
とりあえず、全部にジャンパーピンを差して、1/16ステップを指定してみました。
分解能が増える代わりに、トルクが犠牲になるらしいので、脱調するようなら1/8ぐらいでも良いかも。
これで、steps/mm が5だったのが、16倍の80まで増えます。
1÷80で理論上は、0.0125mmの分解能に相当する。
$100=80
$101=80
を設定して、回転テストをしましたが、上手く回りました。
と言う訳で、安いステッピングモーターをGRBLでコントロール出来ることが確認できたので、細かい調整は実際に使う時に行うこととして、次からは筐体の設計をしていきたいなと思います。