私は2025年2月18日現在、BLDC モーター (ブラシレス直流モーター)をクローズド ループ制御しようと取り組み中です。
Arduino Uno 基板と Arduino IDE (統合開発環境 / Integrated Development Environment)の SimpleFOC ライブラリーを利用して、Arduino Uno からの 6 ch の PWM (パルス幅変調 / Pulse Width Modulation)出力を Hブリッジ駆動回路へ入力して 3相の正弦波出力で BLDC モーターを駆動します。
因みに FOC (Field Oriented Control)と言っても、今回はシャント抵抗器で電流計測をするのではなく、単純にホール効果IC センサーでモーターの軸に取付けた磁石の絶対回転角度を測定して電圧でPID (Propotional-Integral-Derivative / 比例積分微分)フィードバック制御します。
実は実験の過程でモーター ドライヴァー基板を1個、過電流により燃やしてしまいました。
そのモーターは 280KV (KV は電圧当たりの回転速度で revolutions per minute per Volt)の高速回転タイプで最大定格電流値が20Aほどのところ、ドライヴァーMOSFETは最大定格電流が6Aほどであり、最大値を超える電流を流してしまったようで、小さな火が出て2つ搭載されている駆動回路のICを1つ焼いてしまいました。
その後、残ったもう1つの駆動回路ではシャント抵抗器による電流値測定と電流制限処理を追加しましたが、スパイク状の過電流が高頻度で発生した為、ドライヴァー基板本体も壊してしまいました。
仕方無く別のドライヴァー基板を用いる事になりましたが、そちらでは上記の通り 6 ch の PWM 信号を Hブリッジの MOSFET に入力して増幅し、3相の正弦波出力で BLDC モーターを駆動する必要が有ります。
これが思いの外巧く行かず、かなりの苦労の末に漸く、オープン ループ速度制御、電圧によるクローズド ループトルク制御、クローズド ループ速度制御まではある程度出来るようになりました。
しかしクローズド ループ速度制御も完全に制御出来ている訳ではなく、偶に制御に失敗してしまいます。
特に低速回転の指示を出した際にモーターが回らなかったり、時々引っ掛かったようなぎこちない動作になってしまいます。
また、クローズド ループ角度制御はまだ成功していません。
早くBLDCモーターを自在に操作出来るようになりたいと思います。
尚、上記動画で使用したものは以下の通りです。
- BLDCモーター: 5010-II 280KV
- ホール効果ICセンサー: AS5600
- ドライヴァー基板: DC 5-36 V, 15 A, 3 Phase, Brushless Motor Control Board (無名)
- コントローラー: Arduino Uno
- 開発環境: Ubuntu 24.04.1 LTS, Arduino IDE, SimpleFOC
コメント