こんにちは、皆さん
私は S32K311を用いて3相のBLDCの6ステップ通勤プロジェクト に取り組んでいます。
PWM生成用eMIOS
TRGMUX
LCU
GD3000ゲートドライバー
RTD 5.0.0
私の位相マッピングは次のとおりです。
U_HS = eMIOS ch0
U_LS = eMIOS ch1
V_HS = eMIOS ch2
V_LS = eMIOS ch3
W_HS = eMIOS ch4
W_LS = eMIOS ch5
私は以下のLUT値を使用しています。
#define LCU_LUT_OFF 0x0000U
#define LCU_LUT_PWM 0xAAAAU
#define LCU_LUT_INV_PWM 0x5555U
#define LCU_LUT_ON 0xFFFFU
当初、私は各セクターごとにLUTを動的に変更することで、以下の方法で切り替えを実装しました。
Lcu_Ip_SetSyncOutputLutControl(LCU_LutList, 6U);
V+ / W- の例:
Emios_Pwm_Ip_SetDutyCycle(EMIOS_INSTANCE, PWM_CHANNEL_V_HS, activeDuty); LCU_LutList[PWM_CHANNEL_V_HS].Value = LCU_LUT_PWM; LCU_LutList[PWM_CHANNEL_V_LS].Value = LCU_LUT_INV_PWM; LCU_LutList[PWM_CHANNEL_W_LS].Value = LCU_LUT_ON; Lcu_Ip_SetSyncOutputLutControl(LCU_LutList, 6U);
奇妙な問題が発生する:
ループの前に一度V_HSを設定すると、PWMが利用可能になります。
整流ループに入り、Lcu_Ip_SetSyncOutputLutControl()を繰り返し呼び出すと、V_HSはスイッチングを停止しますが、他のチャネルは動作を続けます。
このことから、動的に同期されたLUT更新がモーター整流にとって正しいアプローチなのかどうか疑問に思った。
S32K311 + GD3000の場合、推奨されるアーキテクチャは何ですか?
3つの相補的なPWMペア
デッドタイム挿入
6ステップ整流
安全なスイッチング
私はすべきでしょうか?
LCU LUT(PWM / INV_PWM)を静的に保ち、 LCU出力の有効/オーバーライド状態を変更するだけで整流を実行しますか?
Lcu_Ip_SetSyncOutputLutControl() の代わりに Lcu_Ip_SetOutputLutControl() (即時更新) を使用してください。
動的なLUT書き換えを完全に回避する?
LCUを使用して、デッドタイム付きの相補PWMを生成したいと考えています。
意図された方法は以下の通りです:
eMIOSで3つの基本PWM(U、V、W)のみを生成します。
TRGMUX を介して LCU にルーティングします。
固定LUTを使用する:HS = 0xAAAA LS = 0x5555
LCU出力/フィルタ設定でデッドタイムを設定します。
そして、各整流セクターの出力有効化/オーバーライドのみを変更するのですか?
NXPのサンプル(RTDまたはMBDT)で、LCUによる相補型PWMとデッドタイム挿入を用いた6ステップBLDCモーターの動作を示すものがあれば、ぜひご紹介いただけると幸いです。
ご回答をお待ちしています。
こんにちは、 Esakkiさん。
以下のリンクで「Out Motor Solution」をCANを参照できます。デモコードとアプリケーションノードはこのページでご覧いただけます:
https://www.nxp.com/design/design-center/development-boards-and-designs/MCSPTE1AK344
例えば、BLDCの6ステップ方法では、モーターの回転方向を変えるのは通常LCUの状態を更新しても達成できません。デモコードとアプリケーションノードをご覧ください。