在电机控制应用领域,常用的DSP芯片,会有影子寄存器,一般设置为映射模式,即常规的TI的那一套,每次写入PWM寄存器的比较值,会延时一个开关周期周期生效。
在ARM中,这个功能叫做预装载preload,代码如下:
按照底层的配置,假设在三角波计算器的底点触发ADC采样,即 CTR = ZERO 的时刻,然后每次三角波计数器的底点更新PWM比较值。
(资料图)
那么说明FOC计算完毕后,从采样触发计算到占空比更新后的生效,延时了一个开关周期Ts。
如果在 CTR = ZERO 的时刻触发采样,半个开关周期完成了FOC计算,并且更新了PWM占空比比较值,设置在三角波计数器的顶点生效,那么占空比生效延时了Ts/2,即半个开关周期。
如果在 CTR = ZERO 的时刻触发采样,超过半个周期完成了FOC计算,那么要等到下次 CTR = PRD 的时刻更新后的占空比才会生效。这个延时是1.5Ts。
所以说,一般常规的应用,是一个开关周期内完成FOC计算,并且延时1个开关周期让更新的比较值生效。
因为离散造成的延时,导致了估算存在较大误差。因为估算的角度是根据采样时刻的电流,电压计算的,对应是采样时刻的角度。
根据这个角度计算的电压,延时了整整 Ts 才生效,在这个延时的过程中,实际电机已经走过了一定的角度,这个角度增量导致了电压最后生效的时候,和生效时刻电机的真实角度不对应的。
这个角度并不是算法或者参数不准导致,完全是因为离散导致的。并且这个误差对整体影响的影响较大,尤其是低载波比,高速下的时候。
实际的补偿措施,也比较容易,就是对于 Ud 和 Uq 的反变换,考虑到根据当前角度计算的电压要延时一个 Ts 才起作用。那么就对这个角度补偿 Ts 过程中的角度增量,假设速度不变,用速度 We*Ts 得到 Δθ ,补偿到估算角度就行了。
有的厂家补偿就复杂了,会直接通过编码器和估算结果对比,直接把误差写入flash,实际运行的时候查表去解决问题。
某川的代码是有对角度作离散补偿的。
当然,如果是 FPGA 的硬件电流环,占空比算完即时生效,这个补偿就没有必要了。
参考文献:永磁同步电机全速度范围无速度传感器控制策略研究 王子辉
往期文章:
电机控制前途如何?
单电阻电流采样原理
这个国产替代不得了
股票被套了。。。
快看,TI的秘籍(一)
股票被套了。。。
快看,TI的秘籍(一)
120人了!
GPT-4是这样搞电机的。。。
TI FAST如何采集电机相电压
MOSFET 并联关键参数
如何设计大功率BLDC控制器(一)
关键词: