
1. 从一块驱动板烧毁说起为什么我要重新啃三相全桥几年前我第一次做三相电机驱动板子焊好、程序烧进去、上电电机没转功率管先炸了。事后复盘问题出在我对三相全桥拓扑的理解只停留在六个开关管围成一圈这种程度——上下桥臂直通、死区没设、自举电容选错任何一个都能让一块板子当场报废。那次之后我才老老实实把三相全桥的每一个细节重新过了一遍。这篇是三相逆变器系列的第一篇只干一件事把三相全桥拓扑讲透。它是三相逆变器、变频调速器、永磁同步电机FOC驱动、光伏并网逆变器这些东西共同的功率级骨架。不管后面你要做SPWM、SVPWM、死区补偿还是过调制脚下踩的都是这个拓扑。所以这一篇不聊算法只聊硬件结构和它带来的约束——把这些搞明白后面写调制代码时你才知道每一行在跟什么物理现实打交道。适合谁看刚接触电机驱动或逆变器的电子/嵌入式工程师、做电力电子课程设计的学生、以及像我当年一样能跑通Demo但说不清为什么的实践派。我会尽量用生活化的类比把桥臂、死区、自举这些概念讲清楚同时给出可以直接抄的参数和排查思路。2. 三相全桥到底长什么样六个开关管的空间关系2.1 从单相半桥到三相全桥的推演先别急着看三相从最简单的单相半桥说起。一个半桥就是两个开关管上下串联中间引出一个输出点。上管接正母线下管接负母线输出点要么被上管拉到正母线电位要么被下管拉到负母线电位。这就是一个能输出两电平的一相。三相全桥本质就是三个半桥并联共用同一条直流母线。三个半桥的中点分别引出U、V、W三根线接到电机的三相绕组上。所以整个拓扑一共六个开关管命名习惯是U相上管记作Q1或T1、S1U相下管Q2V相上管Q3V相下管Q4W相上管Q5W相下管Q6。不同教材编号方式略有差异但每相一上一下这个结构是固定的。用生活类比把直流母线想象成一座楼的一楼负和顶楼正每个半桥就是一部电梯电梯轿厢中点要么停在顶楼要么停在一楼没有中间楼层。三相就是三部电梯各自独立上下但都在这同一栋楼里跑。电机绕组接在三个轿厢之间靠三部电梯的相对位置差产生旋转磁场。2.2 开关状态与电压矢量的对应关系六个开关管每个只有通/断两种状态理论上2的6次方等于64种组合。但有一个硬约束同一相的上管和下管绝对不能同时导通否则直流母线被直接短路这就是所谓的直通shoot-through后果是瞬间大电流烧管。排除掉每相同时导通的情况有效状态剩下2的3次方等于8种。这8种状态里有两种是全上或全下——三相中点全部接正母线或全部接负母线。这两种状态下电机三相绕组之间没有电位差不产生有效电压叫零矢量零状态。剩下6种状态每个对应一个特定的空间电压矢量方向彼此相隔60度构成一个正六边形。这就是后面SVPWM要用的六个基本矢量。这里有个关键认知三相全桥的输出不是三个独立的电压而是三个中点相对于某个参考点的电位。电机绕组感受到的是线电压相间电压也就是两个中点之间的差。所以真正决定电机行为的是三相中点电位的组合而不是单相绝对电位。这个视角转换非常重要很多人卡在为什么单相电压算出来是阶梯波电机却转得很顺这个问题上就是因为没意识到电机看的是线电压。2.3 为什么是全桥而不是别的结构有人会问为什么不用三个独立的半桥电源分别驱动三相因为电机三相绕组是星形或三角形连接的它们共享一个中性点或形成回路必须由同一套母线供电才能保证电压关系正确。用三个独立电源相位和幅值很难严格同步而且成本高、体积大。三相全桥用一个直流母线、六个开关管就实现了三相独立控制这是它成为工业标准的原因。它的功率器件数量最少、母线利用率最高、控制自由度足够。代价就是那六个管子必须严格协调任何一个时序错误都可能直通。这个高收益伴随高约束的特点贯穿了整个逆变器设计。3. 死区那个让无数新手炸管的时间缝隙3.1 死区的物理来源开关管不是理想开关理想开关管是瞬间通断的但现实中的IGBT、MOSFET都有开通延迟和关断延迟而且关断通常比开通慢。假设U相上管正在导通我要把它关掉、把下管打开。如果我在发上管关断信号的同一时刻就发下管开通信号上管可能还没完全关断拖尾电流下管就已经导通了这一瞬间上下管同时导通母线直通。解决办法就是死区时间dead time在关断一个管子之后延迟一小段时间再开通另一个管子。这段时间里上下管都处于关断状态中点电位由负载电流通过体二极管续流决定。死区是硬件和软件共同保证的安全机制是三相全桥能安全工作的前提。死区时间典型值IGBT模块常用2到5微秒MOSFET因为开关速度快常用几百纳秒到1微秒。具体取值要看器件的关断拖尾时间、驱动电路的关断能力、以及母线电压和电流等级。母线电压越高、电流越大死区通常要留得越宽。3.2 死区带来的副作用波形畸变与电压损失死区不是免费的。它虽然防了直通但会让实际输出电压偏离理想值。原因在于死区期间中点电位不由开关管决定而由负载电流方向决定。如果电流从逆变器流向电机正电流死区期间下管体二极管续流中点被拉到负母线如果电流反向中点被拉到正母线。这就导致实际输出电压比理想值多了一个或正或负的偏差偏差方向取决于电流方向。这个偏差在每个开关周期都出现一次累积起来会造成输出电压畸变、电流波形过零畸变、低速时转矩脉动。在FOC控制里低速小电流时死区影响尤其明显因为此时理想电压本身就小死区造成的偏差占比大。这就是为什么热词里死区补偿永磁同步电机死区补偿这么受关注——不补偿低速性能上不去。3.3 死区时间怎么定一个可落地的计算思路死区时间不能拍脑袋定我一般按这个流程走查器件数据手册找到关断延迟时间td_off和电流下降时间tf两者之和是关断过程的总时长。查驱动芯片的传输延迟和延迟匹配驱动能力越弱、延迟越大死区要留越宽。考虑温度影响高温下关断时间会变长留20%到50%余量。考虑母线电压和寄生电感高dv/dt会加剧拖尾。一个粗略公式死区时间 ≈ (td_off tf) × 1.5 驱动延迟差。比如某IGBT的td_off是1.2微秒、tf是0.3微秒驱动延迟差0.2微秒那死区取(1.20.3)×1.50.2 ≈ 2.45微秒实际取2.5微秒比较稳妥。注意死区设得越大越安全但畸变也越严重。这是一个安全与性能的权衡不是越大越好。很多新手为了保险把死区设到10微秒结果电机低速抖得厉害还以为是算法问题。3.4 死区在代码里怎么落地以常见的定时器互补PWM输出为例死区通常由硬件自动插入。以STM32的CubeMX配置为例热词里cubemx设置死区就是这个场景在定时器配置里选择互补输出通道使能Dead Time填入计算好的死区计数值。计数值 死区时间 × 定时器时钟频率。比如定时器时钟72MHz死区2.5微秒计数值就是180。// 以STM32 HAL为例配置互补PWM死区 // 定时器时钟72MHz死区2.5us - 180个计数 htim1.Init.DeadTime 180; // 具体寄存器位域需按手册换算 // 使能互补输出 HAL_TIMEx_PWMN_Start(htim1, TIM_CHANNEL_1);不同芯片死区寄存器的位域编码不一样有的把死区时间分成几段用不同步长表示一定要对着参考手册算别直接填时间值。我见过有人把2.5微秒直接写进寄存器结果实际死区是几十微秒电机根本转不起来。4. 自举电路高边驱动那道绕不过去的坎4.1 高边开关为什么需要特殊驱动三相全桥的六个管子里三个下管的源极或发射极接在负母线上电位固定驱动起来简单。但三个上管的源极接在中点上而中点的电位是跳动的——上管导通时接近正母线下管导通时接近负母线。这意味着上管的栅极驱动电压必须以中点为参考而中点电位在剧烈变化。如果直接用固定参考的驱动上管导通时栅源电压可能不够关断时又可能过压。所以高边驱动需要一个浮动电源它的参考点跟着中点走。自举电路就是实现这个浮动电源最经济的方式。4.2 自举电容和自举二极管的工作过程自举电路的核心是一个自举电容和一个自举二极管。自举电容一端接驱动芯片的VB脚另一端接中点VS脚。自举二极管从驱动电源通常是15V接到VB脚。工作过程分两个阶段当下管导通时中点被拉到负母线此时自举二极管导通15V电源通过二极管给自举电容充电电容两端电压接近15V。当需要开通上管时下管关断中点电位上升自举电容的参考点跟着抬升电容上储存的15V就变成了以中点为参考的浮动电源给上管栅极供电。二极管此时反向截止防止电容电荷倒灌回电源。用生活类比自举电容就像一个随身充电宝下管导通时它插在墙上充电上管导通时它拔下来带着走给上管供电。这个充电-带着走的循环每个开关周期重复一次。4.3 自举电路的三个经典坑坑一占空比受限。上管不能一直导通因为自举电容需要下管导通时充电。如果某个上管占空比接近100%自举电容长时间得不到充电电压跌落上管驱动不足。这就是为什么有些场合比如需要长时间全上管导通要用隔离电源而不是自举。SVPWM的七段式里每个周期都有零矢量下管有机会导通所以自举一般够用但极端调制比下要留意。坑二自举电容选太小。电容太小上管导通期间电荷被栅极消耗电压跌落快。经验值自举电容取栅极电荷的10到20倍以上。比如栅极电荷100nC自举电容至少1微法实际常用1到10微法。同时要选低ESR的陶瓷或钽电容。坑三自举二极管选错。二极管要选快恢复的反向恢复时间要短否则在高频开关下损耗大、发热。耐压要高于母线电压。常见选超快恢复二极管或碳化硅肖特基。提示调试时如果发现上管发热异常、驱动波形顶部塌陷先量自举电容两端电压。如果低于12V基本就是自举充电不足检查下管最小导通时间是否够、自举电容和二极管是否选对。5. 从拓扑到调制SPWM和SVPWM在桥臂上怎么落5.1 SPWM最直观的桥臂控制方式SPWM正弦脉宽调制的思路很直接给每一相一个正弦参考波和一个三角载波比较比较结果决定该相上管导通还是下管导通。参考波大于载波时上管导通中点输出正母线小于时下管导通中点输出负母线。三相参考波互差120度就得到三相SPWM。SPWM的优点是原理简单、实现容易用普通定时器就能做。缺点是母线电压利用率低——最大输出线电压幅值只有母线电压的0.866倍也就是√3/2。因为SPWM的调制波幅值不能超过载波幅值否则会过调制而三相线电压又比相电压小√3倍算下来就损失了15%左右的母线电压。5.2 SVPWM把六个矢量用起来SVPWM空间矢量脉宽调制换了个视角不去单独控制每一相而是把三相看成一个整体用前面说的六个基本矢量和两个零矢量去合成目标电压矢量。目标矢量落在哪个60度扇区就用该扇区相邻的两个基本矢量加零矢量按伏秒平衡原理分配作用时间。SVPWM的好处是母线电压利用率比SPWM高约15%最大输出线电压幅值能达到母线电压的1.0倍。同时它的谐波特性更好、开关次数更优。代价是算法复杂要判断扇区、算作用时间、排七段式或五段式波形。热词里svpwm扇区svpwm控制的7段式波形五段式svpwm说的都是这些细节。这里不展开SVPWM算法那是系列后续的内容。但要说清楚一点SVPWM和SPWM在拓扑层面是完全一样的都是控制那六个开关管区别只在怎么算每个管子的导通时间。拓扑是硬件调制是软件两者解耦。5.3 两种调制方式的关键参数对照对比项SPWMSVPWM母线电压利用率0.8661.0算法复杂度低中高最大线性调制比1.01.155谐波性能一般较好实现载体普通定时器需算扇区和时间低速性能一般较好这张表不是让你二选一而是让你知道什么时候用哪个。简单应用、成本敏感、对电压利用率要求不高SPWM够用。追求性能、要做FOC、要榨干母线电压SVPWM更合适。很多变频器两种都支持运行时切换。6. 实测中最容易翻车的几个点6.1 上下管直通最贵的错误直通是三相全桥的头号杀手。除了死区没设还有几个隐蔽原因驱动芯片使能时序不对上电瞬间两个管子同时被驱动软件里PWM初始状态没设好复位后默认全高互补输出通道配置错误死区没生效。我的习惯是上电前先用示波器看六路驱动波形确认任意时刻同一相上下管不会同时为高再上母线电压。6.2 体二极管续流与反向恢复死区期间和开关瞬间负载电流会通过开关管的体二极管续流。MOSFET的体二极管反向恢复特性较差在高频硬开关下会产生很大的反向恢复电流造成损耗和EMI。IGBT通常外反并联快恢复二极管情况好一些。如果发现开关管发热集中在死区附近要考虑体二极管反向恢复的影响必要时用软开关或调整死区。6.3 母线电容与寄生电感三相全桥的开关动作会在母线上产生高频电流脉冲需要母线电容就近提供。电容选小了母线电压波动大电容ESL大了高频去耦效果差。同时母线的寄生电感会在开关瞬间产生电压尖峰可能超过管子耐压。布局上要尽量缩短母线回路用叠层母排或紧耦合的电容布局。这些是硬件细节但直接决定拓扑能不能稳定工作。6.4 电流采样点的选择三相全桥的电流采样有几种方案三电阻采样每个下管串一个采样电阻、单电阻采样母线负端串一个、霍尔传感器。三电阻采样在下管导通时才能测到电流所以采样时刻要配合PWM状态。单电阻采样更省成本但需要特殊的采样时序和重构算法。采样点选错FOC的电流环直接崩。这个在后续讲电流环时再展开但拓扑阶段就要把采样电阻的位置和阻值定下来。7. 把拓扑吃透之后后面的事才顺回头看我当年炸管根本不是运气差是拓扑没吃透就急着写算法。三相全桥看着简单六个管子而已但死区、自举、直通、续流、母线去耦每一个都是实打实的工程约束。这些约束不是算法的敌人而是算法的前提——你写的每一行SPWM或SVPWM代码最终都要变成六个管子的开关时序而这时序必须尊重器件的物理特性。我个人在实际操作中的体会是先把功率级调通用固定占空比开环跑示波器看六路驱动和中点电压确认死区、自举、直通都没问题再上调制算法。这个顺序能帮你把硬件问题和软件问题分开省下大量返工时间。下一篇我会接着讲SPWM的具体实现和它在三相桥上的波形细节再往后是SVPWM的扇区判断和作用时间计算。拓扑这一关过了后面的路会顺很多。