
H桥驱动电路这东西说简单也简单四个开关管搭个桥臂就能转电机说难也难真到画板子的时候自举电容选多大、死区时间留多少、半桥和全桥到底怎么选每一个问题都能让人调半天。IR2104这颗芯片我前前后后用了不下十几次从最开始照着手册抄电路烧管子到后来能闭着眼把自举参数算清楚中间踩的坑足够写一本小册子。这篇内容就把IR2104的H桥驱动从原理到落地完整梳理一遍半桥和全桥两种配置都会讲到包括自举电路的设计细节、栅极电阻的选取、死区时间的设置以及实际调试中那些手册上不会写的经验。不管你是刚接触电机驱动的新手还是想从三极管H桥升级到专用驱动芯片的老手应该都能从中找到有用的东西。1. 为什么H桥驱动值得单独拿出来讲1.1 H桥的本质四个开关的排列组合H桥这个名字来源于它的拓扑形状——四个开关管围成一个“H”形负载通常是电机横跨在中间那条横杠上。左边两个管子组成一个半桥右边两个管子组成另一个半桥电机接在两个半桥的中点之间。它的核心能力就一件事通过控制四个开关管的导通组合改变流过负载的电流方向。电流从左到右电机正转电流从右到左电机反转对角管子同时关断电机自由滑行对角管子同时导通电机两端被短接进入刹车状态。这四种状态覆盖了直流电机几乎所有的基础控制需求。如果用四个机械开关来搭逻辑上完全成立但实际中没人这么干。机械开关的响应速度太慢几毫秒的切换时间在PWM调速场景下完全不够用而且触点寿命有限频繁切换很快就报废了。所以实际电路中开关管一定是MOSFET或者IGBT这类全控型功率器件。1.2 从三极管到MOSFET再到专用驱动芯片最早玩H桥的人喜欢用三极管搭NPN和PNP配对使用电路简单成本低。但三极管是电流驱动型器件基极需要持续的驱动电流在大电流场景下驱动损耗很可观。而且三极管的饱和压降通常在0.3V到0.7V之间假设电机电流5A光管子上的损耗就有1.5W到3.5W发热相当明显。MOSFET是电压驱动型器件栅极几乎不消耗稳态电流导通电阻可以做到毫欧级别。同样5A电流一颗10毫欧的MOSFET上压降只有50mV损耗0.25W比三极管好一个数量级。但MOSFET的栅极有寄生电容几百皮法到几纳法不等开关瞬间需要大电流去充放电而且高边MOSFET的源极电位会随着开关状态浮动栅极驱动电压必须以源极为参考点这就给驱动电路带来了麻烦。IR2104这类专用半桥驱动芯片解决的正是这个问题。它内部集成了电平移位电路和自举供电逻辑只需要一个外部自举电容和二极管就能为高边MOSFET提供浮动的栅极驱动电压。同时它还有死区时间控制防止上下管直通。一颗芯片搞定一个半桥两颗芯片就是一个完整的全桥。1.3 IR2104在H桥中的角色定位IR2104是国际整流器公司现已被英飞凌收购推出的一款高压高速半桥驱动芯片耐压600V输出电流能力约200mA到350mA拉电流和灌电流略有差异开关频率可以做到几百kHz。它的输入逻辑很简洁一个IN引脚控制输出状态一个SD引脚控制关断。具体逻辑是这样的SD为低电平时两个输出都关断不管IN是什么状态SD为高电平时IN为高则高边输出导通、低边关断IN为低则高边关断、低边导通。注意它没有独立的双输入控制不能同时让高边和低边都导通这本身就是一种硬件层面的防直通保护。一颗IR2104驱动一个半桥两颗IR2104就能组成一个全桥。全桥的两个半桥分别用独立的IN信号控制通过PWM的相位差来实现正反转和调速。这是最经典的配置方式也是本文重点展开的内容。2. IR2104半桥配置的完整拆解2.1 半桥拓扑的物理连接先从一个半桥说起。半桥的功率部分由两颗N沟道MOSFET组成上管Q1的漏极接电源正极源极接中点下管Q2的漏极接中点源极接电源地。中点就是输出端接负载的一端。IR2104的引脚连接是这样的VCC接逻辑电源通常12V到15VCOM接地VB接自举电容正极VS接半桥中点HO接上管栅极LO接下管栅极IN接控制信号SD接使能信号。这里有一个关键点VS引脚必须直接连接到半桥中点不能通过任何电阻或电感。因为VS是自举电路的参考点也是高边驱动输出的浮动参考如果VS的电位和实际中点电位不一致高边驱动电压就会出错轻则管子发热重则直接炸管。2.2 自举电路的工作原理与参数计算自举电路是IR2104最核心的外围电路也是最多人搞不明白的地方。它的作用是在高边MOSFET导通期间为高边驱动电路提供一个以VS为参考的浮动电源。工作过程分两个阶段。第一阶段下管Q2导通VS被拉到接近地电位此时VCC通过自举二极管D1给自举电容C1充电C1两端电压接近VCC减去二极管压降。第二阶段下管Q2关断上管Q1准备导通此时VS的电位被上管源极跟随器效应拉到接近电源正极但C1上已经储存了电荷C1正极VB的电位等于VS电位加上C1两端电压这个电压正好为高边驱动电路供电。自举电容的容量计算是重点。电容上储存的电荷必须满足高边驱动电路在整个导通周期内的电荷需求同时电容两端电压的跌落不能超过允许值。公式是这样的C_boot ≥ (Q_gate I_qbs × T_on Q_ls) / ΔV_boot其中Q_gate是MOSFET栅极总电荷I_qbs是高边驱动电路的静态电流IR2104约几十微安T_on是高边最大导通时间Q_ls是电平移位电路的电荷需求ΔV_boot是允许的电压跌落通常取0.5V到1V。举个实际例子。假设用IRF3205栅极总电荷约146nCIR2104的静态电流取50μA最大占空比95%开关频率20kHz周期50μs高边导通时间47.5μs。允许跌落取1V。那么C_boot ≥ (146nC 50μA × 47.5μs 5nC) / 1V ≈ (146 2375 5) nC / 1V ≈ 2526nC / 1V ≈ 2.5μF实际选取时留足余量用4.7μF到10μF都比较常见。但注意不能太大因为电容越大每次下管导通时的充电时间常数越大在低占空比或高频场景下可能充不满。一般建议在1μF到10μF之间具体看开关频率和占空比范围。自举二极管的选择也有讲究。必须是快恢复二极管反向恢复时间要短否则在高频开关时会产生额外的损耗和噪声。耐压要高于电源电压电流能力要满足自举电容的充电峰值电流。常用的型号有1N4148小功率场景、UF4007中功率、ES1J贴片快恢复等。2.3 栅极电阻的选取逻辑栅极电阻Rg的作用是限制栅极充放电电流控制MOSFET的开关速度。取值太小开关速度快开关损耗小但di/dt和dv/dt大容易产生振铃和EMI问题取值太大开关速度慢开关损耗大但EMI好控制。对于IR2104驱动IRF3205这种组合Rg通常在10Ω到47Ω之间选取。如果追求效率可以取小一些比如10Ω到15Ω如果EMI测试过不了可以加大到33Ω甚至47Ω。实际调试时可以用示波器看栅极波形如果上升沿有明显的振铃说明Rg偏小或者走线电感偏大如果上升沿太缓导致管子发热严重说明Rg偏大。还有一个细节下管的栅极电阻可以比上管小一些。因为下管的源极接地驱动回路稳定开关振铃相对好控制上管的源极浮动驱动回路的寄生参数更复杂适当加大Rg有助于抑制振铃。2.4 死区时间的硬件实现死区时间是防止上下管直通的关键。IR2104内部已经集成了死区时间典型值约520ns不同批次可能有差异。这个死区时间对于大多数低频应用20kHz以下是足够的但在高频场景下可能偏大导致输出波形失真。如果需要更小的死区时间或者需要精确控制死区可以在IN信号上做文章。比如用MCU生成两路互补PWM在软件层面插入死区然后分别送给两颗IR2104的IN引脚。但注意IR2104内部死区仍然存在软件死区只能在此基础上增加不能减少。实测中发现一个现象IR2104的死区时间在温度变化时会有一定漂移高温下可能缩短到400ns左右。如果应用场景温度变化大建议在软件层面额外留一些死区余量。3. 全桥配置两颗IR2104的协同工作3.1 全桥的功率级连接全桥由两个半桥组成左边半桥的中点记为OUT_A右边半桥的中点记为OUT_B电机接在OUT_A和OUT_B之间。左边半桥由IR2104_A驱动右边半桥由IR2104_B驱动。电源部分两个半桥共用同一个电源正极和地。自举电路各自独立每颗IR2104都需要自己的自举二极管和自举电容。这一点很重要不能为了省元件把两个半桥的自举电路合并因为两个半桥的中点电位是独立的合并后自举电路无法正常工作。3.2 控制信号的时序设计全桥的控制逻辑比半桥复杂一些。正转时左边半桥的高管和右边半桥的低管同时导通电流从电源正极经过左高到OUT_A经过电机到OUT_B再经过右低到地。反转时左边半桥的低管和右边半桥的高管同时导通电流方向相反。调速通过PWM实现。有两种常见方式一种是PWM加在左边半桥的IN引脚上右边半桥保持固定状态另一种是两边都加PWM但相位相反。第一种方式叫“单极性PWM”第二种叫“双极性PWM”。单极性PWM的优点是开关损耗小因为每个周期只有一边的半桥在开关另一边保持常通或常关。缺点是低速时转矩脉动较大。双极性PWM的优点是转矩脉动小低速性能好缺点是开关损耗大因为两边都在开关。实际选型时如果电机功率不大、对低速性能要求不高单极性PWM就够了如果要求低速平稳、转矩脉动小双极性PWM更合适。3.3 自举电容在全桥中的特殊考量全桥配置下两个半桥的自举电容工作条件可能不同。如果采用单极性PWM一个半桥在高频开关另一个半桥保持固定状态。保持固定状态的那个半桥如果高边常通自举电容需要持续供电对容量的要求更高如果低边常通自举电容一直在充电反而没有压力。所以设计时要注意自举电容的容量要按最恶劣的工作条件来选也就是高边导通时间最长的那种工况。如果正转时左高常通、右低常通那么左半桥的自举电容需要在整个正转期间持续供电容量要足够大。3.4 全桥PCB布局的注意事项全桥的PCB布局比半桥复杂得多因为有两个半桥功率回路和驱动回路交织在一起。几个关键原则功率回路面积最小化电源正极到两个高管的漏极、两个低管的源极到地这个回路的面积要尽可能小减少寄生电感。自举电容紧靠芯片自举电容和自举二极管要尽可能靠近IR2104的VB和VS引脚走线要短而粗。驱动走线远离功率走线HO和LO的走线不要和功率走线平行避免耦合噪声。地平面分割逻辑地和功率地要分开最后在一点连接。IR2104的COM引脚接逻辑地低管源极接功率地。我踩过的一个坑有一次全桥布局时把自举电容放在了芯片背面走线经过了一个过孔结果高边驱动波形在开关瞬间有严重的振铃管子发热严重。后来把自举电容移到芯片同层紧贴VB和VS引脚问题立刻消失。这个细节在手册上不会写但实际中非常关键。4. 从原理图到实物调试中遇到的真实问题4.1 上电就炸管自举电容极性接反这是最蠢但最常见的错误。自举电容是电解电容时正极必须接VB负极接VS。如果接反电容相当于短路VCC直接通过自举二极管和电容到VS如果此时下管导通VS接地VCC就被短路到地芯片和二极管瞬间烧毁。我见过不止一个人犯这个错误包括我自己第一次搭电路的时候。后来养成了一个习惯焊接完成后先用万用表测VB和VS之间的电阻确认没有短路再上电。电解电容接反时万用表测出来的电阻会很小很容易发现。4.2 高边驱动电压不足自举电容容量偏小现象是上管发热严重用示波器看栅极波形发现高电平只有8V左右而VCC是12V。原因就是自举电容容量不够在高边导通期间电压跌落太大导致上管没有完全导通工作在线性区损耗剧增。解决办法很简单加大自举电容。但要注意加大电容的同时要确认自举二极管能承受充电峰值电流。如果电容太大下管导通时间又很短充电电流会很大可能超过二极管的额定电流。4.3 上下管直通死区时间不够现象是电源电流突然增大管子迅速发热严重时直接炸管。用示波器同时看上下管的栅极波形会发现两个波形有重叠区域也就是上下管同时导通的时间。IR2104内部死区时间通常够用但如果MOSFET的开关速度太慢栅极电阻太大关断延迟可能超过死区时间导致直通。解决办法是减小栅极电阻加快关断速度。或者换用开关速度更快的MOSFET。还有一种情况是自举电容充电不足导致高边驱动电压偏低上管开关变慢关断延迟增加也可能引发直通。所以自举电路和死区时间是相互关联的不能孤立地看。4.4 电机低速时抖动PWM频率不合适PWM频率太低比如1kHz以下电机会听到明显的啸叫低速时抖动严重。PWM频率太高比如50kHz以上开关损耗增大驱动芯片发热。对于普通有刷直流电机PWM频率在10kHz到20kHz之间比较合适既超出人耳听觉范围开关损耗也可以接受。如果低速性能要求高可以考虑提高PWM频率到25kHz以上同时优化栅极驱动参数减小开关损耗。5. 关键参数速查与选型对照5.1 IR2104关键参数一览参数典型值说明耐压600V高边浮动电源的最大电压输出电流200mA/350mA拉电流/灌电流死区时间520ns内部固定不可调静态电流50μA高边驱动电路静态电流输入逻辑IN/SDSD低电平关断工作频率可达500kHz实际受自举电路限制5.2 自举元件选型对照元件推荐值/型号注意事项自举电容1μF-10μF陶瓷或电解耐压VCC自举二极管UF4007/ES1J快恢复耐压VCC栅极电阻10Ω-47Ω上管可略大于下管逻辑电源12V-15V不要超过20V5.3 常见问题排查表现象可能原因排查方法上管发热自举电容小/栅极电阻大测栅极波形看高电平幅值上下管直通死区不够/关断太慢双通道看上下管栅极波形电机不转IN信号没到/SD为低测IN和SD引脚电平高边无输出自举二极管接反/损坏测VB和VS之间电压波形振铃走线电感大/栅极电阻小加大栅极电阻优化布局6. 几个容易被忽略的实操细节第一个细节是关于自举电容的介质类型。陶瓷电容的ESR低高频特性好但容量做不大而且有直流偏压效应——标称10μF的陶瓷电容在12V偏压下实际容量可能只有5μF。电解电容容量大但ESR高高频充放电能力差。实际中常见做法是电解电容并联一个小陶瓷电容比如10μF电解并联100nF陶瓷兼顾容量和高频特性。第二个细节是关于IR2104的SD引脚。很多人直接把它接VCC芯片一直使能。但在调试阶段建议把SD引脚接到一个可控的GPIO上这样可以在异常时快速关断输出保护功率管。我调试时习惯在SD上接一个按钮按下就关断比拔电源线安全得多。第三个细节是关于电源去耦。IR2104的VCC引脚需要就近放置一个去耦电容通常100nF到1μF。这个电容的作用是提供开关瞬间的峰值电流如果离芯片太远去耦效果大打折扣。我一般会在VCC和COM之间放一个1μF陶瓷电容紧贴芯片引脚。第四个细节是关于电机的续流回路。H桥关断时电机电感中的电流需要续流。如果四个管子全部关断电流会通过MOSFET的体二极管续流。体二极管的反向恢复特性通常不太好可能产生较大的反向恢复电流和噪声。如果对EMI要求高可以考虑在电机两端并联一个RC吸收电路或者使用快恢复体二极管的MOSFET。第五个细节是关于测试顺序。第一次上电时不要直接接电机。先用一个功率电阻代替电机确认驱动波形正常后再接电机。这样可以避免因驱动异常导致电机失控或烧毁。测试时先用低电压比如12V确认无误后再升到额定电压。7. 从IR2104延伸出去什么时候该换方案IR2104适合中小功率、中低频的H桥应用。如果功率再大一些比如几百瓦到几千瓦IR2104的200mA驱动能力可能不够需要换成驱动能力更强的芯片比如IR21102A驱动能力或者带隔离的驱动方案。如果开关频率要求很高比如100kHz以上IR2104的死区时间520ns就显得太大了输出波形失真严重。这时候可以考虑用带可调死区时间的驱动芯片或者用隔离驱动器加数字隔离器自己搭死区逻辑。如果应用场景是三相电机驱动那IR2104就不合适了需要换成三相桥驱动芯片比如IR2136或者DRV8301这类集成三相驱动的方案。但话说回来对于大多数有刷直流电机的H桥驱动场景IR2104的性价比和易用性都是很能打的。两颗芯片加几个外围元件就能搭出一个完整的全桥成本低可靠性经过大量验证。我手头好几个项目都是用IR2104做的全桥跑了几年都没出过问题。最后分享一个我自己的习惯每次画完IR2104的板子都会在VB和VS之间预留一个示波器探头焊盘方便调试时直接测自举电压。这个小小的焊盘在排查高边驱动问题时能省下大量时间比用探头去戳芯片引脚靠谱得多。