比较器迟滞原理详解:阈值窗口与正反馈抗干扰设计

📅 2026/8/26 5:16:17
比较器迟滞原理详解:阈值窗口与正反馈抗干扰设计
上个月调一块12V电池欠压保护板继电器像抽风一样哒哒响最后拆开一看就是比较器在阈值边缘反复翻转。这种问题干硬件的应该都遇到过输入信号带点噪声或者电压变化特别慢比较器输出就会在高低电平之间疯狂抖动带继电器就烧触点带电机就嗡嗡叫带PLC就误动作。解决办法其实不复杂就是给比较器加迟滞英文里叫Comparator Hysteresis。迟滞这个东西说穿了就是给比较器设置两个翻转阈值一个管电压从低往高升一个管电压从高往低降。两个阈值之间拉开一个窗口输入信号在这个窗口内来回晃输出都保持原状态不动。这样噪声只要没有窗口大就不会误触发。这篇内容适合正在调比较器电路的硬件工程师、电子爱好者也适合做自动化控制、电源管理、传感器信号处理的人。搞懂迟滞的原理和计算方法很多“莫名奇妙抖动”的现场问题都能一次解决。1. 迟滞比较器解决了什么问题从一次继电器狂跳说起1.1 场景还原为什么临界点附近电路会“发病”先说那个12V电池欠压保护的场景。设定值是11.5V低于这个值就断开负载。电路本身很简单电阻分压采样电池电压送到比较器一端另一端接一个2.5V基准。电池电压一路下降采样电压也一路下降到达11.5V对应的采样电压时比较器翻转发保护。问题出在负载断开那一刻。电池电压本来因为大电流负载被拉低到11.4V负载一断开电池端电压立刻回弹到11.7V。采样电压跟着又超过阈值比较器翻回来继电器重新吸合负载重新接入电压又被拉低又触发保护继电器又断开。就这么来回循环继电器触点以几赫兹甚至几十赫兹的频率反复通断火花四溅继电器本体热得烫手。这个现象的本质是比较器只有一个翻转阈值。任何一个微小的噪声叠加、电压回弹、参考源波动只要越过这个阈值输出就翻转。尤其在信号变化很慢的场景里阈值附近只要有一点扰动输出状态就会在高低电平之间抖来抖去。这种问题用示波器看输出波形时非常明显下降沿和上升沿不是干净利落的跳变而是在阈值点附近出现一串随机脉冲。1.2 迟滞模型用两个阈值换一段“状态保持区”不带迟滞的比较器传输特性是“一条线走到黑”输入低于参考输出低输入高于参考输出高翻转点就在参考电压那一个点上。加了迟滞之后输出路径从一条线变成两条输入从低往高走时要触碰到较高的那个阈值才翻转输入从高往低走时要跌到较低的那个阈值才翻回来。用一个具体数字举例。参考电压2.5V设置上升翻转阈值2.725V下降翻转阈值2.25V。输入信号从0V往上升到2.725V之前一直输出低电平到了2.725V输出跳高。之后输入即使从2.7V回落到2.4V输出也维持高电平不变直到输入跌破2.25V输出才跳回低电平。中间这0.475V的区间就是迟滞窗口也是状态保持区。这个现象跟施密特触发器是同一个原理很多教材干脆把迟滞比较器叫施密特比较器。如果输入信号噪声的峰峰值小于迟滞窗口那么噪声顶多让信号在窗口内晃动输出状态稳如泰山。这就是迟滞能抗干扰的根本逻辑把“单点翻转”变成“区间翻转”用一定的阈值精度换取抗扰能力。1.3 内置迟滞与外置迟滞别指望芯片自带的那几毫伏有不少比较器芯片内置了迟滞比如MAX9020、SGM8742这些内部会带几毫伏到几十毫伏的迟滞。这个量级对微弱的传感器信号检测是有用的能消除一部分热噪声和电源纹波引起的小幅抖动。但实际情况是工业现场和电源电路里的噪声远不止几十毫伏。一次继电器吸合产生的电磁干扰在采样线上可能感应出几百毫伏的毛刺一个开关电源的输出纹波落在比较器输入端也可能有几十到上百毫伏。这时候芯片内置的那点迟滞根本不够看必须靠外部电路来做迟滞。外部迟滞的另一个好处是窗口大小完全可控。想要0.2V、0.5V还是2V通过几个电阻就能定下来。而且外置迟滞的电阻网络还可以同时兼做分压网络一个电路把采样、参考、迟滞全部搞定不需要额外增加芯片面积。这也是为什么“比较器加正反馈电阻”这个结构在工程里几乎是标配。2. 迟滞的核心原理正反馈是如何制造出双阈值的2.1 比较器的开环特性越是灵敏越是容易抖比较器从内部电路结构来看本质上是一个没有负反馈的高增益放大器。它的输入级是差分结构两个输入端之间只要有电压差输出就会被放大到满幅。LM393这类器件的开环增益能做到几万倍甚至更高也就是说输入端只要有几毫伏的差距输出就能从低电平直接顶到高电平。这个特性在干净信号下很好用但在噪声环境下就成了灾难。因为开环增益太高阈值点附近任何一点微小的输入扰动都会被放大成剧烈的输出变化。你甚至不需要信号真正越过参考电压只要噪声尖峰叠加上去让输入端瞬间反向输出就会跟着翻转。解决办法不是把增益降低而是改变反馈结构。让输出的一部分电压回送到同相输入端形成一个正反馈回路。这样输出往高跳的时候同相输入端也会被拉高反过来推动输出跳得更高输出往低跳的时候同相输入端被拉低输出跳得更低。整个翻转过程像是雪崩一样快速而果断而不是在临界点磨磨蹭蹭。2.2 正反馈如何让阈值“分裂”来看一个典型的同相输入迟滞比较器电路。输入信号通过电阻R_in接到比较器的同相输入端同相输入端还通过电阻R_f接到输出端通过电阻R_b接地。反相输入端接参考电压Vref。这个电路的关键在于同相输入端的电位V不再只由输入信号决定而是由输入信号、输出电压、地三个支路共同决定。当输出为高电平时R_f会把一个较高的电压送到同相端相当于把参考阈值“垫高”了输入信号要降到更低才能让V跌破Vref。当输出为低电平时R_f送过来的是低电平把V拉低输入信号要升得更高才能让V越过Vref。这就是双阈值的来源。输出高电平对应的下降翻转阈值V_TH-和输出低电平对应的上升翻转阈值V_TH不再是同一个点两者之间的差就是迟滞窗口。整个电路像是一个有记忆的开关上一次输出是什么状态会影响下一次翻转的位置。2.3 阈值计算推导几个电阻一个公式还是用上面那个拓扑来分析。提醒一句下面的推导基于一个很实用的场景比较器输出是推挽结构的高电平接近电源电压低电平接近地。如果是LM393这种开集电极输出高电平实际上是上拉电阻接的电压计算时把V_OH换成实际高电平电压就行。翻转条件就是同相输入端电压V等于反相端参考电压Vref。对同相输入端节点列基尔霍夫电流方程可以得到如下关系Vref × (1/R_in 1/R_f 1/R_b) V_in / R_in V_out / R_f整理后得到输入翻转阈值的一般表达式V_in Vref × (1 R_in/R_f R_in/R_b) - V_out × (R_in/R_f)输出为低电平时对应的输入阈值是上升翻转阈值V_TH输出为高电平时对应的输入阈值是下降翻转阈值V_TH-。两者相减低电平V_OL和高电平V_OH之间的差值就是迟滞宽度ΔV V_TH - V_TH- (V_OH - V_OL) × (R_in / R_f)这个式子非常实用迟滞宽度只跟输出摆幅和两个电阻的比值有关跟参考电压Vref、R_b都没有直接关系。R_b不影响迟滞窗口大小但会影响阈值中心点的位置调节R_b可以把整个窗口移动到需要的区域。实际算一个例子。设Vref2.5VR_in10kΩR_f100kΩR_b100kΩV_OH5VV_OL0V。先算公共项Vref × (1 10/100 10/100) 2.5 × 1.2 3.0V于是V_TH 3.0 - 0 × (10/100) 3.0V V_TH- 3.0 - 5 × (10/100) 2.5V ΔV (5 - 0) × (10/100) 0.5V这个窗口是0.5V对于常见的直流电源噪声来说绰绰有余。如果嫌窗口太大把R_in减小或者R_f增大都能让窗口变窄。经验上R_in和R_f的比例在1:10到1:100之间都很好用比例太小窗口不够太大会让输入偏置电流的影响凸显出来。3. 实操过程手把手搭一个迟滞比较器电路3.1 器件选型与电阻取值做实验或者做产品核心器件就是比较器本身。实验室里最常用的是LM393双路、便宜、皮实缺点是开集电极输出必须接上拉电阻。如果是做低速信号检测LM393完全够用。如果信号频率比较高比如几十kHz以上的PWM、编码器方波整形建议用推挽输出的高速比较器比如TLV3501响应时间几纳秒直接用正反馈电阻做迟滞不需要上拉。电阻选型也有一点讲究。R_in负责把输入信号接入同相端同时参与正反馈分压一般取10kΩ到100kΩ之间。R_f是正反馈电阻决定迟滞窗口大小按需要的窗口用公式倒推。R_b提供同相端到地的直流路径同时影响阈值中心取值可以和R_in同数量级。参考电压怎么来也很关键。简单的做法是用两个电阻分压但分压电阻的热噪声和电源纹波会直接串到参考端。要求高一点的用TL431做2.5V基准精度和温漂都好很多。如果只是演示原理一个精密可调电源直接灌到反相端最省事。清单列一下方便照做比较器LM393DIP或SOP都行配一个DIP转接板上拉电阻4.7kΩ接VCC到输出端R_in10kΩR_f100kΩR_b100kΩ参考电压源TL431基准电路或者可调直流电源去耦电容10μF电解电容和0.1μF陶瓷电容各一个并联在电源两端信号源带三角波输出的函数信号发生器或者自己用运放搭一个积分器产生三角波3.2 接线顺序与电源去耦细节焊接顺序上建议先把电源和去耦电容搞定再接参考电压然后是信号输入和正反馈电阻。LM393的引脚功能要看清8脚DIP封装里2脚是反相输入3脚是同相输入1脚是输出A8脚是VCC。电源去耦电容一定要靠近芯片电源脚放这是很多自制电路出现莫名抖动的原因电源线上高频阻抗高比较器翻转瞬间的电流变化会通过电源脚形成内部反馈导致二次翻转。接上拉电阻的时候注意上拉电阻的另一端接VCC输出高电平就是VCC减去上拉电阻上的压降。LM393开集输出在灌电流很小的时候高电平很接近VCC计算时近似VCC就行。低电平不是严格的0V手册上典型值约0.2V到0.4V跟输出灌电流有关。计算迟滞时把V_OL按0.25V代入会比按0V算更接近实测。参考电压接反相端之前最好串一个100Ω到1kΩ的小电阻隔离防止比较器输入端的瞬时电流冲击影响基准源。虽然LM393输入偏置电流只有几十纳安串个电阻不会明显改变参考电压但确实能降低高频噪声耦合。3.3 示波器实测用X-Y模式看“滞回环”电路搭好之后用信号发生器输出一个幅度合适的三角波频率不用太高100Hz到1kHz都行接到R_in上。三角波的扫描范围要覆盖两个阈值最好从0V到5V。把示波器通道1接输入信号通道2接比较器输出。先看时域波形输出应该是一个占空比跟三角波幅度相关的方波。用示波器的光标功能把通道1的电压在翻转瞬间读出来。正向翻转点就是V_TH反向翻转点就是V_TH-。实测值和理论值通常会有少量偏差主要来自LM393的输入失调电压和电阻精度偏差在几十毫伏内都正常。更直观的方法是示波器X-Y模式。通道1设为X轴通道2设为Y轴两个通道的垂直档位和水平档位都调到合适范围。屏幕上会显示一个平行四边形或者“回”字形的曲线这个环就是迟滞环。环的水平宽度就是迟滞窗口上下两条边对应上升路径和下降路径。如果看到的是一个细长的直线说明迟滞窗口接近零要么正反馈电阻接错了要么输出端短路到地了。4. 典型应用场景拆解迟滞不是玄学是工程刚需4.1 电池欠压保护防止继电器在临界点反复吸合回到开头的场景。12V电池欠压保护目标是在电池电压低于11.5V时切断负载在电压恢复到12V以上时才允许重新上电。如果不加迟滞就会出现继电器不断通断的灾难。加入迟滞后把下降翻转阈值设计在11.5V把上升翻转阈值设计在12.2V。这样电池电压降到11.5V系统断电之后电池电压即使因为负载断开回升一些只要没到12.2V系统就一直保持关断状态。这种设计还有一个额外的好处它让系统对电池“恢复程度”有一个明确的判断标准。不会因为负载断开带来的电压回弹就误认为电池已经充满必须等电池真正充到12.2V才恢复。这个0.7V的窗口兼顾了抗干扰和状态判定比单纯设一个阈值要可靠得多。4.2 缓慢变化信号的整形把“慢性子”输入变成利落方波很多传感器输出信号上升沿特别慢比如光敏电阻上的电压随着光照缓慢变化热敏电阻上的电压随着温度一寸一寸移动。这种缓变信号进入比较器如果没有迟滞翻转过程会非常磨蹭。信号在阈值附近几十毫伏内慢慢爬行输出端会跟着出现一段既不是高也不是低的“毛刺区”后级数字电路根本没法正常识别。给比较器加一个0.1V到0.3V的迟滞窗口效果立竿见影。输入信号只要进入迟滞窗口输出要么维持高要么维持低不会在中间地带停留。最终输出是一个边沿陡峭、无毛刺的方波可以直接送进单片机IO口或者计数器。这个方法在光电编码器、接近开关、流量计脉冲输出里用得非常多。4.3 窗口比较器与电池低电量报警一个窗口稳定输出窗口比较器通常是两个比较器合在一起判断输入电压是否落在某个区间内。比如电池低电量报警电压低于3.3V报警高于3.9V解除报警。两个阈值如果分别由两个比较器各自设定那么当电池电压停留在3.3V附近时报警输出同样会产生抖动。解决办法就是把迟滞加到每一个比较器上。低阈值比较器设定低于3.3V时输出有效之后必须回升到3.5V才解除。高阈值比较器设定高于3.9V时输出有效之后必须跌到3.7V才解除。这样两个阈值之间的区域划分更加清晰报警和解除都在明确的边界上不会因为几百毫伏的噪声来回触发。4.4 弛张振荡器迟滞加上RC电容直接产生方波和三角波迟滞比较器还有一个常常被忽略的用法跟RC电路组合成弛张振荡器。原理很简单比较器输出高电平时通过电阻给电容充电电容电压缓慢上升到达V_TH后比较器翻转为低输出低电平时电容通过电阻放电电压下降到V_TH-后比较器翻回高。如此往复输出端出方波电容两端出三角波。这个电路不需要额外的定时器芯片一片比较器加两个电阻一个电容就能完成。振荡频率由RC时间常数和迟滞窗口共同决定调整R_f就可以改变频率。以前用LM393做过一个10kHz的方波发生器给一个简易LED驱动器做时钟源比用555还省事而且频率稳定性不错。5. 常见问题与排查心得5.1 问题速查表输出抖动、阈值漂移、低电平不为零现象可能原因解决办法输出仍然在阈值附近抖动迟滞窗口设置得太小噪声峰峰值超过窗口宽度增大R_in或减小R_f把ΔV调到噪声峰峰值的2倍以上实测翻转阈值与计算值偏差大电阻精度低比较器输入失调电压大参考电压不准换1%精度电阻用低失调比较器参考源用TL431或专用基准LM393高电平输出不够高上拉电阻太大或者输出负载太重减小上拉电阻到1kΩ到4.7kΩ确认负载电流不超过手册范围低电平输出不为0开集输出管的饱和压降灌电流过大时压降会更高测量实际V_OL并代入公式计算尽量减小灌电流输出端有高频振荡正反馈路径相位延迟或者布线产生了额外电容缩短正反馈引线输出端串一个几欧到几十欧的小电阻在输入端并联一个小电容滤波5.2 调试经验示波器这样设置才能看到真实波形调试迟滞比较器时最容易犯的错是示波器自身引入的干扰。测量高频抖动波形时如果探头的接地线用得特别长接地线本身会形成一个环路天线拾取的电磁干扰叠加到测量结果上看起来像电路在抖实际上可能是测量方式的问题。建议用探头自带的接地弹簧或者把接地线尽量缩短到1厘米以内。示波器的带宽限制功能也很有用。有些电路本身是正常的但输出端会耦合进来几百MHz的微弱振荡示波器全带宽模式下看起来就是毛刺。按下带宽限制按钮把带宽限制到20MHz很多“虚假抖动”直接消失。如果带宽限制之后抖动确实没了那说明问题出在测量环境不是电路本身。观察翻转点时用三角波比用正弦波更直观。三角波的电压变化是线性匀速的翻转点的读数更精确正弦波在峰值附近变化速度慢翻转区域会被拉长读数误差大。扫描频率也不要太高让示波器能稳定触发100Hz到1kHz足够。5.3 设计经验补充迟滞窗口取值的一些实用规律关于迟滞窗口取多大我总结过几个简单规律供参考。第一窗口至少要取噪声峰峰值的2到3倍。取小了没意义还是抖取太大也有问题会导致阈值偏离参考电压太远信号检测的灵敏度显著下降。第二如果系统里既有数字电路又有模拟电路数字信号跳变时通过地线或者电源线耦合的噪声可能很大窗口要按最恶劣情况算而不是按平均值。第三窗口也不要超过信号动态范围的一半否则有些幅度小的信号根本触发不了比较器。电阻阻值也不是越大越好。R_f做到1MΩ级别时比较器输入偏置电流经过R_f产生的压降就可能达到几十毫伏阈值偏移会变得明显。对于LM393这类偏置电流在纳安级别的器件100kΩ附近的电阻都很安全如果用的是老式双极型运放当比较器偏置电流可能到几百纳安反馈电阻超过470kΩ就要小心了。最后再分享一个我自己的习惯设计时不要只算一个理论值要留出调试余量。比如计算出来需要1kΩ的电阻我会在电路板上预留一个并联焊盘先焊一个标称值实测阈值之后如果需要微调再并一个电阻把窗口调准。这种可调设计在现场调试时能省下很多来回改板的时间。多说一句题外话正反馈电阻R_f和输入电阻R_in之间的布局也要注意尽量靠近比较器输入端让这个节点短而粗减少寄生电容带来的额外延迟尤其是做高速比较器的时候这一步能明显改善边沿质量。