我有一次给一条生产线的电机做过温保护改造,用的就是最普通的单限比较器。采样电路、基准电压都调得好好的,结果一通电,继电器在温度接近设定值的时候开始“哒哒哒”地疯狂抖动,触点火花四溅。后来用示波器一抓,发现温度传感器输出的信号在阈值附近叠加了几十毫伏的纹波和毛刺,每一次噪声穿过阈值,比较器就翻转一次,输出就成了高频抖动。这种场景估计做硬件的都遇到过,核心问题就在于单限比较器没有抗干扰能力。要解决,我当时的方案就是改滞回比较器,后来做批量设备时又用了窗口比较器做区间判断,配合整体抗干扰设计才算真正搞定。这篇文章就围绕这个主题展开,把两种电路的原理、参数计算、应用选择和抗干扰设计思路完整讲一遍,给还在被阈值抖动折腾的人一个可以照着做的参考。
1. 从单限到滞回:比较器为什么会在阈值附近失灵
1.1 单限比较器的工作机制与天然缺陷
单限比较器本质上是工作在开环状态的运算放大器,两个输入端的差模电压决定了输出状态。理论上输入电压穿过基准电压那一个点,输出就翻转,教科书里画出来是一条直线、一个阈值、一次翻转,干净利落。但真实信号从来不会这么干净:传感器输出上叠加着工频干扰、电源纹波、热噪声,信号上升速率也不是无限大。当输入信号以很慢的速度接近阈值时,叠加在信号上的微小扰动会让输入端口的差分电压反复跨越零点,输出就在两个状态之间来回跳。比较器的响应速度越快,这种抖动看起来越“剧烈”,因为高频成分全被忠实还原了。
这个缺陷在高精度控制场合尤其致命。比如温控继电器,温度信号在阈值附近慢慢磨蹭时,噪声一叠加,继电器就能在几秒钟内通断几十次,触点打火、寿命骤减,整条产线的设备都会被干扰。所以单限比较器像一个没有“门槛”的门口,风一吹就开门,真正有人来反而要等。这里的一个关键认知是:输出抖动不是比较器芯片坏了,而是拓扑结构本身缺少对噪声的“过滤层”,光靠换更高速的比较器反而更糟。
1.2 滞回比较器:用正反馈制造“双向门槛”
滞回比较器解决抖动的方式很朴素,不再用单一阈值,而是用两个阈值。输入从低往高走的时候,需要越过一个较高的上门限VTH_H;输入从高往低回落的时候,需要跌到较低的下门限VTH_L。两个阈值之间的差就是滞回电压ΔV。这个双边界的特性靠正反馈实现——比较器的输出通过一只反馈电阻接到同相输入端,输出状态不同,反馈量就不同,同相端的参考电压也跟着变。输出为高时,参考电压被抬高;输出为低时,参考电压被压低。
这样一来,输入信号跨越阈值导致输出翻转后,阈值会自动“远离”当前输入方向,已经发生的噪声不会再触发翻转,只有信号继续朝原方向移动足够大的距离,越过另一侧的阈值,输出才会再次翻转。所以滞回比较器给人的直观感受是比单限比较器“迟钝”,但这个迟钝恰恰是用来对抗噪声的。曾经有人问我,既然加个RC低通滤波器不也能消除噪声吗?确实可以,但RC滤波会拖慢信号的实时响应,而且对大幅值窄脉冲毛刺的效果有限。滞回比较器是在电压域直接设置了一个“保护带”,响应速度几乎不受影响,更适合用来保护继电器触点这类需要快速翻转的应用。
1.3 窗口比较器:不是盯一个点,而是盯一段区间
滞回比较器解决的是“在阈值附近抖动”,但很多应用场景需要判断输入信号是否落在某个区间内,比如电池电压是否在2.8V到4.2V之间,供电电压是否在3.3V的±5%以内。这类需求用单个比较器做不好,需要两个比较器同时工作:一个负责上限,一个负责下限,再把两路结果按逻辑组合,这就是窗口比较器的基本形态。
窗口比较器的输出只有两种状态,输入在窗口内,或者输入在窗口外。它和滞回比较器解决的问题角度不同:滞回比较器解决“单个阈值附近的噪声抖动”,窗口比较器解决“区间上限和下限的越界判定”。如果给滞回比较器比作带阻尼的门,那窗口比较器就是一条带护栏的车道,车必须在护栏之间行驶,压线或出线都要报警。两者不是替代关系,而是互补关系,实际产品里经常组合使用。比如一个电源监控电路,需要同时判断电压不高于上限、不低于下限,又希望每个界限附近不抖动,那就得在两个比较器上分别引入正反馈,形成“带滞回的窗口比较器”。
2. 参数计算:滞回比较器的阈值不要靠猜
2.1 经典反相输入滞回比较器的公式推导
常见的滞回比较器有同相输入和反相输入两种接法,反相输入接法用得更多。输入信号接到反相端,反馈电阻R3从输出接到同相端,同相端同时通过R1接到基准电压VREF。此时同相端的电压是VREF和输出电压VOUT经过R1、R3分压后的叠加:
V+ = VREF * R3 / (R1 + R3) + VOUT * R1 / (R1 + R3)
当VOUT为高电平VOH时,V+对应上门限VTH_H;当VOUT为低电平VOL时,V+对应下门限VTH_L。输入从低往高穿过VTH_H,输出翻转;从高往低跌过VTH_L,输出再翻转。滞回宽度为:
ΔV = VTH_H - VTH_L = (VOH - VOL) * R1 / (R1 + R3)
这个公式透露出两个关键结论。第一,滞回宽度与基准电压VREF无关,只由输出摆幅和R1、R3的分压比决定。第二,基准电压只影响两个阈值的中心位置,不影响窗口宽度。这个特性在设计时非常好用,可以先确定滞回宽度,再确定中心阈值,互不牵制。
2.2 实例计算:5V系统、2.5V基准、反馈电阻100k
假设VCC=5V,比较器是轨到轨输出,VOH≈5V,VOL≈0V,R1=10kΩ,R3=100kΩ,VREF=2.5V。分压比β = R1 / (R1 + R3) = 10 / 110 ≈ 0.0909。
上门限 VTH_H = 2.5 + (5 - 2.5) * 0.0909 ≈ 2.727V 下门限 VTH_L = 2.5 + (0 - 2.5) * 0.0909 ≈ 2.273V 滞回宽度 ΔV ≈ 0.454V
中心阈值还是2.5V,两个阈值基本对称。这时候一个峰峰值0.2V的噪声叠加在缓慢上升的信号上,因为噪声幅度小于0.454V的滞回窗口,输出不会抖动,这个安全裕量接近2.3倍。
如果把比较器换成LM393这类开集电极输出,上拉到5V,VOH≈5V,但VOL不是0V,而是饱和压降约0.2V到0.4V。代入公式后VTH_L会变成2.5 + (0.2 - 2.5) * 0.0909 ≈ 2.29V,滞回宽度也相应缩小到约0.43V。虽然差异不大,但在需要精密阈值的场合,这0.1V级别的偏差就足以造成误动作,所以计算时必须查数据手册里的输出低电平规格,不能想当然用0V。
2.3 阈值和滞回宽度选取的经验法则
滞回宽度不能拍脑袋定,我一般按三步来。第一步,用示波器实测输入信号在阈值附近的噪声峰峰值,注意要在实际工作状态下测,带上电机、继电器这些负载。第二步,取噪声峰峰值的1.5到3倍作为滞回宽度,既保证噪声抑制,又不过度推高阈值偏差。第三步,校验滞回宽度不超过信号满量程的5%到10%,如果超过,说明信号链本身噪声太大,要先回头处理噪声源。
基准电压VREF也是容易翻车的地方。直接用一个电阻从电源分压取基准,省成本但会把电源纹波按分压比传给阈值,等于给阈值叠加了噪声。要求高的场合,VREF要加缓冲器或用TL431这类稳压源。另外,比较器的输入偏置电流也会在分压电阻上产生压降,如果分压电阻用到100kΩ以上,就必须考虑偏置电流的影响,这也是老型号比较器在高压反馈网络里阈值漂移的原因。
2.4 开集电极输出与上拉电阻的配合
LM393、LM311这类开集电极输出的比较器必须接上拉电阻才能输出高电平。上拉电阻取1kΩ到100kΩ都可能,但取值逻辑不同。阻值越小,上升沿越陡峭,功耗越大;阻值越大,功耗越低,但配上负载电容后沿会变慢。低速信号检测用10kΩ比较中庸。如果你后面接的是CMOS逻辑输入,还要注意高电平门限,5V系统里CMOS要求最低2.0V到2.5V,10kΩ上拉到5V没有问题。如果比较器工作在3.3V系统,上拉就接3.3V,不要接5V,否则输出高电平超过后级芯片的耐压。
提示:推算滞回阈值之前,先确认比较器输出究竟是推挽还是开集电极,再确认VOL的真实数值。这两个信息直接决定了理论计算和实测结果的偏差大小。
3. 窗口比较器设计:上下限划定与组合逻辑
3.1 两种常见结构:开漏线与与门组合
窗口比较器的经典结构是用两个比较器,一个同相端接输入、反相端接高阈值VH,另一个同相端接低阈值VL、反相端接输入,这样无论输入超过VH还是低于VL,都会有一个比较器的输出变成异常状态。输出组合方式有两种典型接法。第一种是两个比较器都用开漏输出,把两个输出引脚直接短接到一起,外接一个上拉电阻。任何一路输出低电平,公共端就是低电平,相当于“线与”逻辑。第二种是两个推挽输出的比较器,外部用与门或者用二极管和电阻组成与逻辑,电路会稍微复杂一点。
第一种接法在工程里最常见,因为LM393、LM2903这类芯片本来就是双比较器封装,内部两个比较器共用电源和地,外部只需要三只分压电阻和一只上拉电阻,一颗芯片就能完成整个窗口检测,成本极低,PCB面积也省。而且“线与”输出低电平表示越界,在单片机系统里可以直接接外部中断的下降沿引脚,硬件上非常顺手。
3.2 分压电阻网络计算:先定总电流再分比例
窗口阈值一般通过一个三分压电阻从VCC或精密基准获得。假设VCC=5V,要求窗口范围2.5V到3.5V,也就是VL=2.5V,VH=3.5V。从GND到VCC依次串R1、R2、R3,其中VL从R1上取得,VH从R1+R2处取得。先确定分压链总电流,比如0.5mA,则总电阻R_total = 5V / 0.5mA = 10kΩ。
VL = 5V * R1 / (R1 + R2 + R3) = 2.5V,所以R1 = 5kΩ。VH = 5V * (R1 + R2) / (R1 + R2 + R3) = 3.5V,所以R1 + R2 = 7kΩ,R2 = 2kΩ。R3 = 10kΩ - 7kΩ = 3kΩ。这组值用1%精度标准电阻可以找到接近的:R1选4.99kΩ,R2选2kΩ,R3选3.01kΩ,加上电阻误差,阈值偏差通常在几十毫伏以内,对大多数窗口检测应用足够。
这里有两个容易忽略的点。第一,分压网络会持续消耗电流,0.5mA对多数基准源没有压力,但如果分压电阻选到1kΩ级别,电流变成5mA,很多微功耗基准源就带不动了,这时候要么加缓冲器,要么增大分压电阻。第二,分压电阻选到100kΩ以上时,比较器输入偏置电流的影响开始显现,某些老型号比较器输入偏置电流达到微安级,会把分压网络拉偏,阈值明显偏离设计值。所以设计时先查比较器输入偏置电流,再决定分压电阻的阻值范围。
3.3 带滞回的窗口比较器:双阈值与双保护
窗口比较器如果面对的信号噪声很大,比如工业现场的电平检测,仅仅用两个单限比较器组成窗口同样会抖动。此时可以对每个比较器引入少量正反馈,形成两个带滞回的比较器,再把输出“线与”。但要注意,两个比较器共享输入信号,上下门限之间的滞回会压缩或展宽有效窗口,极端情况下甚至可能出现高比较器的下门限低于低比较器的上门限,导致两个阈值交叉,逻辑彻底混乱。
处理办法是先分别设计好单路的滞回宽度,再根据最坏情况校验VH_L > VL_H,也就是高比较器的下门限要高于低比较器的上门限,保证窗口依然存在。这类设计建议在仿真软件里做参数扫描,把电阻值和阈值做成变量,扫一遍看窗口的变化趋势,不要凭感觉算一遍就下单打样。我在实际项目里见过不止一次因为上下限交叉导致输出永远异常的问题,排查时特别容易绕晕,因为两个比较器会“互相打架”。
4. 应用场景与选型思路:这三种接法最常用
4.1 过温保护:滞回比较器让继电器不再“哒哒哒”
回到开头那个温控改造的例子。当时我把单限比较器改成了滞回比较器,跳闸点设在85℃,恢复点设在75℃,中间隔了10℃的滞回窗口。温度信号经过NTC分压后送到比较器输入端,反馈电阻取47kΩ,配合输入电阻10kΩ,滞回电压折合到温度约3℃。3℃的滞回窗口已经能完全吸收接触器吸合瞬间产生的电源跌落和传感器线缆耦合进来的干扰。改造后,继电器只在温度真正越过85℃时动作一次,再也不会抖动。
过温保护里滞回比较器还有一个额外的好处,就是避免系统在保护动作后因为温度自然回落而立刻复位、再次加热、再次过温,形成高频振荡。有了滞回,系统必须降温到明显低于跳闸温度的恢复点才重启,这其实是一种简单的热管理策略。设计时要注意,跳闸点和恢复点之间的差值不能太小,否则风机或散热器一停,温度稍微反弹就可能再次触发。
4.2 电池电量监控:窗口比较器同时防过压和欠压
电池充放电管理是窗口比较器的经典应用。以单节锂电池为例,工作电压范围假设2.8V到4.2V,低于2.8V要报警,高于4.2V要停止充电。用两个比较器分别设置2.8V与4.2V两个阈值,输出线与后连到单片机的外部中断,任何一路触发都会让系统进入保护流程。这个场景里,电池电压在充电边沿会有比较明显的纹波,建议在每个比较器上加少量滞回,比如0.1V,防止充电器切换瞬间出现误报。
多节电池串联的均衡保护也可以这样扩展,只是阈值要按分压比例重新计算。还有一种做法是把窗口比较器的输出接到一个PMOS的栅极,用“窗口内导通、窗口外关断”的逻辑直接切断负载,省掉单片机参与。这种纯硬件保护在电池供电的手持设备里很常见,因为不依赖固件就能兜底。
4.3 传感器信号整形与转速测量
光电编码器、测速齿轮、霍尔传感器输出的信号往往带有不同程度的毛刺,特别是电机启动瞬间,干扰幅度可能达到正常信号的一半。用滞回比较器把传感器信号整形成干净的方波,是单片机计数和测频模块最欢迎的输入形式。此时滞回比较器的中心阈值一般设在信号中值附近,滞回宽度覆盖噪声余量。需要注意信号的幅度范围,如果传感器输出高电平只有3.3V,比较器供电也用3.3V;如果传感器输出是0-10V的长线传输信号,要先衰减到比较器允许的输入共模范围内再进比较器。
转速测量的另一个细节是,比较器翻转沿的抖动会直接影响频率测量精度,所以比较器输出端最好加一个小的施密特触发器或者直接在单片机里配置输入滤波,双保险。
4.4 快速选型对照表
| 应用场景 | 推荐方案 | 阈值设定要点 | 注意事项 |
|---|---|---|---|
| 设备过温保护 | 滞回比较器 | 跳闸点+恢复点,拉开滞回窗口 | 继电器驱动需加续流二极管 |
| 电池过压欠压告警 | 窗口比较器(可加滞回) | 上、下限分别设定 | 充电状态切换时注意迟滞 |
| 转速/位置信号整形 | 滞回比较器 | 阈值取信号中值,滞回取噪声峰值2倍 | 注意输入共模范围和电平匹配 |
| 电源电压监控 | 窗口比较器 | 上下限按规格±5%~±10% | 电源上电瞬间可能误报,加延时 |
选型的判断标准其实很简单:只关心“高于某个值就动作、低于某个值就恢复”,用滞回比较器;关心“必须在某个范围内才正常,超出上限或低于下限都要告警”,用窗口比较器。
5. 抗干扰设计:从原理到布线的完整闭环
5.1 干扰来源分析:先找到“敌人”再开火
比较器电路的干扰来源通常有四类。第一类是电源纹波和地弹,比较器供电脚上的高频纹波会通过内部电路耦合到输入端,尤其当电源和负载共用走线时,负载电流突变会在PCB走线电感上产生压降,叠加到基准地上,让阈值看起来在跳。第二类是基准源不稳定,如果VREF直接用一只电阻从电源分压获得,电源纹波会按分压比传到阈值上,等于给阈值叠加了噪声。第三类是输入信号线耦合,长线传输的传感器信号容易拾取EMI,特别是靠近电机、继电器、开关电源的场合。第四类是比较器自身的自激,正反馈环路如果相位裕度不足,会在翻转沿附近产生振铃,示波器上看就像输出反复开关几次才稳定。
排查干扰时,我习惯用示波器同时看三路信号:输入信号、VREF节点、输出信号。对比这三点的波形,能很快定位噪声从哪个环节进来。很多时候你会发现输入信号很干净,反而是VREF上面全是毛刺,这时候盲目加滞回宽度只会让阈值便宜得离谱。
5.2 滞回宽度设置:不是越大越好
滞回宽度是最直接、最有效的抗干扰手段,但它有两个副作用。第一,过大的滞回会让实际跳闸点明显偏离设计值,比如过温保护,跳闸点和恢复点差距太大,设备温度波动范围就会变大,用户会感觉设备“忽冷忽热”。第二,降低系统对真实信号的响应速度,信号必须以足够快的速度跨过整个滞回窗口,输出才会翻转。如果信号上升得很慢,叠加的噪声又恰好与信号方向相反,可能会出现瞬间的“卡顿”感。
工程上,滞回宽度取噪声峰峰值的1.5到3倍比较合理。如果算出来需要大于满量程的10%,说明问题不在比较器,而在信号链,先解决噪声源,而不是盲目加宽滞回。比如给传感器信号加屏蔽线、把传感器供电单独滤波、调整信号接地点,往往比一味加大滞回有效得多。
5.3 输入端RC滤波的正确打开方式
在比较器输入端加一个RC低通滤波器,把高频噪声提前滤掉一部分,可以大大减轻滞回比较器的负担。RC滤波器的截止频率要远高于信号本身的最高频率,同时远低于噪声的主频。例如一个带宽100Hz的温度信号,噪声主频在10kHz以上,RC截止频率选1kHz比较合适。时间常数τ=RC约为160μs。要注意的是,RC滤波器会引入信号延迟,对于要求快速响应的保护电路,比如短路保护,RC时间常数必须尽可能小,这时候宁可依靠滞回窗口而不是靠滤波。
还有一个组合技巧:把RC滤波放在反馈回路之外,也就是信号到反相端之间,反馈电阻仍然直接从输出接到同相端。这样滤波不会改变滞回宽度,只会滤除输入信号本身的噪声,两部分功能互不干扰。不少人把RC放在反馈电阻的位置,结果发现滞回特性被完全破坏,就是这个原因。
5.4 PCB布局与去耦的几个实操要点
电源引脚就近放置0.1μF陶瓷电容,这是大多数场景的折中值,位置离电源脚越近越好。反馈电阻和分压电阻尽量靠近比较器,减少环路面积。正反馈环路面积过大会变成一根小天线,既拾取干扰又向外辐射。基准源要远离继电器、功率MOS管的驱动走线,这些走线上的电流变化率极高,哪怕只有几毫米的平行走线都能耦合出明显的电压,我吃过这个亏,当时板子上继电器驱动线从基准芯片正下方穿过,导致比较器阈值一直漂。
开漏输出上拉电阻放在负载端,不要放在比较器端,这样可以减小输出引脚上的电流环路。地平面保持完整,不要在比较器下方随意开槽,给返回电流一条最短的连续路径。多层板尽量把比较器放在靠近板边的位置,远离电源开关节点。
6. 仿真与实测:别让设计停留在纸面上
6.1 用LTspice做带噪声的仿真验证
我习惯用LTspice先把电路跑一遍,比较器模型可以用软件自带的LT1016、LT1719等。激励信号用一个慢斜坡叠加一个高频正弦波来模拟带噪声的信号,斜坡速率设置成实际系统中最差的情况,比如温度传感器几十毫伏每秒的慢变化。把R1、R3设置成参数变量,用.step命令扫描几组滞回宽度,可以直接看到阈值偏移和噪声抑制效果之间的权衡。
仿真中遇到的一个坑是,某些比较器模型在翻转瞬间会输出异常的尖峰,这不一定是实际电路的毛病,先检查模型和仿真步长设置,再用实测确认。如果你用的比较器没有SPICE模型,也可以用运放搭建一个等效的迟滞比较器来验证阈值计算公式,反馈逻辑是一致的。
6.2 实测调试:从直流阈值到动态噪声测试
仿真通过之后,上板调试按三步走。第一步,输入接一个精密可调直流电源,缓慢调整电压,用万用表记录输出翻转时的输入电压,分别在上升和下降两个方向测两次,得到实测的上门限和下门限,与计算值对比。偏差超过10%就要检查电阻精度和比较器输出电平,特别是LM393这类开集电极芯片的VOL。
第二步,在信号源上叠加一个已知幅度的高频噪声,让信号在阈值附近往复变化,观察输出是否还能稳定维持。这一步直接验证滞回宽度设置是否合理。第三步,在实际负载条件下做极限测试,让继电器反复吸合、让电源在80%到110%额定电压之间变化,确认输出没有误动作。这一步最花时间,但恰恰是发现“计算没问题但实际不工作”的关键环节。
6.3 常见问题排查速查表
| 现象 | 可能原因 | 检查方向 |
|---|---|---|
| 输出在阈值处仍然抖动 | 滞回宽度小于噪声幅度 | 实测噪声,增大反馈系数 |
| 实测阈值与计算值偏差大 | 输出非轨到轨、电阻误差、基准不稳 | 查输出电平,换高精度电阻 |
| 电源变化导致误动作 | 基准取自电源分压 | 改用独立基准源 |
| 翻转沿出现振铃 | 反馈环路过大、去耦不足 | 缩短走线,加强去耦 |
| 加上负载后阈值改变 | 负载电流拉低了输出高电平 | 检查上拉电阻和负载电流 |
排查时先从供电和基准查起,再查输入信号,最后才怀疑比较器芯片本身。把判定顺序固定成一套习惯,遇到问题就不会手忙脚乱。
我在实际项目里踩过的最典型的一个坑,就是计算时把比较器的饱和输出当成轨到轨来用。LM393这类开集电极输出,低电平不是0V,而是有0.2V到0.4V的饱和压降,高电平又完全依赖上拉电阻,这两个因素都会让实际阈值偏离理论公式。后来我在所有设计里都先查数据手册的输出电平规格,再用万用表实测一遍,确认无误再批量。另一个小技巧是,在PCB上预留0欧电阻位,方便调试时断开反馈网络测量阈值,这个习惯帮我省了不少反复改板的时间。好的比较器电路设计,七分在计算,三分在验证,两者都做到位,才敢说这一版真的稳了。