LoginSignup
3
3

More than 3 years have passed since last update.

ArduinoとTA7291Pでモーターを動かす(単純オンオフ動作からPWM制御まで)

Last updated at Posted at 2019-08-18

用意するもの

・Arduino
・モーター(消費電流最大2Aまで。今回はマブチFA130RA使用)
・TA7291P
・ブレッドボード
・配線

東芝TA7291Pについて

unnamed.jpg

番号 記号 意味
1 GND GND
2 OUT1 モータへ
3 NC 未使用
4 Vref PWM用端子(Arduinoアナログ信号,入力)
5 IN1 信号用端子(Arduinoデジタル信号,入力)
6 IN2 信号用端子(Arduinoデジタル信号,入力)
7 VCC 電源(モータードライバ用,Arduino5V使用,4.5-20V)
8 Vs 外部電源(モーター駆動用,外部電源+側,0-20V)
9 NC 未使用
10 OUT2 モータへ

※Vref≦Vs  PWM制御時の外部電源は5V以上にすること。
なお、生産終了予定のもよう。

モーター入出力設定

IN1 IN2 OUT1 OUT2
0 0 L L
1 0 H L
0 1 L H
1 1 H H

Vsat検証

「Vsは0V からですが、内部ロス(Vsat)を考えた電圧を印加しませんと、負荷は駆動できません」(データシート原文)
実際、Vs=2.0からモーターが回り始めるので、どれだけロスするのか検証。

外部電源電圧 (Vs,V) 無負荷時電圧(V) モーター負荷電圧(V) 内部ロス電圧(Vsat,V) 割 合 (%)
2 1.4 0.4 1.6 -80.0
3 2.4 1.3 1.7 -57.0
4 3.4 2.1 1.9 -48.0
5 4.4 3.1 1.9 -38.0
6 5.4 4.0 2.0 -33.3
10 9.5 7.0 3.0 -30.0
15 14.4 11.5 3.5 -24.4
20 19.3 16.0 4.0 -20.0

無負荷時検証方法:OUT1 OUT2でテスタ測定。
モーター負荷時検証方法:モータ単体で回転させ、モーター側端子でテスタ測定。
テスタ:Sanwa PM3
モーター:マブチFA130RA

※内部ロス(Vsat)の定義が負荷(モーター)込みなのか判らなかったので、実際に駆動させる時を考えて外部電圧から負荷時電圧を引き、内部ロスとして割り出した。この場合だとモーターの型によって割合が変動してくると思うので注意。本当は外部電圧と無負荷電圧との差がVsatなんだろうけどどうなんでしょ…?
※そもそもこのモーターは負荷3.0V以上は保証されてないので高電圧側は気休め程度に見ておくこと

配線図

qiita用スイッチ_ブレッドボード.jpg
※外部バッテリーは5V辺りを想定
※PWM制御可能なピンは、デジタル3,5,6,9,10,11番のピンです。

プログラム(オンオフ制御)

 int Motor01_in1 = 0;
 int Motor01_in2 = 1;

void setup() {
  pinMode(Motor01_in1,OUTPUT);
  pinMode(Motor01_in2,OUTPUT);
}

void loop() {
digitalWrite(Motor01_in1,HIGH);
delay(1000);
digitalWrite(Motor01_in1,LOW);
delay(100);
digitalWrite(Motor01_in2,HIGH);
delay(1000);
digitalWrite(Motor01_in2,LOW);
delay(100);
}

「入力を切り替えたときに貫通電流が流れます。入力切り替え時 (正転⇔逆転、正転/逆転⇔ブレーキ) に STOP モード
(約 100 μs) を入れてください。」
(データシート原文)
※正回転→無負荷→反回転→無負荷のループです。

プログラム(PWM制御)

 int Motor01_in1 = 0;
 int Motor01_in2 = 1;
 int PWM =3;

void setup() {
  pinMode(Motor01_in1,OUTPUT);
  pinMode(Motor01_in2,OUTPUT);
}

void loop() {
 digitalWrite(Motor01_in1,HIGH);
 analogWrite(PWM,255); //PWM設定値:0255 255=5V
 delay(3000);
 digitalWrite(Motor01_in1,LOW);
 analogWrite(PWM,0);
 delay(100);

 digitalWrite(Motor01_in2,HIGH);
 analogWrite(PWM,128);//128=2.5V
 delay(3000);
 digitalWrite(Motor01_in2,LOW);
 analogWrite(PWM,0);
 delay(100);
}

※PWM制御ピンのpinMode設定は要らないです。
反回転する際に出力が半分ほどに落ちるのが確認できれば成功です。
※正回転(100%出力)→無負荷→反回転(50%出力)→無負荷のループです。

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3