大家好,
我正在使用S32K311 开发一个三相无刷直流电机六步换向项目:
用于 PWM 生成的 eMIOS
TRGMUX
拉库
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对
死时间插入
六步换算
安全切换
我应该:
保持 LCU LUT静态(PWM / INV_PWM),仅通过改变LCU 输出使能/覆盖状态来执行换向?
是否使用 Lcu_Ip_SetOutputLutControl()(立即更新)代替 Lcu_Ip_SetSyncOutputLutControl()?
完全避免动态 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
您可以参考以下链接中的电机解决方案,您可以在此页面找到演示代码和应用程序节点:
https://www.nxp.com/design/design-center/development-boards-and-designs/MCSPTE1AK344
例如,在 BLDC 的六步法中,改变电机的旋转方向通常不是通过更新 LCU 的状态来实现的,您可以查看我们的演示代码和应用程序节点。