STM32 プロセッサ ベースのボードを使用した三相 AC モーターの開ループ制御
この例では、開ループ制御 (スカラー制御またはボルト/ヘルツ制御とも呼ばれる) を使用してモーターを駆動します。この手法では、モーターからのいずれのフィードバックも使用せずに、固定子電圧と周波数を変えて回転子速度を制御します。この手法を使用してハードウェア接続の整合性を確認できます。開ループ制御の一定速度のアプリケーションでは、固定周波数のモーター電源を使用します。開ループ制御の可変速度のアプリケーションでは、回転子速度を制御するために可変周波数の電源が必要です。固定子の磁束を一定に保つために、電源電圧の振幅がその周波数と比例するように維持します。
開ループ モーター制御では、モーター速度に影響を与える可能性がある外部の条件については考慮できません。そのため、目的のモーター速度と実際のモーター速度の間の偏差を制御システムで自動的に補正することはできません。
この例のモデルでは、開ループ モーター制御アルゴリズムを使用してモーターを駆動します。このモデルは Motor Control Blockset™ を始めるのに役立ち、モーターを駆動してハードウェア セットアップを検証することができます。また、ターゲット モデルのアルゴリズムで電流センサーから ADC の値を読み取り、それらの値をシリアル通信を使用してホスト モデルに送信します。
このモデルを使用して次のことが可能です。
ターゲットへの接続を確認する。
ハードウェアとソフトウェアの環境を検証する。
電流センサーの ADC オフセットを確認する。
新しいモーターをインバーター、プロセッサ、および必要な周辺装置のセットアップで初めて駆動する。
前提条件
以下のチュートリアルを完了します。
必要なハードウェア
ハードウェアの接続

ジャンパーの接続
BLY172S-24V-4000 モーターを制御する FOC を実行するために、X-NUCLEO-IHM07M1 ボードで次の接続を構成します。

利用可能なモデル
X-NUCLEO-IHM07M1 拡張ボードをもつ mcb_open_loop_control_nucleo_f401re モデルまたは mcb_open_loop_control_nucleo_g474re モデルをシミュレーションとコード生成の両方に使用できます。
mcb_open_loop_control_nucleo_f401re モデルを開きます。
便宜的に事前構成済みのモデルが用意されています。
周辺装置の構成
STM32CubeMX の構成
ADC の構成
ADC インジェクト グループ変換がタイマー 1 の更新イベントに基づいて開始されるように ADC と PWM の同期が行われます。
ADC チャネルは、"ADC 1" のインジェクト グループ変換からの電流フィードバックとレギュラー グループ変換からの指令速度を読み取るように構成されています。

PWM の構成
PWM 周波数と PWM チャネルが構成されています。
Timer1は、ADC を PWM と同期するための更新イベントを生成するように構成されています。この同期は適切なタイミングで電流フィードバックを読み取るうえで重要です。反復カウンターは、更新イベントが周期ごとに必ず 1 回発生するように 1 に設定されています。

周辺装置ブロックの構成
ブロックをダブルクリックしてブロック パラメーターの構成を開きます。この例を別のハードウェア ボードで実行する場合は、指定されたパラメーターの値が同じであることを確認してください。
Analog to Digital Converter ブロックの構成
この例のアルゴリズムでは非同期スケジューリングを使用しています。パルス幅変調 (PWM) ブロックによって ADC 変換がトリガーされます。ADC 変換の終了時に、開ループ アルゴリズムをトリガーする割り込みがポストされます。


PWM Output ブロックの構成
タイマーのカウンターがオーバーフローしたときにイベントを更新するために、[Set the repetition counter after counter is enabled] パラメーターを選択します。

モデルのシミュレーション
この例はシミュレーションをサポートしています。次の手順に従ってモデルをシミュレートします。
1. この例に含まれているモデルを開きます。
2. [シミュレーション] タブの [実行] をクリックして、モデルをシミュレートします。
3. [シミュレーション] タブの [データ インスペクター] をクリックし、シミュレーション結果を表示して解析します。信号を検証するには、シミュレーション中にモデルで利用可能になる "プッシュ ボタン" をクリックしてモーターを始動します。
コードを生成し、ターゲット ハードウェアに展開して実行
このセクションでは、コードを生成し、開ループ制御を使用してモーターを駆動する方法を示します。
メモ: 一部の PMSM は、特にシャフトに負荷がかかっているときは、あまり高い速度で動作しません。この問題を解決するには、与えられた周波数に対応する印加電圧を増やす必要があります。次の手順に従ってモデルにおける印加電圧を増やすことができます。
1. モデル内のパス /Open Loop Control/Control_System/VabcCalc/ に移動します。
2. ゲイン Correction_Factor_sinePWM を 20% に更新します。
3. 安全のために、モーター シャフト、モーター電流、モーター温度を定期的に監視します。
開ループ制御を実装するためのコードの生成とモデルの実行
1. ターゲット モデルをシミュレートし、シミュレーション結果を確認します。
2. ハードウェアの接続を完了します。
3. ターゲット モデルの [Configuration] パネルで次のモーター パラメーターを更新します。
Number of Pole Pairs
PWM Frequency [Hz]
Base Speed [RPM]
Data type for control algorithm
4. [ハードウェア] タブで [監視と調整] をクリックします。診断ビューアーから、モデルのコードを生成中であり、生成された実行可能ファイルの読み込み後にホストがターゲットに接続されることを確認できます。Simulink データ インスペクターを確認します。

5. モーターを回転させるには、ハードウェア ボード上の"プッシュ ボタン (青いプッシュ ボタン)"をクリックします。
6. モーターが始動したら、Simulink データ インスペクターで
と
の電流の ADC カウントを観測します。
メモ: この例では、モーターが最大能力では動作しないことがあります。最初は速度を低くしてモーターを駆動します。また、指令速度は少しずつ変更することをお勧めします (たとえば、ベース速度が 3000 rpm のモーターの場合、500 rpm でモーターの運転を開始し、その後 200 rpm の倍数で速度を増減させます)。
モーターが動作しない場合は、"青いプッシュ ボタン" を押してモーターを停止し、モデルで "Speed in RPM Constant" ブロックをエクスターナル モードに変更します。その後、"青いプッシュ ボタン" を押してモーターを始動し、もう一度駆動します。
ADC オフセットをキャリブレートするためのコードの生成とモデルの実行
モーターがアイドル状態のときに、Simulink データ インスペクターで
と
を観察します。データ インスペクターのフラットな線が ADC オフセットと見なされます。
その他の試行
このモデル例を SoC Blockset で実行してみて、結果を解析します。
この例を |STM32G4xx Based| ハードウェア ボードで mcb_open_loop_control_nucleo_g474re モデルを使用して実行してみます。