1. SVPWM基础回顾:从三相逆变器拓扑到电压空间矢量
各位同学,咱们今天正式开讲SVPWM。说实话,我入行那会儿,最早接触的是SPWM,觉得正弦波调制挺完美的。直到第一次做电机驱动项目,发现SPWM出来的电流谐波大、母线利用率低,电机嗡嗡响得厉害。后来换了SVPWM,效果立竿见影。嗯,这就是咱们今天要聊的核心——为什么SVPWM更适合电机控制。
1.1 三相逆变器拓扑:你每天都在用的电路
先看最基础的东西。三相两电平逆变器,说白了就是六个开关管,三个桥臂。每个桥臂上下两个管子互补导通,绝对不能同时导通——这个我吃过亏,后面说。
核心结构:直流母线电压 Vdc,三个桥臂输出 A、B、C,接电机三相绕组。
每个桥臂只有两种状态:上管导通(输出接 Vdc,记为“1”),或者下管导通(输出接 GND,记为“0”)。三个桥臂组合起来,一共 23 = 8 种状态。
| 状态编号 | 开关组合 (A B C) | 说明 |
|---|---|---|
| 0 | 000 | 零矢量,三相都接GND |
| 1 | 100 | A相接Vdc,B、C接GND |
| 2 | 110 | A、B接Vdc,C接GND |
| 3 | 010 | B相接Vdc,A、C接GND |
| 4 | 011 | B、C接Vdc,A接GND |
| 5 | 001 | C相接Vdc,A、B接GND |
| 6 | 101 | A、C接Vdc,B接GND |
| 7 | 111 | 零矢量,三相都接Vdc |
我曾经犯过的错:调试时死区时间设得太短,上下管直通,MOS管直接冒烟。后来我习惯在代码里加死区补偿,并且用示波器先看栅极波形再上强电。各位千万别省这一步。
1.2 电压空间矢量:从开关状态到旋转磁场
为什么要搞空间矢量?你想想看,电机要转起来,需要的是旋转磁场。SPWM是分别控制三相正弦电压,但电机绕组是空间分布的,三相合成磁场才是关键。
我们把8种开关状态映射到复平面,就得到6个非零矢量和2个零矢量。非零矢量幅值都是 (2/3)Vdc,方向相差60°。
你看这张图,六个矢量把平面切成六块披萨。任意一个目标电压矢量 Vref,都可以用相邻的两个非零矢量和零矢量合成。这就是SVPWM的基本原理——伏秒平衡。
1.3 SVPWM vs SPWM:差距到底在哪?
我直接说结论:SVPWM的直流母线利用率比SPWM高15.47%。这个数字怎么来的?
- SPWM:相电压峰值最大为 Vdc/2,线电压峰值最大为 (√3/2)Vdc ≈ 0.866Vdc
- SVPWM:线电压峰值最大为 Vdc,直接拉满
说白了,同样一块母线电压,SVPWM能输出更高的电压给电机。电机转速和电压成正比,所以SVPWM能让你跑得更快。
| 对比项 | SPWM | SVPWM |
|---|---|---|
| 母线利用率 | 86.6% | 100% |
| 电流谐波 | 较高 | 较低(约降低30%) |
| 转矩脉动 | 明显 | 平滑 |
| 实现复杂度 | 简单 | 中等(C2000有硬件支持) |
| 过调制能力 | 有限 | 可扩展至六阶梯波 |
我个人习惯:在C2000上做SVPWM,直接用ePWM模块的HRPWM功能,配合死区插入,代码量其实不大。后面章节我会带大家手写完整的SVPWM实现。
1.4 为什么电机控制非SVPWM不可?
你想想看,电机控制的核心是什么?是产生一个幅值和角度都可控的旋转磁场。SPWM虽然也能转,但它的电压矢量轨迹是圆的内接六边形,不是完美的圆。SVPWM通过在一个开关周期内切换相邻矢量,让平均电压矢量逼近圆形轨迹。
我在做伺服驱动器项目时对比过:同样负载下,SPWM的电流THD大概在8%左右,换成SVPWM直接降到3%以下。电机温度低了,噪音也小了。客户验收时拿听诊器听电机,说“这个安静”。
还有一个关键点:SVPWM天然适合数字控制。你算好扇区、算好作用时间,直接更新比较寄存器就行。C2000的ePWM模块甚至能自动完成对称PWM生成,你只需要喂给它占空比数据。
1.5 本章小结:你该带走什么?
- 三相逆变器8种开关状态,6个非零矢量 + 2个零矢量
- SVPWM用相邻矢量合成目标电压,母线利用率100%
- 比SPWM多15.47%的电压输出,谐波更低
- C2000的硬件资源让SVPWM实现变得简单可靠
一句话记住:SVPWM不是玄学,是伏秒平衡的工程实现。母线电压利用率高、谐波小、适合数字控制——这三个理由足够让你在电机控制项目中首选SVPWM。