上周刚好在做一个温度保护板的项目,传感器信号经过一级放大之后送到比较器做阈值判断,结果第一天就栽了个跟头:单限比较器在阈值附近疯狂抖动,输出波形跟心电图一样密密麻麻全是毛刺。后来就是靠滞回比较器(也就是施密特触发器)一把解决的。这篇直接把滞回比较器从头拆到尾,包括原理推导、参数计算、仿真验证、实物调试,以及几个平时不写进书里的坑,希望能给正在捣鼓运放经典电路的朋友一点参考。
如果你只是刚接触运放电路的工作原理,也不用怕,我会尽量用大白话把“为什么要这样设计”“阈值怎么算”“电阻怎么选”讲清楚。这篇适合三类人看:一是被比较器抖动问题折磨的电子爱好者,二是正在做信号检测、过压欠压保护、光电开关整形这类项目的工程师,三是复习模电准备面试的学生。文章能帮你彻底搞懂滞回比较器,并直接照搬参数去设计自己的电路。
1. 运放滞回比较器为什么比单限比较器稳:从一次抖动事故说起
1.1 单限比较器在阈值附近的临界振荡
先说说我踩的那个坑。最早的方案特别简单:运放开环,反相端接传感器输出电压,同相端接一个由电阻分压得到的基准阈值,输入信号一旦超过基准,输出就从低翻到高。这个电路就是最基础的单限比较器,也叫过零比较器的变体,原理大家都懂。
问题是,实际输入的信号不可能是一条理想的直线。传感器输出的电压上总会叠加各种噪声,比如电源纹波、空间耦合的工频干扰、放大器自身的宽带噪声。当信号缓慢爬升到阈值附近的时候,只要噪声的峰峰值超过“信号到阈值的距离”,输出就会在这个临界区来回翻转。表现出来的现象就是输出不是干净的一次跳变,而是一串高频振荡。
我实测那次,输入的三角波非常慢,每秒只有几十毫伏的变化速率,输出却出现了十几kHz的毛刺。后级接的单片机IO直接卡死,因为中断请求被高频脉冲反复触发。这就是单限比较器最典型的临界振荡问题:它只有一个阈值,上升和下降都用同一个参考点比,任何一点微小的回退都会被当成“越过阈值”处理。
1.2 正反馈与回差:滞回比较器的核心思路
滞回比较器的解决办法,说穿了就是一句话:把阈值拆成两个,一个管上升,一个管下降。输入信号从低往高爬的时候,用上门限Uth+做判断;从高往低掉的时候,用下门限Uth-做判断。只要这个“回差”宽度比噪声峰峰值大,输出就不会在同一个点来回跳。
实现这个效果的手段是正反馈。输出端通过一个电阻把一部分输出电压送回同相输入端,当输出状态改变时,同相端参考电位也会跟着改变,从而自动移动阈值。这就是施密特触发器的本质——它其实是比较器加上正反馈后的形态,既可以用专用比较器实现,也可以直接用运放搭建。
这个思路和生活里的空调温控特别像:设定26℃启动制冷,27℃才停机,而不是卡在同一个温度点上,这样压缩机就不会因为0.1℃的温度波动反复启停。滞回比较器的回差宽度就是那个“26到27度”的区间,工程上所有抗扰设计都在围绕这个区间做文章。
2. 滞回比较器工作原理与阈值推导过程
2.1 电路拓扑怎么搭:反相输入滞回结构
滞回比较器常见的接法有两种:同相输入和反相输入。我这次用的是反相输入滞回比较器,因为信号链路前面一级是同相放大器,输出阻抗不高,用反相输入可以直接把信号通过电阻接到运放反相端,逻辑也直观。
电路结构不复杂:运放反相输入端接输入信号Vin,输出端Vout经过反馈电阻R2接到同相输入端,同相输入端再通过电阻R3接参考电压Vref。这里注意,R3不是接地的,是接Vref的,这个细节决定了比较器的翻转电平中心在哪。R2和R3构成对Vout和Vref的分压网络,决定了同相端电位V+。
运放工作在开环状态,换句话说就是没有接负反馈,输出要么接近正电源轨(高电平VOH),要么接近负电源轨(低电平VOL)。实际输出高电平不一定等于VCC,要看运放是不是轨到轨输出,普通运放可能比VCC低1.5V左右,这个在推导阈值的时候要留个心眼。
2.2 上门限下门限电压推导全过程
很多人看到公式就头疼,其实这个推导特别简单,用叠加定理就能算。同相端电位V+是Vout和Vref两个源共同作用的结果,因为两个电阻R2、R3的连接点就是同相端。
先把输出假设成高电平VOH,这时候Vref和VOH通过R3和R2分压。叠加定理写法是:
V+ = Vref × R2/(R2+R3) + VOH × R3/(R2+R3)
这个V+就是此时比较器的上门限Uth+。为什么?因为反相端Vin从低往高爬,只要Vin还没超过V+,输出就维持高电平;一旦Vin超过V+,反相端电位高于同相端,输出立刻翻转为低电平。所以上门限:
Uth+ = Vref × R2/(R2+R3) + VOH × R3/(R2+R3)
输出翻转为低电平之后,Vout变成VOL,同相端电位也跟着降下来,新的V+变成:
Uth- = Vref × R2/(R2+R3) + VOL × R3/(R2+R3)
这个Uth-就是下门限。之后Vin从高往低掉,只有当Vin跌破Uth-,输出才重新翻回高电平。注意,此时比较器不是回到原来那个阈值,而是一个更低的阈值,所以形成了“上升用一个高阈值,下降用一个低阈值”的双阈值特性。
回差宽度ΔU就是两个门限之差:
ΔU = Uth+ - Uth- = (VOH - VOL) × R3/(R2+R3)
这是一条含金量很高的公式。它说明回差宽度只取决于输出摆幅和R2、R3的比值,和Vref无关。想调节回差,就动R2和R3的比值;想移动整个阈值窗的中心位置,就动Vref。设计自由度很大,比单纯改某个电阻来得灵活。
2.3 传输特性曲线与回差设计尺度
把输入输出关系画成曲线,就是经典的反向滞回环:输入从低往高走时,输出保持高电平,直到到达Uth+才跳变到低电平;输入从高往低走时,输出保持低电平,直到到达Uth-才跳回高电平。两条路径不重合,中间围出来的就是回差区间。
回差宽度怎么取,是设计里最需要拿捏的一件事。取小了,抗噪效果不明显,噪声照样能翻过阈值造成误翻转;取大了,虽然稳定了,但控制精度下降,比如温控电路里温度波动范围会变大。我一般按工程经验,回差至少取噪声峰峰值的2到3倍,再留一点余量。如果系统里有低频大幅干扰,还得单独分析,不能指望回差一锅端。
另外要提醒一点,如果Vref本身是用电阻分压从电源得到的,而电源纹波又比较大,那么Vref抖动会直接叠加到阈值上。这种情况下,我会在Vref节点加一个100nF到10μF的滤波电容,或者干脆用TL431这类基准源,保证阈值稳定。
3. 从零设计一个滞回比较器:参数计算与器件选型
3.1 设计目标:过温保护电路的阈值要求
纸上谈兵没意思,我直接拿这次做的过温保护电路来做例子。设计要求是这样的:传感器输出经过前级放大后,正常温度下电压在2.0V到2.5V之间,超过2.8V表示过温,系统要关断加热;低于2.4V表示温度回落到安全范围,允许重新加热。供电用单电源12V,运放输出高电平约11V,低电平约0.3V。
注意,这里的“超过2.8V动作”和“低于2.4V恢复”本身就是两个阈值,天然需要滞回比较器,而且回差已经由系统需求定死了:ΔU = 2.8 - 2.4 = 0.4V。这不是让你自由发挥的题目,而是直接给约束的设计任务。
我需要确定三个参数:Vref取多少、R2和R3取多少、回差怎么分配到两个门限上。这里有个小技巧,先定回差,再定中心。理想情况下两个门限的中点就是参考中心,但因为有VOH和VOL的差异,中心并不完全等于Vref,需要按公式反推。
3.2 电阻分压参数计算实例
先选R3。为了不影响运放输入偏置电流和功耗,R2和R3取几十kΩ级别比较合适。我从R3=10kΩ开始算,目标ΔU=0.4V,代入回差公式:
0.4 = (11 - 0.3) × 10k / (R2 + 10k)
把输出摆幅10.7V代进去,算出来R2约257.5kΩ。这个阻值不太标准,我改成R2=270kΩ,反推回差约为0.383V,满足设计要求,也留了余量。实际用的时候,R2用250kΩ加一个50kΩ微调电位器串联,可以让回差微调,但这不是必须的。
接下来算Vref。用上门限2.8V来反推:
2.8 = Vref × 270/(270+10) + 11 × 10/(270+10)
270k和10k并联后的分压系数大约是0.964,R3上的分压比例大约是0.0357。移项之后:
Vref ≈ (2.8 - 11 × 0.0357) / 0.964 ≈ 2.497V
用下门限2.4V反推结果也差不多,误差来自VOH和VOL的非对称。实际Vref我取2.5V,用TL431基准源分压得到,然后实测微调。如果用普通的电阻分压从12V直接分压,也完全可以,但因为12V电源纹波会影响Vref,我建议在分压点加一个10μF电容。
3.3 运放还是专用比较器:选型要点
这里很多人纠结一个问题:滞回比较器到底用运放做,还是用专门的比较器芯片做。我个人的经验是,如果对翻转速度要求不高,比如只是做温度保护、电池欠压检测这类慢信号,用运放完全没问题。LM358、TL072、NE5532这些都行,成本低、货源广,而且运放输出电平可以被外部上拉或者用轨到轨型号轻松搞定。
但如果是高速信号,比如PWM电流检测、过流保护需要在微秒级翻转,那必须用专用比较器,比如LM393、LM311、TL3016这些。原因是普通运放设计目标是线性放大,内部有相位补偿电容,这个电容限制了压摆率SR,导致输出翻转速度慢。专用比较器没有这个补偿电容,翻转可以做到几十纳秒级别。
还有一个容易被忽略的点:运放输出和比较器输出的逻辑电平不一样。运放输出推挽结构,高电平接近电源正轨,低电平接近地,可以直接驱动后级逻辑,但普通比较器很多是开集电极输出,必须加一个上拉电阻到逻辑电源。用NE5532这类音频运放做滞回比较器也没问题,但要注意它的带宽和压摆率,在音频频段很够用,在几MHz的高频场合就吃力了。
3.4 GBW和SR对比较器响应速度的影响
再聊一个热搜词“运放gbw”的实际意义。GBW叫增益带宽积,单位是Hz,它表示开环增益和带宽的乘积是常数。对于滞回比较器这种工作在开环状态的电路,GBW不是直接限制比较精度的参数,但它会影响运放对小信号差异的响应速度。GBW越高,运放在阈值点附近判断“谁高谁低”的速度越快,输出翻转延迟越小。
另外就是SR,压摆率。SR决定了大信号跳变时输出能多快从低到高或者从高到低。比如LM358的SR只有0.6V/μs,12V输出摆幅需要20μs才能完成翻转。这不算快,但在温度保护里完全无所谓。如果用在开关电源的保护电路里,这个延迟可能就是灾难。我的习惯是,SR留至少3到5倍余量,比如需求是1μs内完成翻转,SR至少选10V/μs以上的运放。
4558运放增益70倍会不会自激,这是个很经典的问题。单纯把增益设成70倍,运放本身不会因为增益数值而自激,自激的根源是相位裕度不足、电源去耦不良、输出负载电容过大或者反馈布局引入寄生相移。4558的GBW是5.5MHz左右,70倍闭环增益对应带宽约78kHz,在这个带宽内只要电路布局正常,不太容易自激。如果真自激了,优先检查电源引脚上的去耦电容是不是靠近引脚,输出端是不是带了长线或大电容,而不是怀疑增益倍数本身。
4. 仿真到实物:CircuitJS设置无穷大增益与示波器实测
4.1 在CircuitJS中把运放增益调到无穷大
设计完之后,我习惯先在仿真实测一遍,节约焊板子的时间。CircuitJS是一个非常方便的在浏览器里跑的电路仿真工具,不用安装,打开就能用。很多人不知道它里面运放增益怎么设置成无穷大,我详细说一下。
在CircuitJS的工具栏里,找到“绘制运放”图标,拖一个运放出来,默认的模型是“op-amp”,它的开环增益默认是100000,也就是100dB,对于绝大多数比较器应用已经够用了。如果你想更接近理想运放,双击运放元件,在属性里可以看到gain这个参数,把它改成1e9,效果就基本等效于无穷大增益了。注意,仿真工具里如果增益设得过高,有时候会出现数值振荡,所以我一般取1e7到1e9之间,既保证理想特性,也不至于让仿真器发散。
还有一个细节,CircuitJS里的运放默认存在供电引脚,你需要给正负电源引脚接上电压,否则输出不会正常。用单电源就接VCC和GND,仿真模型里负电源接0V即可。
4.2 仿真波形验证阈值与回差
仿真的电路很简单:信号源用“sine”或“triangle”波形,频率设1kHz,幅度用10V的三角波,保证能跨越两个阈值。运放反相输入接信号源,同相输入端接R2和R3的节点,R2另一端接输出,R3另一端接2.5V基准。我用两个1k电阻分压5V得2.5V,再并联一个100μF大电容模拟低阻源,然后观察输入和输出两个通道。
示波器显示出来的波形非常有说服力:输入三角波缓慢上升时,输出一直保持高电平,直到输入越过2.8V附近才跳变成低电平;之后输入从峰值回落,输出并没有在2.8V就跳回去,而是继续维持低电平,直到输入跌破2.4V附近才重新跳回高电平。两个跳变点之间明显错开了一段距离,这个距离就是回差宽度。
我用鼠标在示波器上拉一下时间轴,大致换算一下电压,仿真得到的跳变点和理论计算差不到0.05V。误差主要来自运放输出不是理想轨到轨,以及仿真模型中VOH和VOL的具体值和数据手册有细微差别。这个精度对于工程设计来说已经够好了。
4.3 实物接线调试与测量记录
仿真没问题之后就上实物。我用的是一块通用洞洞板,运放选了手边现成的LM358,双运放封装只用了其中一半。R2用270kΩ,R3用10kΩ,Vref用TL431搭的2.5V基准源。信号发生器输出0.1Hz的慢三角波,幅度6V,示波器CH1接Vin,CH2接Vout。
上电那一刻我先没接信号,先测静态电平。Vout悬空状态不一定稳定,因为比较器本身有正反馈,只要输入不在临界区,输出应该是确定的高或低。实测输出高电平10.8V,低电平0.2V,和计算用的10.7V、0.3V比较吻合。
然后接上三角波,示波器瞬间出现经典的滞回环。我记得以前的老师特别喜欢让学生用示波器的X-Y模式看传输特性曲线,把CH1输入接到X轴,CH2输出接到Y轴,屏幕上直接画出一个矩形滞回环,门槛点就是矩形边沿的位置。我这次也试了一下,真的非常直观,建议有条件的朋友试试,比一直盯波形图理解深刻得多。
实测翻转点:上升沿在2.83V,下降沿在2.45V,回差0.38V。和设计值2.8V、2.4V、0.4V差得不多,主要偏差来自电阻精度(我用的是5%精度)和LM358的输出摆幅与理想值有差异。如果对精度敏感,R2和R3换成1%精度电阻,误差能进一步压下来。
5. 常见问题与排查技巧实录
5.1 输出抖动:噪声、回差宽度与滤波处理
输出抖动是滞回比较器最常遇到的故障。如果你已经加上了正反馈,输出还是抖,先别怀疑电路接错,按下面几个方向排查。
第一,回差宽度是不是真的比噪声大。用示波器AC耦合看输入信号的噪声峰峰值,再把R3或R2调整,让回差至少是噪声的2到3倍。我遇到过有人用100mV回差去抗500mV噪声,那肯定压不住。
第二,Vref本身是不是干净。如果Vref来自开关电源分压,开关毛刺可能直接抬升或拉低阈值,让比较器在错误点翻转。解决方法是Vref节点加高频电容,同时给电源加大容量电解电容和100nF陶瓷电容组合去耦。
第三,输入端的RC滤波是不是到位。比较器输入不要直接接一根长导线,最好在输入端加一个低通RC,截止频率设置在信号带宽的3到5倍以上,把带外噪声滤掉。这一步和回差是配合的,一个在源头上降噪,一个在判决上防抖,两个都做了才稳。
5.2 失调电压与参考电压精度对阈值的影响
运放的失调电压Vos是一个很隐蔽的影响因素。理想运放两个输入端的电位完全相等,实际运放会存在一个内建的偏差,等效于在输入端串联了一个小电压源。对于滞回比较器,Vos会直接叠加到阈值的判断上。
失调电压对阈值影响的大致估算是这样的:如果运放的Vos是2mV,R3=10k、R2=270k,那么阈值等效偏移大约是Vos乘以分压放大系数,也就是2mV乘以(1 + R2/R3),大约54mV。这个偏移在回差0.4V的电路里占了一成多,不是可以忽视的量。失调电压计算公式在工程里常用的是:Vos = Vout /(1 + Rf/Rin),这是从反相放大电路反推输入失调的简化算法,适用于闭环状态。在比较器开环状态下,直接看数据手册的Vos参数更靠谱。
选型上,LM358的Vos典型2mV,最大7mV,对大多数阈值检测够用。如果你做的是高精度比较,比如锂电保护里面几毫伏级别的检测,那最好选Vos在100μV以内的精密运放,比如OP07、OPA2277,或者干脆用带内部基准的专用比较器芯片。参考电压的精度同样重要,2.5V基准如果温漂100ppm/℃,在环境变化40℃的时候会漂10mV,会直接影响阈值。所以高低温场合建议用TL431甚至更高级的基准。
5.3 运放自激与射频整流:4558高增益自激问题
“4558运放增益70倍会自激吗”这个问题几乎每隔几天就有人问一次。前面说了,自激和增益倍数没有直接因果关系。但有一种情况确实会引起高增益下自激:GBW余量耗尽。4558的GBW是5.5MHz,70倍闭环增益的带宽是5.5MHz/70≈78kHz。如果电路里输出端到反相输入端之间存在较大的寄生电容,或者输出端接了长同轴电缆,形成一个额外极点,在78kHz这个频率附近相位裕度不够,就会振荡。
还有一种自激是“假自激”,其实是比较器在阈值附近的正常抖动,但示波器上看着像振荡。这个要区分清楚,把输入信号断开,接一个固定电平,如果输出稳定,那就不是自激;如果输出还在振荡,那就是电源去耦或布局问题。
另一个高频干扰问题是RFI整流。运放输入级的PN结在强射频干扰下会做非线性的整流,把高频信号变成直流偏置叠加在输入上,导致比较器阈值漂移。表现为周围一有开关电源或者无线发射源,比较器就误动作。解决思路是输入前端加低通滤波,选择带宽合适的运放,必要时在输入端并联几十pF到几百pF的电容,让射频信号在到达运放输入级之前就被旁路。
5.4 输出驱动MOS管:灌电流拉电流与栅极电阻
最后一个让我吃过亏的是比较器直接驱动MOS管。运放输出电流能力有限,LM358输出电流大概20mA左右,驱动MOS管栅极的时候不能只顾着电平是否满足,还要考虑栅极电容的充放电。
MOS管栅极是个电容,快速开关时瞬间充电电流很大。如果运放输出直连栅极,不仅可能因为驱动能力不足导致开关变慢,还可能和栅极走线电感一起形成LC振铃,严重时在栅极产生过压。常规做法是输出端串联一个10Ω到100Ω的栅极电阻,限制峰值电流,同时抑制振铃。如果需要更快的关断,可以在栅极电阻上并联一个二极管,增加关断路径的电流能力。
还有一个细节是栅源之间必须加一个电阻,通常10k到100k,确保在运放未上电或者输出高阻态时,MOS管栅极有个确定的电平,不会因为悬空而误导通。这个电阻同时给栅极电荷提供泄放回路,防止静电积累。电平匹配也要注意,如果运放是低压供电,高电平只有3.3V,而MOS管是逻辑电平型的还好,普通MOS管可能没法完全开通,这时候就要加一级三极管或者栅极驱动器。
6. 从滞回比较器延伸出去的几个经典运放电路
6.1 加法器与减法器的基本搭建
滞回比较器常常不是孤立存在的,它前面通常跟着信号调理电路。我这次用的前级是同相放大器,如果你做的是多传感器混合信号,就可能用到加法器或者减法器。
运放加法器用反相输入结构最方便:多个输入电阻接到反相端,反馈电阻Rf跨接输出和反相端,输出就是各输入电压按权重求和再反相。权重就是Rf/Rn。减法器本质是差分放大器,把两路输入分别接到同相端和反相端,通过电阻比例实现差模放大、共模抑制。减法器的电阻匹配精度直接决定共模抑制比,四个电阻哪怕有0.1%的失配,CMRR也可能掉到60dB以下。
比较器和这些电路搭配起来就是一套完整信号链:传感器差分信号先做减法放大、加低通滤波、再进滞回比较器整形,最后去驱动逻辑或者功率器件。我就是把这个思路用在了温度保护板上,效果非常稳。
6.2 恒流源、CMRR与THD的几个易混淆问题
运放另一个常见玩法是恒流源。用运放配合一个采样电阻和三极管或MOS管,可以搭出精度很高的恒流源,原理是运放不断比较采样电阻上的压降和基准电压,通过负反馈调整功率管的导通程度。这个电路和滞回比较器一样,都是运放经典应用,区别在于一个用负反馈做线性调节,一个用正反馈做非线性判决。
关于“运放THD和共模抑制比有没有关系”,这是个好问题。严格说,THD主要取决于信号链的线性度、增益带宽和输出级能力,CMRR描述的是对共模干扰的抑制能力,两者不是同一个指标。但在差分放大电路里,如果电阻匹配不好,共模电压会转换成差模误差,这个误差叠加到信号上,会让输出产生非线性失真。换句话说,CMRR太差会间接让THD变差,尤其在共模电压大、信号摆幅大的场景里更明显。所以精密测量电路里,电阻匹配和运放CMRR是同时要抓的。
6.3 两级运放级联时需要注意什么
还有人问两级运放能不能先同相放大再反相放大,这个问题我直接说结论:完全可以,而且很常见。同相级的优势是输入阻抗高,不加载前级信号;反相级的优势是可以通过电阻精确设定增益,同时建立虚地,让后级电路具有稳定的参考点。两者组合,既照顾了输入阻抗,又拿到了精确增益。
级联时最需要注意的是增益分配。总增益是两级相乘,比如总增益100倍,你可以分配第一级10倍、第二级10倍,但每一级都会消耗一部分GBW。如果第一级做50倍,带宽就只剩GBW/50,信号稍微高频一点就会被压下去。我的习惯是每级增益不超过总增益的平方根级别的两倍以内,并且每一级的带宽至少要留出信号频率的5倍余量。另外级间耦合要加滤波电容,防止前级噪声进入后级被放大,同时每级运放的电源引脚都要独立就近去耦,避免级间通过电源内阻耦合形成振荡。
如果把滞回比较器也放进去思考,你会发现整个信号链路就是一个“放大—滤波—判决—驱动”的组合。理解每一级在干什么、为什么要这样接,比背一百个电路图都管用。学运放不是死记硬背,而是理解反馈、带宽、噪声三者之间的平衡,等你想通了这一点,很多电路看起来就都是同一个套路了。
这次做温度保护板,前后花了不到半天就解决了问题,但中间踩过的单限比较器抖动、MOS管栅极振铃这些坑,每一个都值得记一笔。希望这篇从原理推导到实际调试的记录,能让你少走一点弯路。如果你也碰到过比较器相关的疑难杂症,欢迎一起交流,毕竟这种东西,光看书永远差一层,自己动手焊一次、用示波器看一次,才算真正学到手。