2012年12月12日水曜日

モータードライバTA7291PでモーターのPWM制御


arduino等でTA7291Pを使うにあたって、つなぎ方など検索するとこんな感じだと思いますがある問題が。


1 GND
2 OUT1 モーター出力
3 NC
4 Vref PWMを入力し、モーターへの電圧を変化
5 IN1 IN2との組合せで、時計回り、反時計回り、ストップ、ブレーキ
6 IN2 IN1との組合せで、時計回り、反時計回り、ストップ、ブレーキ
7 Vcc IC用電源 4.5-20V
8 Vs モーター電源 0-20V
9 NC
10 OUT2 モーター出力

自作モーターシールドや、過去の投稿でも上記のように接続していました。
ライントレーサーをつくってみる
赤外線リモコンカーを作ってみる




タミヤの小型モーターRE-140RAだったので気づかなかったのですが、すこし大きなRS-380PHを接続し、高めの電圧で駆動しようとした時に気づいたのでした。
上記方法ではモーターに掛かる電圧が5Vで頭打ちになってしまっていると。

勝手に、PWMのデューティー比に合わせて、モーター用電源の電圧からICによる電圧降下分を引いた電圧(例 12V-約2.5V=9.5V)がPWM100%の時にかかると思っていたのですが、そうではなかったことが判りました。

Vrefに掛ける電圧でモーターに掛かる電圧が決まる。
電圧の操作が必要なく、モーター用電源電圧そのまま出すときは、VrefとVsをつなげと。
VrefにPWM100%入れても、入力電圧が5Vにしかならなく当然、モーター用電源を用意していても出力が最大5Vに・・・

使い方を検索していた時に、VrefにPWMを入れない方法があったのに、よくわからなくてスルーしてた結果がこれです。

これからはIN1,IN2にPWMを入れてモーターに掛かる電圧を操作する方法を使います。
・Vref 10KΩの抵抗経由でモーター用電源+と接続
・IN1 analogWriteでPWMを入力、IN2 LOW           →正転
・IN1 LOW、          IN2 analogWriteでPWMを入力 →逆転

モーター用電源電圧からICによる電圧降下分を差し引いた電圧が、モーターに出力されるようになりました。

過去の投稿のスケッチはそのままにしておきます。

追記
現在使用中の自作シールドの回路図はこちら
※回路図にありませんが各モーター端子間に0.01μFのコンデンサを入れました

arduino用電源とは別にモーター用電源を用意してます。
モーター用電源は、TA7291Pで使える20Vまで。
モーターに流れる電流、ドライバの放熱とコンデンサの耐圧に注意。
arduino側とモーターシールド側はGNDを共通に。


環境:arduinoUNO、arduino1.0.2、win7





0 件のコメント:

コメントを投稿