解説
DCモータ
DCモータを回転させるためには,Arduinoのピンからの出力では電圧や電流が足りません.ではどうするかというと,モータを回転させるための電源を別途用意し,電流の向きをArduinoから制御します.単なるスイッチングではなく,回転方向を変えるためには電流の向きを,回転速度を変えるためには電圧を制御しなければなりませんが,これらの難しいところをよきにはからってくれるブリッジドライバICを用いることで簡単に実現できます.使用するブリッジドライバ
TA7291Phttps://toshiba.semicon-storage.com/jp/product/linear/motordriver/detail.TA7291P.html
参考になるサイト
回転の向きと速度の制御
TA7291Pには10本のピンがあります.ピン番号は向かって左から1,2,...,10です.
電源として,ロジック側(この場合,Arduinoと同じ電圧)の電源と,DCモータ側の電源を用意します.
1番ピンが共通のGND,7番ピンがロジック側の電源Vcc,8番ピンがモータ側の電源Vsです.
モータは2番ピンOUT1と10番ピンOUT2に接続します.接続を逆にするとモータの回転方向が変わります.
IN1(5番ピン)とIN2(6番ピン)へ以下のようなデジタル信号を入力することにより,モータに印加される電圧を制御します.
IN1=H, IN2=L: どちらかの方向に回転(配線に依存)
IN1=L, IN2=H: 上と逆方向に回転
IN1=H, IN2=H: brake
IN1=L, IN2=L: stop
回転状態において,HのピンにPWM(pulse width modulation)信号を入力すると,IN1=H, IN2=L と IN1=L, IN2=L の状態,つまり回転とstopを高速に切り替えている状態となり,結果として回転速度が下がります.
Vref(4番ピン)は出力電圧を制御するためにあります.回転の速度の制御に関して,VrefにPWM信号を入力せよ,としているサイトが多く見受けられます.これはVcc=Vsの場合はよいのですが,そうでなければ適切ではありません.上述の通り,IN1とIN2のうち,HIGHにしているピンをPWMするのがよいでしょう.ただしデータシートによると,Vrefを使用しない場合は,3kΩ以上の保護抵抗を経由してVsに接続しておく必要があります.
電源として,ロジック側(この場合,Arduinoと同じ電圧)の電源と,DCモータ側の電源を用意します.
1番ピンが共通のGND,7番ピンがロジック側の電源Vcc,8番ピンがモータ側の電源Vsです.
モータは2番ピンOUT1と10番ピンOUT2に接続します.接続を逆にするとモータの回転方向が変わります.
IN1(5番ピン)とIN2(6番ピン)へ以下のようなデジタル信号を入力することにより,モータに印加される電圧を制御します.
IN1=H, IN2=L: どちらかの方向に回転(配線に依存)
IN1=L, IN2=H: 上と逆方向に回転
IN1=H, IN2=H: brake
IN1=L, IN2=L: stop
回転状態において,HのピンにPWM(pulse width modulation)信号を入力すると,IN1=H, IN2=L と IN1=L, IN2=L の状態,つまり回転とstopを高速に切り替えている状態となり,結果として回転速度が下がります.
Vref(4番ピン)は出力電圧を制御するためにあります.回転の速度の制御に関して,VrefにPWM信号を入力せよ,としているサイトが多く見受けられます.これはVcc=Vsの場合はよいのですが,そうでなければ適切ではありません.上述の通り,IN1とIN2のうち,HIGHにしているピンをPWMするのがよいでしょう.ただしデータシートによると,Vrefを使用しない場合は,3kΩ以上の保護抵抗を経由してVsに接続しておく必要があります.
モータを扱う際にも,ソレノイドと同様に停止時に発生する逆起電力に注意を払う必要がありますが,TA7291Pには逆起電力を処理するためのダイオードが内蔵されているため,回路に自身でダイオードを加える必要はありません.
実装
部品リスト
Arduino Uno R3(互換品)
TA7291P
モータ FA-130RA
抵抗 10k
電池ケース・電池
ブレッドボード
USBケーブル
ワイヤ適宜
回路図

VsとGNDの間にコンデンサを入れて電圧を安定化させるべきであるとか,VsとTA7291Pの間に電流制限抵抗を入れるべきであるとか,モータにはコンデンサを付けるべきであるとか,改善すべき点はありますがご容赦ください.
実装上の注意
モーターのリード線の被覆をもう少し剥いた方がよい.ワイヤストリッパを使うべし.
Arduinoのスケッチ
int pinToIn1 = 9;
int pinToIn2 = 10;
void setup() {
pinMode(pinToIn1, OUTPUT);
pinMode(pinToIn2, OUTPUT);
}
void loop() {
// rotate forward
digitalWrite(pinToIn2, LOW);
for (int i = 0; i <= 255; i++) {
analogWrite(pinToIn1, i);
delay(10);
}
for (int i = 255; i >= 0; i--) {
analogWrite(pinToIn1, i);
delay(10);
}
// rotate reverse
digitalWrite(pinToIn1, LOW);
for (int i = 0; i <= 255; i++) {
analogWrite(pinToIn2, i);
delay(10);
}
for (int i = 255; i >= 0; i--) {
analogWrite(pinToIn2, i);
delay(10);
}
}
結果
モータの軸の回転方向,回転速度が時間と共に変わります.
応用
モータだけではなく,双方向に電圧をかけるようなデバイス,例えばペルチェ素子の制御にも利用できます.


Casino Table Games & Casino Games - JTHub
返信削除For the latest news 청주 출장샵 and insights about 포천 출장안마 slots, blackjack, roulette, 군포 출장샵 poker and more, see our 상주 출장샵 casino 영천 출장안마 table games page