搞电力电子的,谁没炸过一两块板子呢。我第一次把自己画的三相SPWM逆变器样机通电,调压器拉到310V,合闸瞬间就听到一声闷响,IGBT模块的塑料外壳直接裂开一个小口。那会儿我满脑子都是问号:参考设计明明照着画的,怎么一上电就炸?后来拆开驱动电路一查,死区时间根本没写进占空比配置,上下管在切换瞬间直通了。从那之后我养成了一个习惯:做逆变器,先彻底搞明白SPWM调制过程,再画板、写程序、上电调试。
这篇文章就把我从原理到稳定运行的全过程展开讲,内容包括:SPWM为什么能输出正弦电压、三相桥主电路和开关管怎么选、载波频率与死区参数怎么算、软件生成三相PWM的具体思路,以及实测调试中的排查链路和滤波保护措施。每一段都结合我自己踩过的坑来讲,不讲品牌、不堆型号,只讲通用且能落地的方法。不管你是正在做课程设计、产品样机,还是对电机驱动感兴趣,这套思路都能直接抄作业。
1. 三相SPWM在调制什么:从三角波比较说到调压调频的本质
1.1 一个桥臂输出的“正弦”其实是宽度变化的方波
很多人第一次看SPWM波形会愣住:示波器上明明是一串宽度不等的矩形脉冲,哪来的正弦?其实这正是SPWM的核心——用高频三角波作为载波,低频正弦波作为调制波,两者比较后输出PWM。正弦波瞬时值高于三角波时,上管导通、下管关断;低于三角波时反过来。结果就是:正弦波峰值附近脉冲宽,过零附近脉冲窄,脉冲宽度和正弦瞬时值成正比。
这里的关键不是“输出正弦波形的电压”,而是“平均电压等于正弦”。拿单个半桥来说,一个载波周期Ts内,如果上管导通占空比为D,桥臂中点相对母线中点的平均电压是:
u_avg = Vdc/2 × (2D - 1)
把D按正弦规律做成 D = 0.5 + 0.5M·sinθ,代入后平均电压就是 Vdc/2 × M·sinθ。也就是说,往上管占空比里塞一个正弦函数,当载波周期足够短时,桥臂输出平均值就是一条正弦曲线。电感或者电机绕组会把PWM高频分量滤掉,留下的电流就是50Hz正弦电流。记住这条推导,后面软件里所有占空比计算都从它来。
1.2 三路调制波相差120度,三相才能转起来
单相SPWM只能输出一相电压,三相逆变器则用了三个完全相同的半桥,分别对应A、B、C三相。三个半桥的调制波是频率相同、相位互差120°的三条正弦波,而三角载波共用同一个。负载(比如电机)接在三个桥臂中点之间,真正加到负载上的是线电压,即两个相电压之差。
比如A相桥臂相对母线中点的电压是u_ao,B相桥臂相对母线中点的电压是u_bo,那么AB线电压就是u_ao - u_bo。两个互差120°的正弦相减,幅值变成原来的√3倍。这就是为什么三相逆变器能用三组半桥输出三相对称交流电。软件上实现也不麻烦:同一张正弦表,分别取三个相隔1/3周期的索引就行。
1.3 调制比M决定了输出电压,过调制区千万别乱进
调制比M定义为正弦调制波峰值与三角载波峰值的比值。M不超过1时,输出基波电压和M近似成线性关系,这个区域叫线性调制区。前面那个桥臂平均电压公式里,Vdc/2 × M就是输出相电压基波幅值。
以220V交流整流后母线约310V为例,不同M对应的线电压有效值如下表:
| 调制比M | 相电压基波幅值(V) | 线电压有效值(V) |
|---|---|---|
| 0.2 | 31 | 38 |
| 0.4 | 62 | 76 |
| 0.6 | 93 | 114 |
| 0.8 | 124 | 152 |
| 1.0 | 155 | 190 |
线电压有效值约等于 0.612 × M × Vdc。这个表格在实际调压时非常有用:变频器低速启动时把M调小,输出就给电机一个较低的电压;随着频率升高把M调大,输出电压跟着升,实现恒压频比。当M大于1,进入过调制区,输出电压曲线不再线性,会引入额外低次谐波,电机发热、噪声都会明显加大。我的建议是:开环应用里M最大值控制在0.9附近,留出死区补偿和母线波动的余量。
章节小结:SPWM调制并不是什么高深技术,本质上就是用宽度调制逼近正弦平均值。搞懂了单桥臂占空比公式和三相120°相位关系,后面的电路和软件都是围绕这两件事展开的。
2. 主功率电路与器件选型:桥臂、开关管、驱动电路怎么搭
2.1 三相半桥拓扑:六只管子的“直通”是最先要防的事
三相逆变器主电路是三个半桥并联在母线正负极之间,每相输出从上下管中点引出。上管和下管必须交替导通,不能有任何瞬间的同时导通。一旦上下管同时导通,母线正负极被直接短路,电流瞬间飙升,这就是电力电子里最忌讳的“直通”。
我在第一次炸管时就是死区没设置,上管还没完全关断,下管已经开通,整个母线直接被管子短路了。所以设计主电路时,第一优先级不是选什么高级管子,而是想清楚怎么防止直通。具体手段包括:硬件上设置死区时间、驱动芯片自带互锁、控制管脚配置上下管互补且插入延迟。
六个开关管还需要配套续流二极管。电机这类感性负载在工作时,电流不会突变,当上管关断、下管还未开通的死区阶段,相电流要通过二极管续流。很多功率模块内部已经集成了快恢复二极管,如果自己用分立MOSFET搭,必须外置。二极管的反向恢复特性要注意,恢复时间太长会在高频下产生额外损耗和尖峰。
2.2 开关管选型:先算电压和电流应力,再看预算
选IGBT还是MOSFET,很多人第一反应是看价格。我的顺序是:先算应力,再定器件类型,最后才看价格。
- 电压应力:开关管关断时承受的最大电压就是母线电压Vdc,还要叠加母线寄生电感在关断瞬间产生的电压尖峰。工程上建议耐压取2倍以上母线电压。310V母线用600V档,540V母线用1200V档。别卡着电压选管子,尖峰电压超了直接雪崩击穿。
- 电流应力:假设输出额定相电流有效值为I,管子上流过的峰值电流至少是√2I,还要加上电感纹波电流。通常选型按1.5倍以上电流裕量算。如果是驱动电机,启动冲击电流是额定电流的几倍,要么留足裕量,要么做软启动。
下面是我常用的器件类型对比,不是某个具体型号,而是大类的选择逻辑:
| 对比项 | MOSFET | IGBT |
|---|---|---|
| 常见耐压领域 | 低压到中高压,但高频优势明显 | 600V以上表现更好 |
| 典型开关频率 | 几十kHz到几百kHz | 2kHz~20kHz |
| 导通特性 | 低压时导通电阻小,压降随电流线性 | 导通后有固定饱和压降 |
| 驱动难度 | 栅极电容大,但驱动电路简单 | 需要足够栅极电流,常配合正负压 |
| 典型场景 | 高频小功率、开关电源 | 电机驱动、大功率变频 |
举个例子:做一个母线310V、额定输出功率500W的三相逆变器,线电压有效值按190V算,额定电流大约1.9A(功率因数按0.8估),峰值电流2.7A左右。选600V耐压、15A额定电流的IGBT或MOSFET都够,想降低开关损耗就选MOSFET,想提高过载能力且频率不超过20kHz就选IGBT。总之不要凭感觉选,把应力公式列出来算一遍,几分钟就能定。
2.3 驱动电路:隔离、自举和栅极电阻决定了能不能稳定工作
开关管自己不会听MCU的话,中间必须加驱动电路。驱动的三件事:提供足够的栅极充放电电流、实现控制地与功率地的隔离、配合电阻控制开关速度。
先说隔离。三相半桥有三个上管,它们的源极/发射极都是悬浮电位,驱动信号必须隔离。常见方案有两种:一种是带自举的半桥驱动芯片,芯片内部用自举二极管给上管驱动供电,适合PWM占空比变化比较大、但不会长时间保持100%导通的应用;另一种是独立隔离电源配隔离驱动,可靠性更高,成本也更高。如果输出频率很低、某个上管需要长期导通,自举电容电压会慢慢掉,这时就要老老实实用隔离电源方案。
栅极电阻是很多人忽略的细节。栅极串联电阻越大,管子开关越慢,di/dt和dv/dt越小、EMI越好,但开关损耗变大;电阻越小,开关越快、损耗小,但容易引起振铃甚至误导通。高端设计中常常把开通电阻和关断电阻分开,两个电阻并联反并联二极管,按需调整开通和关断速度。我的经验是:先用厂家推荐的栅极电阻值起步,再看示波器上栅极波形有没有振铃,有振铃就稍微加大关断电阻。
说到这,驱动电路里还藏着死区实现的问题。一些集成驱动芯片自带死区引脚,直接设置时间;一些需要软件在PWM里插入死区。我的忠告是:硬件死区优先级高于软件死区,芯片互锁是最低保障,软件死区只是让波形更精确。后面第3节会专门讲死区怎么算。
3. 载波频率、调制比和死区时间:最容易出问题的三个参数怎么算
3.1 载波频率:谐波改善有限,损耗却线性上升
载波频率是SPWM最基本的参数,它决定三角波的频率。载波频率越高,一个基波周期内脉冲数越多,PWM的谐波频率越高,LC滤波器越容易滤除,电感体积可以减小。但代价是开关损耗线性增加,死区效应造成的误差占比也随之上升,EMI问题更头疼。
人耳能听到20kHz以下的声音。载波频率低于16kHz时,电感和电机通常会发出尖锐的啸叫,这就是电磁力在载波频率下振动产生的声音。所以我做中小功率逆变器时,载波频率通常取16kHz到20kHz之间。IGBT开关频率一般控制在20kHz以内,MOSFET可以跑到40kHz以上。在做电机驱动时还要意识到:载波频率越高的逆变器,电机铁耗会增大,电机更容易发热,所以不一定载波越高越好。
还有一对概念需要区分:同步调制和异步调制。载波频率固定,输出频率变化,那么每个周期内的脉冲数会变化,叫异步调制,适合低速大载波比场合。同步调制则是载波频率随输出频率成比例变化,保证每个周期脉冲数固定,高输出频率时谐波特性更规整。实际常用做法是:低频段用异步调制,频率升高后分段切换成同步调制,切换点要做相位平滑处理,否则输出会突然跳一下。
3.2 调制比取值:线性区内的余量设计
前面提到M上限不要顶到1.0,这里补充具体原因。死区会损失一部分有效输出电压,可以理解成每周期都从正弦波上“咬”掉一小块。母线电压也不是稳定的,重载时母线纹波会让有效调制度产生波动。再加上数字控制的量化误差,M=1.0看似满打满算,实际输出已经进入轻微过调制,THD会变化。
所以在V/f开环控制里,我的习惯是把额定输出状态设置在M=0.85到0.9之间,剩下的余量交给死区补偿和母线波动。如果是闭环控制,调节器会自动修正占空比,调制比的线性区余量就没那么重要了。
3.3 死区时间:用关断延迟和开通延迟算出来,不靠猜
死区时间是防止直通的必设参数,也是很多新手的盲区。它的计算依据是器件手册里的动态时间参数:
- 上管关断延迟td(off) + 下降时间tf:上管真正完全关断需要的时间
- 下管开通延迟td(on) + 上升时间tr:下管从收到命令到真正导通需要的时间
最坏情况是上管关得最慢、下管开得最快,所以死区下限是:
td ≥ (td(off) + tf) - (td(on) + tr) + 安全裕量
实际项目里,IGBT模块死区常取2μs到5μs,MOSFET取100ns到1μs。不要照抄别人参数,换成自己的管子后要重新查手册计算。死区太小会直通炸管,死区太大又会造成明显波形畸变。最保险的验证方法:低压小电流下,用示波器分别测同一桥臂上下管的栅极波形,确认两者之间有明显间隔。
3.4 死区带来的波形畸变:损失有多大,算给你看
死区时间内两个管子都不通,但电感电流还要继续走,于是只能通过续流二极管走。相电流为正时,输出被二极管钳位,实际电压和理想PWM产生偏差;相电流为负时偏差方向反过来。结果就是基波电压的损失和低次谐波增加,这个问题在轻载、电流过零附近尤其明显。
算个数:开关频率16kHz,载波周期62.5μs,死区3μs,母线电压310V。每个死区造成的伏秒损失是310V×3μs=930V·μs,折算到整个周期平均电压损失约14.9V。如果额定相电压幅值在140V左右,死区造成的电压损失超过10%。这个比例相当可观,不开补偿的话,空载和轻载时输出正弦波会明显变形。
死区补偿的基本思路是:用电流传感器测出每相电流方向,电流为正时,把该相PWM占空比往上调一点点;电流为负时往下调一点。理论上补偿量是固定值 td×Vdc/Ts,做成占空比补偿加到调制波上。想做成前馈补偿,先保证相电流检测极性正确、过零判断不振荡,否则补偿反了会更糟。
4. 软件生成三相SPWM:查表法、规则采样与PWM定时器配合
4.1 数字控制器怎么“看见”正弦波:规则采样
模拟电路里用硬件比较器做自然采样,正弦和三角波直接比较。到了MCU里,你不可能时刻比较两条波形,只能在离散的时间点采样,这就叫规则采样。规则采样在三角载波波峰或波谷处采样正弦波瞬时值,认为整个载波周期内调制波保持不变,然后把这个值和三角波比较。
对称规则采样在载波一个周期内只采样一次,计算量小,产生的是左右对称的PWM脉冲,谐波性能比不对称规则采样差一点。不对称规则采样在波峰和波谷各采样一次,脉冲两侧可以不对称,谐波更少,但每周期要更新两次比较值。对于16kHz载波,对称规则采样完全够用;追求波形更干净的项目再考虑不对称采样。
4.2 三相占空比公式和查表法:定点MCU也能跑得飞快
双极性三相SPWM里,A相上管占空比公式:
dutyA = 0.5 + 0.5 × M × sin(θ)
B、C相分别是相位滞后和超前120°:
dutyB = 0.5 + 0.5 × M × sin(θ - 2π/3)
dutyC = 0.5 + 0.5 × M × sin(θ + 2π/3)
这个公式和前面推导的桥臂平均电压公式一一对应:占空比0.5对应输出0V,M=0时三相对称直流偏置,桥臂输出为母线中点电压,负载上没电压。M增大,占空比围绕0.5摆动,输出正弦电压。
工程上我不会在中断里临时调sinf()算浮点,而是预先生成一张正弦表。表的点数取1024,相位用32位整数累加,查表时取高几位作为索引,用uint32做乘法再缩放,这样普通MCU一个中断里几微秒就能算完三相占空比。以下是一段简化示例(以某MCU为中心对齐PWM为例):
#define TABLE_SIZE 1024 #define SCALE 10000 // 放大倍数,避免浮点 uint16_t sin_table[TABLE_SIZE]; // 0~10000,对应0.5+0.5*sin值 void sin_table_init(void) { for (uint16_t i = 0; i < TABLE_SIZE; i++) { float v = 0.5f + 0.5f * sinf(2.0f * M_PI * i / TABLE_SIZE); sin_table[i] = (uint16_t)(v * SCALE); } } uint32_t phase_a = 0; uint32_t phase_b = TABLE_SIZE / 3; // 120°对应约341个点 uint32_t phase_c = TABLE_SIZE / 3 * 2; uint32_t phase_step = 10; // 输出频率相关 uint32_t mod_value = 9000; // M=0.9 uint32_t pwm_period = 10000; // 定时器装载值 void pwm_timer_isr(void) { uint16_t idx_a = (phase_a >> 10) & (TABLE_SIZE - 1); uint16_t idx_b = (phase_b >> 10) & (TABLE_SIZE - 1); uint16_t idx_c = (phase_c >> 10) & (TABLE_SIZE - 1); uint32_t cmp_a = (uint32_t)sin_table[idx_a] * mod_value / SCALE; uint32_t cmp_b = (uint32_t)sin_table[idx_b] * mod_value / SCALE; uint32_t cmp_c = (uint32_t)sin_table[idx_c] * mod_value / SCALE; pwm_set_compare_a(cmp_a * pwm_period / SCALE); pwm_set_compare_b(cmp_b * pwm_period / SCALE); pwm_set_compare_c(cmp_c * pwm_period / SCALE); phase_a += phase_step; phase_b += phase_step; phase_c += phase_step; }相位步长怎么算?输出频率f、载波频率fc,则每个载波周期相位增加 2π×f/fc。用整数表的话,phase_step = 2π × f/fc ×(table点数/2π)= f/fc × TABLE_SIZE。比如f=50Hz、fc=16kHz,phase_step≈1024×50/16000=3.2,取整后频率会有微小偏差,可以用锁相或者累加误差修正,但对开环应用影响不大。
4.3 PWM定时器为什么选中心对齐模式
规则采样要求三角载波是关于中心对称的,工程上的PWM定时器几乎都工作在“中心对齐/三角波”模式:计数器从0向上计数到装载值,再向下计数回0,比较匹配点分别发生在上升段和下降段,输出PWM脉冲中心对准载波周期中点。边沿对齐模式出来的锯齿波采样效果差,谐波性能不好。
更新占空比的时机要放在载波周期中断(通常是周期匹配中断)里,保证整个载波周期的占空比参数不被中途改写。如果输出频率和载波频率都比较低,可以在每个载波周期只更新一次;不对称规则采样则需要一个载波周期更新两次,分别在波峰和波谷中断里完成。
4.4 从SPWM延伸到V/f控制和SVPWM的思路
如果目标只是输出固定频率的交流电,上面的代码足够。如果要做电机调速,还要在这个基础上加恒压频比:输出频率从0逐步升到50Hz,M按比例从0升到额定值,配合软启动斜坡逐渐加速。更进一步的SVPWM,本质是把三相桥臂的8种开关状态画成空间矢量,用相邻矢量合成目标电压,直流电压利用率比SPWM高约15%。理解SPWM的查表法之后,再看SVPWM会容易很多,因为脉宽计算的底层逻辑是相通的。
5. 实测调试的完整排查链路:从炸模块到稳定输出的全过程
5.1 上电之前的“低压验证法”:先验证逻辑,再上高压
我吃过一次亏之后定了一条规矩:没有经过低压验证,不允许直接上高压母线。所谓低压验证,就是把控制板单独上电,功率级不给310V,先给一个二三十伏的直流低压,看驱动波形、死区时间、PWM输出和故障封锁逻辑是否正确。哪怕这里出问题炸了,管子便宜,损失也小。
低压验证的具体流程:
- 控制板上电,确认MCU初始化后才使能PWM输出,复位期间PWM引脚默认呈高阻或下拉到关断电平;
- 用示波器分别测三相上下管的栅极驱动波形,确认占空比按正弦变化、死区时间符合设定值;
- 把调制比调到0.1之类的低值,看驱动还有没有窄脉冲丢失;
- 确认过流封锁信号能随时把PWM输出拉低。
上电顺序也要养成习惯:先控制电、后功率电;下电相反,先断高压、再断控制电。这样能避免功率管在控制逻辑未初始化时处于不定状态。
5.2 示波器测量的一个坑:上管驱动不能用地线乱夹
调试逆变器,示波器探头接错地方会直接短路。上管的源极/发射极是悬浮的,对母线负极为高压,如果示波器探头地线夹到上管源极,等于把高压通过探头地线短路到示波器地,轻则测不出波形,重则烧探头。
正确的做法是用隔离探头或者高压差分探头测量上管驱动波形。如果没有差分探头,可以只测下管驱动波形,因为下管源极接母线负极,普通探头可以直接夹。但要注意:下管驱动正常不代表死区也正常,必须用两路同时测上下管驱动,在示波器上量它们之间的死区间隔。可以说,差分探头是玩逆变器的必需品,光买示波器不够,这笔预算别省。
5.3 空载波形畸变的排查链路:死区、母线电容、地线干扰
我遇到过这样一个典型问题:空载输出线电压波形明显变形,半波出现平台,负载一上去更差。完整的排查过程可以复现给大家参考。
第一步,先量母线电压。发现空载母线310V稳定,带载掉到270V左右,说明母线电容不足。粗略估算母线电容有个经验公式:C ≈ P/(2×f_line×ΔV×Vdc)。P=500W、f_line=50Hz、母线纹波允许ΔV=20V、Vdc=310V时,C≈500/(100×20×310)≈800μF。如果实际只放了220μF,那肯定不够,带载时交流成分直接混到输出电压里。我加大电容后,带载母线压降明显改善。
第二步,再查死区效应。把死区临时调小到硬件允许的极限,看波形会好一点,这说明死区造成的电压损失不可忽略。但我不能一直靠缩小死区保波形,最终做了简单的死区补偿,按电流极性在占空比上叠加减补偿量。
第三步,确认测量方法没出问题。用差分探头测量,避免普通探头地线夹在不同相上引入错误波形。很多人空载“看到”的畸变其实是测量方式问题。
5.4 带电机负载的低速抖动和异响从哪里来
空载正常不等于带电机正常。低速运行时电机往往会一顿一顿,还伴随“咔哒”声。原因是低速时调制比M很小,死区电压损失占比大,电流波形过零点附近畸变严重,转矩脉动大。开环SPWM解决这个问题的能力有限,我的做法是加电流闭环:用霍尔电流传感器测两相电流,经过坐标变换后走PI调节,让实际电流跟踪目标电流。电流环本质上在帮SPWM“纠正”死区和死区补偿不准带来的误差。
如果你只是做开环验证,至少要把死区补偿接上。我的实测结论是:死区补偿在中高速、中大电流下效果一般,低速轻载下效果显著。这也是为什么几乎所有像样的变频器都有电流采样和电流环,因为死区不是唯一误差源。
5.5 程序跑飞时怎么防炸管:硬件故障封锁必须有
控制软件跑飞,这在调试过程中几乎必现。跑飞后PWM引脚可能是任意状态,如果刚好把所有上管或所有下管同时开通,不会直通但输出会异常;最怕的是上下管驱动同时有效,瞬间炸管。
所以逆变器一定要有独立的硬件故障封锁通路。用比较器采样母线电流或输出电流,一旦超过阈值,硬件电路直接封锁所有PWM输出,把六个管子全部强制关断,这个动作不经过MCU,也不需要软件配合。MCU这边还有软件保护,比如母线电压过压、过温、寄存器超限,但软件保护的响应速度不够快,不能用来防直通。驱动器芯片自身的互锁功能也要开启,防止上下管驱动信号同时为高。
另外,MCU复位期间PWM引脚是高阻还是下拉,决定了一上电是否会有危险。我现在的做法是:PWM引脚默认配置为低电平有效关断,同时驱动电路输入端加上下拉电阻,确保MCU还没初始化时管子处于关断状态。这个细节救了我不止一次。
6. 滤波、保护与可靠性设计:让逆变器从“能转”到“好用”
6.1 LC滤波器设计:把PWM脉冲还原成正弦波
如果负载是电机,电机绕组本身的电感就是天然滤波器,可以不要外加LC。但如果输出要直接接普通交流负载,就必须加LC滤波器。设计目标是让基波50Hz通过、高频脉冲被衰减,所以LC截止频率要远高于基波、远低于载波。
截止频率公式:
f_c = 1 / (2π√(L × C))
工程上取载波频率的1/10到1/5比较合适。载波16kHz时,截止频率大约1.5kHz~3kHz。电感量要限制高频纹波电流在额定电流20%~30%左右,电容量要兼顾无功电流。
举一个250W样机的设计:输出线电压190V、额定电流约0.76A,取L=5mH、C=2.2μF,计算截止频率约1.5kHz,对16kHz载波衰减明显。但电容带来的无功电流有2π×50×2.2μF×311V≈0.21A,约占额定的28%,还能接受。电容再大,逆变器就要额外输出无功电流,硅器件的损耗和发热都会增加,所以要平衡。
LC滤波还有一个隐蔽问题:与后级容性负载并联可能振荡。带载测试时如果输出电压出现不稳定振荡,可以在控制里加入等效阻尼,或者把电容取值稍微减小。开环情况下,LC振荡只能靠散热电阻之类的阻尼消耗能量,所以别指望滤波电容越大越好。
6.2 保护电路怎么搭:过流优先,过压次之,过温托底
逆变器的保护分层次,我按优先级排了这么一张表:
| 保护对象 | 采样点 | 推荐动作 | 复位方式 |
|---|---|---|---|
| 过流/直通 | 母线电流霍尔、采样电阻、每相电流 | 硬件立即封锁PWM输出 | 掉电或手动复位 |
| 母线过压 | 母线电压分压采样 | 封锁输出、开启泄放电阻 | 电压恢复正常后自动 |
| 母线欠压 | 母线电压分压采样 | 停机并报错,防止低电压误动作 | 重新上电 |
| 过温 | IGBT/散热器热敏电阻 | 降额运行或停机 | 温度回落后恢复 |
硬件过流保护必须比软件快。硬件比较器从电流超阈值到封锁PWM,目标控制在微秒级,这样才能真正防止直通和短路损坏。软件ADC采样和比较通常数十微秒,只能作为后备。另外,封锁逻辑要设计成锁存型:动作后即便干扰消失也保持封锁,直到人工确认排除故障后复位。如果设计成自动恢复,故障期间反复重启,管子很快就会过热损坏。
6.3 软启动、泄放与共模噪声:细节决定可靠性
母线电容上电瞬间几乎是短路的,如果不加限制,整流桥和保险丝会在合闸瞬间承受巨大冲击电流。常规做法是上电电阻串联在母线回路里,等电容充到预设电压后再继电器短接电阻。我第一次直接上电时,母线电容充电电流把启动电阻外面的漆皮都烧黑了。
泄放电阻也不能省。断电后母线电容上的高压能保持很久,人摸上去很危险。母线两端并接泄放电阻,阻值和功率的选择按“断电后5秒内放到安全电压36V以下”来算,同时要注意正常工作时泄放电阻一直耗电,不能取太小。
共模噪声的问题在变频器应用里很突出。上下管切换时dv/dt很高,通过管子的寄生电容和电机对地分布电容形成共模电流,流回控制板会造成误触发、ADC采样跳变。应对手段我在实际项目里用了这么几个:驱动信号全部隔离、控制板和功率板的地只在一点相连、传感器信号用屏蔽线并单端接地、母线上加共模电感。这些问题不是测试时才发现,布局阶段就要留好位置。
6.4 散热与布局经验:热量算出来,功率回路走线尽量短
六个开关管的损耗可以分成通态损耗和开关损耗。以IGBT为例,粗略计算:
P_loss ≈ n × (Vce × I_avg + f_sw × E_sw)
Vce是饱和压降,I_avg是单周期平均电流,E_sw是开关一次的能量损耗。如果算出总损耗20W,散热器热阻要满足:
Rth ≤ (Tj_max - Ta) / P_loss - Rth_jc - Rth_ch
其中Tj_max一般不超过125℃,Ta按环境最高40℃算,器件结壳热阻和壳散热器热阻查手册。别让管子温度逼近上限,长期高温工作下寿命衰减非常快。
布局上最核心的一条是:功率回路面积尽量小。母线正极、开关管、输出、母线负极之间的环路面积越小,寄生电感就越小,关断尖峰越小。母线电容要紧贴桥臂安装,驱动走线尽量短,强电和弱电分区。这条经验可能比选贵的器件还管用,因为很多所谓“炸管”其实是尖峰电压超耐压,根本原因就是回路寄生电感太大。
最后说点实在的。我现在做逆变器样机的流程固定是:先手算应力,画原理图时就预留故障封锁管脚;低压验证通过后才上母线电压;每次只改一个参数,波形截图存档,改完对比。这套流程听起来慢,实际上比反复炸管快得多。三相SPWM逆变器这个东西,原理学起来不难,真正门槛是每一层细节:死区算对没有,隔离做好没有,滤波参数和负载匹配没有。按本文第1到第6节的顺序走一遍,你也能少走一大半弯路。