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

 

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

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

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

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

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

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

この記事で使用する機器

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

なお、ラズパイはSSHのターミナルから操作しています。セットアップの仕方はキーボードなしのラズパイをMacで初期設定、SSH環境構築をご覧ください。

モータは倒立振子ロボットの製作で使った、ロボサイトのギヤードモータを使用します。ギヤ比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モータの動きを制御する仕組みになっています。

端子番号端子記号説明
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の範囲までとなります。ラズパイのデジタルピンの出力は3.3Vなので、GPIO端子をそのまま入力へ接続できます。

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

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

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

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

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

モータの回転速度

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

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

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

$ sudo apt install python-gpiozero

gpiozeroの公式ドキュメント

ラズパイとTA8428Kの配線

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

Raspberry PiTA8428K
GPIO14IN1
GPIO15IN2
GNDGND

Pythonプログラム

次のような動作をする制御を、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へお返事ください。
この記事で紹介した商品
人気のラズパイ
人気のラズパイ周辺機器
Raspberry Piのオススメ入門書
関連記事