Arduino

モータードライバ(TB6643KQ)を使ってモータを動かす

以前にトランジスタを使ってモータを動かす回路を作りました。トランジスタを使った回路ではモータが正転または反転の一方向しか制御できませんでした。今回はモータードライバを使ってモータの正転と反転を制御する回路を作ります。

モータードライバ

モータードライバとは、MOSFETを使いコイルに流す電流を制御することによってモータの回転の向きを制御することができるICです。今回はTB6643KQというモータードライバを使います。

そもそもモータの正転・逆転はどのようにして行うのでしょうか。これはモーターに流れる電流の向きを変えることによって行っています。このモーターに流れる電流を制御するのにHブリッジと呼ばれる回路を使います。

Hブリッジ回路

Hブリッジ回路はトランジスタを4つ使ってモーターに流れる電流を制御する回路の事を指します。下図のようにトランジスタとモータが”H”のようになることからそう呼ばれています。

各トランジスタのONとOFF(電流を流すか流さないか)で実施には制御します。例えば、トランジスタ1をON、トランジスタ2をOFF、トランジスタ3をOFF、トランジスタ4をONにするとモータが正転になる向きに電流が流れます。(下図左)

一方トランジスタ1をOFF、トランジスタ2をON、トランジスタ3をON、トランジスタ4をOFFにするとモータが逆転になる向きに電流が流れます。(下図右)

注意して頂きたいのが、正転→逆転に切り替わる際には短時間ではあるが、トランジスタ全てがONの状態となり、このストレスが積み重なるとトランジスタの故障に繋がります。そのため、一度ストップ状態を約100㎲程度挟んでから回転の向きを切り替えるようにしてください。

TB6643KQ

今回使うモータードライバのデータシートを見るとHブリッジ回路が使われていることが分かります。

入力にはIN1とIN2があり、モーターと接続する出力にはOUT1とOUT2、電圧のVMとGNDがあります。トランジスタを守るためにフリーホイールダイオードもあることが確認できます。各端子と名称の関係は以下の通りです。

なお、電圧は10V~50Vが動作範囲であり、通常の単三電池×4本だけだと足りないので電池ボックスを直列につないで電圧を上げる必要があります。

DCモータの特性について

ここでは、少し話が変わってDCモータの特性について書いていこうと思います。以前にも記事で書きましたが、DCモータは直流電流の電気的エネルギーを機械的エネルギーへ変える機器で、具体的にはモーターの回転に変換します。それでは、その回転数を上げるまたは下げるためにはどうしたらいいのでしょうか。実はDCモーターの回転数(ω)とトルク(T)には以下のような特性があります。(トルクとは回転方向にかかる力でモータが停止している時が最大となります。)そこで、回転数を上げるいくつかの方法について説明します。

トルクにかかる負荷を下げる

回転数を上げる一つの方法にはモーターのトルクにかかる負荷を下げるのがあります。上図を見て頂ければお分かりのように、トルクが大きくなるにつれて回転数が下がっています。そのため、トルクにかかる負荷を下げれば、回転数は上がります。

電圧を高くする

回転数を上げる2つめの方法として電圧を高くするのがあります。上図から読み取りと電圧の高さを変えるとグラフが並行移動します。例えば、トルクT0の状態で回転数を上げたい場合は、電圧を高くすることによって同じトルクでも回転数を上げることが出来ます。

大きな電流を流す

回転数を上げる3つめの方法としてより大きな電流を流せばよいです。結局のところ、電圧を高くすることと大差ないことではありますが、回転数を下げるといって面ではどういった抵抗を置けばいいのかを考えるヒントになるかと思います。

モータードライバを使ってモーターを動かす回路を組む

実際にモータードライバを使ってモーターを動かす回路を組んでみたいと思います。ここでは、その回路を組むにあたって必要な機器・端子と実際に組んだ回路を紹介します。

回路を組む

さて、ここからはモータードライバを使ってモータを制御する回路を作っていきます。今回の回路で使う機器・端子は以下の表の通りです。

ブレッドボード抵抗・ジャンパー線などを使って回路を作る基板
モータードライバモーターを制御するIC(TB6643KQ)
DCモータ直流電流で動作するモーター
抵抗1kΩ電圧を下げる端子
コンデンサ0.1μF電荷を充放電して電圧を一定にしたり、直流分をカットして交流分のみを取り出す素子
電解コンデンサー100μs電解をもったコンデンサー
タクトスイッチボタン押下で電通を制御するスイッチ
ジャンパー線電気を中継する線
ワニ口クリップ先端がワニ口をしているジャンパー線
電池9V9v用電源
電池ケース(単三2本)3v用電源

実際の回路図は以下のようになります。

また、配線図は以下を参考にしてください。

実行結果

実行結果は以下の動画をご覧ください。

Arduinoを使ってモーターの正転・逆転を制御する

次にArduinoを使ってモーターの制御をします。ここでは、1秒ごとに正転と逆転を繰り返すという簡単な動作としています。

回路を組む

ここで使う機器・端子は以下の通りです。

ブレッドボード抵抗・ジャンパー線などを使って回路を作る基板
モータードライバモーターを制御するIC(TB6643KQ)
DCモータ直流電流で動作するモーター
抵抗510Ω電圧を下げる端子
LED順方向に電圧を加えると発光する半導体
コンデンサ0.1μF電荷を充放電して電圧を一定にしたり、直流分をカットして交流分のみを取り出す素子
電解コンデンサー100μs電解をもったコンデンサー
タクトスイッチボタン押下で電通を制御するスイッチ
ジャンパー線電気を中継する線
ワニ口クリップ先端がワニ口をしているジャンパー線

実際に組んだ回路は以下の図になります。

配線は下図をご参照ください

プログラムコード

プログラムコードは以下になります。

const int IN1 = 5;    //モータードライバのIN1
const int IN2 = 6;    //モータードライバのIN2
const int LED = 13;   //LEDのピン番号


void setup() {
  // put your setup code here, to run once:
  pinMode(IN1,OUTPUT);
  pinMode(IN2,OUTPUT);
  pinMode(LED,OUTPUT);
}

void loop() {
  // put your main code here, to run repeatedly:
 
  //ストップ状態
  analogWrite(IN1,0);
  analogWrite(IN2,0);
  digitalWrite(LED,HIGH);
  delay(1000);
  
  //正転
  analogWrite(IN1,64);
  analogWrite(IN2,0);
  digitalWrite(LED,LOW);
  delay(1000);

  //ストップ状態
  analogWrite(IN1,0);
  analogWrite(IN2,0);
  digitalWrite(LED,HIGH);
  delay(1000);

    //逆転
  analogWrite(IN1,0);
  analogWrite(IN2,64);
  digitalWrite(LED,LOW);
  delay(1000);
  
}

正転と逆転またはその反対の状態に遷移するときはストップ状態をはさみ、モータードライバに負荷がかからないようにしています。LEDが点灯しているときはストップ状態です。

実行結果

まとめ

今回はモータードライバを使ってモータを動かす回路を作成しました。モータードライバを使えば、簡単に正転や逆転の制御をすることが出来るので、ライントレースカーなどにも使われます。ここでは、言及はしていなかったのですが、長時間回路を使い続けるとモータードライバが非常に熱くなります。そのため、放熱対策が必要となります。

モータードライバ内部にあるHブリッジ回路は便利ですが、正転と逆転をすぐに切り返しているとトランジスタに負荷がかかるため、切り替え途中にはストップ状態を挟むなどの工夫を心がけてください。