空间矢量脉宽调制——SVPWM,主要思想是把三相交流电机等效为直流电机,然后跟踪圆形磁场。
SVPWM主要由:波形发生器,Clark变换,扇区判断,Park变换,桥臂作用时间,比较器,插入死区等模块组成。
1、波形发生器。
使用DDS在FPGA内部产生正弦波、三角波。
如果是三相星形不带零线,则可以只产生两路正弦波(相位相差120度),相位差可以在DDS的地址加个常数来实现。
三角波,则是当载波来使用,所以频率应该比正弦波的要高。
2、Clark变换。
把三相静止坐标系转换成两相静止坐标系。原理较为简单,只是一个矩阵变换就可以了。仿真结果如下图所示。
3、扇区判断。
因为要跟踪的磁场是圆形的,而SVPWM一共6个开关在同一时刻只能输出一个方向的磁场。那么我们可以利用内接(外切)多边形的原理,把圆形分割为若干块,每一块都对应着一种开关状态,不停地切换开关状态(也是切换方向),输出的波形就可以逼近圆形了。
根据两相静止坐标电压转换为X、Y、Z具体公式参考相关资料,再根据X、Y、Z的符号来确定当前的开关处于哪个扇区。
根据Clark变换过来的直流电,可以计算出扇区作用时间。
4、Park变换。
把静止的直角坐标系转换成旋转的直流坐标系。原理也很简单,只是个矩阵变换。采样电压的话,可以不用Park变换。Park变换主要用在dq轴的电机模型。
5、桥臂作用时间。
具体的计算公式,可以参考相关书籍。
6、比较器。
比较三角波形和桥臂作用时间,再根据当前的扇区,可以得到开关状态。
7、插入死区。
因为实际的开关,是有响应时间的,开关速率太快,可能使得上、下开关同时导通,而发生短路,所以必须插入死区。
8、SVPWM仿真波形。
9、其它问题。
a、如何得到6路信号?
利用Clark变换、扇区判断、桥臂作用时间,所计算出来的值为Ta、Tb、Tc,再与三角载波比较后,可以得到sw_a、sw_b、sw_c,三路信号。
sw_a、sw_b、sw_c取反后可以得到n_sw_a、n_sw_b、n_sw_c,再插入死区,可以得到最终的SVPWM的6路信号。
b、利用DDS产生的三相波形,如何对应Ta、Tb、Tc?
一个时刻下,DDS产生三相正弦波,那么可以得到三个值,通过Clark变换、扇区判断、桥臂作用时间等计算后,得到Ta、Tb、Tc,也是三个值,这是一一对应的。
Ta、Tb、Tc与三角载波相比较,这里需要与三角载波的一个周期相比较。如果三角载波为256个点,那么比较出来的sw_a、sw_b、sw_c也是对应了256个点。
然后再通过DDS产生下一时刻的三相正弦波,为新的三个值,再循环。
c、要考虑开关管的速度。
看SVPWM最小的脉宽是多少,如果开关管的速度跟不上,那么要将这些窄脉冲滤掉。
d、仿真。
建议使用MATLAB的m语言仿真完成后,再写FPGA的代码,可以一步一步对照其计算结果。