こんばんは!
今回はArduinoを使ってステッピングモータを制御していこうと思います。
使用するもの
・Arduinoメインボード(https://amzn.to/2vkPIUH)
・USBケーブル(https://amzn.to/2UHhntl)
・ブレッドボード(https://amzn.to/38eNi8u)
・ジャンパワイヤ (https://amzn.to/39uBU8T)
・ステッピングモータMDP-35A
・モータードライバDRV8835(https://amzn.to/2CjBGT7)
・電池ボックス12V(https://amzn.to/2TKNkgB)
ステッピングモータとは
ステッピングモータはモータドライバに入力されるパルスに応じて回転をするモータです。
ステッピングモータの種類によって1パルスの入力に対して回転する角度が異なり、例として1パルスで1.8°回転するステッピングモータだと、200パルスで1回転します。
1パルスで回転する角度をステップ角、一回転するのに必要なパルス数をステップ数と言います。
今回使用するステッピングモータは「MDP-35A」です。
このステッピングモータの性能は
ステップ角:7.5°
ステップ数:48
駆動電圧:12V
です。
モータドライバとは
モータドライバはモータに流す電流量や、タイミングなどを制御するための回路が集合している集積回路です。
今回使用するモータドライバはDRV8835です。
手順
まずハード側からやっていきます。
以下のように配線します。
DRV8835 | |
VM | 12V電源(+) |
GND | 12V電源(ー)、Arduino GNDピン |
AOUT1~AOUT2 | ステッピングモータ |
VCC | Arduino 5Vピン |
MODE | VCC |
AIN1~BIN2 | Arduino D4~D7ピン |
fritzingでDRV8835のパーツが見つからなかったため、今回は写真と表にしました。
次にArduino IDEを起動して次のコードを書いていきます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | #include <Stepper.h> const int stepsPerRotate = 48;//ステップ数 = 360 / ステップ角 = 360 / 7.5 = 48 Stepper myStepper(stepsPerRotate, 4, 6, 5, 7); void setup(){ } void loop(){ myStepper.setSpeed(15); myStepper.step(48); delay(500); myStepper.step(-48); myStepper.setSpeed(30); myStepper.step(48); delay(500); myStepper.setSpeed(50); myStepper.step(-48); delay(500); myStepper.setSpeed(80); myStepper.step(96); delay(500); } |
今回は、Stepper.hというステッピングモータを駆動するためのライブラリを使用しています。Stepper.hはこちらのサイトからダウンロードすることができます。
Stepper.hのメソッドとして主に次の3つがあります。
・Stepper(steps, pin1, pin2, pin3, pin4):Stepperクラスの新しいインスタンスを作成します。
・setSpeed(rpms):モーター速度を1分あたりの回転数(RPM)で設定します。
・step(steps):直近のsetSpeedの呼び出しによって指定された速度で、モーターを特定のステップ数だけ回転させます。
Stepper.hのメソッドについては公式リファレンスを参照してください。
コードの説明をしていきます。
まず
const int stepsPerRotate = 48;
により、使用するステッピングモータのステップ数を指定しています。
今回使用しているMDP-35Aのステップ数は48ですが、使用するステッピングモータに合わせて変更してください。
次に、
Stepper myStepper(stepsPerRotate, 4, 6, 5, 7);
により、インスタンスを作成しています。
次に、loop()内では
15rpmで1回転
逆回転
30rpmで1回転
50rpmで逆回転
80rpmで2回転
を0.5行おきに繰り返しています。
これをメインボードに書き込むと以下の動画のようにステッピングモータが回転すると思います。
まとめ
今回はArduinoとモータドライバを使用してステッピングモータを制御してみました。
ステッピングモータはCNCフライス、3Dプリンタなど、多くのものに使用されているため、使い方や仕組みを理解していた方がいいと思います。
今回はこれで終わります。
ではまた!