MCUの高機能化・高性能化に伴い、1モータ/1MCUから複数モータ/1MCUで制御を行いシステムの小型化やシステムのコスト低減が行われています。特に洗濯機やエアコンなどではその傾向が顕著であり、今ではほとんどの製品で複数のモータ制御が行われています。今回は複数のモータ制御が可能なRX72Tを使用して、4モータを制御するデモを紹介します。
モータ制御の方式によりMCUに求められる処理性能と機能リソースが異なります。今回のデモでは、センサレスベクトル制御を採用しています。センサレスベクトル制御は高効率かつセンサのBOMコストを削減できる制御方式ですが、モータの角度推定やベクトル制御に必要な演算を行う必要があるため、MCUに求められるCPU処理性能が高くなります。RX72Tは4モータ制御を行うために、クラス最速のコアマーク性能を持つRXの第3世代CPUコア「RXv3」(6.01coremark/MHz)と三角関数アクセラレータ(TFU)を搭載し、ベクトル制御に必要な演算・処理を高速に行う事ができます。また、相補PWMタイマ、ADCなどのモータ制御に必要な機能を4モータ制御分搭載しているのが特長です。
4モータ制御で使用する機能
このデモでは、以下の周辺機能を使用して4モータ制御を実現します。
機能 | 説明 |
---|---|
MTU, GPT | インバータ駆動用のPWMを生成する相補PWMタイマです。MTUとGPTの二つのタイマを使用して4モータ分のPWMを生成します。 |
12bit ADC | 各モータの電流やインバータの母線電圧を検出します。RX72TはADCを3ユニット搭載しているため、4モータ分の入力を割り当てることが可能です。 |
POE, POEG | 異常検知として過電流発生時に出力を強制遮断する機能です。POEはMTU用の強制遮断、POEGはGPT用の強制遮断機能です。 |
4モータ制御のポイント
電流検出のタイミング
今回のデモでは最大4つのモータを独立にセンサレスベクトル制御による速度制御で駆動しますが、そのためには各モータの電流を検出して適切なPWM出力を行う必要があります。この電流検出タイミングと制御の演算を行うタイミングが複数モータ制御のポイントとなるので、簡単に解説します。なお、今回のデモでは2相の電流を検出して3相分の電流を復元する方式を用いています。
RX72Tは合計3つのADCを搭載していますが、今回のデモではモータ1とモータ2の電流検出をユニット0、モータ3とモータ4の電流検出をユニット1に割り当てています。同じユニットに割り当てたモータの電流検出は、同時に検出できない為タイミングをずらさなければなりません。電流はインバータの下アームがオン期間に流れる電流をシャント抵抗により検出しますが、モータ1と2、モータ3と4のPWM正相・逆相信号のアクティブレベルを逆に設定することで、インバータの下アームの信号が同時にONにならないようにしています。これにより、AD変換のタイミングをPWMの山側/谷側に分散させることで、それぞれのモータの電流検出を実現しています。このAD変換は”グループスキャンモード”を使用することで1つのユニットで2モータ分の電流検出に対応することができます。
※モータ1をPWMの山側、モータ2をPWMの谷側で電流検出できるようになっています。
制御の処理タイミング
次にモータ制御のタイミングも含めた全体のタイミングを見てみましょう。ここで重要となるのが、PWMの割り込み処理(ベクトル制御の処理)、電流検出用のAD変換のタイミング、PWM出力のバッファレジスタ転送タイミングです。
モータ1とモータ2はMTUのタイマと同期させてAD変換のタイミングを山側と谷側に分散し、それに合わせるようにPWM周期割り込みの実行タイミングとバッファレジスタの転送タイミングを調整しています。モータ3とモータ4はGPTのタイマを使用して、モータ1/2と同様の動作をさせています。
※モータ4の谷割り込みではデータが更新されないためモータ2と同様な動作を行います。
MTUとGPTを同じキャリア周波数で同時にスタートさせた場合、MTUとGPTの割り込み優先度は同じにすると先に割込みが発生した方から順次、割り込み処理が実行されていきます。これらの処理時間が制御周期内に収まるよう、制御周期を設定する必要があります。RX72Tを使用する場合は各モータの処理時間が8[us]程度なので、今回のデモでは電流制御の周期を50usに設定しても問題ありません。
4モータ制御の様子
今回ご紹介するデモはボードやケーブル類は販売しておりませんが、実際の動作は動画で公開しています。複数モータ制御の例として、ご興味のある方はぜひご確認ください。
動画:1MCUによる4モータ速度制御
- APN: 永久磁石同期モータのセンサレスベクトル制御 (4モータ制御) RX72T実装編 (Evaluation System for BLDC Motor用) Rev.1.00
- サンプルコード:永久磁石同期モータのセンサレスベクトル制御 (4モータ制御) RX72T実装編 (Evaluation System for BLDC Motor用) Rev.1.00 - サンプルコード
最後に
今回紹介したデモはRX72Tの機能をフル活用して4モータ制御を実現しており、複数モータ制御を行う参考情報として活用できます。複数モータ制御をご検討のお客様は、ぜひRX72T及び弊社サンプルプログラムをご活用ください。RX72Tではセンサレスベクトル制御の他にも、エンコーダを使用したベクトル制御で3モータを制御するサンプルコードやアプリケーションノートを用意していますのでご興味があればそちらも合わせて参照し、RX72Tによる複数モータ制御を試してみてください。
エンコーダを使用したベクトル制御で3モータを制御はこちら。
ビデオ&トレーニング
RX72Tを用いて4つのモータをそれぞれ個別に速度制御(センサレスベクトル)することが可能です