
1. 推挽最初是被“效率问题”逼出来的1.1 先看单管输出级的尴尬很多刚接触三极管电路的朋友第一次搭放大器或驱动电路时都会从共射极放大电路起步。这个电路结构很简单一个NPN三极管基极输入信号集电极接负载电阻到电源发射极接地。信号从基极进去从集电极出来电压放大了电流也放大了看起来挺好用。但如果你真的拿它去驱动喇叭、电机或者LED灯带很快就会发现问题——静态功耗大得离谱。为了让输出信号不产生严重失真三极管必须始终工作在放大区意味着不管有没有信号输入集电极和发射极之间始终有一大截电压降同时还有持续的电流流过。这个压降和电流的乘积就是实打实的发热。我最早用单管甲类放大推一个小喇叭静态电流调到几十毫安管子摸上去已经烫手了音量稍微开大一点电源电压还被拉得直往下掉。这就是单管方案的天然矛盾想要输出幅度大、失真小静态功耗就压不下来想要省电管子就必须工作在截止区附近信号一负半周就直接削波了。更麻烦的是单管共射电路输出的是反相信号负半周信号的放大能力天然受限想要正负半周都干净地放大单靠一个管子非常吃力。1.2 推挽结构的基本思路推挽电路解决的就是上面这个矛盾。思路很直接让两个管子轮流干活。以最常见的互补推挽结构为例上面用一只NPN三极管下面用一只PNP三极管两只管子一个负责“推”——把输出节点往电源正极方向拉另一个负责“挽”——把输出节点往电源负极方向拉。输入信号为正半周时NPN管导通PNP管截止输出电流从电源正极经过NPN管流向负载输入信号为负半周时PNP管导通NPN管截止电流方向反过来负载从输出节点经PNP管向电源负极抽电流。这样一来每个管子只在半个周期内工作另一半时间处于截止状态静态功耗理论上可以做到接近于零。这是推挽电路最核心的价值用两个管子的交替工作换取效率和输出能力的双提升。实际应用里大到音频功放的末级输出小到单片机IO口驱动LED、H桥电机驱动、电平转换电路到处都有推挽结构的存在。我对推挽电路最直观的印象来自一个很朴素的场景你要用GPIO去驱动一个需要较大电流的负载直接接IO口拉不动加一个三极管做开关又只能单向控制。这时候用一对互补三极管搭成推挽IO口高电平推、低电平拉整个电路既能输出电流也能吸收电流灵活性一下就上来了。1.3 放大区还是开关区先说清楚工作边界聊推挽电路之前必须先建立一个概念三极管推挽电路有两种完全不同的用法一种是线性放大一种是开关切换。这两种用法的偏置条件、设计目标和注意点差别非常大混在一起聊很容易绕晕。线性放大的推挽电路要求两只管子都工作在放大区输入信号在正负半周之间连续变化输出也跟着连续变化。这种电路最常见于音频功率放大器它的核心指标是失真小、线性好所以需要设置合适的静态工作点让两只管子在小信号时都处于微导通状态。开关用的推挽电路输入信号只有高低电平两种状态两只管子要么饱和导通要么完全截止输出在最顶上和最底下之间来回跳变。这种电路的核心指标是导通压降小、切换速度快、驱动能力强常见于电机驱动、DC-DC变换器的栅极驱动、电平转换等场景。开关状态下的推挽电路不需要考虑交越失真但需要重点考虑基极驱动电流够不够、管子的开关速度跟不跟得上、以及米勒电容对切换边沿的影响。明白了这个区分后面再看具体电路就有方向感了。2. 8050和8550这对经典对管到底怎么“推”和“挽”2.1 一个周期内的完整电流路径搜索热词里反复出现“8050和8550推挽电路图解说明”说明很多人入门就是拿这对管子练手的。8050是NPN管8550是PNP管它们参数对称、封装一致、价格便宜市面上几毛钱一只几乎成了互补推挽的代名词。我最早焊接推挽电路也是从这对管子开始的下面把电流路径完整走一遍。假设电源电压VCC是5V负载是一个8欧的喇叭或者LED串电阻输入端接一个正弦交流信号。当输入信号处于正半周时也就是信号电压高于某个基准点的时候8050NPN的基极电压高于发射极电压VBE大于0.7V左右8050正向导通电流路径是VCC → 8050的集电极 → 8050的发射极 → 负载 → 地8550PNP这边基极电压相对发射极来说不够负VEB不足8550截止不参与工作。当输入信号进入负半周时8050的基极电压下降VBE低于导通阈值8050截止8550PNP的基极电压相对发射极变负VEB超过0.7V左右8550导通电流路径是负载的一端经8550的集电极和发射极流向地或者说从地经过8550把输出节点往下拉负载上的电流方向与正半周相反。这就是“推”和“挽”的具体含义NPN管把输出节点向上推PNP管把输出节点向下拉。输出端得到的电压正半周接近VCC减去8050的饱和压降负半周接近地加上8550的饱和压降。上面这个描述用的是共集电极接法也就是射极跟随器形式这是互补推挽最常见的接法。这种接法没有电压增益但电流增益很大输入阻抗高、输出阻抗低非常适合做功率输出级。2.2 NPN和PNP的导通条件差异好多人在这一步卡住为什么同是基极输入信号NPN和PNP的导通逻辑是反着的这就要回到三极管的导通条件本身。NPN三极管导通的本质是基极电流从基极流向发射极即基极电压比发射极高出一个VBE硅管约0.6~0.7V。对8050来说发射极接在输出节点上集电极接VCC当基极电压高于发射极0.7V时基极有电流流进集电极电流跟着被拉通管子进入放大或饱和状态。PNP三极管则相反它导通的本质是发射极电流从发射极流向基极即发射极电压比基极高出一个VEB。对8550来说发射极接VCC或者接输出节点基极电压比发射极低0.7V时基极有电流流出集电极电流才走得通。推挽电路里两只管子的发射极经常是接在一起的共射极输出信号源加在两只管子的基极上。输入信号抬高时8050的基极相对发射极电压升高满足NPN导通条件同时8550的基极相对发射极电压也在升高这反而让它的VEB减小于是8550更趋于截止。输入信号拉低时情况正好反过来。所以两只互补管天然形成一种互相排斥的工作关系不需要额外的逻辑来控制谁工作谁休息。这也是为什么我一直建议初学者先记住一句话NPN是电流流进去才导通PNP是电流流出来才导通。把这句话刻在脑子里再看推挽电路就豁然开朗了。2.3 从等效电路理解为什么两管不会同时猛导通有人会问输入信号在零点附近来回变化时会不会出现两只管子同时在导通区间里打架的情况答案是会但通常只是短暂且轻微的严重打架是电路设计有问题。从NPN和PNP的等效模型来看每只管子导通都需要基极和发射极之间的PN结正偏。在输入信号过零的瞬间8050需要基极电压比输出节点高0.7V8550需要基极电压比输出节点低0.7V。也就是说两只管子同时导通需要基极电压同时满足“比输出节点高0.7V”和“比输出节点低0.7V”这要求输入电压摆动幅度达到1.4V而且输出节点在它们中间。输入信号剧烈变化时确实会有一小段区间里两只管子都有微弱导通此时VCC到地之间会有一条低阻通路产生所谓的“交越导通”或“直通”问题。线性放大用的推挽电路里这个区间通常很窄两只管子同时导通的电流不大主要影响是交越失真但在大电流开关电路里这个问题会被放大因为管子一旦同时深度导通VCC到地之间的电流可能达到几安培管子直接冒烟。所以开关推挽电路设计时要么通过驱动逻辑保证上下管不同时导通要么用图腾柱驱动芯片内置的死区控制来处理。三极管分立方案里最简单的做法是在基极驱动信号上做手脚让切换沿尽量陡峭缩短两只管子同时导通的时间。3. 交越失真与静态工作点推挽最现实的坑3.1 死区是必然存在的如果严格按照上面的理论分析去搭一个推挽电路输入端接正弦波用示波器看输出波形会发现一个尴尬的现实输出波形在过零附近是平的像一个阶梯这就是交越失真。原因很简单。NPN管要导通基极必须比发射极高0.7VPNP管要导通发射极必须比基极高0.7V。也就是说输入信号在正负0.7V之间的这个区间内两只管子都不满足导通条件输出级处于“没人管”的状态。这个区间就是死区失真的根源。我最初搭8050/8550推挽仿真时输入1V正弦波输出波形过零处明显被削掉了一小截听感上声音发破、发干低频像被砍了一刀。当时第一反应是电路接错了检查半天没发现问题后来才明白这就是经典的交越失真——没有偏置的互补推挽必然会产生交越失真这不是bug而是三极管物理特性的直接结果。3.2 加偏置消除交越失真的做法解决交越失真的标准方法是给两只管子设置一个静态工作点让它们在无信号输入时也处于微微导通的状态。最常用的办法是在两只管子的基极之间串联两个二极管或者用一个电阻加一个二极管把基极之间的电位差钳在1.2~1.4V左右。这样做的原理很巧妙两个串联的二极管的压降约1.4V正好等于8050的VBE0.7V加上8550的VEB0.7V。输入信号为0时两只管子的基极电位一个偏高、一个偏低但差值刚好让两只管子都处于临界导通状态输出节点有一个很小的静态电流流过。当输入信号稍微偏正时8050的导通程度加深8550的导通程度减弱信号稍微偏负时则反过来。这样一来两只管子的导通交接是平滑过渡的不存在明显的死区交越失真被大幅压制。加这个偏置还有一重好处它让输出级的静态功耗虽然不再是零但依然很小比单管甲类省电得多属于乙类和甲类之间的折中业界叫甲乙类。我做音频小功放时用两个1N4148串联做偏置静态电流调到5~10mA左右失真明显降低实测听感比无偏置版本干净太多了。3.3 甲乙类推挽的实际演示为了让大家有个直观认知我给一个最简甲乙类推挽的静态计算例子。电源电压12V负载8欧喇叭8050和8550各一只两个1N4148串联接在两只管子基极之间做偏置。设两只管子的静态发射极电流设定为10mA则发射极串联的0.5欧电阻两端的压降为5mV对工作点影响很小可以忽略。关键点是两个1N4148的总压降约1.3V左右这个压降落在8050的BE结、0.5欧电阻、0.5欧电阻、8550的EB结之间因为两只管子参数对称每只管子分到的偏压大约是0.65V刚好在导通阈值附近处于微导通。信号正半周到来时8050基极电压上升VBE超过0.7V8050开始强力导通把输出节点往上推8550的VEB因为基极电压上升而被压低进入截止。负半周时完全反过来。整个换班过程没有明显的“无人值守”空档交越失真被压缩到一个极低的水平。有一点要提醒二极管偏置的效果受温度影响较大因为二极管的压降和三极管的VBE都有负温度系数两者能部分互相补偿但做不到完全一致。要求高的场合会使用带温度补偿的VBE倍增电路用三极管和电阻搭一个可调的偏置源。对入门来说串联二极管方案已经够用。4. 推挽电路在开关场景的设计计算4.1 基极限流电阻怎么取推挽电路用来做开关节能省电但基极驱动电流的计算很多人会栽跟头。以8050为例它的最大集电极电流IC一般是500mA到1A级别直流放大倍数HFE在30到300之间实际设计时为了确保饱和导通HFE取值要保守一些通常按10到30来算。假设负载需要200mA电流我们从集电极电流开始倒推基极电流。按HFE20估算基极电流需要10mA。基极驱动电压如果是3.3V的IO口减去8050基极到发射极的压降0.7V剩下2.6V加在基极限流电阻上。用欧姆定律算电阻值 2.6V / 10mA 260欧。取标准值270欧即可。这时候很多人会问为什么要按这么保守的HFE来算直接看手册里的最大值300不行吗不行。原因是三极管的HFE离散性很大同一批次的管子都可能从50到200之间分布而且温度升高HFE还会变化。如果按HFE300算基极电流只需要不到1mA一旦换上HFE偏低的管子三极管进入不了深度饱和集电极-发射极压降变大管子发热严重负载上的电压也会不够。开关电路设计的第一原则就是让基极电流足够大确保管子工作在深度饱和区。4.2 1.8V转3.3V串口电平转换的推挽改法热词里有个非常具体的场景“三极管 1.8v转3.3v串口”。这实际上是推挽电路的一个巧妙应用。两个不同电压域的设备之间做UART通信1.8V的设备要和3.3V的设备对话最稳的办法就是用一对互补三极管搭成双向电平转换电路或者用NMOS加推挽结构。如果用三极管实现单向1.8V转3.3V最简单的思路是共射极反相器再配合上拉电阻但缺点是需要额外一级反相。推挽结构可以做得更“直接”上面用PNP管下面用NPN管两个基极接在一起作为输入端。输入低电平0V时PNP管导通输出被拉到3.3V输入高电平1.8V时NPN管导通输出被拉到0V。这样输入和输出之间是反相关系而且输出摆幅完整覆盖0到3.3V。更常见的双向电平转换电路则是用一只N沟道MOS管加两个上拉电阻实现的但它的本质也是利用“推挽思想”——两个方向上各自由对应侧的上拉电阻提供高电平MOS管提供低电平。它的优点是结构简单、双向工作、成本极低很多开发板上的I2C电平转换就是这种结构。用推挽电路做电平转换时一个关键点是输入阈值要匹配。比如输入信号是1.8V逻辑高电平只有1.8V如果直接用NPN管做反相器1.8V减去0.7V的VBE之后基极驱动能力依然充足可以可靠导通但驱动PNP管时需要关注PNP管的EB压降和输入高电平之间的裕量。实测下来1.8V信号驱动8550这类管子没有问题但如果输入高电平只有1.2V就要考虑用低VBE的管子或者加一级前置缓冲。4.3 负载是电机时要注意什么推挽电路驱动电机和驱动LED是两个世界。LED对电流方向不敏感极性接反顶多不亮电机是感性负载电流不能突变开关切换瞬间会产生反向感应电动势而且驱动方向直接影响电机转向。用推挽电路驱动直流电机一个常见方案是做成H桥四个开关管分别控制电机两端通过切换导通组合让电机正转、反转、刹车和滑行。H桥每一侧的上下管如果同时导通就构成直通短路电流会烧毁管子。因此H桥驱动必须严加控制同一侧的上下管绝对不能同时导通。这时候三极管推挽电路的另一个知识点就浮出水面了——米勒电容和开关速度。三极管的集电极和基极之间存在一个等效电容叫米勒电容它会降低管子的开关速度。在推挽开关电路中如果基极驱动电阻太大充电电流不够管子关断变慢切换过程中两只管子同时导通的时间就会变长这时即使逻辑上没错实际电路也会因为“直通”发热甚至损坏。处理办法有几个降低基极限流电阻增大驱动电流加快开关速度在基极电阻上并联一个加速电容开关瞬间电容短路提供大电流稳态时电阻限流用图腾柱驱动芯片替代分立三极管芯片内置死区控制保证上下管可靠分时导通。我在做小型直流电机驱动时最开始用单片机IO直接推推挽对管切换频率一高管子就发烫。后来查了示波器波形发现切换沿很缓典型的米勒平台拖尾上下管同时导通时间长达几百纳秒。增大基极驱动电流、并上小加速电容后开关波形干净了很多发热问题也随之消失。5. 选型、米勒电容与实测中的注意事项5.1 常见小信号三极管怎么选三极管型号多到数不过来但推挽电路里常用的其实就那么几对。我把常见组合整理了一下方便对照选型型号组合类型最大IC主要用途特点8050 / 8550NPN / PNP0.5~1A小功率推挽、音频功放、电平转换互补对称便宜大碗9013 / 9012NPN / PNP0.3~0.5A小信号放大、简易驱动低噪声适合前级2N3904 / 2N3906NPN / PNP0.2A通用开关、逻辑电平转换高频特性好国际通用S8050 / S8550NPN / PNP1A电机驱动、稳压器扩流和8050系列管脚排列一致功率略大2N5089NPN0.1A音频低噪声放大高HFE适合前置放大级选型时首先要看的是VCEO集电极-发射极耐压和IC最大集电极电流这两个参数必须显著高于实际工作电压和电流一般留出1.5到2倍裕量。其次是关注HFE的离散程度和ft特征频率。音频放大重点关注噪声和线性度开关应用重点关注开关速度和饱和压降。小技巧同样型号不同厂家生产的管子饱和压降和开关速度可能差不少。自己DIY玩玩无所谓批量做产品还是建议锁定一两个渠道的货避免换料后性能漂移。5.2 三极管的米勒电容为什么在推挽里也要关心很多人以为米勒电容只是MOS管的专利实际上三极管同样存在这个问题。三极管集电结CB结在反向偏置时等效为一个电容它连接着基极和集电极。基极电压变化时需要通过这个电容对集电极电位变化进行“反馈补偿”相当于基极驱动电路要额外给这个电容充放电。这个等效到基极的电容就是米勒电容大小约等于CB结电容乘以电压增益放大倍数越高等效电容越大。在推挽开关电路中米勒电容的影响表现在关断过程上。以8050为例基极驱动信号拉低时基极电荷需要泄放集电结电容上的电荷也要通过基极回路泄放。如果基极驱动电阻很大泄放电流就小管子迟迟退不出饱和区关断过程被拖长。这段时间里上下管可能都在导通VCC到地之间的电流没有被完全阻断损耗和发热随之而来。解决思路在前面提到过在基极限流电阻上并联加速电容是成本最低的办法。正常的基极电阻比如1K并联一个1nF到10nF的小电容。开关跳变瞬间电容相当于短路基极驱动电流瞬间冲到很大帮助管子快速充放电跳变结束后电容充满电不再导通电阻恢复限流作用。用示波器对比过加了加速电容后开关边沿明显变陡直通时间可以缩短一个数量级。5.3 实测几个容易翻车的细节最后分享几个我在实际搭推挽电路时踩过的坑希望对你有帮助。第一电源旁路电容千万别省。推挽电路切换瞬间电流变化极其剧烈电源线上的寄生电感会产生尖峰电压轻则让波形变差重则击穿管子。在电源正负极之间靠近电路位置放一个100uF电解电容和一个0.1uF陶瓷电容形成高低频互补的去耦组合能解决大部分莫名其妙的振荡问题。第二管脚顺序一定要核实。8050和8550的管脚排列通常是EBC但不同封装、不同厂家可能有差异。我见过不止一次因为默认管脚排列导致电路不工作的案例个别管子E和C接反后不会立刻烧毁但电路功能完全异常查半天查不出来。焊接前务必对着你买的那批管子实测或者查手册确认管脚定义。第三PNP管的饱和压降要实测。手册上给出的VCESat数据通常是特定条件下的典型值实际使用时如果基极电流不够压降可能比手册值大得多。用一个万用表直接测导通时CE两端电压大于0.5V就要怀疑管子没有进入深度饱和。第四推挽电路输入低电平时要防止基极悬空。如果你用的是单片机IO口驱动推挽对管单片机上电复位瞬间IO口可能是高阻态这时候两只管子的基极浮空输出状态不可控。稳妥的做法是在基极输入节点对地加一个10K到100K的下拉电阻让上电默认状态是PNP管导通、NPN管截止输出被拉高避免意外误动作。第五示波器调“带宽限制”档再看波形。推挽电路的开关边沿本身很陡如果示波器探头接地线太长容易接收到额外的噪声和振铃干扰判断。实测高频开关波形时把探头接地弹簧尽可能贴近测量点能获得更真实的波形。6. 推挽电路的扩展思路从分立元件到集成方案聊到这里推挽电路的核心内容已经覆盖得差不多了但有一个方向值得再展开说几句——推挽思想在集成芯片和模块里的延伸。如果你用过MOSFET栅极驱动芯片会发现它们内部的输出级往往就是一个推挽结构。驱动芯片内部集成了两个管子一个负责把栅极充电到高电平一个负责把栅极放电到低电平中间同样存在死区控制逻辑来防止直通。分立三极管推挽电路里学的那些原理——基极电流计算、死区、米勒电容、加速电容——在栅极驱动芯片里全部以更精细的形式被管理和优化了。再比如运算放大器的输出级绝大多数也是推挽结构。运放输出级通常用一对互补三极管或互补MOS管组成甲乙类推挽配合恒流源偏置实现低失真、大摆幅、强驱动能力。你在面包板上手工搭的8050/8550甲乙类输出级本质上和运放内部输出级是同一个设计思路。理解了分立推挽电路再去看运放数据手册里的输出级说明会有一种豁然开朗的感觉。从这个角度说推挽电路不只是初学者要学的一个单元电路它是整个模拟电路世界里一个反复出现的母题。你可以在单管放大电路、音频功放、开关电源、电平转换、栅极驱动、电机驱动等各种场景里反复看到它的影子只是每次变了个形态。我个人的建议是如果你想真正吃透推挽电路别光看理论多动手搭几次。先搭一个不带偏置的乙类推挽用示波器看交越失真然后加上二极管偏置对比失真改善情况再把负载换成电机观察续流和直通问题最后加加速电容和去耦电容把波形调到最漂亮。这几轮实验做下来你对三极管的理解会比看十篇文章都深。三极管这个东西参数再多、曲线再复杂归根结底就是一句话小电流控大电流PNP和NPN只是一对镜像关系。推挽电路的全部秘密不过是让这对镜像兄弟轮流上岗配合默契地把电“推”来“挽”去。把这句话想透了什么甲乙类、什么图腾柱、什么H桥都会变得亲切起来。