
1. 从一块烧掉的驱动板说起为什么三相全桥布局值得单独拎出来讲很多人第一次做无刷电机驱动注意力全在代码上——FOC算法、SVPWM调制、霍尔换向逻辑觉得只要算法对了电机就能转。结果板子一上电管子炸了或者电机转起来噪声大得离谱再或者低速时抖动得像筛糠。回头查代码查了半天最后发现根子在PCB布局和死区时间上。我这些年经手的无刷驱动板子从几十瓦的小云台到几千瓦的工业伺服烧过的MOSFET加起来能铺满一张A4纸。总结下来功率级布局和死区时间设置是硬件层面最容易翻车的两个点而且它们有个共同特征代码里看不出来示波器上才现原形。这篇内容就是围绕6个MOSFET构成的三相全桥展开把布局思路和死区时间的来龙去脉讲透。适合正在画第一块无刷驱动板的朋友也适合已经能跑起来但想搞清楚“为什么这么设计”的进阶玩家。我不打算只给结论每个选择背后的逻辑都会拆开说包括我自己踩过的坑。先明确一个基本盘三相全桥由三个半桥组成每个半桥有上下两个MOSFET共6个管子。电机三相分别接在三个半桥的中点。通过控制6个管子的开关顺序和占空比就能在电机三相上产生旋转磁场。听起来简单但6个管子怎么摆、驱动走线怎么走、死区给多少每一个都直接影响效率和可靠性。2. 6个MOSFET的选型逻辑不是参数越高越好2.1 耐压与电流的余量怎么留选MOSFET第一个看耐压。母线电压如果是24V管子的VDS至少选40V以上48V母线就选75V或100V。为什么不是刚好选24V或48V因为电机是感性负载关断瞬间会产生尖峰电压加上走线寄生电感实际管子承受的电压可能是母线的1.5到2倍。我一般按母线电压的2倍来选耐压24V系统用40V或60V48V系统用100V。电流方面看的是持续电流和峰值电流。假设电机额定电流10A峰值可能到20A甚至30A。管子的ID额定值要覆盖峰值但更关键的是看RDS(on)和热阻。RDS(on)决定了导通损耗热阻决定了热量能不能散出去。有个常见误区只看ID不看热阻。实际上同样标称30A的管子封装不同热阻差好几倍实际能扛的持续电流可能差一半。2.2 RDS(on)与Qg的权衡RDS(on)越小导通损耗越低但通常意味着芯片面积越大Qg栅极总电荷也越大。Qg大开关损耗就高驱动电路负担也重。这两个参数是跷跷板关系。低频PWM比如20kHz以下可以偏向低RDS(on)因为导通损耗占主导。高频PWM比如40kHz以上就要兼顾Qg否则开关损耗会急剧上升。我一般这样估算先算导通损耗P_cond I² × RDS(on) × D再算开关损耗P_sw ≈ 0.5 × VDS × ID × (tr tf) × fsw两者相加看总损耗再结合热阻算结温。2.3 封装选择TO-220还是贴片TO-220直插封装热阻低方便加散热片适合大功率场合。贴片封装如TO-252、TO-263、PowerPAK等节省空间但散热依赖PCB铜箔。我个人的经验是持续电流超过15A的场合优先考虑TO-220或TO-247低于10A可以用贴片加足够的铺铜。贴片管子的散热焊盘一定要大面积铺铜并且打过孔到背面铜层。过孔不是随便打几个就行要算热阻。一个0.3mm孔径的过孔热阻大约在100°C/W左右打10个并联能把热阻降到10°C/W。如果背面还有铜层效果更好。3. 三相全桥的PCB布局电流路径决定成败3.1 半桥的功率回路面积要最小每个半桥的功率回路是母线电容正极 → 上管漏极 → 上管源极 → 下管漏极 → 下管源极 → 采样电阻如果有→ 母线电容负极。这个回路里电流在开关瞬间变化率极高回路面积越大寄生电感越大尖峰电压越高。布局时上下管要尽量靠近母线电容要尽量靠近半桥。理想情况下母线电容的高频去耦电容比如MLCC就放在半桥旁边距离不超过5mm。电解电容可以稍远但也要在同一个功率区域内。我见过不少板子把母线电容放在板子另一头结果开关尖峰高得吓人管子耐压不够直接炸。后来把MLCC挪到半桥旁边尖峰立刻降了一半。3.2 三个半桥的排列方式三个半桥在PCB上的排列有两种常见方式一字排开和品字形排列。一字排开适合散热器统一安装但三相走线长度不一致会导致三相阻抗不对称影响电流采样精度和电机运行平稳性。品字形排列可以让三相走线等长但散热器安装麻烦一些。我的做法是如果功率不大每相10A以下优先品字形保证三相对称。如果功率大需要加散热器就一字排开但通过调整走线宽度和长度尽量补偿对称性。3.3 相线走线宽度和过孔相线走的是电机电流宽度要按电流算。1oz铜厚下1mm线宽大约能走1A温升10°C。10A电流至少10mm宽或者用2oz铜厚减半。如果空间不够可以用多层并联走线但要注意层间电流分配均匀。过孔也是瓶颈。一个0.3mm孔径的过孔载流大约0.5A到1A大电流路径上要打足够多的过孔。我一般按每安培2到3个过孔来打比如10A就打20到30个过孔。3.4 驱动走线的隔离与抗干扰驱动走线是弱电信号功率走线是强电两者必须隔离。驱动走线不要和功率走线平行更不要从功率走线下方穿过。如果必须交叉尽量垂直交叉减少耦合。自举电容的走线尤其要注意。自举电容连接在驱动芯片的VB和VS之间VS又连接到半桥中点。这段走线要短而粗否则自举电压不稳上管驱动会出问题。我一般把自举电容放在驱动芯片旁边VS走线直接连到半桥中点中间不打过孔。4. 死区时间不是随便填个值就行4.1 死区时间到底在防什么死区时间是为了防止上下管同时导通造成直通短路。上下管同时导通时母线电压直接加在两个管子串联的路径上电流只受RDS(on)限制瞬间电流可能上百安培管子几微秒内就炸了。死区时间就是在关断一个管子之后延迟一段时间再开通另一个管子确保先关的管子已经完全关断。这个时间不能太短太短起不到保护作用也不能太长太长会导致输出波形畸变电机低速时抖动效率下降。4.2 死区时间的计算依据死区时间至少要大过关断延迟时间。关断延迟包括驱动芯片的传输延迟、MOSFET的关断延迟时间td(off)、关断下降时间tf。这几个参数在数据手册里都有。以常见的IR2104驱动加IRF3205为例IR2104的传输延迟约200nsIRF3205的td(off)约30nstf约50ns。加起来约280ns。所以死区时间至少设300ns。实际我会设500ns到1us留足余量。但死区时间也不是越大越好。假设PWM频率20kHz周期50us死区1us占周期的2%。这2%的时间里输出电压是不确定的会导致电流波形畸变。低速时反电动势小这个畸变占比更大所以低速抖动更明显。4.3 死区时间对低速性能的影响低速时电机反电动势很小死区时间造成的电压误差占比大。假设母线24V死区1usPWM周期50us死区造成的平均电压误差约24V × (1us/50us) 0.48V。如果低速时相电压只有2V这0.48V就是24%的误差电流波形严重畸变电机抖动。解决办法有两个一是减小死区时间用更快的驱动芯片和MOSFET二是做死区补偿在软件里根据电流方向补偿死区造成的电压误差。死区补偿需要知道电流方向用霍尔电流传感器或采样电阻都能做。4.4 死区时间的实测方法死区时间设了之后怎么验证最直接的方法是用示波器看上下管的栅极波形。两个探头的地夹在一起分别接上下管栅极看两个波形的死区时间。注意示波器探头要选高压差分探头或者做好隔离否则会短路。另一个方法是看半桥中点的电压波形。死区期间中点电压处于悬浮状态波形上会有一个平台。平台宽度就是死区时间。这个方法更安全不需要直接测栅极。5. 自举驱动电路上管驱动的关键细节5.1 自举电容的选型自举电容给上管驱动提供浮动电源。选型主要看容量和耐压。容量要足够大能在上管导通期间维持驱动电压。一般按Qg来算C_boot ≥ 10 × Qg / V_boot。假设Qg50nCV_boot12VC_boot ≥ 10 × 50nC / 12V ≈ 42nF。实际选100nF到1uF。耐压要大于母线电压加驱动电压。24V母线加12V驱动耐压至少36V实际选50V以上。电容类型选X7R或X5R陶瓷电容ESR低高频特性好。5.2 自举二极管的选型自举二极管要从驱动电源向自举电容充电反向耐压要大于母线电压。正向电流要能承受自举电容的充电电流。选快恢复二极管或肖特基二极管反向恢复时间短减少开关损耗。我一般选耐压100V、电流1A的快恢复二极管比如ES1J或US1M。肖特基二极管反向漏电流大高温下漏电流更严重可能导致自举电容电压下降所以高温场合慎用。5.3 自举电路的常见问题自举电路最常见的问题是自举电容充不满电。原因可能是自举二极管反向漏电大、自举电容容量不够、下管导通时间太短来不及充电。下管导通时间太短的情况出现在高占空比时。上管导通时间长下管导通时间短自举电容放电多充电少电压逐渐下降。解决办法是限制最大占空比保证下管有足够的导通时间或者用独立电源给上管驱动供电。6. 电流采样与保护别等炸管了才后悔6.1 采样电阻的位置选择电流采样电阻可以放在三个位置母线负极、半桥下管源极、电机相线。母线负极采样最简单一个电阻采总电流但无法区分是哪一相的电流。半桥下管源极采样可以采到每相电流但下管源极有开关噪声需要好的滤波。相线采样最准确但需要隔离或高压运放成本高。FOC控制一般用半桥下管源极采样因为需要每相电流做坐标变换。采样电阻要选低温度系数的比如锰铜电阻或合金电阻温度系数低于50ppm/°C。6.2 采样信号的滤波采样电阻上的电压信号很小10A电流用0.01Ω电阻只有0.1V。这么小的信号容易受开关噪声干扰。需要在采样电阻两端加RC滤波截止频率要高于电流环带宽但低于PWM频率。假设PWM频率20kHz电流环带宽2kHzRC截止频率可以设10kHz。R1kΩC15nF截止频率约10.6kHz。注意RC滤波会引入相位延迟在电流环里要补偿。6.3 过流保护的响应时间过流保护要快慢了管子就炸了。比较器响应时间加驱动关断延迟总共要控制在几微秒内。我一般用比较器直接触发驱动芯片的关断引脚不经过MCU因为MCU中断响应太慢。比较器阈值按峰值电流的1.5倍设。比如峰值30A阈值设45A。采样电阻0.01Ω阈值电压0.45V。比较器输出直接拉到驱动芯片的SD引脚硬件关断。7. 实测中遇到的几个典型问题与排查过程7.1 上电就炸管直通短路的排查第一次上电炸管最常见的原因是直通。排查步骤先不接电机只给驱动板供电用示波器看上下管栅极波形。如果发现上下管有同时为高电平的时刻说明死区时间不够或者驱动芯片有问题。我遇到过一次死区时间设了1us但驱动芯片的输入信号有毛刺导致上下管瞬间同时导通。后来在MCU输出和驱动芯片输入之间加了RC滤波毛刺消失问题解决。7.2 电机低速抖动死区时间过大的排查电机能转但低速抖动先看死区时间。用示波器看半桥中点波形如果死区平台很明显说明死区时间偏大。逐步减小死区时间直到抖动消失或达到最小值。但死区时间不能无限减小要保证大于关断延迟。我一般从1us开始试逐步减到500ns、300ns找到不炸管的最小值然后加50%余量。7.3 管子发热严重开关损耗的排查管子发热严重但电流不大多半是开关损耗大。用示波器看栅极波形如果上升下降沿很缓说明驱动电流不够管子工作在放大区时间长损耗大。解决办法是减小栅极电阻增大驱动电流。但栅极电阻太小会导致振铃需要在栅极串联小电阻加二极管加速关断。我一般用10Ω到22Ω的栅极电阻具体值用示波器调。7.4 自举电压不稳自举电路的排查上管驱动不正常先查自举电压。用示波器看自举电容两端电压如果电压波动大或逐渐下降说明自举电路有问题。检查自举二极管方向、自举电容容量、下管导通时间。我遇到过一次自举二极管焊反了上管完全打不开电机只靠下管续流二极管工作效率极低。后来检查原理图和实物发现二极管方向搞反了换过来就好了。8. 从原理图到实物几个容易忽略的细节8.1 母线电容的选型与布局母线电容分两类大容量电解电容和高频MLCC。电解电容提供低频能量缓冲MLCC提供高频去耦。电解电容按每安培100uF选MLCC按每半桥10uF到100uF选。布局上MLCC要尽量靠近半桥电解电容可以稍远。MLCC的接地回路要短最好直接连到半桥下管源极。我一般把MLCC放在半桥正上方用过孔直接连到功率层。8.2 栅极电阻的功率栅极电阻虽然阻值小但瞬间电流大。驱动电压12V栅极电阻10Ω峰值电流1.2A。电阻功率按I²R算1.2² × 10 14.4W但这是瞬间功率平均功率小得多。实际选0805或1206封装的电阻就够了但要注意脉冲功率承受能力。8.3 死区时间的软件配置死区时间在MCU里配置不同MCU配置方式不同。以STM32为例用高级定时器的死区配置寄存器。死区时间 死区时钟周期 × 死区分频系数。假设定时器时钟72MHz死区分频系数1死区寄存器值72死区时间 72 / 72MHz 1us。配置时要注意死区寄存器的范围不同系列MCU范围不同。STM32F103的高级定时器死区寄存器是8位最大255对应最大死区时间取决于时钟分频。8.4 驱动芯片的供电驱动芯片供电要干净最好用LDO单独供电不要和MCU共用。驱动芯片的电源引脚要加去耦电容100nF加10uF组合。自举电路的自举二极管和电容要靠近驱动芯片的VB和VS引脚。我见过一次驱动芯片供电和MCU共用电机一转MCU就复位原因是驱动芯片开关噪声通过电源耦合到MCU。后来给驱动芯片单独加LDO问题解决。9. 一些实测数据和经验值9.1 死区时间与PWM频率的搭配PWM频率推荐死区时间说明10kHz1us-2us低频对死区不敏感可放宽20kHz500ns-1us常用频率兼顾效率和噪声40kHz300ns-500ns高频需减小死区否则波形畸变80kHz100ns-300ns需要快速驱动和低Qg管子9.2 栅极电阻的参考值MOSFET Qg推荐栅极电阻说明20nC10Ω-22Ω小管子驱动容易20-50nC5Ω-15Ω中等管子兼顾速度和振铃50-100nC2Ω-10Ω大管子需要大驱动电流100nC1Ω-5Ω很大管子可能需要推挽驱动9.3 母线电容的参考值母线电压电解电容MLCC说明12V100uF/A10uF/半桥低压小功率24V100uF/A22uF/半桥常用电压48V47uF/A47uF/半桥高压需注意耐压100V33uF/A100uF/半桥高压大功率10. 最后聊几句个人体会做无刷驱动这些年最大的感受是硬件问题永远比软件问题更隐蔽也更致命。代码写错了电机不转你能立刻发现布局错了死区设错了电机可能转但转不久或者转得不好等你发现的时候管子已经炸了。我现在的习惯是每次画新板子功率回路一定先画画完自己检查三遍。死区时间一定从大往小调找到临界值再加余量。上电一定先不接电机用示波器看波形确认没问题再接电机。还有一点数据手册要仔细看但不要全信。手册上的参数是理想条件下的实际用起来要打折扣。比如RDS(on)是在25°C测的结温100°C时可能翻倍。热阻是在特定散热条件下测的实际PCB散热条件不同热阻可能差很多。留余量永远留余量。如果你正在做第一块无刷驱动板建议先用低电压小电流调试比如12V、5A跑通了再往上加。炸几个管子是正常的但别炸大管子大管子贵。