技術共有

【stm32ブラシレスモーターFOCをゼロから実装】 【理論】 【3/6ポジション、速度、電流制御】

2024-07-11

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

前のセクション 、SVPWMの導出により、モーターローターにかかるあらゆる力を制御できるようになりました。このセクションでは、前のセクションで得られたローター dq 軸デカップリングの SVPWM 形式を選択して、ローターの力を合理的に制御し、FOC モーター制御の最終目標である位置、速度、電流制御を達成します。

PID制御

このセクションを読んでいる人は、おそらく PID (比例比例、積分積分、微分微分) 制御を理解していると思いますが、これについてもここでは完全な説明はしませんし、高度な制御方法も必要ありません。
モーターの位置、速度、電流など、それらはすべて制御されるパラメーターとみなすことができます。
直観的な観点から見ると、制御パラメータのリアルタイム値が目標値より小さい場合、制御パラメータを増加させるには外力を加える必要があります。加えられる外力が大きすぎると、制御パラメータがオーバーシュートし、目標値付近の制御パラメータの振動振幅がどんどん大きくなり、加えられる外力が小さすぎると、パラメータが目標値に到達してしまいます。遅すぎる。したがって、制御パラメータがますます激しく振動したり、調整速度が遅くなりすぎたりしないように、適切な外力を得る必要があります。この直感的な制御のアイデアから、PID の P が生まれました。単純に P 制御を使用する場合、外力の大きさ = 制御パラメータと目標値の差 * P 係数を設定します。差が大きいほど、外力が大きくなることが非常に直感的です。 P 係数を比較的小さく設定すると、制御パラメータは常に発振せず、ゆっくりと目標値に安定しますが、このとき、調整速度が遅すぎるため、PID の D 制御を追加できます。制御されたパラメータは元々発振し、目標値まで素早く縮小します。
D 制御を直感的な観点から考えてみましょう。純粋な P 制御では、制御パラメータが目標値に近づくか目標値を超えると、速度とは逆方向の補正力が制御パラメータにブレーキを与え、目標値付近で制御パラメータを制御します。ブレーキをかけて目標値まで縮めます。この速度と逆方向の補正力がD制御です。 D制御追加後は、制御外力の大きさ=制御パラメータと目標値の差×P係数制御パラメータ速度×D係数となります。純粋な D 制御を使用する場合、初期状態では制御パラメータの速度は 0 であるため、制御パラメータは外力を受けません。また、P 制御は外力を与え、D 制御は外力を拘束することがわかります。 D 係数が大きすぎると、わずかな速度で大きな外力が発生する可能性があり、D 係数が小さすぎると、P 制御生成の外力を制限するのに十分ではなくなり、制御パラメータの制御が遅くなります。安定します。
I 制御を直感的に考えてみましょう。制御パラメータに負荷がかかると、単純な P 制御だけでは負荷を支えることができない場合があります。制御パラメータと目標値を時間的に累積することで、負荷時における制御パラメータが目標値に到達するまでに必要な電力を求めることができます。この仕組みは私がコントロールします。 I制御追加後、制御外力の大きさ=制御パラメータと目標値の差*P係数、制御パラメータの速度*D係数、制御パラメータと目標値の差*Iが時間の経過とともに蓄積されます。係数。
モーターを制御する場合、特別な事情がない限り、d軸はモーターの回転に寄与しないため、pid制御で制御できるのはq軸の力だけであり、d軸を制御したり、出力を制御したりすることができます。直接0に設定してください。

フィルター

速度制御や電流制御では、サンプリング精度や周波数によって制限され、速度や電流は不安定で、例えば下図のようなモータ速度の直接計算値は鋸歯状のものが多く、真の値を中心に変動します。このような値をそのまま使用すると、PID出力が大きく変動します。
ここに画像の説明を挿入します
下の図は、フィルタリング後、真の値に近づいていることを示しています。ここに画像の説明を挿入しますフィルタリングにはローパスフィルタリングやカルマンフィルタリングなど、さまざまな方法がありますが、本質はノイズが混じったデータから実際の値に近い値を推定することです。フィルタリングは非常に大きなトピックであるため、このセクションでは原理については説明しません。後続の実践的な部分でコードを直接見ることができます。PID コントローラーを入力する前にフィルタリングの計算を実行する必要があることだけを説明します。

個別位置制御

位置は角度を指します。1 つはモーターの角度、もう 1 つはローターの角度です。この 2 つは異なります。モーターエンコーダーはローターハウジングに取り付けられているため、エンコーダーはローターハウジングの角度を取得します。ローターは内側に位置しています。ローターハウジングとローターは互いに固定されているため、2つの角度の間には一定のオフセットが存在します。取り付けの際、エンコーダのゼロ度をロータの永久磁石に正確に向けることはできません。エンコーダ角度はエンコーダによって提供され、ローター角度も知ることができます。この固定オフセットを取得する方法については、後続の実践的な部分で説明します。このセクションでは、理論的な計算部分のみを完了する必要があります。結果として生じる磁気ベクトルはローターの永久磁石に作用するため、理論的な計算はローターの角度に基づいて行われます。
ここに画像の説明を挿入します
ローター位置制御を実現するには 2 つの方法があります。

pid メソッド:
直感的には、ローターの q 軸を使用してローターを左右に引っ張り続け、ローターが目標位置からずれたら、逆に q 軸に力を加えて引っ張ります。ずれが大きいほど大きくなります。引っ張る力により、ローターは目標位置に戻ります。
利点: q 軸はより大きな力を提供でき、位置制御はより高速かつ強力です。
短所: q 軸はローターの永久磁石の磁気ベクトルと 90 度異なるため、ローターのリアルタイムの位置 (角度) を知る必要があります。
ロータのリアルタイム位置はエンコーダを使えば簡単に得られるため、位置制御にはpidを使用することが多いです。
ここに画像の説明を挿入します
別拠点のFOC制御ブロック図は以下のとおりです。この図の意味は、目標位置を入力し、エンコーダで計算した角度との差を計算し、pid コントローラーを入力してローターの q 軸の強度のみを制御し、d 軸の強度は直接 0 に設定します。最後に、dq 軸の強度 (0 ~ 1) が以前に導出された SVPWM 関数に入力され、出力は uvw ブリッジ アームの pwm デューティ サイクルになります。ここで注意すべきは入力目標位置です。 θ in theta_{in}θフィードバックに関連している限り、ローター角度、エンコーダー角度、またはマルチターン角度を使用できます。 θ シータθ同じ角度を保つだけです。
ここに画像の説明を挿入します

D軸強制抗力:
核となるアイデアは、コイルを人為的に制御して目標コイル磁気ベクトルを生成し、永久磁石の d 軸が目標位置に引き寄せられることです。この方法では、d 軸を目的の位置に引き付けることに注意してください。
利点:目標位置が生成されるため、ローターの角度を知る必要がなく、ローターは自然に吸引されます。
短所: 接線方向の力の成分が小さいため、わずかな接線方向の外力によってロータが明らかに位置をずれる可能性があります。
ここに画像の説明を挿入します

個別速度制御

d 軸ドラッグはエンコーダを使用することが目的ではないため、エンコーダデータがなければ速度を計算することが困難であるため、d 軸ドラッグ方法を速度制御に使用することは適切ではありません。速度制御にはpid制御方式も使用できますが、モータ回転中の速度値の変化が比較的不安定であり、D制御は制御パラメータの変化に比例するため、一般的にはPI制御のみが使用されます。
速度の計算方法は非常に簡単です。 現在の角度 − 最後に記録された角度 Δ t frac{現在の角度 - 最後に記録された角度}{Delta{t}}Δt現在の角度最後に記録された角度
目標速度とリアルタイム速度の差をPI制御に入力することで速度制御を実現します。
各速度のFOC制御ブロック図は以下のとおりです。
ここに画像の説明を挿入します

個別電流制御

モーターの電流はトルクを表します。ローターの力が dq 軸から切り離されると、q 軸のみがモーターの回転に寄与し、q 軸のみがトルクを生成することがわかります。したがって、q 軸電流のみを制御する必要があります。モーターのトルクを制御します。 d軸電流も制御すると、モータ電流利用率が向上し、発熱が低減され、モータの最大出力トルクを高めることができます。
ここに画像の説明を挿入します
モーター電流を取得します。
ロータ dq 軸は、ロータの力の分離を容易にするために使用される抽象的な概念です。dq 軸電流を直接検出できるのは、モータの相線回路上の電流です。電流は相線電流に基づいて計算できます。
相線電流を検出するには多くの方法があります。最も一般的な方法は次の 2 つです。 1. 電流検出は、上部ブリッジ アームと下部ブリッジ アームの出力管の間に配置されます。これはオンライン検出と呼ばれます。 2. 電流検出は下アームと GND の間に配置され、ローサイド検出と呼ばれます。
ここに画像の説明を挿入します
ノードのせいで流出电流 流入电流=0したがって、三相線路に必要な電流検出ユニットは 2 つだけです。ただし、特定のブリッジ アームの pwm デューティ サイクルが 1 または 1 に近い場合、下側のブリッジ アームに電流が流れないか、電流が流れなくなるため、ローサイド検出には 3 つの電流検出ユニットを使用するのが最善です。電流検出部が 3 つある場合、電流検出部はデューティに応じて 2 つ選択されます。もう 1 つは電流の合計が 0 であると仮定して計算されます。オンライン検出では、下部ブリッジ アームが閉じているかどうかに関係なく、相ラインには常に電流が流れるため、この問題は発生しません。オンライン検出位置の電圧は比較的大きいため、オンライン検出用の電流検出ユニットは高電圧に耐える必要があり、比較的高価になります。

三相線電流が求まったら、次はそれをdq軸電流に変換する方法を考えます。相線電流を dq 軸に投影することで、直接 dq 軸電流を求めることもできますが、現在は、まず dq 軸に投影する方法が主流です。 α アルファα軸と βベータβ軸 (このステップはクラーク変換と呼ばれます)、そして α アルファα軸と βベータβ軸電流は dq 軸に投影されます (このステップはパーク変換と呼ばれます)。これは、より高度な位置センサーレス FOC で使用されるためです。 α アルファα軸と βベータβ軸電流。

クラーク変換:
三相電流 私は u 、私は v 、私は w I_u、I_v、I_wあなた,,プロジェクトへ I α 、I β I_alpha、I_betaα,β以下の図の幾何学的関係からわかるように、射影式は次のようになります。
{ I α = I u − I v ∗ cos ⁡ 6 0 ° − I w ∗ cos ⁡ 6 0 ° I β = I v ∗ cos ⁡ 3 0 ° − I w ∗ cos ⁡ 3 0 °{α=あなたコス60程度コス60程度β=コス30程度コス30程度 {α=あなたコス60°コス60°β=コス30°コス30°
ここに画像の説明を挿入します

公園の変革:
意思 I α 、I β I_alpha、I_betaα,β軸は dq 軸に投影されます (実際には回転行列が乗算されます)。以下の図の幾何学的関係からわかるように、投影式は次のようになります。
{ I d = I α ∗ cos ⁡ θ I β ∗ sin ⁡ θ I q = − I α ∗ sin ⁡ θ I β ∗ cos ⁡ θ{d=αコスθ βθq=αθ βコスθ {d=αコスθ βθq=αθ βコスθ
ここに画像の説明を挿入します

単一電流の FOC 制御チャートは以下のとおりです。電流変化は比較的不安定であるため、ここでは制御パラメータの変化速度に関する D 制御は通常使用されず、PI 制御のみが使用されます。
ここに画像の説明を挿入します

位置・速度・電流カスケード制御

このような要件がある場合: 位置を制御する場合、モーターがその位置に戻るときの最大速度と最大電流を指定する、または速度を制御する場合、モーターが目標速度に達するときの最大電流を指定する場合は、次を使用する必要があります。位置、速度、現在の弦レベルのコントロール。ここでのカスケード制御とは、モータを一定の電流値または速度値に到達させるように制御するのではなく、モータを一定の位置に維持することは不可能であるため、制御プロセス中にモータが最大電流値または最大速度値に到達する必要がある。スピードがあるというか流れがある。
カスケード制御とは、現在の制御ループの入力が前の制御ループの出力であることを意味します。カスケード位置制御を例にとると、制御ブロック図は次のようになります。
ここに画像の説明を挿入します


理論的な部分は終わりました。SVPWM の計算方法と、位置、速度、電流の制御プロセスが得られました。しかし、実際には、位相線の順序など、さまざまな問題が発生します。実装方法、電流サンプリング時間、周辺構成などを比較して、次の実用的な部分では、モーター ライブラリを使用せずに、超一般的なシングルチップのコスト効率の高いツール smt32f103c8t6 および stm32cube ツールを使用して、完全な実装を実現します。 FOC制御をゼロから。