用MOS管搭建电压比较器:从原理到实战的简易指南 1. 从一个实际需求说起为什么要用MOS管搭比较器前阵子帮朋友修一台老式充电器故障现象是充满电后指示灯不灭。拆开一看充电管理芯片已经停产市面上买不到原型号。手头只有一堆MOS管和几个电阻电容于是临时搭了一个电压比较电路来替代原芯片的检测功能效果出乎意料地稳定。这件事让我意识到很多场景下我们并不需要一颗专用的比较器芯片用分立MOS管就能解决问题而且成本极低、灵活性更高。电压比较器的本质是把一个模拟电压信号和一个参考电压做对比输出一个“高”或“低”的数字信号。你可以把它想象成一个特别较真的门卫来访者的身高超过门槛线就放行没超过就拦住。门槛线就是参考电压来访者身高就是输入信号放行或拦住就是输出高低电平。用MOS管搭比较器核心就是利用MOS管的导通条件——栅源电压Vgs超过阈值电压Vth时导通否则截止——来实现这个判断逻辑。这篇文章适合谁看如果你正在学模电、准备电赛、做DIY小项目或者工作中偶尔需要搭个简单的检测电路那这篇内容就是写给你的。我不打算堆公式而是从选管、算参数、画电路到实测调试一步步把整个过程拆开讲清楚。你只需要有基本的电路常识——知道电阻电容怎么读、会用万用表——就能跟着做下来。注意本文讨论的是分立MOS管搭建的简易比较器适用于对精度要求不高的场合。如果你的应用需要微伏级精度或纳秒级响应还是老老实实选专用比较器芯片。2. 方案选型为什么用MOS管而不是运放或三极管2.1 MOS管、三极管、运放做比较的差异对比很多人第一次接触比较器都是从LM393或LM358这类运放芯片开始的。确实运放做比较器是最标准的做法输入阻抗高、增益大、输出干净。但问题是运放芯片需要供电、需要外围电阻网络、有些还需要上拉电阻对于只需要一个简单阈值判断的场景来说有点杀鸡用牛刀。三极管也能做比较器而且比MOS管更便宜。但三极管是电流控制器件基极需要持续注入电流才能维持导通这意味着输入阻抗低会从被测电路里“偷”电流。如果你的被测信号源内阻比较大三极管比较器就会把信号拉偏导致阈值判断不准。MOS管是电压控制器件栅极几乎不取电流输入阻抗极高对被测电路的影响可以忽略。而且MOS管的导通阈值可以做得很一致温度稳定性也比三极管好。实测下来用2N7000这类小功率MOS管搭的比较器阈值漂移在几十毫伏以内对于电池检测、光控开关这类应用完全够用。对比项MOS管三极管运放芯片控制方式电压控制电流控制差分电压输入阻抗极高10^9Ω以上较低kΩ级极高阈值精度中等中等高外围元件少少较多成本极低极低低适合场景简单阈值判断简单开关精密比较2.2 核心思路让MOS管在阈值点“翻脸”用MOS管做比较器的核心思路是让栅极电压在参考电压附近变化当栅极电压超过阈值时MOS管导通输出拉低低于阈值时MOS管截止输出被上拉电阻拉高。这样输出就是一个干净的高低电平翻转。但这里有个坑MOS管的阈值电压Vth本身有较大的离散性。比如2N7000的Vth在0.8V到3V之间都有可能你买十颗可能每颗的阈值都不一样。所以直接用MOS管自己的Vth做参考是不靠谱的。正确的做法是用外部电阻分压网络设定一个参考电压然后把输入信号和这个参考电压分别接到MOS管的栅极和源极之间让VgsVin-Vref这样阈值点就由外部电阻决定了与MOS管自身的Vth无关。这个思路和运放比较器的“差分输入”是一个道理只不过运放是把差值放大后输出MOS管是把差值直接转换成开关状态。理解这一点后面的电路设计就顺理成章了。2.3 关键参数计算分压电阻怎么选假设我们要做一个12V电池的低压检测电路当电池电压低于10V时输出报警信号。参考电压设定为10V输入信号是电池电压经过分压后的值。选择分压电阻时要考虑两个因素一是分压后的电压要在MOS管栅极的安全范围内一般不超过20V小功率MOS管通常不超过±20V二是分压电阻不能太小否则会持续消耗电池电量。假设我们用两个电阻R1和R2串联电池电压Vbat接在R1上端R2下端接地中间节点输出分压电压Vdiv。公式是Vdiv Vbat × R2 / (R1 R2)我们希望Vbat10V时Vdiv等于MOS管的参考电压。假设参考电压设为2.5V用一颗TL431或简单的电阻分压产生那么2.5 10 × R2 / (R1 R2) R1/R2 (10-2.5)/2.5 3选R210kΩ则R130kΩ。这时候分压支路的电流是10V/(30k10k)0.25mA对于12V电池来说完全可以接受。如果电池容量是10Ah0.25mA的漏电流需要4万小时才能放完基本可以忽略。提示分压电阻的精度直接影响阈值精度。如果用普通5%精度的碳膜电阻阈值误差可能达到±0.5V。建议至少用1%精度的金属膜电阻成本也就贵几分钱。3. 电路细节拆解从原理图到实际接线3.1 完整电路图与各元件作用下面是我实际用的电路用2N7000 N沟道MOS管搭建。整个电路只有六个元件两颗分压电阻、一颗上拉电阻、一颗MOS管、一颗参考电压稳压管、一颗输出限流电阻。电路连接方式如下电池电压经过R1和R2分压后接到MOS管的栅极。参考电压由稳压管D1比如2.5V的TL431提供接到MOS管的源极。MOS管的漏极通过上拉电阻R3接到电源正极同时作为输出端。输出端再串一个限流电阻R4防止后级电路倒灌。当电池电压高于10V时分压后的栅极电压高于2.5VVgs为正且超过阈值MOS管导通漏极被拉低到接近源极电压输出低电平。当电池电压低于10V时栅极电压低于2.5VVgs不足MOS管截止漏极被R3拉高到电源电压输出高电平。这里有个细节MOS管的源极不是直接接地而是接在2.5V参考电压上。这样做的好处是栅极电压只需要和2.5V比较而不是和0V比较避免了栅极电压过低导致MOS管无法完全截止的问题。同时源极抬高后MOS管的Vgs实际值是Vg-Vs这样阈值点就由参考电压精确决定了。3.2 MOS管选型为什么选2N7000而不是IRF5402N7000是小功率N沟道MOS管TO-92封装最大漏极电流200mA导通电阻约5Ω阈值电压0.8V到3V。它的优点是便宜几毛钱一颗、容易买到、栅极电容小、开关速度快。对于比较器这种只需要输出高低电平、不需要驱动大电流的场景2N7000完全够用。IRF540是功率MOS管漏极电流33A导通电阻44mΩ但栅极电容大得多需要较大的驱动电流才能快速开关。用IRF540做比较器不仅浪费而且栅极电容会导致响应变慢在信号变化较快时输出波形会变差。选MOS管做比较器时重点看三个参数阈值电压Vth、栅极电容Ciss、漏极电流Id。Vth要选适中的太低容易受噪声干扰太高则需要更大的输入电压范围。Ciss越小越好这样响应快。Id不需要太大因为比较器输出通常只驱动逻辑电路几毫安就够了。型号Vth范围CissIdmax封装适合场景2N70000.8-3V50pF200mATO-92通用比较器BS1700.8-3V40pF500mATO-92稍大电流2N70020.8-2.5V50pF115mASOT-23贴片应用IRF5402-4V1700pF33ATO-220功率开关3.3 上拉电阻和限流电阻的计算上拉电阻R3的作用是在MOS管截止时把输出拉高。R3的取值要考虑两个因素一是和MOS管导通时的导通电阻分压确保输出低电平足够低二是不能太小否则MOS管导通时会有大电流流过。假设电源电压12VMOS管导通电阻Rds(on)约5ΩR3取10kΩ。导通时输出低电平为Vlow 12 × 5 / (100005) ≈ 0.006V这个低电平足够低后级逻辑电路能可靠识别为“0”。导通电流为12V/10kΩ1.2mA在2N7000的承受范围内。如果R3取1kΩ导通电流变成12mA虽然2N7000也能承受但功耗增加了。如果R3取100kΩ导通时低电平为12×5/(1000005)≈0.0006V更低但截止时输出高电平的上升沿会变慢因为R3和输出端的寄生电容形成RC延迟。实测10kΩ是一个比较平衡的值。输出限流电阻R4取1kΩ作用是限制后级电路可能倒灌的电流。如果后级是单片机IO口单片机内部有上拉不加R4的话当MOS管导通时单片机IO口的电流会灌入MOS管漏极虽然2N7000能承受但长期工作不推荐。加1kΩ后即使单片机输出5V灌入电流也只有5mA安全。4. 实操过程从面包板到万用表实测4.1 面包板搭建与元件布局我习惯先在面包板上搭电路验证确认没问题再焊到洞洞板上。面包板搭建时元件布局很关键。我的做法是把MOS管放在面包板中间栅极朝左、漏极朝上、源极朝下。分压电阻R1和R2放在左侧参考电压稳压管放在下方上拉电阻R3放在上方输出限流电阻R4放在右侧。这样布局的好处是信号流向清晰输入从左边进来经过分压后到中间MOS管输出从右边出去。电源线和地线分别走在面包板上下两排避免交叉。接线时注意MOS管的引脚顺序。2N7000的TO-92封装面对印字面从左到右依次是源极、栅极、漏极。很多人会记错以为和三极管一样是发射极、基极、集电极。实际上MOS管的引脚定义和三极管不同接错的话电路不工作还可能烧管。注意焊接MOS管时电烙铁要可靠接地或者用防静电焊台。MOS管栅极绝缘层很薄静电很容易击穿。我有个朋友冬天穿毛衣焊MOS管一连焊坏三颗后来戴了防静电手环才搞定。4.2 参考电压的实测与调整参考电压的精度直接决定比较器的阈值精度。我用TL431产生2.5V参考电压实测值是2.487V误差0.5%可以接受。如果你手头没有TL431也可以用两颗电阻分压产生参考电压但精度会差一些。调整参考电压时我用一个10kΩ的多圈精密电位器代替R2这样可以在一定范围内连续调节阈值。调节方法是先用万用表测参考电压调到目标值然后慢慢升高输入电压观察输出翻转时的输入电压值和理论值对比。实测数据设定参考电压2.5V分压比3:1理论阈值10V。实际测量输出翻转时电池电压为10.12V误差1.2%。这个误差主要来自电阻精度和MOS管阈值电压的离散性。对于电池低压检测来说1.2%的误差完全可以接受。4.3 输出波形观察与响应速度测试用示波器观察输出波形可以看到当输入电压缓慢升高时输出在阈值点附近有一个快速翻转的过程。翻转时间大约几十微秒主要受MOS管栅极电容和上拉电阻的RC时间常数限制。如果你需要更快的响应速度可以减小上拉电阻R3的阻值比如从10kΩ降到1kΩ翻转时间可以缩短到几微秒。但代价是导通电流增大功耗增加。实测在10kΩ上拉时翻转时间约50微秒在1kΩ上拉时翻转时间约5微秒。还有一个现象值得注意当输入电压在阈值点附近缓慢变化时输出会出现抖动。这是因为输入信号上的噪声导致MOS管在导通和截止之间反复切换。解决方法是在MOS管栅极和源极之间并联一个小电容比如100nF形成低通滤波把高频噪声滤掉。加了电容后输出抖动明显减小但响应速度会变慢需要根据实际需求权衡。5. 常见问题与排查技巧实录5.1 输出不翻转或一直为高/低这是最常见的问题。排查步骤是先用万用表测MOS管栅极电压看是否在参考电压附近变化。如果栅极电压不变说明分压电路有问题检查R1和R2是否接对、阻值是否正确。如果栅极电压正常但输出不变说明MOS管可能坏了换一颗试试。还有一种情况是MOS管引脚接错。2N7000的源极和漏极接反时MOS管内部体二极管会导通导致输出一直为低。这时候用手摸MOS管会发烫。遇到发烫立刻断电检查引脚。5.2 阈值点漂移或不准阈值漂移通常有两个原因一是电阻温漂二是MOS管阈值电压随温度变化。普通碳膜电阻的温度系数是±200ppm/°C金属膜电阻是±50ppm/°C。如果工作环境温度变化大建议用金属膜电阻。MOS管的阈值电压温度系数大约是-2mV/°C也就是说温度每升高1°C阈值电压下降2mV。对于2.5V的参考电压来说温度从25°C升到75°C阈值下降100mV相当于4%的误差。如果应用对温度敏感可以在MOS管旁边加一个NTC热敏电阻做温度补偿或者干脆用专用比较器芯片。5.3 输出带负载能力不足2N7000的漏极电流最大200mA但这是在理想散热条件下的值。实际使用时如果负载电流超过50mAMOS管会明显发热。如果你需要驱动继电器或LED建议在输出端加一级三极管或小功率MOS管做缓冲。我试过直接用2N7000驱动一个5V继电器继电器线圈电阻125Ω吸合电流40mA。MOS管导通时压降约0.2V功耗8mW完全不热。但如果驱动两个继电器并联电流80mAMOS管压降升到0.4V功耗32mW手摸有点温。所以驱动大电流负载时要么选更大电流的MOS管要么加缓冲级。问题现象可能原因排查方法解决方法输出不翻转分压电阻接错测栅极电压检查R1/R2连接输出一直为低MOS管引脚接反摸MOS管是否发烫调换源极和漏极阈值漂移电阻温漂测量不同温度下阈值换金属膜电阻输出抖动输入噪声示波器看输入波形栅源并联100nF电容带载能力差MOS管电流不够测负载时输出电压加缓冲级或换大电流管5.4 独家避坑技巧栅极保护不能省MOS管栅极和源极之间的绝缘层非常薄通常只有几十纳米。如果栅极电压超过±20V绝缘层会被击穿MOS管永久损坏。在实际电路中如果输入信号可能超过20V一定要在栅极串联一个限流电阻比如10kΩ和并联一个稳压管比如18V组成钳位电路。我踩过一次坑用MOS管做24V电池检测分压后栅极电压12V理论上没问题。但电池在充电时电压会升到28V分压后栅极电压14V还是安全的。然而有一次电池断开瞬间电感负载产生反峰电压栅极电压瞬间冲到30VMOS管当场击穿。后来加了18V稳压管钳位再也没出过问题。提示如果你做的比较器用于汽车或工业环境栅极保护是必须的。汽车电源线上有大量瞬态高压脉冲不加保护的话MOS管活不过一个星期。6. 进阶玩法从比较器到窗口检测和迟滞比较6.1 窗口比较器检测电压是否在范围内单个MOS管比较器只能判断电压高于或低于某个阈值。如果你需要判断电压是否在一个范围内比如电池电压在10V到14V之间为正常可以用两个MOS管搭一个窗口比较器。电路结构是两个MOS管分别设定上限阈值和下限阈值输出端通过两个上拉电阻并联。当输入电压低于下限时下限MOS管截止输出被上拉为高当输入电压高于上限时上限MOS管导通输出被拉低当输入电压在上下限之间时两个MOS管都截止输出为高。这样输出为高就表示电压在范围内。这个电路我用来做过锂电池组的一致性检测效果不错。上限设4.2V下限设3.0V当某节电池电压超出范围时输出报警。整个电路成本不到两块钱比用专用电池管理芯片便宜多了。6.2 迟滞比较器消除输出抖动前面提到输入信号在阈值点附近时输出会抖动。除了加滤波电容更彻底的方法是引入迟滞也就是让阈值电压在输出翻转后自动偏移一点形成一个“死区”。实现方法是在MOS管漏极和栅极之间接一个正反馈电阻Rf。当输出为低时Rf把栅极电压拉低一点相当于阈值升高当输出为高时Rf把栅极电压拉高一点相当于阈值降低。这样输入信号需要反向变化超过死区宽度输出才会再次翻转。迟滞宽度由Rf和分压电阻的比值决定。假设Rf1MΩ分压电阻等效阻抗为10kΩ迟滞宽度约为电源电压的1%。对于12V电源来说迟滞宽度约120mV。这个宽度足以消除大多数噪声引起的抖动又不会影响正常的阈值判断。6.3 用MOS管做电平转换比较器的意外用途搭好比较器后我发现这个电路还能当电平转换用。比如把5V的逻辑信号转换成12V的逻辑信号只需要把输入信号接到MOS管栅极参考电压设成2.5V输出上拉到12V。当输入为5V时MOS管导通输出低当输入为0V时MOS管截止输出12V。这样5V的逻辑电平就转换成了12V的逻辑电平。这个用法在混合电压系统里很实用。比如单片机是3.3V供电但外设需要5V或12V驱动用MOS管做电平转换比专用电平转换芯片更灵活而且成本低得多。唯一需要注意的是MOS管的开关速度要够快否则高速信号会失真。2N7000的开关时间在几十纳秒量级对于几十kHz的信号完全够用。7. 元件清单与成本核算最后列一下我实际用的元件清单方便你直接抄作业。所有元件都是常见型号在电子市场或网上都能买到总成本不到五块钱。元件型号数量单价备注MOS管2N700010.5元可用BS170替代分压电阻30kΩ 1%10.1元金属膜分压电阻10kΩ 1%10.1元金属膜上拉电阻10kΩ 5%10.05元碳膜即可限流电阻1kΩ 5%10.05元碳膜即可参考稳压管TL43110.3元可用电阻分压替代滤波电容100nF10.1元陶瓷电容保护稳压管18V10.2元可选面包板通用15元可重复使用如果你用电阻分压代替TL431成本还能再降三毛钱。但电阻分压的参考电压精度取决于电阻精度和电源电压稳定性如果电源电压本身波动大参考电压也会跟着波动阈值就不准了。所以建议至少用一颗TL431多花三毛钱精度提升一个数量级。我在实际使用中的体会是用MOS管搭比较器最大的价值不是省钱而是灵活。你可以根据手头的元件随意调整阈值、输出电平和驱动能力不需要等快递、不需要画PCB。对于小批量的DIY项目或维修替换来说这种灵活性比省几块钱重要得多。当然如果你要做产品还是建议用专用比较器芯片一致性和可靠性更有保障。