
NPC中点箝位三电平SVPWM控制、T型三电平、羊角波调制、中点电位平衡:simulink仿
真与C语言实现-正弦波完美
最近在搞T型三电平逆变器,发现这个NPC拓扑的中点位平衡真是让人又爱又恨。今天就和大家唠唠
怎么用羊角波调制玩转中点箝位,顺便聊聊仿真到代码落地的那些坑。
先看这个六边形的矢量空间图(掏出祖传手绘图),三电平的矢量选择比两电平多了近一倍。咱们的
SVPWM算法核心就是找最近的三个矢量合成目标电压。举个栗子,当参考矢量落在小六边形区域时,代码
里得先判断所在扇区:
```c
// 扇区判断核心代码
float v_ref_alpha = ...; // 坐标变换后的α分量
float v_ref_beta = ...; // β分量
int sector = (int)(atan2(v_ref_beta, v_ref_alpha) * 6/M_PI);
```
不过实际操作中发现,直接算反正切效率太低,改用查表法速度能提升30%以上。
说到羊角波调制,这名字听着玄乎,其实就是把载波掰成两半形成"羊角"形状。Simulink里搭建模
型时要注意死区补偿,这里有个骚操作——在载波反向点插入0.5us的保持时间。实测发现这样做既能降低
开关损耗,又能把输出波形的THD压到1.2%以下。
中点电位漂移是NPC永远的痛。我们的平衡策略是在每个PWM周期动态调整小矢量作用时间。比如当
检测到上电容电压偏高时:
```c
// 中点平衡修正算法
if(Vdc_upper > Vdc_lower + threshold) {
t_small_vec *= 0.98; // 削减正小矢量作用时间
t_med_vec += compensation; // 中矢量补偿
}
```
但要注意修正幅度不能超过5%,否则会引起明显的三次谐波。有个项目现场翻车案例就是调得太猛
,导致电机嗡嗡响得像拖拉机。
仿真到C代码移植时,最坑的是定点数处理。原来在Simulink里跑得好好的浮点模型,转成Q15格式
后波形直接变锯齿。后来改用混合精度计算,关键部位保留浮点运算,总算把正弦波救回来了。贴段实际在
STM32跑的代码:
```c