稼働中

マイクロビット(e_41)DCモータ ドライバー TA7291P

DCモータ TA7291P

micro:bitを使ってDCモータを動かしてみようと思います。正転、逆転、速度可変の動作を確認します。
DCモータはDG01DとFA-130RAを試しました。
モータドライバーは手元にあるTA7291Pを使いました。※TA7291Pは生産終了しているそうです。

TA7291P

TA7291Pはフルブリッジドライバです。DCモータの正逆回転の切替ができます。
TA7291Pの外観です。
TP7291P
TA7291PはフルブリッジドライバとかHブリッジドライバと言われるようです。代替品を探すキーワードになりそうです。
フルブリッジドライバは4つのスイッチ(トランジスタなど)を使って負荷に流れる電流の向きを変える事が出来ます。
下図で①④をONすると正向きに電流が流れます。②③がONすると逆向きに電流が流れます。負荷がDCモータなら正転、逆転で回転することになります。
Hブリッジ① Hブリッジ②

TA7291Pは大まかにはこんな感じの動作をするICです。以下がTA7291Pのブロック図です。IN1、IN2でトランジスタの切替をしてくれます。
TA7291Pのブロック図 (TA7291Pのピン番号は左端) ※TOSHIBAのデータシートよりブロック図
負荷がDCモータならIN1、IN2の状態で以下の動作になります。※TOSHIBAのデータシートより
ファンクション

DCモータを動かす

PWM出力するmicro:bitのピンとTA7291PのIN1、IN2ピンをレベルコンバータを介して接続しました。
TA7291Pの入力端子IN1、IN2 High(3.5~5.5V)、LOW(GND~0.8V)なので、DCモータの動作電源は5.0Vにしました。トランジスタの飽和電圧を考えるとモータには~3.5V程度になりそうです。
DCモータはDG01DとFA-130RAを試してみました。

接続例

micro:bitからのPWM出力のピンは6、7を使いました。
10kΩの抵抗はTA7291PのVref端子を使わない場合の保護抵抗です。詳細はTA7291Pのデータシートを参照ください。
接続例
※micro:bitのピン配置図は「https://tech.microbit.org/hardware/edgeconnector/」からの引用です。

実体図

写真のモータはギヤードモータDG01Dです。
実体図

スクリプト

TA7291Pを使ってDCモータの制御動作を確認するスクリプトは以下のようにしました。※thonny-microbitのMicroPythonを使っています。
PWM出力するmicro:bitのピンは6、7を使いました。通常はdisplayで使われているのでoffする必要があります。
周期を20msecに設定しています。
モーターが動作するPWM値が190以上くらいだったので、PWM値を192,256,512,1023と順次変更し各値で逆回転>正回転をしています。


from microbit import *
# 前後回転 リストデータで ブログ用動画
HS=pin6       # PWM >> TP7291P IN1
LS=pin7       # PWM >> TP7291P IN2

# FWD IN1(H/PWM)IN2(L/0)
def FWD(pwm):
    LS.write_analog(0)            # analogモード、出力は’0’V
    HS.set_analog_period(20)      # 周期を設定 20msec
    HS.write_analog(pwm)          # 0 ~ 1023  128~
    sleep(5)                      # 切替100us~
# BWD IN1(L/0)IN2(H/PWM)
def BWD(pwm):
    HS.write_analog(0)
    LS.set_analog_period(20)
    LS.write_analog(pwm)
    sleep(5)
# Break IN1(H)IN2(H)
def BRK():
    HS.write_digital(1) # IN1
    LS.write_digital(1) # IN1
    sleep(5)
# STOP IN1(0)IN2(0)    
def STP():
    HS.write_digital(0) # IN1
    LS.write_digital(0) # IN1
    sleep(5)

# pin6,7を使うのでdisplayをオフ
display.off()

STP()
#for i in [780,800,900,1023]: FA-130RA 1023(2.05V)
for i in [192,256,512,1023]: # DG01D 1023(3.13V)
    print('PWM',i)
    BWD(i)   
    sleep(2000)
    FWD(i)
    sleep(2000)
STP()

実行結果

ThonnyのShellに表示された結果です。


>>> %Run dcm_ta7291_test_03b.py
PWM 192
PWM 256
PWM 512
PWM 1023        # ちなみにモータ間の電圧は3.13Vでした。(電源は5V)

DG01Dモータ動作の動画

同じように、金属ブラシ付き小型直流モーターFA-130RA-2270を試してみました。(偽物かもしれないが・・)
PWM値を780,800,900,1023と順次変更しています。

ThonnyのShellに表示された結果です。
>>> %Run dcm_ta7291_test_03b.py
PWM 780
PWM 800
PWM 900
PWM 1023 # ちなみにモータ間の電圧は1.95Vくらいでした。(電源は5V)

FA-130RAモータ動作の動画

まとめ

micro:bitからフルブリッジドライバTA7291Pを使ってDCモータの基本的な動作をさせることができました。