原理、参数计算与调试实战)
上周刚好在做一个温度保护板的项目传感器信号经过一级放大之后送到比较器做阈值判断结果第一天就栽了个跟头单限比较器在阈值附近疯狂抖动输出波形跟心电图一样密密麻麻全是毛刺。后来就是靠滞回比较器也就是施密特触发器一把解决的。这篇直接把滞回比较器从头拆到尾包括原理推导、参数计算、仿真验证、实物调试以及几个平时不写进书里的坑希望能给正在捣鼓运放经典电路的朋友一点参考。如果你只是刚接触运放电路的工作原理也不用怕我会尽量用大白话把“为什么要这样设计”“阈值怎么算”“电阻怎么选”讲清楚。这篇适合三类人看一是被比较器抖动问题折磨的电子爱好者二是正在做信号检测、过压欠压保护、光电开关整形这类项目的工程师三是复习模电准备面试的学生。文章能帮你彻底搞懂滞回比较器并直接照搬参数去设计自己的电路。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/(R2R3) VOH × R3/(R2R3)这个V就是此时比较器的上门限Uth。为什么因为反相端Vin从低往高爬只要Vin还没超过V输出就维持高电平一旦Vin超过V反相端电位高于同相端输出立刻翻转为低电平。所以上门限Uth Vref × R2/(R2R3) VOH × R3/(R2R3)输出翻转为低电平之后Vout变成VOL同相端电位也跟着降下来新的V变成Uth- Vref × R2/(R2R3) VOL × R3/(R2R3)这个Uth-就是下门限。之后Vin从高往低掉只有当Vin跌破Uth-输出才重新翻回高电平。注意此时比较器不是回到原来那个阈值而是一个更低的阈值所以形成了“上升用一个高阈值下降用一个低阈值”的双阈值特性。回差宽度ΔU就是两个门限之差ΔU Uth - Uth- (VOH - VOL) × R3/(R2R3)这是一条含金量很高的公式。它说明回差宽度只取决于输出摆幅和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Ω级别比较合适。我从R310kΩ开始算目标ΔU0.4V代入回差公式0.4 (11 - 0.3) × 10k / (R2 10k)把输出摆幅10.7V代进去算出来R2约257.5kΩ。这个阻值不太标准我改成R2270kΩ反推回差约为0.383V满足设计要求也留了余量。实际用的时候R2用250kΩ加一个50kΩ微调电位器串联可以让回差微调但这不是必须的。接下来算Vref。用上门限2.8V来反推2.8 Vref × 270/(27010) 11 × 10/(27010)270k和10k并联后的分压系数大约是0.964R3上的分压比例大约是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/μs12V输出摆幅需要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接VinCH2接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是2mVR310k、R2270k那么阈值等效偏移大约是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.5MHz70倍闭环增益的带宽是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管栅极振铃这些坑每一个都值得记一笔。希望这篇从原理推导到实际调试的记录能让你少走一点弯路。如果你也碰到过比较器相关的疑难杂症欢迎一起交流毕竟这种东西光看书永远差一层自己动手焊一次、用示波器看一次才算真正学到手。