CNCシールドを流用するにあたってのメモ

arduino 開発 綿あめ機械

CNCシールドを自作綿あめ機械に使用するにあたって、気になった点をメモ。

使用する物
CNCシールド protoneer互換品 Ver3.0
モータドライバー pololu互換品 DRV8825
モータ 17HS4401定格3.8V(DRV8825が8.2V以上で稼働なので今回12Vで無理やり使う)

なぜ、CNCシールドを使用するかというと、ステッピングモータ、リミットスイッチを使用するという点で、同じで非常にコンパクトで済むからである。
同じような考えで望遠鏡の自動化をしている人もいる。

Ver3.0を使用する理由として安価であるため、ver3.1以降はお高くなっている。
Ver4はnano用のシールドのようで、自分はarudinomegaに使用を考えているため、購入しなかった。


CNCシールドに関して、内容を日本語で詳しく解説してくれている方がいるので、こちらを見ると内容がわかる。
自作CNCマシン・レーザーカッターについて


A軸を使用するには、


開発元protoneerより
4th Axis Configuration
の記事にあるように
シールドの部分のD12の所にジャンパー2つはめる。

arduino側は
ピン12 SpinEnable
ピン13 SpinDir
を使用される。
CNCシールドVer3.0ピンレイアウト(ver3.5は違う箇所あり):"
Grbl_Pin_Layout
開発元protoneerより"




設定

マイクロステップは、今回精度はそこまでいらないため、1/1で行う。
そのため、ジャンパーピンをはめない。


・モータ電流量の設定
モータが1.5Aなので、ざっくり計算で
Current Limit=VREF x 2.0
VREF=0.75Vになるようにする。
1.5A以下にしたいならこの計算された電圧が小さくなるようにすればよい

参考:
Pololu互換DRV8825モジュールの電流調整の手順
SHAPEOKO2 Pololu互換DRV8825モジュールの電流調整 [SHAPEOKO2]
または
自作CNCマシン・レーザーカッターについて

モータの仕様;貼ってあるPDFは実物と違うとコメントが追記されていた。正しいのは、送ったケーブル基準で考え、
Red: A+
Blue: A-
Green: B+
Black: B-
とのことで、今回はそのままシールドにさすことでDRV8825は使えた。
"
4401.jpg 2
Usongshine
"




その他

シールドVer3.0のリミットスイッチは、ノイズが乗るため0.47uのコンデンサーを付ける。

DRV8825のサンプルソースコードはA4988で調べて流用できる

DRV8825で調べてもサンプルが余り出てこない。そこで同じ配置設定でA4988があり、こちらのほうがメジャーで情報が出てくるので、そのソースをそのまま参考にできる。

pololu互換品 DRV8825はそのままさせば使える。但しモータ配線順番が異なる。

CNCシールドはpololu DRV8825/A4988を使う前提である。
ケーブルの順番がDRV8825とA4988で異なる。購入先によって元々A4988に合わせねじるようになる入れ替えをして刺してケーブルを送ってくれている。使う前に要確認。
モータドライバーのロジック電圧に関して、
DRV8825のRESET・SLEEPをプルアップする必要がある。(RESET・SLEEP同士はCNCシールド内で繋がっている。)pololuでは、2パターンの写真が載せてあるが、モータドライバー基板内で、繋がっているので気にしなくてもよいようだ。

"


引用DRV8825"
"













参考A4988"
VMOT:ステッピングモーター電源(8.2V-45V)
GND:ステッピングモーター電源GND
B2~A2:ステッピングモーター出力端子
FAULT:ドライバー電源(2.5V-5.25V)
GND:ドライバー電源GND
DIR:モーターの回転方向(High・Lowで逆転する)
STEP:パルスを与えると回転する
SLEEP・RESET:互いに短絡させる、ドライバー基板内でFAULTと繋がっている(CNCシールド上で繋がる)





MS1~MS3:各PinのHigh・Low状態によって、stepサイズを変更できる。
なおCNCシールド内では、A4988前提で作れれておりDRV8825のFAULTに電源5Vが来るようになっている、DRV8825もそれを考え作られているのでそのままでOK。"

CNCシールド"


CNCシールドの概要
緑:arduino unoのピン番号
左上の2~13はモータドライバーの設定に使われる。設定によっては使わないピンもでる。
8は回路図を見ると、モータドライバー稼働するかどうかのenableとなっているため、モータドライバーを使用する際は使用できない。

CNCシールドのENは何している?

ENがLOWになっていると、ドライバーが稼働する。
arduinoのpin8に繋がっており、arduino上で、ドライバーのON、OFFをできる。
配線図のR1:10Kでプルアップされており、arduino側でLOWにしておけば稼働する。
配線図的には、CNCシールドでENの配線が各ドライバーの左上にあり、ドライバーを見ると、ENABLEに値する。

試しに動かしてみる

プログラムを用意して動かしてみる。
http://fritzing.org/projects/a4988-single-stepper-test/
こちらの方のプログラムをCNCシールドに合わせ出力ピン設定を簡易に変更できるように
const int a_step、const int a_dirという変数を追加した。ここを出力したいピン番号に変えてCNCシールドの各ドライバーが動くことを確認した。
試しに行う際は、使っているステッピングモータの出力ピンに合わせ、ケーブルなり出力ピンを変更してみてください。
特に加速度の設定はなく、1秒ごとに200ステップ正転・逆転を繰り返すプログラムです。ドライバーを1.5A制限を掛けた状態で、使用時モータドライバー1つで8Vぐらいになり、0.5~1.5A掛かった。
自分が使うには、使う機械が重く動きが速すぎると脱調するので、加速度の調整機能を入れないといけない。

実際に書き込んで使用したプログラム
int x;
const int a_step = 12; // Step出力したいピンに変える。
const int a_dir = 13; // Dir出力したいピンに変える

void setup() {
        pinMode(8,OUTPUT); // Enable
        pinMode(a_step,OUTPUT); // Step
        pinMode(a_dir,OUTPUT); // Dir 回転方向決め
        digitalWrite(8,LOW); // Set Enable lowでドライバーが動く
}

void loop() {
        digitalWrite(a_dir,HIGH); // Set Dir High 正転
        for(x = 0; x < 200; x++) //200ステップ分繰り返す
        {
                digitalWrite(a_step,HIGH);
                delayMicroseconds(500);
                digitalWrite(a_step, LOW);
                delayMicroseconds(500);
        }
        delay(1000);
        digitalWrite(a_dir,LOW);  // Set Dir Low 逆回転
        for(x = 0; x < 200; x++) //200ステップ分繰り返す
        {
                digitalWrite(a_step,HIGH);
                delayMicroseconds(500);
                digitalWrite(a_step,LOW);
                delayMicroseconds(500);
        }
        delay(1000);
}