1. 为什么IR2104配MOS管H桥值得动手做一遍如果你手头有一台直流电机、几个功率MOS管想让它正反转、调速又不想直接买成品驱动模块那用IR2104搭一个H桥是最经典的入门路径。IR2104是一颗半桥栅极驱动芯片自带自举电路能把单片机出来的3.3V或5V PWM信号转换成驱动N沟道MOS管所需的高边悬浮栅极电压。它解决的问题很具体高边N沟道MOS管导通时源极电位会抬升到母线电压普通推挽驱动根本拉不开栅源电压而IR2104靠自举电容把这个电压“顶”上去让高边MOS管真正饱和导通。这套电路适合谁适合已经会焊板子、能看懂基本原理图、想从“买模块”过渡到“自己设计功率级”的电子爱好者也适合做课程设计、毕业设计的学生以及需要小批量自制电机驱动板的工程师。它不复杂但坑不少自举电容选错会烧芯片死区没留够会直通炸管栅极电阻乱配会让波形振铃。我前后搭过五六版IR2104的H桥从最开始用洞洞板飞到后来打样PCB烧过的MOS管少说也有二十来颗下面把这些经验完整拆开讲。整篇文章会从芯片工作边界讲起到自举电容的计算、死区时间的设置、栅极电阻的取舍、PCB布局的细节最后给出一份可以直接照着连的完整电路图和物料清单。你不需要有很深的电源背景但需要有一点耐心因为功率电路和纯数字电路不一样一个参数没算对上电瞬间就可能冒烟。2. IR2104的工作边界与自举电路的真正门槛2.1 先搞清楚IR2104到底能干什么、不能干什么IR2104是单通道半桥驱动器内部集成了一个高边驱动通道和一个低边驱动通道输出电流能力典型值约210mA拉电流、约360mA灌电流不同厂家批次略有差异以数据手册为准。它的输入逻辑很简单一个IN引脚控制半桥输出状态一个SD引脚做关断。IN为高时高边导通、低边关断IN为低时低边导通、高边关断。SD拉低时两路输出都关断这个引脚在故障保护时非常有用。但它有几个硬边界必须提前知道。第一它本身不带死区插入功能IN翻转时高边和低边是“你关我开”的瞬时切换如果MOS管关断慢就会出现上下管同时导通的直通现象。第二自举电容需要靠低边导通时充电如果占空比长期接近100%高边会因为没有刷新自举电荷而掉压。第三它的工作电压范围虽然标称到600V但在低压12V、24V场景下用完全没问题只是自举二极管和电容的选型要按实际母线电压来。我见过有人拿IR2104直接驱动P沟道MOS管做高边这是错的。IR2104的高边输出是参考到VS开关节点的浮动电源专门为N沟道高边管设计。P沟道管做高边虽然简单但导通电阻大、价格贵大电流场景基本被N沟道取代。2.2 自举电容不是随便抓一个0.1uF就行自举电路的核心是一个二极管加一个电容。低边MOS管导通时VS被拉到地此时VCC通过自举二极管给自举电容充电电容两端电压接近VCC减去二极管压降。当高边MOS管需要导通时IR2104把自举电容上的电压加到高边管的栅极和源极之间源极电位抬到母线电压栅极就被“顶”到母线电压加VCC从而实现饱和导通。自举电容的容量计算有个常用经验公式C_boot ≥ 2 × Q_g / (VCC - V_f - V_gs_min)其中Q_g是MOS管的栅极总电荷V_f是自举二极管正向压降V_gs_min是MOS管可靠导通所需的最小栅源电压。举个实际例子IRF3205的Q_g约63nCVCC取12V自举二极管用1N4148压降约0.7VV_gs_min取8V那么C_boot ≥ 2×63nC/(12-0.7-8) ≈ 38nF。实际选0.1uF到1uF都行我一般用0.47uF或1uF的X7R陶瓷电容。但这里有个容易忽略的点自举电容不能太大。容量太大时每次高边导通需要从VCC抽取更多电荷去补充如果VCC供电能力弱会把VCC拉低。同时电容太大也会延长充电时间在高频PWM下可能来不及充满。我实测在20kHz PWM、50%占空比下0.47uF配合IRF3205工作很稳换成10uF电解电容反而出现高边驱动电压不足的情况。自举二极管必须选快恢复或超快恢复类型反向恢复时间要短。1N4148在低频下能用但20kHz以上我推荐用US1M或ES1D这类超快恢复二极管。普通整流二极管如1N4007反向恢复慢会在开关瞬间产生额外损耗和干扰。2.3 高边通道的“刷新窗口”决定了最大占空比因为自举电容只能靠低边导通时充电所以高边不能一直开着。假设PWM频率20kHz周期50us如果占空比99%低边只有0.5us导通时间这点时间可能不够给自举电容补足电荷。实际使用中我建议单个PWM周期内低边至少保证1到2us的导通时间对应20kHz下最大占空比约96%到98%。如果你确实需要接近100%的占空比有两个办法。一是用带电荷泵的驱动芯片替代IR2104二是用“高边常通加低边PWM”的拓扑但这需要额外逻辑。对于绝大多数电机调速场景95%占空比已经够用电机端电压接近母线电压没必要追求100%。3. 四个MOS管怎么选、怎么摆H桥才不会直通3.1 上下管的选型逻辑不一样H桥有四个位置高边左、低边左、高边右、低边右。高边管和低边管虽然都是N沟道但关注点不同。低边管源极接地驱动简单主要看导通电阻Rds(on)和电流能力。高边管源极接开关节点驱动靠自举除了Rds(on)还要关注Q_g和输入电容Ciss因为这两个参数直接影响自举电容和驱动电流需求。以12V、5A的直流电机为例母线电压12V峰值电流可能到10A。选MOS管时耐压至少留2倍余量所以30V以上的管子比较稳妥。IRF3205是55V、110A、Rds(on)约8mΩ的经典管Q_g约63nC价格便宜适合做学习和中小功率应用。如果想效率更高可以选IRF1404或IRL2203N这类低导通电阻的管子但要注意IRL系列是逻辑电平驱动栅极阈值电压低和IR2104配合时反而要留意误导通问题。我个人的经验是学习阶段用IRF3205就够了便宜耐造烧了不心疼。等电路稳定了再换低Rds(on)的管子提升效率。不要一上来就用昂贵的低内阻管因为调试阶段炸管是常态。四个管子的摆放顺序也有讲究。通常把两个高边管放在靠近母线电容的位置两个低边管放在靠近电机输出端的位置这样功率回路的寄生电感更小。具体布局在PCB部分会详细讲。3.2 死区时间不设就是等着炸管IR2104没有内置死区IN引脚翻转时高边关断和低边开通之间没有延迟。MOS管关断需要时间栅极电荷通过栅极电阻放电如果放电慢关断延迟就长。假设高边管关断延迟100ns低边管开通延迟20ns那么在IN翻转后的80ns内上下管同时导通母线通过两个管子直接短路电流瞬间冲到几十甚至上百安培管子必炸。解决办法是在单片机PWM输出端插入死区。具体做法用定时器生成两路互补PWM但两路都不完全占满周期而是在切换点留出一段两边都关断的时间。以STM32为例高级定时器TIM1的互补输出自带死区插入功能配置BDTR寄存器的DTG位即可。死区时间一般取100ns到500ns具体看MOS管关断速度。IRF3205配10Ω栅极电阻时关断时间大约200ns死区设300ns比较安全。如果你用普通IO口软件翻转那必须在代码里手动加延时。比如先拉低高边驱动信号延时1us再拉高低边驱动信号。这个延时不能省我早期省过结果上电第一次换向就炸了两颗IRF3205。注意死区时间不是越大越好。死区太大电机低速时会出现转矩脉动因为电流续流路径被切断的时间变长。一般控制在PWM周期的1%到3%之间比较合适。3.3 栅极电阻太小振铃太大发热IR2104输出到MOS管栅极之间要串一个电阻通常叫栅极电阻Rg。它的作用是限制栅极充电电流控制开关速度。Rg太小开关快但栅极回路容易和寄生电感产生振铃严重时栅源电压超过20V击穿氧化层。Rg太大开关慢开关损耗增加管子发热。IRF3205的栅极电荷63nC如果Rg取10ΩIR2104输出12V峰值充电电流约1.2A在IR2104的驱动能力范围内。开关时间大约几百纳秒配合300ns死区刚好。我试过Rg取4.7Ω开关更快但示波器上看栅极波形有明显振铃后来加到10Ω就干净了。也试过Rg取47Ω管子明显发热因为开关损耗上去了。实际取值建议中小功率场景Rg取10Ω到22Ω先取10Ω用示波器看栅极波形如果有振铃就加大如果发热严重就减小。栅极电阻的功率不重要因为平均电流很小用0805封装的普通电阻就行。另外栅源之间要并一个下拉电阻通常10kΩ作用是防止单片机还没初始化时栅极悬空导致误导通。这个电阻不能省我见过因为省这个电阻上电瞬间电机自己转起来的案例。4. 从原理图到洞洞板一次完整的搭建过程4.1 完整电路图的逐块拆解先给出一份可以直接照着连的电路框架。整个电路分四块电源部分、IR2104驱动部分、MOS管H桥部分、单片机控制部分。电源部分母线电压12V直接给H桥供电同时经过一个7805或AMS1117-5.0降到5V给IR2104的VCC和单片机供电。注意IR2104的VCC范围是10V到20V5V不够所以IR2104的VCC要接12V不能接5V。这一点很多人搞错以为IR2104和单片机一样用5V。实际上IR2104的VCC最低10V典型12V所以要从母线12V直接取电或者单独用12V电源。IR2104驱动部分两片IR2104一片驱动左半桥一片驱动右半桥。每片IR2104的VCC接12VCOM接地IN接单片机PWMSD接高电平或单片机IO做使能。自举二极管从VCC到VB自举电容从VB到VS。HO接高边MOS管栅极LO接低边MOS管栅极VS接半桥中点。MOS管H桥部分四个N沟道MOS管左高边和左低边组成左半桥右高边和右低边组成右半桥。左半桥中点是电机一端右半桥中点是电机另一端。每个MOS管栅极串10Ω电阻栅源并10kΩ下拉。母线两端并一个大电解电容比如470uF/25V和一个小陶瓷电容0.1uF用于吸收换向时的电流冲击。单片机控制部分以STM32或Arduino为例输出两路PWM分别给两片IR2104的IN。左半桥IN给高电平时左高边导通电机左端接母线正右半桥IN给高电平时右高边导通电机右端接母线正。如果左高边和右低边同时导通电机正转左低边和右高边同时导通电机反转。调速就是调PWM占空比。4.2 洞洞板搭建的顺序和检查点我建议按以下顺序焊接每焊完一步用万用表检查不要全部焊完再上电。第一步焊电源部分。焊好7805或AMS1117输入接12V输出测5V。确认5V正常后再往下。第二步焊两片IR2104的电源和地。VCC接12VCOM接地SD接5V使能。此时不接MOS管用示波器看HO和LO输出。IN给5V方波HO应该有跟随的方波LO相反。如果HO没有输出检查自举电容和二极管是否焊好。注意此时VS悬空自举电容没有充电回路HO可能不正常。可以把VS临时接地让低边导通时给自举电容充电再看HO波形。第三步焊四个MOS管和栅极电阻。先不接电机母线串一个限流电阻比如12V灯泡或10Ω/5W电阻做保护。上电后测四个管子的栅极电压确认没有直通。如果限流电阻发热严重说明有直通立即断电检查。第四步接电机去掉限流电阻给PWM信号。先给低占空比比如10%观察电机是否转动电流是否正常。然后逐步加大占空比摸MOS管温度。如果某个管子明显发热检查对应驱动信号和死区。我搭第一版时在第三步就发现限流电阻发烫查了半天发现是右半桥的高边和低边栅极信号接反了导致IN高时高边关、低边开IN低时高边开、低边关逻辑完全颠倒。这种接线错误在洞洞板上很常见一定要对照原理图逐根线核对。4.3 上电瞬间最容易烧管的三种情况第一种自举二极管方向焊反。自举二极管应该从VCC指向VB如果焊反自举电容充不上电高边MOS管无法导通电机只能单向转或者不转。更严重的是如果二极管反向击穿VCC直接加到VS可能损坏IR2104。第二种高边和低边MOS管位置装错。有人把高边管和低边管搞混高边管源极应该接半桥中点如果接到地上电就直通。识别方法高边管的漏极接母线正源极接半桥中点低边管的漏极接半桥中点源极接地。第三种死区没设或设得太小。这是最隐蔽的因为空载时可能不炸带载换向时才炸。我建议第一次上电一定要用限流电阻并且先用低占空比、低频率比如1kHz测试确认换向正常后再提高频率。5. 实测波形与常见故障的排查链路5.1 用示波器看什么波形、怎么判断正常搭好电路后示波器是最重要的调试工具。需要看三个波形单片机PWM输出、IR2104的HO输出、MOS管栅极电压。单片机PWM输出应该是干净的方波上升沿和下降沿陡峭。如果边沿有振铃可能是IO口驱动能力不足或走线太长可以在IO口串22Ω电阻。IR2104的HO输出是浮动信号示波器探头地要接VS不能接电路地否则会短路自举电容。HO波形应该和IN同相幅度接近VCC。如果HO幅度明显低于VCC说明自举电容容量不够或自举二极管压降太大。MOS管栅极电压波形应该是一个带平台的充电曲线平台电压接近VCC。如果平台电压只有几伏说明驱动能力不足或栅极电阻太大。如果波形有严重振铃尖峰超过20V说明栅极电阻太小或走线电感太大需要加大电阻或缩短走线。我实测IRF3205配10Ω栅极电阻、20kHz PWM时栅极上升时间约300ns下降时间约200ns波形干净无振铃。HO输出幅度约11.3V自举二极管压降约0.7V符合预期。5.2 电机不转、单向转、抖动分别查什么电机完全不转先查电源。母线12V是否正常5V是否正常IR2104的VCC是否12V。然后查SD引脚是否使能IN是否有PWM。如果都正常查自举电容是否焊好VS是否接到半桥中点。电机只能单向转查另一片IR2104的输入信号。可能是单片机PWM没有输出到那片IR2104或者那片IR2104损坏。交换两片IR2104的输入信号如果转向改变说明问题在单片机侧如果转向不变说明问题在驱动或MOS管侧。电机抖动不转通常是死区太大或PWM频率太低。死区太大时低速下电流断续电机抖动。可以减小死区时间试试。PWM频率太低比如几百赫兹时电机也会抖动因为电流纹波大。一般直流电机PWM频率取10kHz到20kHz高于20kHz时开关损耗增加低于10kHz时噪音明显。还有一种情况是电机转但无力查母线电容是否容量不足。换向时母线电流突变如果电容太小母线电压会瞬间跌落导致MOS管驱动不足。我一般按每安培电流配100uF电解电容5A电机配470uF以上。5.3 炸管后的排查顺序如果不幸炸管不要急着换新管子上电。先断电用万用表查四个MOS管是否击穿。栅极和源极之间如果短路说明栅极氧化层击穿漏极和源极之间如果短路说明沟道击穿。然后查IR2104是否损坏。测VCC和COM之间是否短路HO和VS之间是否短路。IR2104损坏通常是高边自举部分击穿原因多是自举电容过大或自举二极管反向恢复太慢。最后查死区设置和栅极电阻。炸管往往不是单一原因而是死区不够加栅极电阻太小加走线电感大共同作用。我炸得最惨的一次是死区设了50ns栅极电阻4.7Ω走线用了10cm的杜邦线结果换向瞬间栅极振铃到25V高边管栅源击穿然后直通把低边管也带走了。后来死区加到300ns栅极电阻换10Ω走线缩短到2cm再没炸过。6. 从能跑到好用PCB布局与散热处理6.1 功率回路面积决定EMI和振铃洞洞板能跑通但要想稳定可靠还是得打PCB。PCB布局的第一原则是功率回路面积最小。功率回路包括母线电容、高边MOS管、低边MOS管、电机。这个回路的电流在换向时突变回路面积越大寄生电感越大振铃越严重。具体布局母线电容紧挨着四个MOS管放置电容正极到高边管漏极的走线尽量短而粗低边管源极到电容负极的走线也尽量短而粗。电机输出线从半桥中点引出不要和驱动信号线平行走。驱动信号线要远离功率线。IR2104的HO、LO、VS走线尽量短自举电容和二极管紧挨IR2104放置。栅极电阻靠近MOS管栅极放置不要放在IR2104旁边否则栅极走线太长会引入电感。我打样过一版PCB功率走线用2mm宽驱动走线用0.3mm宽功率地和信号地单点连接。实测换向振铃比洞洞板小很多MOS管温升也低了十几度。6.2 散热片和温度实测IRF3205的Rds(on)约8mΩ5A电流下导通损耗约0.2W开关损耗在20kHz下约0.1W到0.3W总损耗不到0.5W。TO-220封装不加散热片时热阻约62°C/W环境25°C时结温约56°C可以接受。但如果电流到10A导通损耗0.8W加上开关损耗结温可能超过100°C必须加散热片。我实测5A连续运行时IRF3205表面温度约45°C不加散热片没问题。10A时表面温度到70°C加一个小铝片后降到50°C。如果电机堵转电流可能冲到20A以上这时候散热片和过流保护都要跟上。过流保护可以简单用一个采样电阻加比较器实现也可以靠IR2104的SD引脚做快速关断。我一般会在母线串一个0.01Ω采样电阻用LM393比较超过阈值就拉低SD。这个保护在堵转时能救命。6.3 自举电容和栅极电阻的最终取值建议经过多版调试我总结出一套适合12V到24V、5A到10A直流电机的参数组合元件参数说明自举电容0.47uF/50V X7R配合IRF3205的63nC栅极电荷自举二极管US1M超快恢复反向恢复时间75ns栅极电阻10Ω0805封装开关时间约300ns栅源下拉10kΩ防止悬空误导通母线电容470uF/25V电解 0.1uF陶瓷每5A电流配100uF死区时间300ns配合10Ω栅极电阻PWM频率20kHz高于听觉范围开关损耗可接受这套参数我用了很久从12V小电机到24V中型电机都稳定。如果你用更低导通电阻的MOS管比如IRF1404Q_g更大自举电容要相应加大到1uF。如果你用逻辑电平MOS管栅极阈值低栅源下拉电阻要减小到4.7kΩ防止干扰误导通。7. 几个只有实际搭过才会知道的细节第一个细节IR2104的SD引脚不要悬空。悬空时内部状态不确定可能随机使能或关断。我一般直接接5V使能或者接单片机IO做软件关断。如果接IOIO初始化前要确保IR2104处于关断状态可以在SD和地之间并一个10kΩ下拉。第二个细节两片IR2104的IN信号不能同时为高。如果左半桥IN和右半桥IN同时为高左高边和右高边同时导通电机两端都接母线正电机不转但两个高边管都在导通状态如果此时电机有反电动势可能形成环流。正确的逻辑是左高边和右低边一组左低边和右高边一组两组交替导通。第三个细节电机两端要并一个续流二极管吗H桥内部MOS管的体二极管已经可以续流但体二极管反向恢复慢大电流下损耗大。如果电机电流大、换向频繁建议在四个MOS管旁边各并一个肖特基二极管比如SS54降低续流损耗。小电流场景体二极管够用。第四个细节上电顺序有讲究。先给控制部分5V上电让单片机初始化IR2104的SD拉低再给母线12V上电。如果先给母线12V此时单片机还没初始化IN引脚状态不确定可能瞬间直通。我习惯在母线正极串一个开关先开5V再开12V。第五个细节调试时用隔离电源给控制部分供电。如果控制部分和功率部分共地示波器探头地夹在功率地上容易引入干扰甚至烧探头。用一个小功率隔离模块给5V供电调试会安全很多。这些细节在数据手册上不会写都是炸过管子、烧过芯片之后才记住的。IR2104加MOS管H桥本身不复杂但功率电路的特点是“差一点就炸”所以每一步都要留余量、做保护、多测量。你按上面的参数和步骤搭第一版可能不会完美但至少不会一上电就冒烟。等跑起来之后再慢慢优化死区、栅极电阻和布局这套电路能陪你走很远。
