
1. 从一个“抖动”的报警电路说起为什么普通比较器不够用前阵子帮朋友调一个电池低压报警板电路简单到不行一颗LM393电压比较器反相端接基准同相端接分压后的电池电压输出直接拉去点亮LED。理论上电池电压低于阈值时LED亮高于阈值时灭逻辑清晰。结果上电测试LED在阈值附近疯狂闪烁像接触不良一样。示波器一挂输入电压上叠加了几十毫伏的纹波和噪声比较器输出就在高低电平之间反复横跳。这个问题在业内太经典了。普通电压比较器是“单阈值”器件输入只要在阈值附近有哪怕一点点噪声输出就会跟着抖。解决它的标准方案就是引入滞回比较器也就是常说的施密特触发器结构。它给比较器设置了两个阈值——一个上升阈值和一个下降阈值中间留出一段“死区”噪声只要不超过这段死区宽度输出就稳如泰山。这篇博文就把滞回比较器从原理到落地完整拆一遍。涉及的核心关键词包括电压比较器、滞回比较器、施密特触发器、LM393电压比较器工作原理以及LM393电压比较器电路图的实战画法。不管你是刚接触模拟电路的学生还是需要快速出方案的硬件工程师都能从里面拿到可以直接复现的东西。2. 滞回比较器的核心原理与设计思路拆解2.1 单阈值比较器的致命缺陷噪声敏感先把普通比较器的问题说透。一个理想比较器当同相端电压V大于反相端电压V-时输出高反之输出低。它的传输特性是一条垂直的线阈值只有一个点。现实中的输入信号永远带着噪声电源纹波、走线耦合、传感器本身的抖动都会让输入在阈值附近来回穿越。每穿越一次输出就翻转一次这就是所谓的“多次触发”或“抖动”。用生活化的类比普通比较器就像一个没有耐心的门卫只要有人影在门口晃一下他就开门关门结果风一吹树叶动他也开关门。滞回比较器则是一个有经验的门卫你得过了一条线他才开门退回去得退到另一条更远的线他才关门中间这段距离他不动。2.2 正反馈滞回特性的来源滞回特性怎么来的核心就两个字正反馈。普通比较器要么开环要么用负反馈做迟滞补偿。滞回比较器则是从输出端引一个电阻回到同相输入端形成正反馈。输出状态一旦确定就会通过这个反馈电阻“加固”同相端的电压让输入必须反向变化足够多才能把输出拉回来。以反相滞回比较器为例输入接反相端基准接同相端当输出为高电平时反馈电阻把同相端电压抬高到一个较高的阈值VTH_high当输出为低电平时反馈电阻把同相端电压拉低到一个较低的阈值VTH_low。输入电压必须升到VTH_high以上才能让输出翻低而一旦翻低阈值立刻变成VTH_low输入得降到VTH_low以下才能让输出翻回高。两个阈值之间的差值就是回差电压也叫滞回宽度。2.3 为什么选LM393而不是运放很多人会问用运放能不能做比较器能但不推荐。LM393这类专用电压比较器的输出级是集电极开路OC结构响应速度快传播延迟通常在微秒级而且输出电平可以灵活上拉到任意不超过电源的电压方便和不同逻辑电平对接。运放做比较器时输出级是推挽结构翻转时会有短暂的线性区速度慢还容易在输出端产生尖峰。LM393是双比较器一颗芯片里有两个独立的比较器单元供电范围宽2V到36V输入共模范围包含地非常适合单电源场景。它的输出是OC门所以必须接上拉电阻才能输出高电平这一点新手最容易踩坑——不接上拉输出永远是低或者悬空乱跳。2.4 回差电压到底设多大才合适回差电压不是越大越好也不是越小越好。设小了噪声照样能触发设大了该翻转的时候翻不过来系统响应变迟钝。工程上的经验做法是回差电压取输入噪声峰峰值的2到3倍同时要小于有用信号的最小变化幅度。举个例子输入信号是0到5V的缓变电压噪声峰峰值约50mV那么回差电压设在100mV到150mV比较稳妥。如果输入信号本身变化幅度只有200mV回差就不能超过100mV否则信号还没到阈值就被“吃掉”了。这个权衡是滞回比较器设计里最需要动脑子的地方。3. LM393滞回比较器电路细节与参数计算3.1 经典LM393电压比较器电路图长什么样先给一个可以直接抄的反相滞回比较器电路。核心元件LM393一颗上拉电阻R_pull一颗反馈电阻R_f一颗输入电阻R_in一颗基准分压电阻R1、R2各一颗。连接方式如下LM393的反相输入端IN-通过R_in接被测输入信号V_in同相输入端IN接基准电压V_ref同时通过R_f接到输出端输出端通过R_pull上拉到VCC。这就是最经典的反相滞回比较器拓扑。同相端的电压由基准和输出共同决定。当输出为高接近VCC时同相端电压被抬高当输出为低接近0V时同相端电压被拉低。两个阈值分别对应输出高和输出低两种状态。3.2 两个阈值的计算公式推导设基准电压为V_ref反馈电阻为R_f同相端到基准的等效电阻为R_ref由分压网络决定输出高电平为V_OH输出低电平为V_OL。当输出为高时同相端电压V_TH_high由V_ref和V_OH共同分压决定V_TH_high (V_ref × R_f V_OH × R_ref) / (R_f R_ref)当输出为低时同相端电压V_TH_low为V_TH_low (V_ref × R_f V_OL × R_ref) / (R_f R_ref)回差电压ΔV V_TH_high - V_TH_low (V_OH - V_OL) × R_ref / (R_f R_ref)从公式能看出几个关键点回差电压和输出摆幅成正比和R_ref与R_f的比值有关。R_ref越小或R_f越大回差越小。实际设计中通常先确定基准和回差要求再反推电阻值。3.3 一个完整的参数计算实例假设条件VCC 5VV_OH ≈ 5V上拉到5VV_OL ≈ 0.1VLM393低电平典型值希望基准V_ref 2.5V回差电压ΔV 200mV。先算R_ref和R_f的比值。由ΔV公式0.2 (5 - 0.1) × R_ref / (R_f R_ref)0.2 × (R_f R_ref) 4.9 × R_ref0.2 R_f 4.7 R_refR_f / R_ref 23.5取R_ref 10kΩ则R_f ≈ 235kΩ取标准值240kΩ。再算两个阈值V_TH_high (2.5 × 240 5 × 10) / (240 10) (600 50) / 250 2.6VV_TH_low (2.5 × 240 0.1 × 10) / 250 (600 1) / 250 2.404V回差 2.6 - 2.404 0.196V约200mV符合设计目标。基准2.5V怎么来用两个等值电阻从5V分压比如两个10kΩ串联中点就是2.5V。但要注意分压电阻会与R_f形成并联影响实际基准。严谨的做法是把分压电阻取得比R_f小一个数量级比如取1kΩ和1kΩ这样并联影响可以忽略。或者用TL431这类基准源稳定性更好。3.4 上拉电阻怎么选LM393输出是OC门上拉电阻R_pull的取值直接影响上升沿速度和功耗。R_pull太小输出低电平时灌电流大功耗高但上升沿快R_pull太大上升沿被输出端寄生电容拖慢可能影响后级逻辑。经验值5V供电时R_pull取4.7kΩ到10kΩ比较通用。如果后级是CMOS输入取10kΩ足够如果要驱动LED或者光耦得根据驱动电流算。比如LED需要5mA电流R_pull最大不能超过(5 - 1.8) / 5mA 640Ω这时候就得取小阻值同时确认LM393的灌电流能力——LM393低电平灌电流典型能力约16mA640Ω对应的灌电流约7.8mA在安全范围内。注意上拉电阻的另一端不一定接VCC可以接一个比VCC低的电压比如3.3V这样输出高电平就是3.3V方便和3.3V逻辑器件对接。这是LM393相比很多比较器的一个实用优势。4. 实操过程从面包板到稳定运行的完整记录4.1 元件准备与面包板布局我这次实测用的元件清单LM393双比较器一颗电阻若干10kΩ、240kΩ、4.7kΩ、1kΩ5V电源可调直流电源模拟输入信号万用表和示波器各一台。面包板布局有个小技巧LM393的引脚是标准DIP-8封装1脚是通道1输出2脚是通道1反相输入3脚是通道1同相输入4脚接地8脚接VCC。先把电源和地布好再放芯片最后接信号线。信号线尽量短避免引入额外噪声。4.2 分步搭建与上电测试第一步接基准分压。两个1kΩ电阻串联在5V和地之间中点接LM393的3脚同相端。用万用表量中点电压应该在2.5V左右。第二步接反馈电阻。240kΩ电阻从3脚接到1脚输出。这时候输出还没上拉先不急着测。第三步接上拉电阻。4.7kΩ从1脚接到5V。第四步接输入电阻。10kΩ从2脚接到可调电源输出。第五步上电。用可调电源从0V慢慢往上调同时用万用表监测1脚电压。当输入电压升到约2.6V时输出应该从高翻低然后慢慢往下调当输入降到约2.4V时输出应该从低翻高。实测结果和计算值吻合得很好翻转点误差在20mV以内主要来自电阻公差和LM393的输入失调电压。4.3 用示波器看回差曲线把示波器接在输入和输出上用XY模式看传输特性能看到一个漂亮的矩形回环。输入从低到高扫的时候输出在2.6V处翻低输入从高到低扫的时候输出在2.4V处翻高。中间200mV的区间里输出保持上一个状态不变。这就是滞回特性的直观体现。如果没有XY模式也可以用普通时基模式把输入接一个三角波输出接另一个通道能看到输出在输入上升沿和下降沿的翻转点明显错开错开的电压差就是回差。4.4 实测中发现的几个细节第一个细节LM393的输入失调电压典型值2mV最大5mV在回差200mV的场合完全够用。但如果回差设得很小比如20mV失调电压就会明显影响阈值精度这时候要么选失调更小的比较器要么把回差适当放大。第二个细节输入信号源的内阻会影响实际阈值。因为输入电阻R_in和信号源内阻串联如果信号源内阻不可忽略实际到达反相端的电压会打折扣。信号源内阻大时要么增大R_in要么在输入加电压跟随器缓冲。第三个细节电源退耦不能省。LM393在翻转瞬间会有电流尖峰如果电源退耦不好尖峰会通过电源耦合到基准分压上造成阈值抖动。我在VCC和地之间并了一颗100nF陶瓷电容和一颗10uF电解电容翻转就干净多了。5. 常见问题与排查技巧实录5.1 输出不翻转或一直翻转这是新手最常遇到的问题。排查顺序如下先确认上拉电阻接了没有LM393没有上拉是绝对不会输出高电平的。再确认输入有没有真正跨过阈值用万用表直接量2脚和3脚的电压看差值是否足够。最后确认反馈电阻有没有接错如果误接到反相端就变成负反馈滞回特性消失。5.2 回差电压和计算值对不上电阻公差是首要嫌疑。240kΩ的电阻如果是5%精度实际可能在228kΩ到252kΩ之间回差会跟着变。基准分压电阻的公差也会影响阈值。如果对精度要求高用1%精度的金属膜电阻或者用可调电阻调准。另一个原因是输出高电平没有达到VCC。LM393输出高时是OC门加上拉实际高电平等于上拉电源减去上拉电阻上的压降。如果后级有灌电流高电平会低于VCC回差会相应减小。5.3 阈值附近仍然有轻微抖动如果回差已经设得足够大但输出在翻转点附近还有轻微抖动通常是电源噪声或地线噪声引起的。检查基准分压的退耦电容有没有加地线有没有形成环路输入线有没有远离输出线。必要时在基准点加一颗1uF到10uF的电容到地把基准“钉”住。5.4 常见问题速查表现象可能原因排查方法解决措施输出恒低上拉电阻未接量输出对VCC电阻补接上拉电阻输出恒高输入未跨阈值量输入与阈值电压调整输入或基准无回差反馈接错端检查反馈电阻连接改接到同相端回差偏小电阻公差大量实际电阻值换1%精度电阻翻转点抖动电源退耦不足示波器看电源纹波加退耦电容阈值偏移输入源内阻大量信号源内阻加缓冲或增大R_in5.5 几个独家避坑技巧第一个技巧调试时先把反馈电阻用一个可调电阻代替边调边看回差确定后再换成固定电阻。这样比反复计算换电阻快得多。第二个技巧如果输入信号是缓慢变化的比如温度传感器的输出回差可以设大一点因为信号本身变化慢不怕响应迟钝。如果输入是快速脉冲回差要设小否则会漏掉窄脉冲。第三个技巧LM393是双比较器另一路不用的时候输入不能悬空要接到确定电平比如接地或接VCC输出可以悬空。悬空输入会导致内部振荡可能干扰正在使用的那一路。第四个技巧如果系统对阈值精度要求高基准不要用电阻分压直接用TL431或者REF3025这类基准芯片。电阻分压的精度和温漂都远不如专用基准。6. 滞回比较器的扩展玩法与选型建议6.1 同相滞回比较器怎么接前面讲的是反相滞回比较器输入接反相端。同相滞回比较器则是输入接同相端基准接反相端反馈电阻从输出接回同相端。两者的回差计算公式类似但阈值方向相反。同相滞回比较器适合输入信号源内阻较大的场合因为同相端输入阻抗高对信号源影响小。6.2 用LM358代替LM393行不行LM358是运放不是比较器。它的输出级是推挽结构翻转速度慢而且输出高电平接近VCC减去1.5V左右不能满摆幅。如果对速度要求不高、对成本敏感可以用LM358凑合但回差计算要按实际输出摆幅来算而且输出高电平驱动能力弱。正经做产品还是用LM393或者LM2903车规版。6.3 需要更小回差或更高速度时的选型如果回差需要做到10mV以内LM393的失调电压就成问题了。这时候可以选TLV3501这类高速比较器失调电压典型值1mV传播延迟4.5ns适合高频场合。如果只需要小回差但速度要求不高可以选LM311它的失调电压可以外部调零灵活性更好。6.4 滞回比较器在电池管理中的实际应用回到开头那个电池低压报警的例子。电池电压从满电到放完是缓慢下降的但负载变化会引起电压瞬间跌落。如果不用滞回负载一重电压跌到阈值以下就报警负载一轻电压回升报警又消失报警灯闪个不停。加了200mV回差之后只有电池真正放到阈值以下并持续一段时间报警才稳定触发负载波动引起的瞬时跌落不会误报。这个思路可以推广到很多场景过温保护、过流保护、光控开关、液位检测凡是输入信号带噪声或者会抖动的场合滞回比较器都是标配。6.5 关于回差温度的考量电阻有温漂LM393的失调电压也有温漂。如果产品工作温度范围宽比如工业级-40到85度回差电压会随温度变化。普通厚膜电阻温漂约100ppm/度240kΩ电阻在85度时可能变化约1.5kΩ回差变化约1%。这个量级对大多数应用可以接受。如果要求高用低温漂电阻或者把回差设计得留有余量。我个人在实际操作中的体会是滞回比较器看着简单但真正做稳需要把每一个电阻、每一颗电容都当回事。尤其是基准和退耦省一颗电容可能就要多调半天。另外计算归计算实测归实测面包板上搭一遍再画板能省掉很多返工。这个电路后续还可以扩展成窗口比较器用两颗LM393分别检测上下限做电池过压欠压双重保护思路是一样的。