一、概述
在前面的博文中,介绍了基于 MM32SPIN560C 开发板的无感弦波单电阻方案,通过母线电流值来重构出三相电流值的方法,以及灵动微 MM32SPIN560C 的母线电流采样方法。但是在实际操作过程中,有个问题需要我们引起重视,即单电阻电流采样存在盲区。我们都知道,ADC 采样需要一定的时间,而有效矢量要在 ADC 采样的时候保持状态不变,所以有效矢量需要保持一定的时间。当有效矢量的时间过短,导致单电阻采样无法在规定的时间内获取有效的母线电流来重构三相相电流的情况下,就形成了盲区。
单电阻电流采样盲区可分成 2 种情况,如图 1 所示。一种是电机在启动的时候,或者低速运转的时候三相之间的占空比很接近,导致盲区,如图 1 中的深黄色区域。另一种是扇区变迁的时候,其中 2 相之间的占空比很接近,导致盲区,如图 1 中的浅黄色区域。
图 1. 单电阻电流采样盲区
为了避免盲区的单电阻电流采样时间不足的问题,灵动微采用的方法是 PWM 移相。如图 2 所示,上面的两个波形是移相前的波形,下面的两个波形是移相后的波形。t1 和 t2 是一个周期内单电阻电流采样的时间点。如果 t1 所在的有效矢量保持时间不足,则将前一相的 PWM 波形左移。如果 t2 所在的有效矢量保持时间不足,则将后一相的 PWM 波形右移。用这样的方法给前半周期留出足够的采样时间。
图 2. 灵动微的 PWM 移相方案
二、 MM32SPIN560C 的 PWM 移相方法以及软件实现
MM32SPIN560C 的高级定时器 TIM1/TIM8 支持硬件 PWM 移相功能。在高级定时器 TIM1 或者 TIM8 的 PWM 中央对齐模式下,通过设置 PDER 寄存器(通道 x 输出 PWM 移相使能位)和 CCRxFALL 寄存器(通道 x 在 PWM 中央对齐模式递减计数时的捕获/比较值),可以实现各通道输出 PWM 移相。根据需要移动的相位,配置 CCRxFALL 以及 CCRx,即可实现 PWM 输出可编程的移相波形,可左移或者右移。
图 3 是对通道 1 输出的 PWM 作移相处理的例子。图中显示了两个周期,第一个周期没有使能移相功能,PWM 的上升沿和下降沿的产生时间由 CCR1 决定。而在第二个周期,当 PDER 寄存器中的 CCR1SHIFTEN 位设为 1 ,使能 CCR1 的 PWM 移相。PWM 通道 1 在 PWM 中央对齐模式的递减计数时产生上升沿。在第一个周期,即没有使能移相功能的时候,PWM 的上升沿时刻由 CCR1 来决定;而在第二个周期,使能了移相功能之后,PWM 的上升沿时刻由 CCR1FALL 寄存器值来决定。所以改变 CCR1FALL 的值就可以提前触发或者延迟触发 PWM1 的上升沿,实现移相功能。
图 3. 移相功能示意图
在灵动微的单电阻 FOC 例程代码中,使用下面的一句代码即可打开三相 PWM 的移相功能:
TIM_PWMShiftConfig(pTim,0x0E,ENABLE);
需要注意的是,在灵动微的单电阻 FOC 例程代码中,要设置最小移相宽度(MIN_SHIFT_WIDTH)和硬件造成的延时(TRIG_DELAY),这样可以更加精确且安全地设置移相时间。在设置这个最小移相宽度的参数时,应留出足够的裕量,用来避开续流点和死区时间。
三、总结
本文档介绍了无感弦波(FOC)通过单电阻采样母线电流过程中,如何通过 PWM 移相来避开采样盲区。MM32SPIN560C 支持硬件的方式实现 PWM 移相。相对于软件 PWM 移相,使用硬件的方式不仅大大简化了软件代码,而且还提高了 PWM 移相的可靠性,是一个不错之选。
如果您对 MM32SPIN560C 的 PWM 移相功能感兴趣,可以联系:atu.sh@wpi-group.com 获取更多资料。
四、参考资料
- DS_MM32SPIN360C_p_V1.07_SC.pdf
- UM_MM32SPIN2x_p_V1.19_SC.pdf
- 灵动微. 单电阻采样原理介绍.2022
评论