1. 大电流H桥驱动方案的整体设计思路
1.1 为什么选IR2104加LR7843这个组合
做电机驱动这几年,我经手过不少方案。L298N这种老牌模块大家都熟,十几块钱一个,接线简单,学生党做课设首选。但它的短板也很明显——导通压降大,标称2A的持续电流,实际跑起来芯片烫得能煎鸡蛋,效率低得让人心疼。TB6612FNG好一些,但持续电流也就1.2A左右,驱动大一点的直流减速电机或者空心杯电机时余量不够。至于DRV8833、L293D这些,基本都停留在小电流场景。
真正要上大电流——比如5A、10A甚至更高——就得换思路。市面上大电流方案通常两条路:一是用集成的大电流驱动芯片,比如BTN7971、VNH5019这类,但价格不便宜,而且封装焊接对DIY玩家不太友好;二是用分立MOSFET自己搭H桥,配合半桥栅极驱动芯片。后一条路灵活性高、成本可控、散热好做,是我个人最推荐的路线。
IR2104就是半桥栅极驱动里的经典款。它自带自举电路所需的高侧悬浮通道,能驱动N沟道MOSFET组成半桥,两片IR2104就能搭出完整的H桥。LR7843则是N沟道功率MOSFET,耐压30V,导通电阻低到3.3毫欧(VGS=10V时),持续电流能到161A(封装限制下实际用几十安没问题)。这两个搭配起来,驱动一个几十瓦到几百瓦的直流电机绰绰有余。
注意:IR2104的供电范围是10V到20V,逻辑输入兼容3.3V和5V,所以STM32、Arduino都能直接接,不需要额外电平转换。
1.2 H桥的基本工作原理与电流路径
H桥这个名字来源于它的拓扑形状——四个开关管围成一个“H”,电机横在中间。通过对角线两组开关的交替导通,实现电机正反转。具体来说:
- 左上(Q1)和右下(Q4)导通时,电流从左到右流过电机,电机正转;
- 右上(Q2)和左下(Q3)导通时,电流从右到左,电机反转;
- 同侧上下管同时导通就是短路,必须严格避免,这就是所谓的“直通”问题。
实际驱动中,PWM调速通常加在下桥臂或者上桥臂。如果加在下桥臂,上桥臂常通、下桥臂斩波,这叫“慢衰减”模式;如果加在上桥臂,下桥臂常通,叫“快衰减”模式。两种模式对电流纹波和续流路径的影响不同,后面会细说。
用分立MOS搭H桥,核心难点在于高侧N沟道MOS的驱动。N沟道MOS要完全导通,栅极电压必须比源极高出一定值(LR7843的VGS(th)典型值在1.5V到2.5V之间,要完全导通建议VGS在10V左右)。但高侧MOS的源极接在电机输出端,电压会随着开关状态在0V和母线电压之间跳变。如果栅极驱动电压固定,那高侧MOS根本没法可靠导通。这就是自举电路要解决的问题。
1.3 自举电路的核心作用与必要性
自举电路说白了就是一个“浮动电源”。它利用电容的储能特性,在低侧MOS导通时把电容充电到接近VCC,然后在高侧MOS需要导通时,把电容的负极接到高侧MOS的源极,这样电容正极就比源极高出VCC电压,正好用来驱动高侧MOS的栅极。
IR2104内部集成了自举二极管和自举电容的接口,外部只需要在VB和VS之间接一个电容,再在VCC和VB之间接一个快恢复二极管(有些型号内部已经集成,但IR2104需要外接)。这个电容的选型很关键——太小了储能不够,高侧MOS导通期间电压跌落太快;太大了充电时间长,高频PWM下可能来不及充满。
实操心得:自举电容建议用0.1μF到1μF的陶瓷电容,耐压要高于母线电压。如果PWM频率超过20kHz,电容可以取小一点,比如0.22μF;如果频率较低,可以取1μF。我一般用0.47μF/50V的X7R陶瓷电容,实测下来很稳。
2. 核心元器件选型与关键参数解析
2.1 IR2104引脚功能与工作逻辑
IR2104是8脚DIP或SOIC封装,引脚定义如下:
| 引脚 | 名称 | 功能说明 |
|---|---|---|
| 1 | VCC | 逻辑电源,10V-20V |
| 2 | IN | 逻辑输入,控制高侧和低侧输出 |
| 3 | SD | 关断输入,低电平有效 |
| 4 | COM | 公共地 |
| 5 | LO | 低侧输出 |
| 6 | VS | 高侧浮动电源返回端,接高侧MOS源极 |
| 7 | HO | 高侧输出 |
| 8 | VB | 高侧浮动电源正端,接自举电容 |
IR2104的逻辑真值表很简单:SD为高时,IN为高则HO输出高、LO输出低;IN为低则HO输出低、LO输出高。SD为低时,两路输出都关断。注意IR2104没有死区时间生成,死区需要靠外部控制器(比如STM32的互补PWM带死区)或者RC延时电路来保证。
注意:IR2104的IN引脚内部有下拉,悬空时默认低电平,但实际使用中不建议悬空,最好接明确电平。
2.2 LR7843 MOSFET的关键参数与选型依据
LR7843是N沟道增强型功率MOSFET,主要参数:
- VDS:30V,适合24V及以下母线电压
- RDS(on):3.3mΩ(VGS=10V,ID=20A时)
- ID:161A(脉冲),持续电流受封装和散热限制
- VGS(th):1.5V-2.5V
- Qg:典型值约50nC(VGS=10V时)
选LR7843的理由很直接:导通电阻低,意味着大电流下发热小。举个例子,10A电流下,RDS(on)按4mΩ算(考虑温升),功耗是I²R = 100 × 0.004 = 0.4W。不加散热片也能扛一会儿,加个小铝片就能长期跑。如果用IRF3205(RDS(on)约8mΩ),同样10A下功耗0.8W,发热翻倍。
Qg这个参数影响开关速度。50nC不算大,IR2104的驱动电流能力约130mA/270mA(拉/灌),开关时间在几百纳秒级别,对于20kHz以下的PWM完全够用。如果PWM频率上到50kHz以上,就要考虑驱动能力是否足够,可能需要外加图腾柱驱动。
2.3 自举二极管与电容的选型计算
自举二极管要选快恢复型,反向恢复时间trr要短,否则在高频开关时损耗大、发热严重。常用型号有1N4148(trr=4ns,但电流只有200mA,适合小功率)、UF4007(trr=75ns,1A)、SS34(肖特基,trr极短,但反向耐压40V)。我一般用SS34或者1N4148,视PWM频率和母线电压而定。
自举电容的计算有个经验公式:
C_boot ≥ Qg_total / ΔV
其中Qg_total是高侧MOS的栅极电荷,ΔV是允许的自举电压跌落。假设Qg=50nC,允许跌落0.5V,则C_boot ≥ 50nC / 0.5V = 100nF。实际取0.22μF到0.47μF留足余量。耐压要高于VCC加上母线电压的峰值,一般50V够用。
还有一个容易被忽略的点:自举电容两端电压不能超过IR2104的VB-VS最大耐压(20V)。如果VCC是12V,母线是24V,自举电容充电到12V,VS在0V到24V之间跳变,VB最高到36V,但VB-VS始终是12V,所以没问题。但如果VCC取20V,就要小心了。
2.4 栅极电阻与死区时间的工程取舍
栅极电阻Rg影响开关速度和EMI。Rg太小,开关快,但di/dt大,容易产生振铃和EMI;Rg太大,开关慢,开关损耗增加,发热严重。LR7843的Qg不大,Rg取10Ω到22Ω比较合适。我一般用15Ω,实测开关波形干净,发热也可接受。
死区时间是为了防止上下管直通。IR2104本身不产生死区,需要控制器配合。STM32的高级定时器(如TIM1)可以设置死区时间,一般取200ns到500ns。死区太小,直通风险大;死区太大,输出波形畸变,电机低速时会有明显抖动。我通常从300ns开始调,用示波器看上下管栅极波形,确保没有重叠。
实操心得:调试死区时,先不加电机,用示波器双通道看HO和LO波形。如果发现交叠,增大死区;如果电机低速抖动明显,减小死区。这个参数没有绝对最优,要结合具体MOS和PWM频率来调。
3. 完整H桥电路搭建与实操步骤
3.1 原理图设计与关键连接说明
整个H桥由两片IR2104和四颗LR7843组成。左侧半桥驱动电机的A端,右侧半桥驱动B端。母线电压V_MOTOR接四颗MOS的漏极(高侧MOS)和源极(低侧MOS的源极接地)。具体连接:
- 左半桥:Q1高侧,Q2低侧。Q1漏极接V_MOTOR,源极接电机A端和IR2104的VS;Q2漏极接电机A端,源极接地。
- 右半桥:Q3高侧,Q4低侧。连接方式类似,电机B端接Q3源极和Q4漏极。
- 两片IR2104的VCC接12V,COM接地。IN引脚接控制器的PWM输出。SD引脚可以接使能信号,不用时接VCC。
- 自举电容接在VB和VS之间,自举二极管从VCC到VB,阳极接VCC,阴极接VB。
注意:自举二极管的方向不能接反,否则自举电容充不上电,高侧MOS永远无法导通。
3.2 PCB布局与散热处理要点
大电流路径的PCB布局是成败关键。几个原则:
- 功率回路面积最小化:V_MOTOR到高侧MOS漏极、低侧MOS源极到地、电机输出线,这些走线要短而粗。我一般用2oz铜厚,走线宽度至少3mm,10A以上建议铺铜或者开窗加锡。
- 自举电容靠近IR2104:VB和VS的走线要短,电容尽量贴近芯片引脚,减少寄生电感。
- 栅极电阻靠近MOS:Rg要靠近MOS的栅极,避免长走线引入振铃。
- 散热焊盘:LR7843的漏极通常接在散热焊盘上,PCB上要留足够的铺铜面积,最好打过孔到背面铜层辅助散热。
实测中,10A持续电流下,四颗LR7843不加散热片,温升约40°C到50°C。加一个小铝片后,温升降到20°C左右。如果跑20A以上,建议加风扇强制风冷。
3.3 上电调试与波形测试实录
第一次上电千万别直接接电机。按这个顺序来:
- 空载测电源:先不焊MOS,只焊IR2104,给VCC和V_MOTOR上电,测IR2104的VCC引脚电压是否正常,LO引脚是否有输出(IN给高时LO应为低,IN给低时LO应为高)。
- 焊上MOS,不接电机:用示波器看HO和LO波形。IN给一个10kHz、50%占空比的方波,观察HO是否在LO为高时被自举到VCC以上。正常情况HO的高电平应该比VS高约VCC电压。
- 接小功率电机测试:先用小电机(比如12V/0.5A的减速电机)试,观察正反转是否正常,PWM调速是否线性。
- 逐步加大负载:换大电机,逐步增加电流,用手摸MOS温度,用示波器看母线电压是否有跌落。
我踩过的一个坑:第一次调试时自举电容用了10μF的电解电容,结果高频PWM下高侧MOS发热严重。后来换成0.47μF陶瓷电容,问题消失。原因是电解电容等效串联电阻大,高频充放电时损耗大,而且充电时间长,高侧导通期间电压跌落快。
3.4 自举电路工作过程的详细拆解
自举电路的工作分两个阶段:
充电阶段:当低侧MOS(Q2)导通时,VS被拉到接近0V(实际是Q2的导通压降,很小)。此时VCC通过自举二极管给自举电容充电,电容两端电压接近VCC减去二极管压降。假设VCC=12V,二极管压降0.3V,电容充到11.7V。
放电阶段:当低侧MOS关断、高侧MOS(Q1)需要导通时,IR2104内部把自举电容的正极(VB)连接到HO,负极(VS)连接到高侧MOS的源极。此时高侧MOS的源极电压等于电机A端电压,假设母线24V,源极接近24V,那么HO电压就是24V + 11.7V = 35.7V,比源极高11.7V,足够让LR7843完全导通。
这个过程的本质是电容的“电压不能突变”特性。电容像一个浮动电池,跟着VS的电压跳变,始终维持VB-VS约等于VCC。
注意:自举电容不能一直维持高侧导通。如果PWM占空比100%(高侧常通),自举电容没有充电机会,电压会慢慢跌落,最终高侧MOS退出完全导通区,发热剧增。所以PWM调速时,占空比不能长期停在100%,或者要用“慢衰减”模式(PWM加在下桥臂)。
4. 常见问题排查与实战避坑指南
4.1 高侧MOS发热严重的原因分析
高侧MOS发热,十有八九是自举电路没工作好。排查顺序:
- 测HO波形:用示波器看HO对VS的电压。正常应该是接近VCC的方波。如果幅度明显低于VCC,说明自举电容充电不足。
- 查自举二极管:方向是否接反?型号是否快恢复?反向恢复慢的二极管会导致自举电容充不满。
- 查自举电容:容量是否太小?是否用了电解电容?换成0.47μF陶瓷电容试试。
- 查PWM占空比:是否长期100%?如果是,改用下桥臂PWM或者限制最大占空比到95%。
- 查死区:死区太小导致直通?用示波器看HO和LO是否有交叠。
我遇到过一次,自举二极管用了1N4007(普通整流管,trr=30μs),结果高侧MOS烫得不敢摸。换成1N4148后立刻正常。普通整流管的反向恢复时间太长,在高频开关下根本来不及关断,自举电容充电效率极低。
4.2 电机低速抖动与PWM频率选择
电机低速抖动通常和PWM频率、死区时间、衰减模式有关。PWM频率太低(比如1kHz),电机绕组会发出刺耳的啸叫,低速时转矩脉动大。频率太高(比如50kHz),开关损耗增加,IR2104驱动能力可能不够。
我一般选16kHz到20kHz,刚好在音频范围之上,人耳听不到啸叫,开关损耗也可接受。如果电机要求低速平稳,可以试试“快衰减”模式(PWM加在上桥臂),电流纹波小,低速更顺滑。但快衰减模式下自举电容充电机会少,要注意占空比限制。
实操心得:低速抖动还有一个可能原因是死区时间过大。死区期间电机电流通过体二极管续流,产生电压跳变。把死区从500ns降到200ns,低速抖动明显改善。
4.3 母线电压跌落与电源退耦处理
大电流下母线电压跌落是常见问题。原因通常是电源内阻大、走线细、退耦电容不够。解决办法:
- 加退耦电容:在H桥的V_MOTOR和地之间并一个大容量电解电容(比如470μF到1000μF)和一个小陶瓷电容(0.1μF)。电解电容提供低频储能,陶瓷电容吸收高频尖峰。
- 加粗走线:功率走线至少3mm宽,或者直接铺铜。
- 电源选型:如果用开关电源,要选余量足够的。电机启动瞬间电流可能是额定值的3到5倍,电源要能扛住。
实测中,我用一个12V/5A的开关电源驱动12V/3A的电机,启动瞬间电压跌到9V,电机启动无力。并在电源输出端加了一个1000μF电解电容后,启动瞬间电压只跌到11V,明显改善。
4.4 常见问题速查表
| 现象 | 可能原因 | 排查方法 | 解决措施 |
|---|---|---|---|
| 高侧MOS发热 | 自举电容充电不足 | 测HO对VS波形 | 换快恢复二极管、换陶瓷电容、限制占空比 |
| 电机不转 | IN信号没到、SD为低 | 测IR2104输入输出 | 检查控制器输出、SD接VCC |
| 电机只往一个方向转 | 一片IR2104没工作 | 测两片IR2104的HO/LO | 检查该片IR2104的VCC、IN、自举元件 |
| 低速抖动 | 死区过大、PWM频率低 | 看栅极波形 | 减小死区、提高PWM频率到16kHz以上 |
| 母线电压跌落 | 电源内阻大、退耦不足 | 示波器看V_MOTOR | 加退耦电容、加粗走线、换大电源 |
| MOS直通烧毁 | 死区不足、IR2104损坏 | 测HO和LO是否交叠 | 增大死区、更换IR2104、检查IN信号 |
| 自举电容发热 | 电容类型不对 | 摸电容温度 | 换陶瓷电容,不用电解 |
4.5 进阶优化:从IR2104到更高效的驱动方案
IR2104加LR7843这个组合,优点是简单、便宜、够用。但如果要追求更高效率或者更高频率,可以考虑升级:
- 换驱动芯片:比如UCC27211、LM5109,驱动电流更大,开关更快,适合50kHz以上PWM。
- 换MOS:LR7843耐压30V,如果母线电压上到48V,要换耐压60V以上的MOS,比如IRF3205(55V)、IRLB8721(30V但RDS(on)更低)。
- 加图腾柱驱动:如果IR2104驱动能力不够,可以在HO和LO后面加一对三极管图腾柱,增强驱动电流。
- 电流采样:在大电流应用中,加一个采样电阻或者霍尔电流传感器,配合控制器做电流闭环,可以防止过流烧管。
我个人在做一个24V/10A的电机驱动项目时,最初用IR2104+LR7843,跑20kHz没问题。后来想上40kHz,发现IR2104驱动能力不足,高侧MOS开关损耗大,发热明显。换成UCC27211后,40kHz下温升反而更低。所以选型要看具体需求,没有万能方案。
4.6 与L298N、TB6612等集成方案的对比
很多新手会问:既然L298N、TB6612这么方便,为什么还要自己搭H桥?我列个表对比一下:
| 方案 | 持续电流 | 导通压降/损耗 | 成本 | 灵活性 | 适用场景 |
|---|---|---|---|---|---|
| L298N | 2A | 约2V压降,损耗大 | 低 | 低 | 小功率、课设 |
| TB6612 | 1.2A | 约0.5V压降 | 中 | 中 | 小功率、便携设备 |
| IR2104+LR7843 | 10A+ | 约0.1V压降 | 中 | 高 | 大电流、高性能 |
| BTN7971 | 10A+ | 约0.1V压降 | 高 | 中 | 大电流、集成方案 |
自己搭H桥的优势在于:电流能力可以按需扩展(换MOS就行)、散热好做、成本可控、能学到真东西。劣势是调试麻烦,需要示波器,PCB设计有门槛。如果你是做产品或者大功率项目,自己搭是必经之路;如果只是做个玩具,L298N够了。
4.7 空心杯电机驱动的特殊注意事项
空心杯电机转子无铁芯,电感极小,电流纹波大,对PWM频率和驱动电路要求更高。用IR2104+LR7843驱动空心杯电机时,要注意:
- PWM频率要高:建议20kHz以上,否则电流纹波大,电机发热。
- 死区要小:空心杯电机低速要求高,死区大了抖动明显。
- 加电流采样:空心杯电机容易过流,建议加采样电阻做限流。
- 自举电容要够:高频PWM下自举电容充电时间短,容量要选合适,0.22μF到0.47μF比较稳妥。
我驱动一个7.4V的空心杯电机时,最初用10kHz PWM,电机发热严重,效率低。提高到20kHz后,电流纹波明显减小,电机温度降了十几度。
4.8 STM32直接驱动电机的可行性分析
经常有人问:STM32的IO口能不能直接驱动电机?答案是:不能。STM32的IO口输出电流最大20mA左右,而电机启动电流动辄几百毫安到几安。直接接上去,轻则IO口烧毁,重则整个芯片报废。
正确的做法是:STM32输出PWM信号给IR2104的IN引脚,IR2104驱动MOS,MOS驱动电机。STM32的PWM频率可以设到20kHz,死区用高级定时器(TIM1/TIM8)的刹车和死区功能生成。这样既安全又灵活。
注意:STM32的IO口是3.3V电平,IR2104的逻辑输入兼容3.3V,可以直接接。但如果用5V单片机,也没问题,IR2104的输入高电平阈值是2.5V左右。
5. 实测数据与性能评估
5.1 不同电流下的温升与效率测试
我用24V母线、20kHz PWM、50%占空比,驱动一个24V/10A的直流电机,测了一组数据:
| 电流 | MOS温升(无散热片) | MOS温升(加铝片) | 效率 |
|---|---|---|---|
| 2A | 8°C | 3°C | 97% |
| 5A | 20°C | 8°C | 95% |
| 10A | 45°C | 18°C | 92% |
| 15A | 70°C | 30°C | 88% |
效率随电流增加而下降,主要是MOS导通损耗和开关损耗增加。10A以下,加个小铝片就能长期跑。15A以上建议加风扇。
5.2 自举电路在不同PWM频率下的表现
自举电容用0.47μF,自举二极管用SS34,测不同PWM频率下HO对VS的电压:
| PWM频率 | HO对VS高电平 | 高侧MOS温升 |
|---|---|---|
| 5kHz | 11.5V | 正常 |
| 10kHz | 11.4V | 正常 |
| 20kHz | 11.2V | 正常 |
| 40kHz | 10.5V | 略高 |
| 50kHz | 9.8V | 明显偏高 |
40kHz以上,自举电容充电时间不足,HO电压开始跌落,高侧MOS导通不充分,发热增加。所以IR2104+LR7843这个组合,PWM频率建议不超过30kHz。
5.3 死区时间对输出波形的影响
用STM32生成带死区的互补PWM,测不同死区下的输出波形:
| 死区时间 | 波形交叠 | 电机低速表现 | MOS温升 |
|---|---|---|---|
| 100ns | 有轻微交叠 | 平稳 | 略高 |
| 200ns | 无交叠 | 平稳 | 正常 |
| 300ns | 无交叠 | 平稳 | 正常 |
| 500ns | 无交叠 | 轻微抖动 | 正常 |
| 1μs | 无交叠 | 明显抖动 | 正常 |
死区200ns到300ns是比较好的平衡点。太小有直通风险,太大低速抖动。
6. 写在最后的一些个人体会
这个IR2104+LR7843的H桥方案,我从第一次搭到现在,前后改了五六版PCB。最开始用洞洞板飞线,干扰大得没法看,后来画了正经PCB才稳定下来。自举电路这个东西,原理不复杂,但实际调试时坑不少——二极管选错、电容选错、占空比限制没注意,都会导致高侧MOS发热甚至烧毁。
我个人在实际操作中的体会是:自举电容和二极管一定要用好的,别省这几毛钱。陶瓷电容比电解电容靠谱得多,快恢复二极管比普通整流管靠谱得多。另外,示波器是必备的,没有示波器调这个电路基本靠猜,效率极低。
最后再分享一个小技巧:调试时可以在自举电容两端并一个稳压二极管(比如12V),防止自举电压过高击穿IR2104。虽然正常情况下不会超,但万一VCC波动或者自举二极管漏电,有个钳位更安心。这个电路后续还可以扩展——加电流采样做闭环、加刹车功能、换成三相拓扑驱动无刷电机,都是很自然的延伸方向。