Nucleoボード + 自作インバータ基板で,アウターロータブラシレスモータを回してみよう. モータをただ回すなら,市販のアンプを買ってくるのが最良の選択である(手間,時間,コスト,性能の面で). あえて自作回路で回すのはほぼほぼ勉強が目的である.
KiCAD V6.0.9
プロジェクト名:STM32_BLDC_Dev
組み合わせるモーターによって決定する. 今回は定格10Arms,ピーク20Armsとした. ピーク20Armsなら,ピーク値は√2を乗じた28.2Aとなる. これに20%マージンを載せて,34Aを検出範囲とする.
下アームシャント式とする.部品が少なくて済むため,絶縁を要求しない用途では大変によく使われている. 抵抗値はどう決めればよいだろうか? 後段にオペアンプを置くなら,1μΩでも良さそうである.小さい方が発熱が減って良い. が,そうは問屋が降ろさない.抵抗値が小さいと,オペアンプの直流オフセットが悪さをする.そう,SN比が悪くなるのである.
10Aくらいなら,2mΩ~5mΩが手頃である. ここでは3mΩとする. 導通デューティー50%で10A定常で流すと,電力損失は,0.3W,同20Aだと,4倍で1.2Wとなる. また,温度が上がると,抵抗値が変化して検出精度に影響がある. そのため大きめのマージンを載せて,温度の低減に務める. チップ抵抗の温度上昇を低減するには,放熱性に優れるパッケージの選択が良い.長辺電極タイプとして,放熱ビアを固めて打つ.
電流検出範囲34A,電流検出抵抗3mΩ,ADCの変換幅1.65Vという条件に基づき,電流検出アンプの増幅率を決定する. 増幅率は16倍と求まる. E系列に合わせて15倍とする(1kΩ,15kΩとする).このとき,検出範囲は若干広がって,36.7Aとなる.
さて,電流検出の分解能を求める. 12bitADCで±36.7Aを扱う.36.7A*2/4096=18mAである. この値は,オペアンプ選定の指標となる.
オペアンプを決める. 下アームON時の最小時間幅で,出力が落ち着くことが要求される.すなわち,スルーレートが高いこと,および広帯域であることが必要である. さらに,オフセット電圧のドリフトが小さいことも必要である. 電流検出はモータ制御の性能を決めると言っていい.コストをかけて良い検出系を構築することが肝要なり.
TLV9062QDRQ1を選定.10MHz,6.5V/us.
まず,PWMの周波数をどうするか,という問題がある. 一つの指標は,人間の可聴域を外すことである.具体的には18kHz以上にするのが良い. しかし,むやみに上げると,インバータのスイッチング損失の増加,そもそも処理が間に合わないといった弊害がある. また,電圧分解能が下がるという問題もある. 切りよく20kHzとする.
PWMの動作モードは,ノコギリ波モードと三角波モードが選択できるが,モータ制御では三角波モード一択である. 三角波の下端(すなわち,ローサイドFETのON時)でAD変換を行う. 電流検出抵抗が下アームにある以上,モータ電流の検出は,ローサイドFETがONしている時しか行えないことに注意する.
最小ON時間は1usとする.これは,ブートストラップキャパシタの充電のために必要な時間である.
デッドタイムは500nsとする.広げると安心だが,印加電圧が下がってしまうので限度がある.
マイコンは170MHzで動作する.170MHz/20kHz=8500分割である.主電源24Vのとき,電圧分解能は,24V/8500=3mVである.