現在、個人的に電子工作の技術を使ってプラモデルにギミックを組み込めないかあれこれ模索中です。とりあえず、1/35の戦車のプラモデルをラジコン化するという誰もが思いつきそうなプランを検討中ですが、今回はその流れでモータードライバの使い方について調べてみたので、記事にしてみたいと思います。

モータードライバといえば東芝製の「TA7291P」モータードライバが有名ですが、残念なことに既に生産終了らしく、現在入手できるものはストア在庫のみということになってしまっているようです。以前に購入したことのある秋月電子通商では既に入手できなくなっています。amazonの場合は、全く入手できないわけではないようですが、徐々に入手が難しくなってしまっているようです。

そこで、代替品として使える「TB67H450FNG」を実装したモータードライバモジュールなどを必然的に選択することになるわけですが、ネットを調べた感じだと比較的情報が少ないように感じます。では実際にどのように回路を組めばよいのでしょうか。また東芝製の「TA7291P」モータードライバで組んだ回路をどのように置き換えればいいのでしょうか。今回はこれら二つのモータードライバを比較するため、動作確認のみを目的としたRaspberry Piを使ったシンプルな回路を組んでみました。

スポンサーリンク




目次

  1. TA7291Pについて
  2. TB67H450モータードライバモジュール(秋月電子通商製)について
  3. 回路の組み方と動作テストのためのサンプルコード
  4. まとめ

1. TA7291Pについて

まずは「TA7291P」についてです。このモータードライバは、4.5V〜20Vの電圧で最大2.0Aの出力を出せる性能があり、工作用のマブチモーターから少し大きめのモーターまで扱える性能があります。

※上記のリンクはamazonへのリンクとなっています。

東芝デバイス&ストレージ株式会社
TA7291P製品概要

PIN端子について:

PIN端子名称機能
1GNDGND
2OUT1モーター出力端子1
3NC未接続
4VREF制御電源端子(0〜20V)※
5IN1ロジック入力端子1
6IN2ロジック入力端子2
7VMモーター用電源
8RSモーター出力電流検出用端子
9NC未接続
10OUT2モーター出力端子2

※ 制御電源端子「VREF」の接続に関してですが、モーター駆動用バッテリーから配線する場合、抵抗(3k〜10kΩ)を介して配線します。

ロジック入力端子について:

IN1IN2モーター動作
00ストップ
PWM0正転(PWM値に応じて可変)
0PWM逆転(PWM値に応じて可変)
11ブレーキ

2. TB67H450モータードライバモジュール(秋月電子通商製)について

こちらはモータードライバIC「TB67H450FNG」を実装した秋月電子通商製のモータードライバモジュールです。超小型ながら4.5V〜44Vの電圧で最大3.0Aの出力を出せる性能があり、TA7291Pよりも性能が優れています。

※上記のリンクは秋月電子通商へのリンクとなっています。

この秋月電子通商製のモジュールは8PINで実装されており、キットには細ピンヘッダ(オスL型)が付属しています。このピンヘッダは自分でハンダ付けする必要があります。

PIN端子について:

PIN端子名称機能
1GNDGND
2IN2ロジック入力端子2
3IN1ロジック入力端子1
4VREF制御電源端子(0〜4V)※1
5VMモーター用電源
6OUT1モーター出力端子1
7RSモータ出力電流検出用端子(使用しない場合はGND)※2
8OUT2モーター出力端子2

※1 制御電源端子「VREF」への接続ですが「TA7291P」の場合とは異なり、Raspberry PiやArduinoの3.3Vピンから配線します。

※2 モータ出力電流検出用端子「RS」は、この端子と、GNDの間に抵抗を挿入することで、モータドライバから出力される電流を設定することができる端子とのことです。定電流制御機能を無効にしたい場合は、RS 端子はGNDに接続するとよいようです。

ロジック入力端子について:

IN1IN2モータ動作
00ストップ
PWM0正転(PWM値に応じて可変)
0PWM逆転(PWM値に応じて可変)
11ブレーキ

スイッチサイエンス製のモータードライバについて

自分は未購入のため使用していませんが、スイッチサイエンスからも「TB67H450FNG」を実装したモータードライバモジュール(10PIN)が発売されているようです。製品仕様は下記を参照ください。

※上記のリンクはスイッチサイエンスへのリンクとなっています。

3. 回路の組み方と動作テストのためのサンプルコード

それでは、紹介した二つのモータードライバを実際にRaspberry Piに接続して動作確認してみたいと思います。下図のように回路を組んでみました。

二つのモータードライバーは上図のような回路で動作させることができました。ちなみに、TA7291Pに接続されているカーボン抵抗は10kΩです。

サンプルコード

# -*- coding: utf-8 -*-
import RPi.GPIO as GPIO
from time import sleep

GPIO.setmode(GPIO.BCM)

GPIO.setup(17, GPIO.OUT)
GPIO.setup(18, GPIO.OUT)
GPIO.setup(24, GPIO.OUT)
GPIO.setup(25, GPIO.OUT)

p1 = GPIO.PWM(17, 50)
p2 = GPIO.PWM(18, 50)
p3 = GPIO.PWM(24, 50)
p4 = GPIO.PWM(25, 50)

p1.start(0)
p2.start(0)
p3.start(0)
p4.start(0)

dr1=[0,25,50,75,100,75,50,25,0,0,0,0,0,0,0,0]
dr2=[0,0,0,0,0,0,0,0,25,50,75,100,75,50,25,0]
dr3=[0,25,50,75,100,75,50,25,0,0,0,0,0,0,0,0]
dr4=[0,0,0,0,0,0,0,0,25,50,75,100,75,50,25,0]

try:
	for i in range(16):
		p1.ChangeDutyCycle(dr1[i])
		p2.ChangeDutyCycle(dr2[i])
		p3.ChangeDutyCycle(dr3[i])
		p4.ChangeDutyCycle(dr4[i])
		sleep(2)

except KeyboardInterrupt:
	pass

p1.stop()
p2.stop()
p3.stop()
p4.stop()

GPIO.cleanup()

コード解説:

このサンプルコードでは、TB67H450FNGは、GPIOピン17、18番に接続し、TA7291Pの方は24、25番に接続しています。

動作についてですが、PWM値を2秒毎に変化させ10秒で最大出力にしたあと、減速ののち停止させ、今度は回転を逆転させるような記述となっています。実行後32秒でプログラムは停止します。もう少し効率の良い書き方もあるかと思いますが、ひとまずこれで動作を確認できるかと思います。

モーター駆動用バッテリーは単4サイズ×3本の電池ボックスに、エネループを入れて使用しています。エネループは仕様では電圧1.2Vですが、満充電の際にテスターで計測すると1.35V程度の電圧になることが多いようです。

※上記のリンクは秋月電子通商へのリンクとなっています。

写真のモーターは英国PIMORONIから取り寄せた金属製ギアドモーターです。超小型ながら牽牛な作りで気に入っています。写真では1/35のタミヤ製の戦車プラモデルの起動輪を多少加工してイモネジでモータの軸と固定してあります。

※上記のリンクはPIMORONIへのリンクとなっています。

4. まとめ

今回は電子工作におけるモーター制御に欠かせない2種類のモータードライバを比較しながら使用してみました。残念ながら、TA7291Pは今後入手しづらくなっていくのだと思いますが、TB67H450FNGも小型で使いやすいモータドライバモジュールなので、今後はこちらを中心に使っていこうかと思っています。

参考資料: