1.原理
SVPWM是电机控制的一种算法,空间电压矢量控制;可以直接使用SVPWM进行电机控制,SVPWM是基于电压控制,只是控制效果没有FOC(基于电流控制)的效果好;而foc控制要借助于SVPWM,因为功率变送器(3相半桥)不能直接输出控制电流,只能输出控制电压。
2.逻辑分析
SVPWM的输入参数:Uα、Uβ 输出:3路定时器输出比较值CCRx
Uα、Uβ (是正弦信号)实际不直接给出,而是借助于反Park变换来输出Uα、Uβ,反Park变换的输入是Ud,Uq,我们可以直接设定Ud、Uq,这里Ud、Uq是直流信号,设定Ud=0(在FOC控制中Ud是不为0的),Uq=xxx来控制转速
把电机旋转一个电角度周期分为6个部分,即6个扇区,每个扇区要计算,根据矢量等效原理
(此图是网上随机找的,仅供学习)
每个扇区计算对应的Tx,Ty就可以,而Tx、Ty是和Uα、Uβ有一定的数学关系
有根据下图计算出Ta,Tb,Tc
数学关系:
Ta=(T-Tx-Ty)/4
Tb=Ta+Tx/2
Tc=Tb+Ty/2
这个数学关系是根据stm32的PWM模式2来定的,如果是PWM模式1就不是这个公式了
(此图是网上随机找的,仅供学习)
这样在不同的扇区,把Ta,Tb,Tc赋给CCR1、CCR2、CCR3即可
如在扇区3中,TIM1->CCR1 = Tc;
TIM1->CCR2 = Ta;
TIM1->CCR3 = Tb;
那么到此,需要控制电机的3路pwm比较值已经求出
3.仿真模型
RePark部分就不列出来了,请看之前的
最重要的就是SVPWM算法,这里采用s-function的编码形式,好处是这样的代码可以直接移植到MCU中,当然也可以生成嵌入式C代码之后再移植到MCU中,二者是一样的
4.仿真效果
这个是simulink仿真的结果,3路CCR值是马鞍波
5.硬件效果
马鞍波是3路PWM比较值CCRx
黄色曲线是弧度值(0~2*pi)
这个波形是在stm32上跑出的波形
6.注意事项
这里设定Ud=0,Uq=10;Uq设定的值不可太大,否则会过调制,CCR的波形就不再是马鞍波了