STM32_BLDC

ブラシレスモータドライバを作ってBLDCを回そう!

概要

Nucleoボード + 自作インバータ基板で,アウターロータブラシレスモータを回してみよう. モータをただ回すなら,市販のアンプを買ってくるのが最良の選択である(手間,時間,コスト,性能の面で). あえて自作回路で回すのはほぼほぼ勉強が目的である.

概要

  • 15V~40V単電源で動作する
  • モータ電流10Arms,ピーク20Arms,過負荷35A)
  • 電流検出はローサイドシャント抵抗式
  • なるべく汎用部品で作る
  • 制御はUSBから
  • 部品点数をなるべく減らす
  • 角度センサにはエンコーダを使用する
  • 部品は手付前提とする(リードレスとかは使わない.チップは1608サイズを使う)
  • テストランドをたくさん入れておく

お品書き

  • CPUボード : NUCLEO-G491RE https://www.st.com/ja/evaluation-tools/nucleo-g491re.html
  • インバータFET : TK6R7P06PL,RQ N-Ch 60V 1990pF 26nC 74A 66W TO-252-3
  • ゲートドライバ : IRS2005STRPBF 200V high & low-side 0.6A,VCC & VBS UVLO
  • 電源DCDC : MAX5033BUSA+ : 500mA, 76V, High-Efficiency, MAXPower Step-Down DC-DC Converter
  • 12Vドロッパ : SBCP56T3G : 80V1A
  • 3.3Vドロッパ :
  • 電流検出用オペアンプ : TLV9062QDRQ1
  • 電流検出抵抗 : KRL6432E-M-R003-F-T1 3mΩ3W

各種設計

設計ツール

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.

備考

  • ピーク電流はモータ特有の考えである.一時的であれば,定格以上の電流を流すことで,定格以上の出力トルクを得ることができる. これは,熱容量が大きいため,短時間であれば熱的に持つためである.
  • 電流範囲のマージンをどの程度乗せるかは難しいところ.マージンを載せ過ぎると,電流検出の分解能が荒くなるため,制御性に悪影響がある.マージン過小だと,意図しない過電流検出となってしまう.20%はノリで決めた.

STM32の設計

PWMとAD変換タイミング

まず,PWMの周波数をどうするか,という問題がある. 一つの指標は,人間の可聴域を外すことである.具体的には18kHz以上にするのが良い. しかし,むやみに上げると,インバータのスイッチング損失の増加,そもそも処理が間に合わないといった弊害がある. また,電圧分解能が下がるという問題もある. 切りよく20kHzとする.

PWMの動作モードは,ノコギリ波モードと三角波モードが選択できるが,モータ制御では三角波モード一択である. 三角波の下端(すなわち,ローサイドFETのON時)でAD変換を行う. 電流検出抵抗が下アームにある以上,モータ電流の検出は,ローサイドFETがONしている時しか行えないことに注意する.

最小ON時間は1usとする.これは,ブートストラップキャパシタの充電のために必要な時間である.

デッドタイムは500nsとする.広げると安心だが,印加電圧が下がってしまうので限度がある.

マイコンは170MHzで動作する.170MHz/20kHz=8500分割である.主電源24Vのとき,電圧分解能は,24V/8500=3mVである.

タグ:

+ タグ編集
  • タグ:
最終更新:2023年02月19日 11:27