1. 无刷电机驱动电路的整体设计思路
1.1 为什么选三相全桥加六颗MOSFET
搞无刷电机驱动,绕不开三相全桥这个拓扑。说白了,无刷电机定子上有三组绕组,每组绕组都需要能正向通电也能反向通电,才能让转子持续转起来。三相全桥就是六颗MOSFET组成的开关矩阵,每一相由上下两颗管子构成一个半桥,三个半桥合起来就是全桥。
为什么是六颗而不是三颗或者九颗?三颗只能做单向驱动,绕组电流没法反向,电机只能抖不会转。九颗属于冗余设计,成本和复杂度都上去了,除非是高压大功率场景需要并联管子分担电流,否则六颗是最经济的选择。我实测过用六颗IRF3205搭的三相全桥,驱动一个42BLF的直流无刷电机,24V供电下持续跑2A完全没问题。
六颗MOSFET的布局方式直接决定了驱动板的散热效果和开关性能。常见的做法有两种:一种是六颗管子一字排开,另一种是三相各自成组。一字排开的好处是走线简单,但缺点是三相之间的热耦合严重,中间那两颗管子温度明显比边上高。三相成组的方式,每相上下管紧挨着放,好处是半桥的回路面积小,寄生电感低,开关振铃小,但布局上需要更仔细地规划驱动信号的走线。
我个人的经验是,如果你的驱动板空间允许,优先选三相成组布局。每相的上管漏极接母线正极,下管源极接采样电阻再到地,中间点引出接电机绕组。这样每相的功率回路最短,实测开关波形的过冲能控制在母线电压的15%以内。如果是一字排开,过冲经常能到30%以上,长期运行对管子寿命有影响。
1.2 半桥驱动芯片的选型逻辑
六颗MOSFET不能直接拿单片机IO口去推,原因有两个:一是上管的源极电位是浮动的,当上管导通时源极接近母线电压,栅极需要比源极高10V左右才能完全导通,单片机IO口给不出这个电压;二是MOSFET的栅极电容不小,典型值在1nF到5nF之间,IO口的驱动电流只有几十毫安,开关速度会非常慢,开关损耗急剧增加。
所以必须用专门的半桥驱动芯片。常见的方案有IR2104、IR2110、EG2133这几款。IR2104是单通道半桥驱动,一颗芯片驱动一个半桥,三相需要三颗。它自带死区时间,典型值520ns,省去了自己算死区的麻烦。IR2110是双通道,一颗能驱动一个半桥的高低压侧,但死区需要外部逻辑控制。EG2133是国产替代,价格便宜,性能参数和IR2104接近,我最近几个项目都在用,实测下来很稳。
选驱动芯片的时候重点看三个参数:输出驱动电流、死区时间、耐压值。输出驱动电流决定了MOSFET的开关速度,IR2104的拉电流和灌电流都是130mA和270mA,驱动IRF3205这种Qg在60nC左右的管子,开关时间在100ns量级,够用。死区时间方面,IR2104内置的520ns对于大多数应用都偏保守,如果你用的是低Qg的管子,其实可以自己用IR2110加RC网络把死区做到200ns左右,效率能提升一两个百分点。耐压值必须大于母线电压,24V母线选600V的管子绰绰有余,但如果是72V以上的系统,建议选带自举二极管耐压更高的型号。
注意:IR2104的SD引脚是使能端,低电平关断输出。很多人第一次用的时候忘了拉高这个脚,结果驱动芯片没输出,查了半天以为是MOSFET坏了。我踩过这个坑,现在每次画板子都会在SD脚旁边标个高电平标记。
1.3 自举电容和自举二极管的选择
上管驱动靠的是自举电路,核心就两个元件:自举电容和自举二极管。自举电容的容值计算有个经验公式:Cboot ≥ 2 × Qg / ΔV,其中Qg是MOSFET的栅极电荷,ΔV是允许的自举电压跌落。以IRF3205为例,Qg典型值63nC,如果允许跌落0.5V,那Cboot至少需要252nF,实际选1μF的陶瓷电容就很稳妥。
自举二极管必须选快恢复管,反向恢复时间在100ns以内。常用的有1N4148、UF4007。1N4148的反向恢复时间4ns,电流200mA,对于大多数应用够用。但如果你的开关频率超过50kHz,建议用UF4007,它的反向恢复时间更短,损耗更低。我试过在100kHz开关频率下用1N4148,二极管发热明显,换成UF4007之后温度降了十几度。
自举电容的耐压要大于母线电压,一般选50V的X7R陶瓷电容。温度特性很重要,X7R在-55°C到125°C范围内容值变化不超过15%,而Y5V能变化80%以上,千万别用Y5V。我见过有人用Y5V的电容做自举,常温下能跑,一到冬天就启动不了,就是因为低温下容值掉得太厉害,自举电压不够。
2. 死区时间的计算与设置要点
2.1 死区时间到底在防什么
死区时间就是半桥上下管切换时,故意插入的一段两颗管子都关断的时间。为什么要这么做?因为MOSFET不是理想开关,关断需要时间。如果上管还没完全关断就打开下管,母线正极和地之间就通过上下管直接短路了,瞬间电流能到几百安培,管子直接炸。
这个短路电流有多大?假设母线电压24V,回路总电阻0.1Ω,那短路电流就是240A。IRF3205的脉冲电流额定值110A,持续不了几个微秒就热击穿了。所以死区时间不是可选项,是必须项。
死区时间太短,炸管风险高;太长,输出波形畸变严重,电机效率下降,噪音增大。我实测过,死区时间从200ns增加到1μs,电机空载电流从0.3A涨到0.5A,效率掉了将近10%。所以死区时间要卡在“刚好够用”的范围内。
2.2 死区时间的理论计算
死区时间的下限由MOSFET的关断时间决定。关断时间包括两部分:关断延迟时间和下降时间。以IRF3205为例,关断延迟时间td(off)典型值26ns,下降时间tf典型值43ns,加起来69ns。但这只是管子本身的特性,实际电路中驱动电阻、PCB走线电感都会影响关断速度。
一个更保守的计算方法是看栅极电荷的泄放时间。假设驱动电阻Rg=10Ω,MOSFET的输入电容Ciss=1500pF,那关断时间常数τ=Rg×Ciss=15ns。一般取5倍时间常数作为完全关断时间,就是75ns。再加上驱动芯片的传输延迟,IR2104的传输延迟典型值680ns,这个延迟在上下管切换时是共模的,会互相抵消一部分,但最坏情况下还是要留余量。
综合下来,对于IRF3205加IR2104的组合,死区时间设在300ns到500ns之间比较合理。IR2104内置的520ns稍微偏大,但胜在省心,不用自己调。如果你用IR2110自己搭死区,建议从300ns开始试,用示波器看半桥中点波形,确认没有直通电流再往下调。
2.3 用示波器实测死区时间的方法
理论算完必须实测验证。测死区时间需要同时看上下管的栅极驱动信号。把示波器两个通道分别接上管栅极和下管栅极,探头地接半桥中点。触发方式选上管栅极的下降沿,然后展开时间轴,看从 上管栅极降到10%到 下管栅极升到10%之间的时间差,这就是实际死区时间。
我实测的时候发现一个现象:IR2104标称520ns死区,但实际测出来只有480ns左右,而且上下管的死区时间不对称,上管关断到下管开通的死区是480ns,下管关断到上管开通的死区是550ns。这是因为自举电容充电需要时间,上管开通前自举电压还没完全建立。这个不对称性在低频下影响不大,但高频下会导致正负半周不对称,电机有轻微抖动。
提示:测死区时间一定要用差分探头或者两个单端探头做数学运算,直接用两个探头的地夹子夹不同位置会引入地环路,波形全是干扰。我一开始不懂,测出来的波形乱七八糟,后来换差分探头才看到真实情况。
2.4 死区时间对电机性能的实际影响
死区时间设置不当,最直接的表现是电机发热和噪音。死区太大,输出电压损失大,电机出力不足,为了达到同样的转速,控制器会自动加大电流,铜损增加,电机烫手。死区太小,直通风险高,管子温度飙升,严重时直接炸管。
我做过一组对比实验:同一个电机,同样负载,死区时间从200ns调到1μs,电机外壳温度从45°C升到62°C,噪音从58分贝升到65分贝。200ns的时候效率最高,但用示波器看半桥中点波形,关断瞬间有轻微振铃,说明裕量不够。最后定在350ns,效率比200ns时低了不到2%,但管子温度稳定在50°C以下,可靠性有保障。
还有一个容易被忽略的点:死区时间会影响低速时的转矩脉动。低速时反电动势小,死区导致的电压损失占比大,转矩脉动明显。如果你的应用对低速平稳性要求高,比如云台电机或者精密定位,死区时间要尽量小,同时选用Qg更小的MOSFET,比如AO3400这类SOT-23封装的管子,Qg只有几纳库仑,死区可以做到100ns以内。
3. 六颗MOSFET的布局与散热实操
3.1 PCB布局的功率回路最小化原则
六颗MOSFET在PCB上的布局,核心原则就一条:功率回路面积最小。功率回路指的是电流从母线电容正极出发,经过上管、电机绕组、下管,回到母线电容负极的路径。这个回路面积越大,寄生电感越大,开关瞬间的电压过冲越高。
以A相为例,母线电容放在板子一端,A相上下管放在另一端,那电流要走很长的路径,寄生电感可能有几十纳亨。开关时di/dt很高,假设100A/μs,20nH的电感就能产生2V的过冲。如果回路面积缩小一半,过冲也减半。
具体做法:母线电容紧挨着三相桥放置,每相的上管漏极和下管源极之间就近放一个高频去耦电容, typically 100nF到1μF的陶瓷电容。这个电容的作用是提供开关瞬间的高频电流,减少对母线电容的依赖。我习惯在每相半桥旁边放一个1μF的0805陶瓷电容,实测能把过冲从5V降到2V左右。
3.2 散热过孔和铜箔面积的计算
MOSFET的散热主要靠PCB铜箔。IRF3205的Rds(on)是8mΩ,通过2A电流时导通损耗是32mW,看起来不大,但如果是10A电流,损耗就是800mW,没有足够的铜箔散热,管子温度会很高。
铜箔的热阻计算有个经验值:1盎司铜厚,1平方英寸面积的铜箔,热阻大约是50°C/W。如果MOSFET的功耗是800mW,环境温度40°C,那铜箔面积至少需要1平方英寸才能把结温控制在100°C以下。实际设计中,我通常会在MOSFET的漏极和源极焊盘上打8到12个散热过孔,过孔直径0.3mm,间距1mm,这样能把热量传到板子背面,等效散热面积翻倍。
如果是贴片MOSFET,比如TO-252封装,焊盘本身不大,必须靠过孔和背面铜箔散热。我试过在TO-252焊盘下打9个过孔,背面铺2平方厘米的铜箔,10A电流下管子表面温度65°C,不加过孔的话能到90°C以上。
3.3 栅极驱动走线的注意事项
栅极驱动走线看着简单,其实坑不少。首先,驱动芯片到MOSFET栅极的走线要尽量短,最好控制在10mm以内。走线长了,寄生电感大,栅极波形振铃严重,可能导致MOSFET误导通。我见过有人把驱动芯片放在板子一边,MOSFET放在另一边,走线20mm,结果开关波形上冲下跳,电机一转就炸管。
其次,栅极电阻要靠近MOSFET放置,不能靠近驱动芯片。栅极电阻的作用是限制栅极充电电流,抑制振铃。如果电阻靠近驱动芯片,那电阻到MOSFET之间的走线还是会有寄生电感,振铃抑制效果打折扣。正确的做法是驱动芯片输出先到电阻,电阻另一端直接连MOSFET栅极,走线越短越好。
还有一点:上下管的栅极走线不要平行走太长距离,否则会通过寄生电容耦合,导致上下管同时导通。如果实在避不开,中间加一条地线做隔离。我画板子的时候习惯在上下管栅极走线之间铺一条地线,宽度0.5mm以上,实测能有效降低耦合。
3.4 电流采样电阻的放置位置
电流采样电阻一般放在下管源极和地之间,这样采样的是下管电流,也就是电机相电流。采样电阻的阻值选择要权衡:阻值大,采样信号强,但损耗大;阻值小,损耗小,但信号弱,容易被噪声淹没。
以2A相电流为例,如果选0.1Ω的采样电阻,采样电压是0.2V,损耗是0.4W,需要至少1W的电阻。如果选0.01Ω,采样电压只有20mV,损耗0.04W,但20mV的信号在开关噪声环境下很难采准。我一般选0.05Ω,采样电压100mV,损耗0.2W,用1206封装的合金电阻,温度系数50ppm,够用。
采样电阻的走线要开尔文连接,也就是从电阻焊盘的内侧引出两条独立的线到运放,一条走电流,一条走信号。这样能消除焊盘和走线电阻的影响。我试过不开尔文连接,采样误差有5%左右,开了之后误差降到1%以内。
4. 常见问题与排查技巧实录
4.1 上电就炸管的原因排查
上电炸管是最让人头疼的问题,一炸就是六颗管子一起炸,成本不低。根据我的经验,炸管原因按概率排序:直通短路占60%,过压击穿占25%,栅极过压占10%,其他占5%。
直通短路的原因又分几种:死区时间不够、驱动芯片故障、栅极电阻开路。排查方法:先不接电机,只给驱动板通电,用示波器看六路驱动信号。如果某一路信号异常,比如一直高电平或者一直低电平,那就是驱动芯片或者单片机的问题。如果六路信号都正常,但半桥中点有直通电流,那就是死区时间不够,需要加大死区。
过压击穿通常是母线电压尖峰导致的。电机急停或者换向时,绕组电感会产生反电动势,叠加在母线电压上,可能超过MOSFET的耐压值。解决方法是在母线加TVS管或者RC吸收电路。我习惯在母线电容旁边并一个SMBJ33A的TVS,24V系统用33V的钳位电压,实测能有效抑制尖峰。
栅极过压比较少见,但一旦发生就是灾难性的。驱动芯片输出一般是10V到15V,如果自举电容失效或者驱动芯片损坏,栅极电压可能超过20V,MOSFET的栅极氧化层击穿,管子永久短路。预防方法是栅极加一个18V的稳压二极管,钳位栅极电压。
4.2 电机抖动不转的调试步骤
电机抖动不转,说明换向逻辑有问题。无刷电机需要知道转子位置才能正确换向,位置检测靠霍尔传感器或者反电动势过零检测。如果是霍尔方案,先检查霍尔信号是否正常。用示波器看三个霍尔输出,手动慢慢转动电机,三个信号应该依次变化,相位差120度。如果某个霍尔信号不变,那就是霍尔坏了或者接线错了。
如果是无霍尔方案,靠反电动势过零检测,那低速时反电动势太小,检测不到,电机就会抖动。解决方法是用三段式启动:先强制换向把电机拖到一定转速,等反电动势足够大了再切换到过零检测。我调无霍尔驱动的时候,强制换向的频率从10Hz开始,每100ms增加5Hz,直到反电动势达到1V以上再切换,成功率很高。
还有一种情况是换向顺序错了。六步换向有六种状态,顺序错了电机就会抖动。正确的顺序是:AB、AC、BC、BA、CA、CB。用示波器看相电压波形,应该是六阶梯波,如果波形乱了,就是换向表写错了。
4.3 MOSFET发热严重的排查思路
MOSFET发热严重,先摸一下是哪个管子热。如果是下管热,多半是导通损耗大,检查Rds(on)是否选大了,或者散热不够。如果是上管热,可能是开关损耗大,检查开关频率是否太高,或者驱动电流不够。
开关损耗的计算:Psw = 0.5 × Vds × Id × (tr + tf) × fsw。假设Vds=24V,Id=2A,tr=100ns,tf=100ns,fsw=20kHz,那Psw=0.5×24×2×200e-9×20000=0.096W,很小。但如果fsw=100kHz,Psw就变成0.48W,是导通损耗的好几倍。所以高频应用必须选低Qg的管子,或者加大驱动电流缩短开关时间。
还有一个隐蔽的原因:自举电容失效。自举电容失效后,上管驱动电压不足,MOSFET工作在线性区,等效为一个电阻,发热急剧增加。判断方法:用示波器看上管栅极波形,正常应该是干净的方波,如果上升沿变缓或者幅度不够,就是自举电容的问题。我遇到过自举电容虚焊,上管栅极电压只有5V,管子烫得手摸不上去,补焊之后温度正常。
4.4 常见问题速查表
| 现象 | 可能原因 | 排查方法 | 解决措施 |
|---|---|---|---|
| 上电炸管 | 直通短路 | 示波器看驱动信号 | 加大死区时间 |
| 上电炸管 | 过压击穿 | 测母线电压尖峰 | 加TVS管 |
| 电机抖动不转 | 霍尔信号异常 | 手动转电机看霍尔输出 | 更换霍尔或修正接线 |
| 电机抖动不转 | 换向顺序错误 | 看相电压波形 | 修正换向表 |
| MOSFET发热 | 开关损耗大 | 测栅极波形 | 加大驱动电流或降频 |
| MOSFET发热 | 自举电容失效 | 看上管栅极电压 | 更换自举电容 |
| 电机噪音大 | 死区时间过大 | 测死区时间 | 减小死区时间 |
| 低速转矩脉动 | 死区时间过大 | 测低速相电流 | 减小死区或换低Qg管子 |
提示:排查故障时一定要先断开电机,只给驱动板通电测试。带电机测试一旦炸管,电机也可能被反电动势打坏。我吃过这个亏,炸管的同时把电机霍尔也打坏了,损失翻倍。
4.5 几个容易被忽略的实操细节
第一个细节:母线电容的选型。很多人只关注容值,忽略了ESR。电解电容的ESR在低温下会大幅增加,导致开关瞬间的电压跌落。我建议母线电容用固态电容或者电解电容并联陶瓷电容。固态电容的ESR只有几十毫欧,低温特性好,但价格贵。电解电容并联1μF陶瓷电容,成本低,效果也不错。
第二个细节:驱动芯片的电源去耦。IR2104的VCC引脚旁边必须放一个100nF的陶瓷电容,越近越好。这个电容的作用是提供驱动芯片开关瞬间的电流。如果放远了,驱动芯片内部逻辑可能误动作,导致输出异常。我见过有人忘了放这个电容,驱动芯片工作不稳定,时好时坏,查了一天才发现是去耦电容的问题。
第三个细节:电机绕组的接线顺序。三相无刷电机的三根线没有绝对的正负,但换向顺序和接线顺序有关。如果电机反转,不用改程序,把任意两根线对调就行。但要注意,对调线之后霍尔信号的顺序也要相应调整,否则换向还是错的。我一般先随便接,上电看转向,不对就对调两根线,然后再调霍尔顺序。
第四个细节:死区时间的温度漂移。MOSFET的开关时间随温度变化,温度越高,开关越慢。常温下300ns的死区时间够用,但到了80°C,关断时间可能增加50%,300ns就不够了。所以死区时间要留温度裕量,我一般按最高工作温度下的关断时间来算,再乘以1.5倍的安全系数。
5. 从原理图到实物的完整调试记录
5.1 原理图设计的关键检查点
画完原理图不要急着投板,先做几个检查。第一,自举二极管的方向对不对。自举二极管是从VCC到自举电容正极,方向反了自举电容充不上电,上管永远打不开。第二,驱动芯片的SD脚有没有拉高。第三,采样电阻的走线是不是开尔文连接。第四,母线电容的极性有没有接反。第五,MOSFET的漏极和源极有没有搞混。
我习惯在原理图上用不同颜色标注功率回路和信号回路,功率回路用红色粗线,信号回路用蓝色细线,这样布局的时候一目了然。投板前再让同事帮忙review一遍,两个人看比一个人看靠谱,我至少避免了三次投板错误。
5.2 焊接顺序与上电测试流程
焊接顺序有讲究:先焊矮的元件,再焊高的元件。先焊驱动芯片和阻容,再焊MOSFET,最后焊母线电容和接线端子。MOSFET最后焊是因为它怕静电,焊接时间也要短,烙铁温度350°C,每个焊点不超过3秒。
上电测试分三步:第一步,不焊MOSFET,只焊驱动芯片,上电测六路驱动信号。用示波器看波形,频率和占空比是否正确,死区时间是否正常。第二步,焊上MOSFET,不接电机,上电测半桥中点电压。如果某相中点电压一直是母线电压或者一直是零,说明该相有问题。第三步,接电机,低速空载运行,测相电流波形。正常应该是正弦波或者六阶梯波,如果波形畸变严重,检查死区时间和换向逻辑。
我调试的时候习惯用可调电源,从0V慢慢往上调,同时看电流。如果电流异常增大,立刻断电检查。这样即使有问题也不会炸管,因为电压低的时候短路电流也小。等调到24V正常运行了,再换固定电源。
5.3 实测波形分析与参数微调
正常运行的半桥中点波形应该是干净的方波,上升沿和下降沿有轻微振铃,但幅度不超过母线电压的20%。如果振铃幅度超过30%,说明功率回路寄生电感太大,需要优化布局或者加RC吸收电路。RC吸收电路的选择:R=10Ω,C=1nF,串联后并在下管漏极和源极之间。我试过加RC吸收,过冲从8V降到3V,效果明显。
相电流波形应该是平滑的,如果看到尖刺,说明换向时刻有电流突变。尖刺幅度和死区时间有关,死区越大,尖刺越明显。把死区从500ns降到300ns,尖刺幅度能减小一半。但死区也不能太小,要保证不直通。我一般用示波器的电流探头看母线电流,如果换向瞬间有向上的尖峰,说明死区不够;如果有向下的凹坑,说明死区太大。
5.4 长时间运行的可靠性验证
调试完不能就算完了,必须做长时间运行测试。我一般让电机连续跑2小时,每隔15分钟记录一次MOSFET表面温度和电机外壳温度。如果温度稳定在70°C以下,说明散热设计合格。如果温度持续上升,说明散热不够,需要加散热片或者优化布局。
还要做负载突变测试:突然加负载,看母线电压有没有跌落,电机有没有失步。突然卸负载,看母线电压有没有过冲。这两个测试能暴露电源和驱动的动态响应问题。我遇到过卸负载时母线电压冲到40V,把MOSFET打坏的情况,后来加了TVS和制动电阻才解决。
注意:长时间测试一定要有人值守,不能开着电机去吃饭。我见过有人测试时离开,电机堵转烧了驱动板,差点引起火灾。安全第一,测试时人不能离开。
5.5 个人实操心得汇总
第一,死区时间不要照搬数据手册。数据手册给的死区时间是典型值,实际电路中驱动电阻、PCB走线、MOSFET批次都会影响。必须实测调整,用示波器看波形,以不直通为前提尽量减小死区。
第二,MOSFET的散热比想象中重要。很多人觉得2A电流不大,不用散热,结果跑半小时管子就烫手。Rds(on)随温度升高而增大,温度越高损耗越大,形成正反馈。宁可散热过度,不要散热不足。
第三,自举电容和自举二极管要用好料。这两个元件便宜,但失效后果严重。自举电容用X7R陶瓷,自举二极管用快恢复管,不要用普通整流管。
第四,调试时用可调电源,从低压开始。这个习惯救了我很多次,低压下即使有问题也不会炸管,排查起来安全得多。
第五,原理图review不能省。自己画的图自己看,容易有盲区。找个人帮忙看,哪怕他不懂电机驱动,也能发现一些低级错误,比如电源接反、元件封装画错之类的。
这个驱动电路后续还可以扩展:加电流环做力矩控制,加霍尔做位置闭环,或者换成FOC算法做正弦波驱动。但六步换向加三相全桥是基础,把这个搞透了,后面的扩展都是水到渠成的事。