【Raspberry Pi】モータドライバTA8428Kでモータ制御

【Raspberry Pi】モータドライバTA8428Kでモータ制御
【Raspberry Pi】モータドライバTA8428Kでモータ制御

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

Raspberry Piでモータを制御するまでの流れ

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

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

つかうもの

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

ラズパイ

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

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

DCモータ

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

モータドライバ

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

モータのノイズ対策

さっそくモータを動かしていきたいところですが、その前に、Raspberry PiなどのマイコンでDCモータを使う場合に注意しなければならないことがあります。それはモータのノイズです。 モータは逆回転やストップなどの急激な動きの変化時に、逆起電圧が発生します。この逆起電圧はかなり大きな電圧でして、そのノイズが通信エラーなどのご動作を引き起こします。そのため、モータにパスコンと呼ばれるコンデンサをはんだ付けして、ノイズ対策を行います。 具体的には次の図のようにモータの端子間と、端子とシャーシの間に合計3つのコンデンサをはんだ付けします。

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

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

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

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

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

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

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

TA8428Kの特徴

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

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

TA8428Kのデータシート

TA8428Kの各ピンの役割

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

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

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

TA8428Kの真理値表

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

IN1IN2OUTAOUTAbar出力モード
HHLLブレーキ
LHLH逆転
HLHL正転
LLOFFOFFストップ

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

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

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

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

端子番号端子記号説明
1IN19V
2IN2GND
3OUTADCモータへ
4GNDGND
5OUTAbarDCモータへ
6N.C未接続
7Vcc9V

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

モータの回転速度

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

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

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

shell
$ sudo apt install python-gpiozero

gpiozeroの公式ドキュメント

Raspberry PiとTA8428Kの配線

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

Raspberry PiTA8428K
GPIO14IN1
GPIO15IN2
GNDGND

Pythonプログラム

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

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

  1. 正転しながら徐々にスピードが上がる
  2. 急転回して徐々にスピードが遅くなる
  3. そして停止する

py
# -*- 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モジュールを使うと、とても簡単にモータ制御を行うことができます。 以上でRaspberry PiでTA8428Kモータドライバを使ってDCモータを制御する方法の説明をおわります。他にも、 10日で作る!ラズパイ倒立振子ロボットRaspberry Piでステッピングモータの制御リレーモジュールの使い方|Raspberry Pi・Arduino(ESP32) を書いてます。

関連記事

 
最後までご覧いただきありがとうございます!

▼ 記事に関するご質問やお仕事のご相談は以下よりお願いいたします。
お問い合わせフォーム