- 最終更新日
- 記事公開日
ステッピングモーターを並列駆動(同時制御)
使用したもの
- ステッピングモーター:ST-42BYH1004(バイポーラ型)
- Arduino UNO R3 (CH340版)
- モータードライバー1:DRV8835(Pololu社製)※スイッチサイエンスにて購入
- モータードライバー2:DRV8835 ※秋月電子にて購入
各パーツの詳細は、以前の記事をご覧ください。
回路図
プログラム
#include <Stepper.h>
// 1回転ステップ数(ST-42BYH1004の場合)
int around_step = 400;
int sw_pin = 3; // スイッチの入力Pin
int led_pin = 7; // LEDの出力Pin
volatile int sw; // SWの状態
// ボタン一回を押して進むステップ数
// 正転:10、反転:-10
int step = 10;
// 回転スピード(10:遅い、50:早い)
int speed = 25;
void sw_on(void);
// stepper インスタンス生成
Stepper stepper(around_step, 8,9,10,11);
void setup() {
pinMode(sw_pin,INPUT);
pinMode(led_pin,OUTPUT);
// 立ち上がりで割り込み処理開始
attachInterrupt(1,sw_on, RISING);
}
void loop() {
// スイッチを長押し中かどうか
sw = digitalRead(sw_pin);
// スイッチがONのときのみモーターを回転
if(sw == 1) {
//ステップ数(正転)
stepper.step(step);
// 回転スピード
stepper.setSpeed(speed) ;
}
}
// スイッチが押されたときの割り込み処理
void sw_on(void) {
sw = 1;
digitalWrite(led_pin,HIGH);
}
スイッチを押している間、LEDが点灯し、モーターが回転し続けます。
技術解説
ステッピングモーター1個につき、モータードライバが1個必要
DRV8835一つにつき、制御できるステッピングモーターの数は一つです。
よって今回のように、2つ同時にステッピングモーターを制御したい場合は、DRV8835が2つ必要になります。
なぜ、DRV8835一つで複数のステッピングモーターを動かせないのか?
電流が足りないからです。
DRV8835の出力から2方向に分岐させてしまうと、本来の約半分の電流でステッピングモーターを制御をしようとしてしまいます。
なお、今回は2種類のDRV8835を使用しています。
基本的な仕様は同じです。
ただ、手元にあったDRV8835を使っただけです。
2つとも秋月のを使っても良いですし、2つともスイッチサイエンスのものを使用しても問題ありません。
ステッピングモーター1個につき、電源が1個必要
ステッピングモーター①の電源は、USBケーブルを通ってパソコンから給電。
ステッピングモーター②の電源は、乾電池×3(4.5V)を使って給電しています。
このように電源は別々に取らないと、電流不足でモーターは正常に動きません。
注意点
今回、使用したステッピングモーターは5V仕様のものです。
かなりトルクにもの足りなさを感じました。
タイヤに使うには、力不足です。
とはいえ、あまり負荷が掛からない用途であれば、十分な力はあるのですが・・・