元高専生のロボット作り

元高専生のロボット作り

主にプログラミング, 電子系について書きます。たまに機械系もやります。メモ代わりの記事ばっか書きます

Hブリッジ式モータードライバーを設計する

モータードライバー(略してMDとか呼ばれる)を設計します。


当ブログを参考に製作をする際は必ず自己責任にて行ってください。当ブログを参考にしたことによる損害等の責任は一切負いません。
すみません。まだよくわかっていない部分もあるので。。。



今回設計するのはHブリッジ回路と呼ばれるものでモーターのHigh側とLow側に2つずつスイッチング用のトランジスタを設けて、モーターの正逆転を制御するというものです。


今回はスイッチング用トランジスタにNchMOSFETを、FETのゲートドライバにフォトカプラを使用します。

モーターはロボットによって変わります。今回はRS-380PH-4045を使います。

バッテリーはLiFe3セルを使用、大体10[V]程度なので、Vb = 10[V]とします。

また、制御用マイコンにはmbed LPC1768を使用します。


➀部品の選定

FETはオン抵抗、立ち上がり時間、立下り時間などからFET IRF1324STRL-7PPを選定します。
フォトカプラは立ち上がり時間、立下り時間からフォトカプラ FOD3184を選定します。


また、FETを駆動するのに十分なゲートソース間電圧がバッテリー1つだけでは出せないような回路ですので、昇圧を行う必要があります。

DCDCを使います。入力電圧範囲、出力電圧からSCWN06A-15を選定します。
それか、秋月のMCW03-12D15でもよかったかも。

このDCDCの昇圧出力をFETのゲート駆動に使用します。
キャリア電圧Vc = 15[V]となります。


選定するような部品としてはこんなもんですかね。


これで、回路図が以下のようになります。

f:id:sgrsn1711:20180709000859p:plain



➁キャリア周波数の選択

キャリア周波数というのは、つまりフォトカプラにかけるPWM周波数のことです。
マイコンの出力するPWM周波数ですかね。

キャリア周期はモーターの電気的時定数の20%以下に抑えれば良いと言われています。

電気的時定数τとは、簡単に言えばモーターに流れる電流の応答速さです。単位は [s](秒)で、

モーターの電機子インダクタンスLm[H]と、電機子抵抗Rm[Ω]から

τ= \frac{Lm}{Rm}

で求めることができます。

例えば、あるマクソンモータでは

電機子抵抗が0.212 Ωで、電機子インダクタンスが0.077 mHなので、

電気的時定数は、τe = 0.077e-3[H]/0.212[Ω] = 366.7[us] となります。

よって、PWM周期 Tc = τe*0.2 = 73.34[us]となり、

PWM周波数 fc = 1/Tc = 14[kHz]以上であればいいことが分かります。

プログラムとの兼ね合いで、fc = 20[kHz]とします。マイコンはLPC1768を使用しますので、出力可能です。

また、改めて、キャリア周期 Tc = 1/fc = 50[us]です。


③FETの立ち上がり、立ち下がりにかけられる時間を求める
回路全体で、立ち上がり、立ち下がりにかけられる時間はキャリア周期の1%以下と言われています。

つまり、立ち上がり、立下り時間 tgr = Tc * 0.01 = 500[ns] 以内にするようにします。

まず、フォトカプラの立ち上がり時間、立ち下り時間にかかる時間はフォトカプラの性能によるので、データシートを見ます。

データシートよりフォトカプラの立ち上がり時間 tPLH = 120[ns]、立下り時間 tPHL = 145[ns]と分かりました。

よってFETの立ち上がり、立下りにかけられる時間はそれぞれ、

tgon = tgr - tPLH = 380[ns]

tgoff = tgr - tPHL = 355[ns]

と分かります。

面倒なので、tgon = tgoff = 355[ns]とします。



➃定数を決定する

FETの立ち上がり、立ち下がりにかけられる時間が判明したので、FETのゲート前抵抗などを決定します。

まず、High側FET周りの等価回路が以下の図のようになります。

f:id:sgrsn1711:20180708224409p:plain

この回路の一般解は、Ciss = Cgs + Cgdとおけば、

 Vgs(t) = (Vc-Vm)(1-e^{-\frac{t}{Ciss(Rg+Rgc)}})

となり、一般解の変形が

 Rgc = \frac{t}{Ciss\ln{(\frac{Vc-Vm}{Vc-Vm-Vgs})}}-Rg

となるので、

Vc=15[V]
バッテリー電圧Vbがほぼモーターにかかるので、Vm=Vb=10[V]
t=355[ns]
ゲートソース間電圧は4.4[V]欲しいので、Vgs=4.4[V]とすると、
データシート、トータルゲートチャージのグラフより、
Vgs=4.4[V]のとき、だいたいQg=40[nC]なので
Ciss=Qg/Vgs = 9090[pF]
データシートより、Rg=3[Ω]

をそれぞれ代入し、

 Rgc = \frac{355×10^{-9}}{9090×10^{-12}\ln{(\frac{15-10}{15-10-4.4})}}-3=15.4[Ω]

となります。

低い方が安全側となるので、Rgc=10[Ω]とします。

わりと低めの抵抗値になってしまいました。ここは波形も確認する必要がありそうですね。


次に、Rgoffの値を決定しましょう。
使用するフォトカプラ FOD3184
がオフのとき電流を引き込むことができる(要確認)なので、ここの抵抗Rgoffは誤動作を防ぐためのものになります。

Rgoffの抵抗値は深く考える必要はなくなり、適当に大きめの抵抗値、Rgff=10kΩ とします。


デッドタイムについて

ここまでで、モーターの時定数に対して、十分なFETの立下り、立下り時間のための抵抗の値について考えてきました。

次に、FET同士の立上がり、立下りを考えます。
直列に接続された2つのFET(例えば上の回路図でいうQ1とQ2)が、ゲートドライバ(フォトカプラ)から、Q1:オフ→オン、Q2:オン→オフの操作を受け付けたとします。
(モーターの回転方向を切り替えたい場合などはこのような操作が行われます)

このとき、オフ→オンが先になってしまうと、少しの時間Q1とQ2どちらもオンになってしまい、電源が短絡状態になるので大きな電流(アーム短絡電流,貫通電流とか呼ぶ)が流れます,

これを防ぐために、オン→オフが先に、オフ→オンが後に成立することが理想的な応答です。

Q2をオフにした後、少しの時間tDEAD(デッドタイムと呼ばれる)休んで、Q1をオンにする必要があります。

以下ではデッドタイムを生成する方法について説明しますが、実際には波形を確認してだめそうなときにデッドタイム生成回路を付けてやることにします。

さて、このtDEADの設定方法ですが、使用するゲートドライバによってはもとからその機能がついていたりもしますが(A3921とか)、

今回は特にその機能はないので、デッドタイム生成回路というものを後付けする必要があります。

今回の回路ではRgcによって、立ち上がり、立下りともに送らされているので、立下りの方だけ早くしてやれば、デッドタイムが生成されることになります。

なので、以下のように、ダイオードをRgcと並列に接続してやることで、立ち上がりのみが遅れるような回路とすることができます。



ここに回路図


⑤実際に波形を見てみる

設計した回路を実際に組んでみて、所望の応答になっているか、波形を確認します。