2012年4月30日月曜日

Arduino とレゴで倒立振子(2)モータドライバの設計

前後の記事は
です.

少しずつ書いている実験用倒立振子製作メモですが,今回はモータドライバの設計について説明します.前回述べたようにモータの電流制御を行う必要があることと電源がUSBであることを踏まえると,モータドライバには
  • モータ電圧5V,ロジック電圧5Vで動作
  • 電流容量1A以上
  • 31kHz程度で電圧をON/OFFすることが可能
といった性能が求められます.電圧・電流に関する条件はUSBバスパワーの仕様から直接生じるものですが,最後の条件は電流制御に必要とされるPWMキャリア周波数によるものです.

電流制御の方法

制御理論の適用を行う場合モータは電流駆動されていることが望ましく,教科書的な設計ではプッシュプル回路による電流バッファがついたオペアンプで電流制御する構成をとることになります.

しかし普通にこのような電流制御を行う構成で回路を組むと
  • $\left(\mbox{電源電圧}-\mbox{モータ電圧}\right)\times\mbox{モータ電流}$ が熱になるので放熱板が必要
  • 放熱板が大きい&重い
  • 熱になる電力が多く電池がもったいない
  • 正負電源が必要(電池が2倍必要)
  • トランジスタのドロップ電圧分モータ電圧が低下する(電池がより多く必要)
というデメリットがあり,回路や電源の大きさに制約が多い小型ロボットでは致命的です.

一方.小型のロボットでは電圧をパルス幅変調(pulse width modulation; PWM)することでモータの出力を調節する手法が一般的に用いられます.
電圧をPWM制御する場合,回路はモータと電源の間のスイッチをON/OFFするだけの単純なもので良く,損失も殆どありません.

そこで本実験機ではモータ電圧をPWM制御し,計測したモータ電流を元にフィードバックをかけることでモータに所望の電流を加える構成をとります.なお,この構成ではPWMをかける際のキャリア周波数が重要になります.

PWMキャリア周波数について

ここで,PWMキャリア周波数に関する条件について説明します.

Arduinoは非常にお手軽に PWM出力を行う事が可能ですが,標準ではキャリア周波数が500Hz程度に固定されています.
この周波数は実験装置で採用しているLEGOのモータの電気的時定数よりもかなり低い値になっているようで,このPWM信号でモータ電圧を制御すると,下のグラフのように電流がPWM信号のキャリア周波数で脈動してしまいます.
黄色い線が電流計測回路の出力値.青い線はPWM信号.
PWM周波数が低いので電流がPWM信号とともに脈動している.
そこで,実験装置ではArduinoのTimer1のプリスケーラを変更することでPWMキャリア周波数を高い周波数に変更しています.(参考: Arduino playground – TimerPWMCheatsheet
黄色い線が電流計測回路の計測値.青い線はPWM信号.
PWM周波数がモータの電気的時定数よりも十分に速いので脈動は見られない 
キャリア周波数を高くすることで PWM に起因する電流の脈動を十分に小さくすることができ,電流を正確に制御することが可能になります.
キャリア周波数は恐らく10kHz程度で十分なはずですが,プリスケーラの仕様上 4kHz の次は 31.25kHz になってしまうので,この周波数で動作するモータドライバを用意することにしました.

モータドライバモジュールの選定

ディスクリート部品で組むメリットが思いつかないので,実験機ではこの条件を満たして手軽に使えるモータドライバモジュールを利用することにしました.ざっと調べた感じだと候補は

名称 モータ電圧 電流容量 備考
TB6612FNG Dual Motor Driver Carrier 4.5-13.5V 2.0A (2回路並列) 国内入手先
DRV8833 Dual Motor Driver Carrier 2.7-10.8V 2.4A(2回路並列)

が良さそうでしたが,入手が容易でPWM出力が一つで済むので TB6612FNG Dual Motor Driver Carrier を採用することにしました.

電流計測回路

電流制御を電気回路で完結させるかArduinoで電流制御を行うか迷いましたが,実験の課題として電流制御を扱う可能性が多少あるので,Arduinoで電流制御を行う設計にし,電流計測回路を追加しました.電流計測には Linear Technology の LT1999 を利用しています.
電流計測用の抵抗が Hブリッジの Low side に付いているタイプのモータドライバモジュールもいくつか試してみましたが,やはり回転方向がコロコロ変わる用途では使いにくかったので双方向電流検出アンプICに任せることにしています.LT1999 は入手性があまり良くないですが僕はチップワンストップで購入しました.なお,このジャンルのICは Maxim 等からも出ています.

回路図

以上の内容を踏まえて回路を設計します.といってもモジュールを繋ぐだけで回路らしい設計は全くありません.回路図は以下のようになります.


この回路図はジャイロセンサやエンコーダの接続も含んだ倒立振子全体のもので右半分のあたりがモータドライバになっています.

電流制御のソフトウェアに関してはそのうち別の記事で書くと思います.

1 件のコメント:

匿名 さんのコメント...

はじめまして!

レゴでやるということで
手軽に機構部分が組めて
制御系の実験を中心にできる
仕組みになっていて面白いですね!
続きを期待しています.