2021.6.11 Coskx Lab
M5StackGrayとモータドライバIC TC78H653FTGを使用し,モータ駆動デモプログラムを作成します。
TC78H653FTG 特徴
2つのモータを駆動できる。
1.8Vから7.5Vの低電圧電源でのモータ駆動ができる。
入力制御信号は2Vから5.5Vの広い範囲が使える。3.3V系マイコンではありがたい
通常は2つのモータを別々に駆動するためにHドライバを2回路別々に使用(Smallモデル)
Smallモデル駆動(通常駆動)では最大電流は2.5Aまで
大電流が必要な場合はHドライバ2つを結合して使用できる(Largeモデル)
Largeモデル駆動(2回路接続駆動)では最大電流は5Aまで
電流制限回路がついている(この回路が働くと機能が一次的に停止し,STBYをH→L→Hの操作をしないと復旧できない)
参考1 モータドライバIC TC78H653FTG(東芝デバイス&ストレージ)
データシート https://toshiba.semicon-storage.com/info/docget.jsp?did=63588&prodName=TC78H653FTG
アプリケーションノート https://toshiba.semicon-storage.com/info/docget.jsp?did=70283&prodName=TC78H653FTG
参考2 モータドライバIC TC78H653FTG 入出力ファンクション(Smallモデル)
LARGE = MODE = L, STBY = H(論理レベル) で使用する
モータは2つ接続できる。
モータ1について
IN1 | IN2 | OUT1 | OUT2 | モード |
L | L | OFF(Hi-Z) | OFF(Hi-Z) | ストップ |
H | L | H | L | 正転 |
L | H | L | H | 逆転 |
H | H | L | L | ブレーキ |
IN3 | IN4 | OUT3 | OUT4 | モード |
L | L | OFF(Hi-Z) | OFF(Hi-Z) | ストップ |
H | L | H | L | 正転 |
L | H | L | H | 逆転 |
H | H | L | L | ブレーキ |
IN1 | IN2 | OUT1(OUT2) | OUT3(OUT4) | モード |
L | L | OFF(Hi-Z) | OFF(Hi-Z) | ストップ |
H | L | H | L | 正転 |
L | H | L | H | 逆転 |
H | H | L | L | ブレーキ |
項目 | 最小 | 標準 | 最大 |
モータ電源電圧 | 1.8V | 3.0V | 7.5V |
モータ出力電流 | ― | 2A | 2.5A |
ロジックHレベル | 2.0V(Vm=5.0のとき) | ― | 5.5V |
ロジックLレベル | -0.3V | ― | 0.5V |
ロジック最大周波数 | ― | ― | 500kHz |
項目 | 最小 | 標準 | 最大 |
モータ電源電圧 | 1.8V | 3.0V | 7.5V |
モータ出力電流 | ― | 4A | 5A |
ロジックHレベル | 2.0V(Vm=5.0のとき) | ― | 5.5V |
ロジックLレベル | -0.3V | ― | 0.5V |
ロジック最大周波数 | ― | ― | 500kHz |
モータは1つだけ駆動します。配線は次のようになります。
M5Stackの正回転PWM信号の出力は「GPIO 2」です。
「GPIO 2」はM5Stackの裏側に 2 と書いてあるところです。これをTC78H653FTGのIN1に接続します。
M5Stackの逆回転PWM信号の出力は「GPIO 5」です。
「GPIO 5」はM5Stackの裏側に 5 と書いてあるところです。これをTC78H653FTGのIN2に接続します。
モータはTC78H653FTGのOUT1とOUT2に接続します。
実験の様子
実験ではモータを1つだけ使用しています。
基板上で,論理系のGNDとモータ駆動系のGNDが接続されているため,論理系のGNDとモータ駆動系のGNDを接続することはしていません。
TC78H653FTGのSTBYには3.3V,GNDは共通のGNDにします。
参考 M5Stackの裏側に書いてあるピンの名称
2,5を使用しています。
注意 ピンのいくつかは,他の用途に割り当てられている場合があるため,自由に変更できません。
配線は次のようになります。
M5Stackの正回転PWM信号の出力は「GPIO 2」です。
「GPIO 2」はM5Stackの裏側に 2 と書いてあるところです。これをTC78H653FTGのIN1に接続します。
M5Stackの逆回転PWM信号の出力は「GPIO 5」です。
「GPIO 5」はM5Stackの裏側に 5 と書いてあるところです。これをTC78H653FTGのIN2に接続します。
モータはTC78H653FTGのOUT1とOUT2に接続します。
ただし,OUT1とOUT2,OUT3とOUT4をそれぞれ接続します。
Smallモデル配線でもLargeモデル配線でも,M5Stack側は「GPIO 2」と「GPIO 5」に出力するので,プログラムは同じものが使えます。
モータ駆動では,通電駆動状態とショートブレーキ状態を繰り返す駆動をしています。
○ 正転動作(例 デューティ比25%)のときは →
1周期の75%区間で,モータドライバのIN2,IN1ともにHighを与え,残りの25%区間で,モータドライバのIN2にLowを与えとIN1にHighを与えます。(IN1はずっとHigh)
すなわち次の2つの状態が交互に生じます。(ショートブレーキ区間75%,正転通電駆動区間が25%)
○ 逆転動作(例 デューティ比25%)のときは →
1周期の75%区間で,モータドライバのIN1,IN2ともにHighを与え,残りの25%区間で,モータドライバのIN1にLow,IN2にHighを与えます。(IN2はずっとHigh)
すなわち次の2つの状態が交互に生じます。(ショートブレーキ区間75%,逆転通電駆動区間が25%)
2つのPWMモジュール(PWMチャンネル)をそれぞれ別のGPIOピンに出力します。
モータへの指令値は離散的で,プログラム内での見かけ上は
{-1.0, -0.75, -0.5, -0.25, 0., 0.25, 0.5, 0.75, 1.0}
を使用しています。正の値は正転,負の値は逆転になるようにしています。
モータ駆動関数driveMotor(int drivevalue)では,指令値の正負によって,PWM発生の仕方を変えています。
M5Stackプログラムでは,ボタンAで指令値を増加,ボタンBで指令値を減少させます。
設定値は次の通りです。
PWM生成に使用するビット数: 8bit
PWM周波数:20000Hz
使用するPWMモジュール(PWMチャンネル):2,3
(利用可能性を調べてある2,3,4,5,8,9,10,11,12,13,14,15の中から4つを選んでいます)
PWM出力に使用するGPIO PIN番号:2,5
(利用可能性を調べてある2,5,16,17,23,19の中から4つを選んでいます)
PWMの動作テスト用プログラム本体
モータ駆動メインプログラム MotorOOPTest01.ino
モータドライブクラスヘッダファイル MotorDriver.h
モータドライブクラス本体ファイル MotorDrive.cpp
PWM周波数を1000Hzにして実行時の GPIO 2 と GPIO 5 の信号をオシロスコープで観察しました。
Ch1(緑)が GPIO 2 ,Ch2(黄)が GPIO 5 です。PWM指令値が正のとき,GPIO 5 にPWM波形が見え, GPIO 2 はHighが保たれています。PWM指令値が負のとき,GPIO 5 はHighが保たれ, GPIO 2 にPWM波形が見えています。
(1)PWM指令値 0.25 のとき,GPIO 2がHighでGPIO 5がLowになる区間が正転駆動区間です。デューティ比:25%が出力されています。
(2)PWM指令値 -0.25 のとき,GPIO 5がHighでGPIO 2がLowになる区間が逆転駆動区間です。デューティ比:25%が出力されています。
M5StackGrayおよびモータドライバTC78H653FTGによるブラシDCモータ駆動テストを行ないました。
割り当て可能であるとわかっているGPIOピン2,5を使い,PWMチャンネルは2,3をそれぞれ割り当てました。
重要な問題
モータ用電源があらかじめ入っていると,M5Stackの電源が入り,起動してプログラムが起動するまでの間に,モータが回ってしまいます。
M5Stackの電源が入り,プログラムが起動するまでの間は,GPIOピンの状態は設定出来ず,GPIO 2はL,GPIO 5はHになっていることが原因です。
M5Stackの電源を先に入れて,起動してからモータ側の電源を入れるのが良いでしょう。他にも工夫があるかもしれません。
1)M5Stack Grayで用途が制限されているGPIOピン
・回路図から読み取った,すでに使用されているGPIOピン
GPIO 1 3 ............. USB UART0 (RXD0,TXD0)で使用
GPIO 4 23 18 19 ...... SD SPIと共有
GPIO 33 27 23 18 14 .. LCDで使用
GPIO 21 22 ........... I2C,電源管理,モーションセンサ,磁気センサで使われている
GPIO 25 .............. Audioで使用
・ESP32仕様
GPIO 34~39は読み取り専用
2)M5Stack Grayで使えることを確認したGPIOピン
GPIO 2, GPIO 5 他とは共用していないので自由に使える
GPIO 16, GPIO 17 UART2 (TXD2・RXD2)を使わなければ OK
GPIO 26 DAを使わなければ OK
GPIO 19 SDを使わなければ OK
GPIO 35, GPIO 36 ADを使わなければ,入力のみOK
3)M5Stack Grayで使ってはいけない PWMチャンネル
0 音源として使われている (動作させるとビープ音がなる)
1 用途は不明だが,干渉され周期もデューティ比も指定とは異なる動作をする
6 LCDの輝度調整に使われている (動作させるとLCDの文字の明るさが変化する)
使用bit数が12以上のとき,この現象が現れる
7 LCDの輝度調整に使われている (動作させるとLCDの文字の明るさが変化する)
4)M5Stack Grayで使用確認できたPWMチャンネル
2,3,4,5,8,9,10,11,12,13,14,15