三极管分立过压保护电路仿真:阈值计算与LTspice避坑

发布时间:2026/10/7 8:58:11
三极管分立过压保护电路仿真:阈值计算与LTspice避坑 最近在给我一个小功率电源前端加保护输入标称5V但热插拔或者变压器抽头切换的瞬间会冲到7V甚至更高后级的MCU、传感器和一颗低压LDO就顶不住了。挑了一圈现成的过压保护IC要么封装不合适要么成本压不下来最后我决定用分立三极管搭一个过压保护电路并且先在仿真软件里把阈值、响应速度、最坏情况都跑通再动手焊板。这篇就聊由三极管构成过压保护电路的仿真这件事——从电路怎么想、参数怎么算、仿真怎么搭到那些让仿真直接发散、或者逻辑搞反的坑。刚学模电的同学、做硬件几年但没正经碰过分立保护的工程师都能从里面捞到能直接抄的东西。1. 动手之前先想清楚为什么要用分立三极管1.1 先弄明白过压保护到底在保什么很多人一说做过压保护脑子里就一个超了就断电。实际做下来这个超和断里面门道不少。首先得明确保护对象是保护后级的芯片不被击穿还是保护一颗电容不被过压爆掉还是防止负载端的能量倒灌回电源。不同对象对阈值精度和响应速度的要求完全不一样。保护一颗芯片阈值差个0.2V无所谓保护一颗耐压卡得很死的电容那就得算准。其次得明确过压的来源。我这个项目里主要有三种热插拔瞬间的浪涌持续时间从几十微秒到几毫秒变压器抽头切换造成的瞬时高压以及负载突然断开电感储能顶起来的尖峰。它们的能量和持续时间差别很大决定了保护电路是限幅还是切断以及切断速度要多快。再就是保护之后的状态。是自动恢复电压回落就重新供电还是锁死要手动复位。我这边希望自动恢复所以电路里就不能加自锁结构否则每次过压都要人去按一下那就不是产品了。把这几个问题想清楚方案基本就浮现了。单纯限幅浪涌用TVS或者压敏电阻就够需要精确阈值并且真正切断后级才轮到过压保护电路上场。1.2 分立方案和专用IC各自的甜区在哪先说结论不要一上来就排斥分立方案也别迷信IC。专用OVP IC的好处很直接阈值精度高通常能做到±1%到±2%内部自带迟滞、消抖和延时静态电流小电路干净照着数据手册画就行。缺点是贵封装常是小尺寸的DFN或SOT有些还有最小起订量可调的阈值范围受型号限制。分立方案的甜区在于成本能压到很低几毛钱就够阈值可以按需要的任意值设计器件到处都能买坏了自己换还能顺势把后级开关不管是PNP还是MOS一起做进去。痛点是精度受器件本身限制齐纳二极管的容差一般±5%温度系数从-2mV/℃到2mV/℃不等三极管的Vbe还有-2mV/℃的温漂这些叠起来阈值精度大概落在±5%到±8%的区间。所以选型逻辑很简单要求阈值精度优于1%的老老实实上IC误差能容忍5%以上、又要便宜又要灵活分立方案完全够用。我这个项目对精度要求不高5V系统里5.0V到5.8V之间能被保护都算合格所以分立方案是最优解。对比维度分立三极管方案专用OVP IC阈值精度±5%~±8%±1%~±2%单板成本几毛钱几块到十几块阈值可调性任意设计受型号限制响应速度可做到几十微秒通常几微秒静态功耗取决于分压电阻通常很低调试难度需要自己算和仿真基本即插即用1.3 为什么我坚持先仿真而不是直接焊板有人觉得这种几个管子的小电路纸上算算就能焊。这个坑我踩过。分立三极管电路的魅力也是它的麻烦就在于一切都是非线性的叠加。分压电阻、齐纳、三极管Vbe这几个东西单独看都简单凑在一起阈值到底落在哪、检测管什么时候从截止跳到饱和、后级开关关断得干不干脆靠笔算只能算个大概算完心里还是没底。仿真能解决三件事。第一把工作点和阈值跑出来跟手算对一下差在哪一目了然。第二把响应曲线跑出来看它从检测到切断要多久这个时间手算基本算不准。第三做参数扫描和温度扫描看看把齐纳换成5%偏差的、温度从-40℃到85℃时阈值飘多少这些在实物上要花大半天才能测完。这三件事花不了多少时间却能省掉好几轮打板和换料的功夫。仿真里改个电阻值是改个数字焊板上改个电阻是要拆焊时间成本完全不是一个量级。2. 三极管在里面到底怎么干活——把原理拆透2.1 三种工作状态决定了它什么时候隐身、什么时候出手三极管有三个状态截止、放大、饱和。放到过压保护电路里这三个状态各司其职。正常电压下检测管必须处于截止状态它得隐身不能对主回路有任何影响也就是不能漏电流、不能干扰分压点。这时候Vbe小于开启电压硅管大概0.5V才开始有微小电流0.7V才算完全导通集电极几乎没电流。过压来了检测管要迅速进入饱和区把后级开关的控制端拉到底或者拉到头让后级彻底关断。注意这里要的是饱和不是放大。如果检测管停在放大区集电极电流不够大后级开关关不断而且三极管自己会发热这是很多新手容易忽略的点。至于放大区在保护电路里是很尴尬的位置。它意味着检测管处在半开半闭既没完全不影响主回路也没彻底把后级关死。设计上要避免电路稳定地停在放大区那通常意味着阈值设计得不对或者驱动电流不够。工作状态判断条件在保护电路中的角色是否要避免截止Vbe 0.5V正常供电时的隐身状态正常态就该这样放大0.5V VbeVce较高过渡状态或误设计点要避开稳定停留饱和Vbe ≈ 0.7VVce ≈ 0.2V过压时出手拉死后级保护态就该这样2.2 NPN和PNP一个拉低一个拉高分工不能乱分立保护电路里NPN和PNP的分工基本是固定的。NPN的特点是低边用得顺手发射极接GND集电极接负载或者控制端。NPN导通时把集电极往GND拉是灌电流的选手。PNP的特点是高边更自然发射极接正电源集电极接负载。PNP导通时把集电极往电源拉是拉电流的选手。在过压保护里我见过两种常见结构。一种是把NPN做检测管检测到过压后NPN饱和去拉低一个低边开关的基极让低边开关关断切断负载回路。这种方式简单、直接、成本低。另一种是把NPN检测管和PNP高边开关组合检测到过压后用一个反相结构把PNP的基极顶到接近发射极的电位PNP关断从正电源侧切断。这种方式的好处是切断的是正电源负载侧没有残余电压坏处是逻辑更容易搞反因为PNP的关断条件是基极电压接近发射极而不是拉低。我一开始就把这点搞反过想当然地以为检测管导通就把PNP基极拉低PNP就关了。结果仿真一跑过压时PNP反而导通得更狠因为它的Vbe更负了导通更深。这个坑后面第4章再细讲。2.3 阈值不是拍脑袋——分压、齐纳、Vbe的三方联合计算阈值是整个电路的核心。我的设计思路是用分压电阻把输入电压按比例缩小缩到和齐纳击穿电压相当的量级当缩小后的电压加上三极管Vbe达到齐纳电压时检测管开始导通。具体到数字。目标输入5.5V时保护。选齐纳D1的稳压值Vz为3.3V三极管Vbe取0.7V。第一步确定检测管的开启条件。检测管Q1的基极通过齐纳接分压点A发射极接GND。当A点电压VA达到Vz加Vbe时齐纳反向击穿电流经齐纳流入基极Q1开始导通。所以VA的阈值是3.3V加0.7V等于4.0V。第二步确定分压比。要求输入5.5V时VA等于4.0V。分压比k等于VA除以VIN也就是4.0除以5.5约等于0.727。也就是R2除以R1加R2等于0.727反推R1比R2约等于0.375。取R2为100kΩ则R1约37.5kΩ就近取39kΩ。此时实际分压比是100除以139约0.719对应的输入阈值是4.0除以0.719约5.56V离目标5.5V很近可以接受。参数取值对阈值的影响Vz齐纳3.3V每升高0.1V阈值升约0.14VVbe三极管0.7V每变化10mV阈值变化约14mVR139kΩ增大则阈值降低R2100kΩ增大则阈值升高第三步检查正常工况。输入5.0V时VA约等于5.0乘以0.719约3.60V小于4.0V齐纳不击穿Q1截止保护不动作。留了0.4V的余量正常。如果VA离阈值太近正常工作时稍微有点纹波就误触发所以要留够余量我一般留10%以上。2.4 光检测不够——后级开关的驱动余量要算够检测到过压只是第一步真正动手的是后级开关。这部分最容易被忽略也最容易出问题。我用Q2做低边开关串在负载和GND之间。正常时Q2导通负载得电过压时Q1饱和把Q2的基极拉低Q2截止负载断电。Q2正常导通要满足基极驱动电流Ib2足够大让Q2进入饱和。假设负载电流100mAQ2的β取100这是保守值。实际小电流下β可能几百但饱和时有效β会降到10到20所以按20算更保险。Ib2等于100mA除以20也就是5mA。Q2基极通过R4接输入。R4等于5减0.7除以5mA约860Ω取标称值820Ω。再看Q1能不能拉得住。过压时Q1饱和要吸收Q2的基极电流5mA还要把Q2基极电压拉到0.5V以下。Q1的集电极电流能力等于Ib1乘以β。Ib1是齐纳提供的电流取决于分压点的限流。这里有个关键点分压电阻R1同时承担了给齐纳提供电流的任务R1不能太大否则齐纳击穿后没有足够电流维持击穿VA会掉下来电路在阈值附近抖动。一般齐纳工作电流取1mA以上R1约等于输入减Vz除以1mA是个粗略参考。但要兼顾分压比就得在精度和驱动能力之间平衡。这也是为什么很多人用分立方案时发现过压了但是开关关不彻底八成是驱动电流不够。3. 仿真怎么搭——从空原理图到阈值曲线3.1 仿真工具怎么选LTspice、Multisim、Proteus怎么挑工具这块我用过几个说下各自适合什么场景。LTspice免费、轻量、收敛性好、跑得快特别适合这种小规模模拟电路做直流扫描、瞬态、温度扫描都很顺。缺点是界面比较工程画图不如Multisim直观。我这次就用它。Multisim界面友好元件库全教学场景很舒服适合刚开始学的人。缺点是要授权跑大规模电路慢一些。Proteus能仿真单片机加模拟电路混合如果保护电路旁边还挂了个MCU要联动Proteus方便。缺点是模拟仿真精度一般。还有PSpice、Micro-Cap等。对这种几个三极管的电路LTspice足够了。工具免费收敛性适合场景上手难度LTspice是好模拟小电路、扫描分析中Multisim否好教学、验证低Proteus否一般单片机加模拟混合中3.2 从零搭电路每个元件为什么放这里我把电路的关键节点列一下方便照着搭。电源端IN接分压电阻R1到节点AR1的另一端经R2到GND。节点A接齐纳D1的阴极D1的阳极接检测管Q1的基极。Q1发射极接GND集电极接节点C节点C通过上拉电阻R3接IN。节点C接开关管Q2的基极Q2发射极接GND集电极接负载的一端负载另一端接IN。对应的SPICE网表大概是这样* Overvoltage protection circuit VIN IN 0 DC 5 R1 IN A 39k R2 A 0 100k D1 A B DZ3V3 Q1 C B 0 QNPN R3 IN C 10k Q2 LOAD C 0 QNPN RL IN LOAD 100 .model DZ3V3 D(Is1e-14 N1.2 BV3.3 IBV5m) .model QNPN NPN(Is1e-14 Bf200 Vaf100) .tran 0 4m 0 1u .end几个说明。齐纳模型里BV是击穿电压IBV是击穿时的测试电流这两个参数决定了齐纳的软硬程度。三极管模型里Bf是正向βVaf是厄利电压。如果你拿的是实际型号比如2N3904、9013直接调用库里的模型更靠谱。仿真前先跑一次.op也就是工作点看每个节点的直流电压对不对A点应该是3.6V左右B点应该接近0V因为齐纳没击穿三极管没导通C点应该被Q2基极钳在0.7V左右LOAD点接近0V因为Q2饱和。工作点对了再往下做扫描。3.3 直流扫描把保护阈值扫出来这是最关键的一步。用.dc指令让输入从0扫到8V。.dc VIN 0 8 0.01 .plot dc I(RL) .plot dc V(LOAD)扫描完看负载电流随输入电压的变化曲线。正常段电压升高负载电流基本不变因为Q2饱和相当于一个很小的电阻。到了阈值附近Q1突然导通把Q2基极拉低Q2退出饱和负载电流迅速下降。这个从高到低的拐点就是实际保护阈值。如果你想要更精确的阈值可以在拐点附近把扫描步长缩小比如把.dc改写成从5.0扫到6.0、步长0.001把拐点放大看。这一点很重要很多人一开始步长太大看拐点像是一步跳过去其实里面有细节。有个细节拐点往往不是陡直的而是一段斜率不小的斜线段。原因是齐纳的击穿是渐变的也就是软击穿三极管从截止到饱和也有过渡。这段斜率越小越好说明动作越干脆。我实际跑下来这个电路的拐点在5.5V到5.6V之间和手算的5.56V吻合得不错说明模型和计算站得住。3.4 瞬态仿真过压来了它多快能反应直流扫描看的是静态阈值瞬态仿真看的是动态响应。这两件事都得看。用脉冲源模拟过压事件VIN IN 0 PULSE(5 7 1m 1u 1u 500u 2m) .tran 0 4m 0 1u .plot tran I(RL) V(IN)意思是前1ms是5V正常1us内跳到7V保持500us然后1us内回落到5V2ms后重复。这个波形大致模拟了热插拔的浪涌。看负载电流的波形。过压一到电流要在多快内跌到接近零。我实测仿真里大概几十微秒取决于Q1的驱动电流和Q2基极电容放电速度。这个速度对付毫秒级的浪涌足够了对付微秒级的尖峰就未必那种要靠TVS先顶一下。瞬态里还能看恢复过程过压消失后负载电流多久回到正常值。如果恢复太慢说明Q2基极的充电回路太慢可以减小R3。这个时间在实际产品里也挺重要恢复太慢会让负载产生复位。3.5 最能暴露问题的两步温度扫描和器件离散仿真最值钱的地方就是能在几分钟内把最坏情况跑一遍。温度扫描.temp -40 25 85齐纳的温度系数和三极管Vbe的温漂会叠加。我的电路里齐纳3.3V假设温度系数是-1.5mV/℃Vbe是-2mV/℃。从25℃到85℃降60℃齐纳电压降0.09VVbe降0.12V阈值总共降约0.2V。反过来-40℃时阈值升约0.2V。也就是说阈值在5.36V到5.76V之间飘。器件离散扫描可以把R1、R2的容差、齐纳的容差都设成变量.step param R1val list 37k 39k 41k或者用蒙特卡洛LTspice里可以用.param加高斯分布来做。跑完这两步你心里就有底了这个电路的阈值在什么区间哪一端最危险。如果最坏情况下正常5V会误触发那就得回头调设计而不是等焊出来才发现。4. 仿真里最容易撞的几个坑4.1 仿真不收敛、直接发散怎么办Timestep too small和singular matrix是模拟电路仿真里最常见的两个报错。发散的原因通常有三类。第一类是齐纳模型太理想击穿瞬间电流从0跳到很大数值求解困难。解决方法是给齐纳串一个小电阻或者用软化一点的齐纳模型调大N值、降低IBV。第二类是三极管没有直流通路比如某个节点全是电容初值算不出来。解决方法是给关键节点加一个高阻值的下拉电阻或者用.ic指定初值。第三类是电源加得太陡比如PULSE的上升时间设成0。解决方法是把上升时间设成1n或者1u别设0。还有几个LTspice里的选项可以试试.options reltol0.01 abstol1u vntol1m .options gmin1e-10 .options methodgearreltol放松一点、method换成gear通常能救回不少跑不动的电路。但要注意放松精度会让结果略微失真调通了之后最好再调回严格设置验证一遍别拿着放松后的结果当真。4.2 阈值和手算对不上先别急着改参数仿真跑出来阈值4.9V手算5.5V差这么多第一反应是不是模型有问题。其实多半是手算太理想化。几个常见偏差来源齐纳的击穿是软的从开始漏电到完全击穿有一段电压区间手算用的是完全击穿电压实际电路在更低的电压就开始有电流了三极管的Vbe取0.7V是典型值实际可能在0.6V到0.8V之间分压点A的负载效应齐纳和基极的漏电流会拉低A点电压。处理办法别死磕手算值以仿真和实测的拐点为准反过来微调R1或者R2。比如阈值偏低就把R1稍微增大一点点阈值偏高就把R1减小一点。这个以实测为准反推的思路比死守公式有用得多。4.3 逻辑搞反一上电就保护这是前面挖的坑。我以为检测管导通会关掉后级实际反而让它开得更狠。根因在于如果后级用的是PNP高边开关它的关断条件是基极电压接近发射极也就是接近输入电压而不是拉低。检测管导通如果把PNP基极往GND拉反而增大了PNP的Vbe让PNP导通更深完全反了。正确做法是检测管导通后通过一个电阻把PNP的基极往输入方向顶同时切断基极的下拉通路。或者干脆改成NPN低边开关结构逻辑更直观。这个坑跟第2.2节讲的分工是对应的。NPN低边、PNP高边不是随便反着用。设计时先在纸上把每个状态写清楚能省掉一大半调试时间。4.4 常见问题速查表现象可能原因排查动作解决仿真发散齐纳太理想、无直流通路、上升沿为0看错误日志定位节点串电阻、加下拉、改上升沿阈值偏高R1偏大、齐纳偏大量A点电压减小R1阈值偏低R2偏大、漏电流大量A点电压减小R2过压不动作齐纳方向反、Q1基极没接对查齐纳阴极朝向反向过压后开关关不彻底驱动电流不够量Q2基极电压减小R4或加大Q1驱动阈值附近抖动没有迟滞看阈值附近曲线加正反馈迟滞正常时误触发阈值余量不够、纹波看正常工况VA提高阈值余量5. 从仿真到实物我踩过的和修正的5.1 器件选型不能只看标称值仿真里齐纳3.3V就是3.3V实物上同一个型号可能标着3.3V实际在3.1V到3.45V之间正负5%。所以选型必须看容差和温度系数。齐纳选型优先选温度系数小的容差尽量选±2%的型号动态电阻小的。如果实在买不到好的可以在装配时用可调电阻微调分压比。三极管选型检测管要看Vbe的一致性和温漂小信号管比如2N3904、BC547、9013都行开关管要看Ic和饱和压降负载电流大的话要考虑Vce_sat带来的压降和发热。这里提一句9013的饱和压降在大电流下会比小电流明显如果有压降预算限制得提前查手册的曲线。电阻分压电阻的精度直接影响阈值建议用1%的金属膜电阻别用5%的碳膜。温漂也要考虑金属膜一般50ppm/℃碳膜能到几百ppm。这个差别在宽温应用里会放大。5.2 实物和仿真对不上怎么修实物焊出来阈值比仿真偏高0.3V这是常态。第一步不接负载用可调电源慢慢升压用万用表或者示波器盯着检测管的基极和分压点找到实际翻转点。第二步对比仿真和实测的差距判断是齐纳的问题还是Vbe的问题。如果整体偏移多半是齐纳实际击穿电压和模型不一样如果温度一变就偏是温漂问题。第三步微调。最省事的办法是给R1或者R2并联一个小阻值的可调电阻比如R2位置用100k固定加10k可调串联调好之后换成固定值。或者把R2直接换成多圈可调电位器。第四步重新验证正常工况和过压工况确认阈值落在设计区间内并且留够余量。这一步别省我见过调完阈值就不复测的结果低温下又误触发。5.3 加一点迟滞别让它在阈值上打摆子没有迟滞的保护电路在阈值附近会抖电压刚过阈值切断负载负载一断输入电压可能因为卸载又掉回阈值以下于是恢复供电然后又过压来回打摆子。加迟滞的方法是在检测管上引入正反馈。最简单的一招在检测管Q1的集电极和基极之间跨一个电阻Rf。当Q1开始导通集电极电压下降通过Rf把基极电流再拉一点让Q1导通得更彻底形成一个一旦触发就锁住、要等电压降到更低才释放的效果。迟滞窗口的大小由Rf和分压电阻的比例决定。Rf越小迟滞越大但太大又会让阈值偏移太多。一般先设个100k试再根据实测调。我自己这套电路最后加了一个220k的反馈电阻迟滞窗口大概0.15V既不误触发恢复也不迟钝算是比较舒服的位置。这个值不是拍出来的是我在仿真里用参数扫描把Rf从56k扫到470k看迟滞窗口和阈值偏移两条曲线交叉的位置定的——仿真在这一步的价值特别大因为实物上换一个电阻再测一遍二十次就是半天功夫。最后分享一个小技巧如果你也打算做这个电路建议在仿真里把检测管的基极和分压点之间那个齐纳同时准备两个模型一个理想模型用来看趋势一个实际型号模型用来看真实阈值两个对比着看。理想模型告诉你设计方向对不对实际模型告诉你这块板子到底会不会在5.5V翻。我一开始只用理想模型白白高兴了一场实测差了一大截后来两个模型并排跑才把误差来源摸清楚。