TOP > カテゴリ > ロボット・電子工作・マイコン >

モータードライバー(TA7291P)の使い方 [Arduino]

Arduinoでモータードライバー(TA7291P) を使用してモーターを「回転、逆回転、回転速度の調整」をする方法をご紹介します。

使用部品・材料

総額で約2450円です。(Arduino本体の値段を除く)

部品/材料値段備考
ブレッドボード¥270秋月電子の通販コード(P-00315)
モータードライバ(TA7291P)¥150秋月電子の通販コード(I-02001)
タミヤ
ユニバーサルプレート 2枚セット (70157) 
¥468
タミヤ
ツインモーターギヤーボックス (70097)
¥587ギアは低速ギヤー比203:1のCタイプを使用します。

1つのモーターの電圧は恐らく1.5Vから3Vです。9Vでモーターを回すと超高速になりますのでモーターが壊れる可能性が高いのでご注意ください。
タミヤ
マンモスダンプ 17013
¥819タイヤ2個単3電池ボックスのみを使用しています。

[電池ボックスの使用例]
単3電池
2本
¥50モーター用
コネクタ付コード(みの虫×ジャンパーワイヤ)¥110単3電池ボックス用。
秋月電子の通販コード(C-08916)

配線図

TA7291Pの使い方

次の写真が正面で、端子は左から「1,2,3 ... 10」と数えます。

端子
番号
端子
記号
説明
1GNDグラウンド
2OUT1出力端子(モーター端子と接続)
3NC非接続
4Vref制御電源端子(モーターの回転速度の調整。PWMで0-255の範囲を指定する。値が大きいほど回転が早くなる)

ArduinoのデジタルピンはPWMが使用できる「3,5,6,9,10,11」のいずれかを使用します。また、このVrefを使用しないときは抵抗器(3kΩ以上)を介してVS端子(8番)に接続します。

出力電圧は「Vref ≦ VS」とします。Vrefの電圧を測定した所、約2.5Vです。VSの乾電池2本は3V(1.5V + 1.5V)ですので問題ないと思います。また、乾電池を4本にすると6Vになりますが、今度はモーターに負荷がかかります。
5IN1入力端子(デジタルでHIGH or LOW)
6IN2入力端子(デジタルでHIGH or LOW)
7VCCロジック側電源端子
8VS出力側電源端子(モーターの電源)
9NC非接続
10OUT2出力端子(モーター端子と接続)

※3と9はNC端子(NON CONNECTION)で内部接続はありません。

[入力端子]

IN1IN2動作
LOW(0)LOW(0)ストップ
HIGH(1)LOW(0)回転
LOW(0)HIGH(1)逆回転
HIGH(1)HIGH(1)ブレーキ

※詳細は部品の「データシート」を型番などで検索してご確認ください。

スケッチ(プログラム)

次の処理を繰り返します。
・モーターの回転速度を中間にする
・モーターの回転(5秒間)
・ブレーキ
・モーターの逆回転(5秒間)
・ブレーキ(2秒間)
・モーターの回転速度をMAXにする
・モーターの逆回転(5秒間)
・ストップ(2秒間)

#define PIN_IN1  7
#define PIN_IN2  8
#define PIN_VREF 9 // PWM

void setup(){
  pinMode(PIN_IN1,OUTPUT); 
  pinMode(PIN_IN2,OUTPUT); 
}

void loop(){
      
    // モーターの回転速度を中間にする
    analogWrite(PIN_VREF,127); 

    // 回転
    digitalWrite(PIN_IN1,HIGH);
    digitalWrite(PIN_IN2,LOW);
    delay(5000);

    // ブレーキ
    digitalWrite(PIN_IN1,HIGH);
    digitalWrite(PIN_IN2,HIGH);
    
    // 逆回転
    digitalWrite(PIN_IN1,LOW);
    digitalWrite(PIN_IN2,HIGH);    
    delay(5000);

    // ブレーキ
    digitalWrite(PIN_IN1,HIGH);
    digitalWrite(PIN_IN2,HIGH);
    delay(2000);
    
    // モーターの回転速度を最大にする
    analogWrite(PIN_VREF,255); 
    
    // 逆回転 
    digitalWrite(PIN_IN1,LOW);
    digitalWrite(PIN_IN2,HIGH);    
    delay(5000);
                
    // ストップ
    digitalWrite(PIN_IN1,LOW);
    digitalWrite(PIN_IN2,LOW);
    delay(2000);
}

用語集 & メモ

PWM(パルス幅変調)
(周波数は変更せずに)HIGHとLOWのデューティー比を変更する。
Vcc(Voltage Collector)
IC用の電源
Vs(Voltage Supply?)
モーター用の電源
Vref(Voltage Reference circuit)
基準電圧回路と呼ばれ、一定の電圧を出力する電子回路。

参考サイト

DCモーターをArduinoで動かしてみる。その2





関連記事



公開日:2017年04月03日 最終更新日:2017年08月20日
記事NO:02314