【ラズパイ】モータドライバTA8428Kでモータ制御

 

【ラズパイ】モータドライバTA8428Kでモータ制御

この記事では、ラズパイ(Raspberry Pi)でDCモータを制御する方法を解説します。モータドライバはTOSHIBAのTA8428Kを使用します。

モータドライバの使い方は難しくないので、ぜひチャレンジなさってみてください。

ラズパイでモータを制御するまでの流れ

こちらの図のは、ラズパイと、モータドライバ、DCモータの配線のイメージ図です。ラズパイとDCモータの電源を別々に用意することに注意しましょう。

ラズパイ・モータドライバ・モータの配線イメージ図
ラズパイ・モータドライバ・モータの配線イメージ図

つかうもの

最初に、この記事でつかうものをご紹介いたします。

ラズパイ

この記事では、Raspberry Pi zero WHを使用しました。みなさんはお好きなラズパイをお使いください。

なお、ラズパイはSSHのターミナルから操作しています。セットアップの仕方はRaspberry Pi OSのインストール - モニター・キーボードなし、SSH接続するまでをご覧ください。

DCモータ

モータは倒立振子ロボットの製作で使った、ロボサイトのギヤードモータを使用します。ギヤ比30:1のギアが内蔵されていますので、ギアボックスを付ける必要がありません。コンパクトにまとめられますので、ロボットの見た目がスッキリします。また、モータを固定する器具も付いてますのでオススメです。

モータドライバ

モータドライバは、TOSHIBAのTA8428Kを使用しましたが、他のモータドライバでも基本は同じことが多いので、この記事の内容が参考になると思います。

モータのノイズ対策

さっそくモータを動かしていきたいところですが、その前に、ラズパイなどのマイコンでDCモータを使う場合に注意しなければならないことがあります。それはモータのノイズです。

モータは逆回転やストップなどの急激な動きの変化時に、逆起電圧が発生します。この逆起電圧はかなり大きな電圧でして、そのノイズが通信エラーなどのご動作を引き起こします。そのため、モータにパスコンと呼ばれるコンデンサをはんだ付けして、ノイズ対策を行います。

具体的には次の図のようにモータの端子間と、端子とシャーシの間に合計3つのコンデンサをはんだ付けします。

モータとパスコンの配線図
モータとパスコンの配線図

このコンデンサは瞬間的に発生したモータのノイズを、アースへ落としてくれます。バイパスコンデンサを略してパスコンなどと呼ばれています。コンデンサの容量は0.1uF程度で、セラミックコンデンサを使えば大丈夫です。

モータ本体ににコンデンサをはんだ付けするときは、はんだ付けする部分をあらかじめやすりで削っておくとはんだ付けしやすいです。

モータにパスコンを半田付け
モータにパスコンを半田付け

また、ある程度ワット数の高いはんだごてでないと、はんだ付けできませんのでご注意ください。こちらのような温度調整がはんだごてに備わっていると、色々な用途に使えて便利です。

モータドライバTA8428Kの使い方

ここでは、モータドライバTA8428Kの使い方を説明します。

TA8428Kの特徴

TA8428Kは、DCモータ用のブリッジドライバです。次に、モータドライバTA8428Kの特徴を挙げておきます。

  • モータの正転、逆転、ストップ、ブレーキが制御できる
  • 電源は7.0~27.0Vの間で動作する
  • 最大3.0A、平均で1.5Aの電流を流せる

TA8428Kのデータシート

TA8428Kの各ピンの役割

TA8428Kの各ピンの役割はこちらの表の通りです。IN1とIN2に入力される信号によって、DCモータの動きを制御する仕組みになっています。

端子番号 端子記号 説明
1 IN1 出力の状態を制御する
2 IN2 出力の状態を制御する
3 OUTA DCモータへつなげる
4 GND GND
5 OUTAbar DCモータへつなげる
6 N.C 使わない
7 Vcc 電源電圧

ちなみに、モータドライバを正面から見た時、一番左側から1番端子となります。

TA8428Kの真理値表

モータドライバのINとOUTの関係をもうすこし詳しく見ていきます。次の表は入力端子IN1、IN2にHighとLowの信号を入力したときの、出力の変化をあらわす表になります。

IN1 IN2 OUTA OUTAbar 出力モード
H H L L ブレーキ
L H L H 逆転
H L H L 正転
L L OFF OFF ストップ

たとえば、モータを正転させたい場合は、IN1にHighを入力しIN2をLowにします。入力電圧は、モータドライバの電源電圧Vccの範囲までとなります。ラズパイのデジタルピンの出力は3.3Vなので、GPIO端子をそのまま入力へ接続できます。

モータドライバには電流が多く流れるので、ドライバを壊さないためにも放熱板(ヒートシンク)を取り付けたほうが安全です。
また、モータ制御では急激な電流変化が起こるため、モータドライバ近くの電源とGNDの間に10μFのコンデンサを入れておきます。

モータドライバだけでモータを動かしてみよう

ここで、ラズパイでモータを制御する前に、モータドライバだけでモータを動かしてみましょう。次のとおりに配線すれば、モータが正転するはずです。

端子番号 端子記号 説明
1 IN1 9V
2 IN2 GND
3 OUTA DCモータへ
4 GND GND
5 OUTAbar DCモータへ
6 N.C 未接続
7 Vcc 9V

その他にも、IN1とIN2の状態を入れ替えたりして、逆転やブレーキができるか確かめてみてください。

モータの回転速度

ここまでで、モータドライバの基本的な使い方がご理解いただけたでしょういか?ところで、モータの制御には「正転」「逆転」「ブレーキ」の他に「回転速度」があります。DCモータの回転速度は、PWM信号でコントロールできます。PWM信号について詳しくは、オペアンプ1個でつくる!PWMジェネレータをご覧ください。

ラズパイとモータドライバを使ってDCモータの制御

それでは、ラズパイとモータドライバを使ってDCモータの制御を行なっていきます。ラズパイでモータ制御するには、gpiozeroライブラリを使うとカンタンです。次のようにしてインストールしておきましょう。

$ sudo apt install python-gpiozero

gpiozeroの公式ドキュメント

ラズパイとTA8428Kの配線

ラズパイとモータドライバTA8428Kを次のように配線します。ラズパイとTA8428KのGNDを必ず共通につないでください。

Raspberry Pi TA8428K
GPIO14 IN1
GPIO15 IN2
GND GND

Pythonプログラム

TA8428Kでモータの制御
TA8428Kでモータの制御

次のような動作をする制御を、Pythonでプログラミングしてみました。

  1. 正転しながら徐々にスピードが上がる
  2. 急転回して徐々にスピードが遅くなる
  3. そして停止する
# -*- coding: utf-8 -*-
from gpiozero import Motor
from time import sleep

### TA8428K モータドライバテスト ###

motor = Motor(14, 15) # GPIO14をIN1へ、GPIO15をIN2へ繋ぐ

motor.forward(0.3) # 0.3はモータの速度
sleep(2) # 2秒間正転し続ける
motor.forward(0.6)
sleep(2)
motor.forward(1.0)
sleep(2)
motor.backward(1.0) # ここで反転する
sleep(2)
motor.backward(0.6)
sleep(2)
motor.backward(0.3)
sleep(2)

motor.stop()

ご覧の通り、gpiozeroMotorモジュールを使うと、とてもカンタンにモータ制御を行うことができます。

以上でラズパイでTA8428Kモータドライバを使ってDCモータを制御する方法の説明をおわります。他にも、10日で作る!ラズパイ倒立振子ロボットラズパイでステッピングモータの制御ラズパイとリレーモジュールを書いてますので、ご参考になさってみてください。

記事に関するご質問などがあれば、
Twitter または お問い合わせ までご連絡ください。
関連記事