
1. 从一个翻车案例聊起为什么比较器总在阈值附近抽风刚入行那会儿我用LM393搭了一个最简单的过压检测电路反相输入端接基准电压同相输入端接分压后的被测信号输出直接拉到单片机IO口。理论上被测电压超过阈值时输出翻转干净利落。结果实测波形让我怀疑人生——输入信号在阈值附近稍微有一点毛刺输出就疯狂抖动单片机中断被触发得停不下来整个系统像得了帕金森。后来把示波器探头挂到输出端才看明白比较器不是运放它没有负反馈开环增益又极大输入只要在阈值附近有哪怕几毫伏的噪声输出就会在高低电平之间反复横跳。这个问题在单限比较器上几乎是必然的解决它的核心手段就是引入正反馈构成滞回比较器或者干脆用窗口比较器把判断区间拉开。这篇文章就把单限、滞回、窗口这三种比较器从原理到波形一次讲透。不管你是刚学模电的学生还是需要做电池过放保护、信号整形、电平检测的硬件工程师这三类电路都是绕不开的基本功。我会用LM393和LM358这两个最常见的器件做例子把参数计算过程、实测波形特征、踩过的坑都摊开来讲争取让你看完就能直接抄作业。2. 先搞清楚比较器和运放到底差在哪2.1 开环与闭环一个被忽略的本质区别很多人第一次接触比较器时会想运放也能当比较器用啊为什么还要专门买LM393这个问题问到点子上了但答案不只是专用芯片便宜这么简单。运放设计时追求的是闭环线性放大它的内部电路为了保证闭环稳定性做了频率补偿压摆率通常被压得很低。你拿LM358当比较器用输入突变时输出从低到高爬升需要好几微秒甚至十几微秒波形边沿是斜的。而LM393这类专用比较器没有内部补偿压摆率快得多输出边沿陡峭传播延迟典型值只有1.3微秒。做高速信号整形时这个差别是致命的。另一个关键点是输出结构。LM358是推挽输出高电平接近电源正轨低电平接近地。LM393是集电极开路输出必须外接上拉电阻才能输出高电平。这个缺点其实是优点——上拉电阻可以接到比比较器供电更高的电压上比如比较器用5V供电上拉接到12V输出就能直接驱动12V逻辑的电路电平转换都省了。注意集电极开路输出意味着多个LM393的输出可以直接并联在一起实现线与逻辑只要共用一个上拉电阻。这个特性在做过流保护的多路汇总时特别好用。2.2 比较器的三种工作模式概览从阈值特性来分比较器就三类单限比较器只有一个阈值电压输入高于它输出一种状态低于它输出另一种状态。电路最简单但抗噪能力最差。滞回比较器有两个阈值上限VTH和下限VTH-输入从低往高走时在VTH翻转从高往低走时在VTH-翻转。两个阈值之间的差值叫回差电压专门用来吃掉噪声。窗口比较器判断输入是否落在某个区间内需要两个单限比较器配合输出只在输入处于窗口内或窗口外时有效。下面这张表先把三者的核心差异摆出来后面再逐个展开。类型阈值数量抗噪能力电路复杂度典型应用单限比较器1个弱最低简单电平检测、过零检测滞回比较器2个强中等信号整形、按键消抖、过压保护窗口比较器2个中等较高电池电量区间判断、电压合格检测3. 单限比较器最简单的起点也是坑最多的起点3.1 电路结构与阈值计算单限比较器的基本结构就两种反相输入和同相输入。反相输入单限比较器基准电压VREF接同相输入端被测信号Vin接反相输入端输出通过上拉电阻接VCC。当Vin VREF时同相端电位高于反相端输出高电平当Vin VREF时输出低电平。阈值就是VREF本身。同相输入则反过来Vin接同相端VREF接反相端。Vin VREF时输出高Vin VREF时输出低。基准电压的生成通常用电阻分压。假设VCC5V要得到2.5V阈值用两个10k电阻分压即可。但这里有个细节分压电阻的阻值不能太大否则比较器输入偏置电流会在电阻上产生附加压降导致实际阈值偏离设计值。LM393的输入偏置电流典型值25nA如果分压电阻用1MΩ附加压降就是25mV对于精度要求高的场合已经不能忽略了。一般建议分压电阻在10kΩ量级同时兼顾功耗。3.2 实测波形与抖动问题我用信号发生器给反相输入端送一个1kHz、幅度3V、偏置2.5V的正弦波阈值设在2.5V。理论上输出应该是占空比50%的方波。实测波形确实翻转了但翻转点附近有密集的毛刺输出在高低之间跳了好几次才稳定下来。原因前面说了输入信号在穿越阈值时变化率有限叠加电源噪声和空间干扰后实际输入在阈值附近来回穿越。比较器增益极高每一次微小穿越都被放大成完整的逻辑翻转。用示波器看输入信号在阈值附近的噪声峰峰值大约20mV。这意味着输入在阈值±10mV范围内时输出状态是不确定的。如果后级是单片机中断这10mV的窗口就足以产生几十次误触发。提示单限比较器不是不能用而是要用在输入信号边沿足够陡、噪声足够小的场合。比如把正弦波整形成方波如果信号幅度远大于噪声单限比较器完全够用。但如果是缓慢变化的直流信号做阈值判断单限比较器就是灾难。3.3 单限比较器的适用边界那单限比较器到底什么时候能用我的经验是看两个条件输入信号穿越阈值时的斜率以及噪声幅度。如果输入是方波、脉冲这类边沿陡峭的信号穿越阈值的时间极短噪声来不及影响单限比较器没问题。过零检测电路就是典型例子输入是交流信号过零点斜率大用单限比较器做出来的方波很干净。如果输入是缓慢变化的信号比如电池电压慢慢下降、温度传感器输出慢慢漂移那单限比较器必然抖动。这时候要么加滞回要么在软件里做多次采样确认。还有一个容易被忽略的点单限比较器的输出上拉电阻取值。上拉电阻太小输出低电平时比较器内部输出管的灌电流大功耗高上拉电阻太大输出高电平的上升沿变缓因为输出电容和上拉电阻构成RC充电。LM393输出电容约几个pF加上PCB走线电容如果上拉电阻用100kΩ上升时间可能达到微秒级。一般上拉电阻取4.7kΩ到10kΩ比较均衡。4. 滞回比较器用正反馈把噪声吃掉4.1 正反馈是怎么产生两个阈值的滞回比较器的核心就一句话把输出的一部分反馈到同相输入端形成正反馈。以反相滞回比较器为例Vin接反相端同相端通过一个电阻网络同时接基准电压VREF和输出Vo。当输出是高电平时同相端电位被输出拉高此时阈值是VTH当输出是低电平时同相端电位被输出拉低阈值变成VTH-。输入从低往高走时要超过VTH才能让输出翻低输出翻低后阈值自动降到VTH-输入要降到VTH-以下才能让输出翻回高。两个阈值之间的差值就是回差电压也叫迟滞宽度。噪声幅度只要小于回差电压就不会引起误翻转。4.2 回差电压的计算与电阻选型反相滞回比较器的阈值公式推导如下。设同相端接两个电阻R1从VREF到同相端R2从输出到同相端。根据叠加定理同相端电位V VREF × R2/(R1R2) Vo × R1/(R1R2)当Vo为高电平VOH时VTH VREF × R2/(R1R2) VOH × R1/(R1R2)当Vo为低电平VOL时VTH- VREF × R2/(R1R2) VOL × R1/(R1R2)回差电压ΔV VTH - VTH- (VOH - VOL) × R1/(R1R2)如果比较器是集电极开路输出上拉到VCC则VOH≈VCCVOL≈0回差简化为ΔV VCC × R1/(R1R2)这个公式很直观回差电压由电源电压和两个反馈电阻的比值决定。要增大回差就增大R1或减小R2。举个实际设计的例子。VCC5V我希望回差电压是100mV用来覆盖实测的20mV噪声并留足余量。代入公式0.1 5 × R1/(R1R2)R1/(R1R2) 0.02如果取R2100kΩ则R12.04kΩ取标准值2kΩ。验证一下R12kΩR2100kΩΔV 5 × 2/102 ≈ 98mV接近100mV可以接受。中心阈值由VREF和电阻分压决定。如果VREF2.5V同相端在输出高低电平之间的中心电位约为Vcenter VREF × R2/(R1R2) (VOHVOL)/2 × R1/(R1R2)代入数值Vcenter ≈ 2.5 × 0.98 2.5 × 0.02 2.5V。也就是说中心阈值就是VREF回差对称分布在2.5V两侧VTH≈2.55VVTH-≈2.45V。注意上面的计算假设VOH等于VCC。实际上LM393输出高电平时上拉电阻上的压降取决于负载电流如果后级输入阻抗不高VOH会低于VCC回差会略小于计算值。精密场合要把这个因素算进去。4.3 实测波形从抖动到干净翻转同样的1kHz正弦波输入换成滞回比较器后输出波形立刻干净了。输入在2.45V到2.55V之间时输出保持之前的状态不变只有输入真正越过2.55V或跌破2.45V时才翻转。示波器上看到的输出方波边沿锐利没有毛刺。这里有个观察值得说滞回比较器的输出方波占空比不再严格对应输入过阈值的时间比例因为上下阈值不对称于信号中心时高电平和低电平的持续时间会不同。如果输入是三角波输出方波的占空比会偏离50%偏离程度取决于回差电压和信号幅度的比值。做精密脉宽调制时要留意这一点。另外滞回比较器的翻转点有传播延迟。LM393的延迟约1.3微秒输入频率很高时输出波形会相对输入有明显的相位滞后。100kHz以下的应用基本可以忽略再高就要选高速比较器了。4.4 滞回比较器的典型应用场景滞回比较器最经典的应用是按键消抖。机械按键按下和释放时触点会在几毫秒内多次通断产生一串脉冲。用滞回比较器配合RC积分可以把这串脉冲整形成一个干净的边沿。回差电压设得比触点抖动幅度大即可。另一个场景是电池过放保护。锂电池电压降到3.0V时应该切断负载但如果负载切断后电压回弹到3.2V单限比较器会重新接通负载然后电压又降到3.0V如此反复振荡。滞回比较器设定3.0V为下限、3.3V为上限切断后要等电压回到3.3V以上才重新接通彻底消除振荡。还有信号整形。从传感器来的信号往往带有噪声用滞回比较器可以提取出干净的方波送给单片机计数或做频率测量。5. 窗口比较器判断电压是否落在合格区间5.1 两个单限比较器如何组合出窗口窗口比较器要回答的问题是输入电压是否在VTL和VTH之间这需要两个比较器分别判断上下限。典型电路用两个LM393。第一个比较器判断Vin是否高于下限VTL第二个判断Vin是否低于上限VTH。两个比较器的输出通过二极管或直接线与后接一个上拉电阻。只有当Vin同时高于VTL且低于VTH时两个比较器输出都是高电平集电极开路输出线与后仍为高最终输出高电平表示在窗口内。否则任何一个比较器输出低线与结果就是低。也可以反过来接让输出低电平表示在窗口内取决于后级电路的逻辑需求。5.2 窗口边界的独立设定技巧窗口比较器的两个阈值可以独立设定这是它比滞回比较器灵活的地方。滞回比较器的两个阈值由同一组电阻决定中心点和回差耦合在一起窗口比较器的上下限各用一套分压网络互不影响。设定下限VTL时用电阻分压从VREF得到VTL接到第一个比较器的一个输入端。设定上限VTH时另用一套分压得到VTH接到第二个比较器。两套分压网络独立可以任意设定窗口宽度和中心位置。但这里有个实际问题两套分压网络会消耗额外的静态电流而且分压电阻的误差会直接影响阈值精度。如果对精度要求高可以用一个基准电压芯片比如TL431产生精确的VREF再用精密电阻分压。TL431的成本很低但基准精度比电阻直接分VCC高一个数量级。5.3 窗口比较器的波形特征与输出逻辑输入一个缓慢上升再缓慢下降的三角波窗口比较器的输出是一个脉冲当输入进入窗口时输出有效离开窗口时输出无效。如果输入在窗口内时输出高那么输出脉冲的宽度对应输入在窗口内的时间。实测时要注意两个比较器的传播延迟可能略有差异导致输出脉冲的边沿和输入穿越窗口边界的时间有微小偏差。对于低速信号无所谓高速时要在软件里做补偿。输出逻辑的选择也很关键。有些应用需要窗口内报警有些需要窗口外报警。前者用线与后输出高表示窗口内后者加一个反相器或者交换比较器的输入极性即可。提示窗口比较器判断的是瞬时值。如果输入信号有噪声在窗口边界附近输出仍然会抖动。要彻底解决可以在窗口比较器的基础上再加滞回或者对输入信号先做RC低通滤波。这是很多初学者容易忽略的叠加问题。6. 器件选型与实操细节LM393和LM358到底怎么选6.1 LM393与LM358的关键参数对比参数LM393LM358类型双电压比较器双运算放大器输出结构集电极开路推挽传播延迟1.3μs典型不适合做比较器输入偏置电流25nA45nA输入失调电压±2mV±3mV供电范围2V~36V3V~32V输出上拉必须外接不需要LM393的输入失调电压直接影响阈值精度。±2mV的失调意味着实际阈值可能偏离设计值2mV。对于回差100mV的滞回比较器2mV的偏移可以忽略但对于精密窗口比较器2mV可能就是不能接受的误差。这种情况下要选失调更小的比较器比如LM311失调±7.5mV但速度更快或者更精密的型号。6.2 上拉电阻的计算与选择LM393必须外接上拉电阻。上拉电阻的取值要平衡三个因素上升沿速度、功耗、输出低电平时的灌电流。上升时间估算t_rise ≈ 2.2 × R_pull × C_load。假设C_load10pF包括比较器输出电容和PCB走线要求上升时间小于1μs则R_pull 1μs/(2.2×10pF) ≈ 45kΩ。灌电流限制LM393输出低电平时内部输出管能灌入的电流有限典型值16mA。如果上拉电阻太小比如1kΩ接5V灌电流5mA在安全范围内。但如果上拉接12V、电阻1kΩ灌电流12mA接近极限长期工作可能影响可靠性。功耗考虑上拉电阻在输出低电平时持续消耗电流。电池供电的设备要选大一点的上拉电阻比如100kΩ代价是上升沿变缓。综合下来5V系统里上拉电阻取4.7kΩ到10kΩ是最常见的折中。12V系统取10kΩ到22kΩ。6.3 电源去耦与布局要点比较器对电源噪声很敏感尤其是单限比较器。每个比较器的电源引脚旁边必须放一个0.1μF的陶瓷电容位置尽量靠近引脚。如果板上还有数字电路再并一个10μF的钽电容做低频去耦。布局上基准电压的分压电阻要远离发热元件和开关节点。输入走线尽量短避免和输出走线平行防止输出跳变通过寄生电容耦合回输入。滞回比较器的正反馈电阻要靠近同相输入端减少走线电感的影响。注意面包板搭比较器电路时抖动会比PCB上严重得多。面包板的接触电阻和分布电容都很大电源和地的阻抗也高。如果面包板上调试成功PCB上通常更稳定反过来面包板上抖动不代表电路设计有问题先检查面包板的电源和地。7. 常见问题速查与排查思路7.1 输出不翻转或翻转点严重偏离先量基准电压。用万用表直接测同相端或反相端的电压看是否等于设计值。如果偏离检查分压电阻是否焊错、虚焊或者比较器输入引脚是否被拉低/拉高。再量输入信号。确认信号确实到达了比较器输入端幅度和偏置都在预期范围内。有时候信号发生器输出阻抗高接到比较器输入端后被输入偏置电流拉偏了。最后检查输出上拉。集电极开路输出没有上拉电阻永远不会变高。量一下输出端在应该为高的时候是否有电压如果没有上拉电阻可能没接或虚焊。7.2 输出在阈值附近抖动这是单限比较器的通病。解决方案按优先级排序在输入信号上并联一个小电容比如100nF做低通滤波把高频噪声滤掉。改成滞回比较器加正反馈电阻。如果后级是单片机在软件里做多次采样确认连续N次读到相同状态才认为有效。7.3 滞回比较器回差不对先确认输出高低电平的实际值。如果上拉电阻太大或负载太重VOH可能明显低于VCC导致实际回差小于计算值。用示波器量输出波形的高低电平代入公式重新算。再检查反馈电阻。R1和R2的比值决定回差如果焊错了电阻值回差会差很多。用万用表量一下两个电阻的实际阻值。还有一种情况比较器的输入偏置电流在反馈电阻上产生附加压降改变了阈值。如果反馈电阻很大比如1MΩ这个影响就明显了。减小反馈电阻到100kΩ量级可以缓解。7.4 窗口比较器输出逻辑反了检查两个比较器的输入极性。窗口比较器需要两个比较器分别判断上下限如果其中一个的输入接反了输出逻辑就会错。用万用表逐点测量确认每个比较器在输入高于/低于其阈值时的输出状态。线与逻辑也要检查。两个集电极开路输出直接连在一起时只要有一个输出低线与结果就是低。如果希望窗口内输出高两个比较器在窗口内都应该输出高即输出管截止。如果其中一个在窗口内输出低逻辑就反了。7.5 高频时输出波形失真传播延迟导致的。LM393的1.3μs延迟在100kHz时对应13%的周期输出方波的边沿会明显滞后于输入过阈点。如果输入频率超过50kHz建议换高速比较器比如LM311延迟约200ns或TLV3501延迟约4.5ns。另外上拉电阻太大也会限制高频性能。高频时上拉电阻取小一点比如1kΩ到2.2kΩ牺牲功耗换速度。8. 从波形反推电路状态我的调试习惯调比较器电路时我习惯同时看三路波形输入信号、基准电压、输出信号。示波器用三通道输入和基准用直流耦合输出用直流耦合加上拉。这样一眼就能看出翻转点是否和基准对齐、回差是否对称、输出边沿是否干净。如果只有双通道示波器就先看输入和输出把输出翻转点和输入波形对照大致判断阈值位置。然后再看基准和输出确认基准是否稳定。还有一个技巧用示波器的余辉模式或者无限余辉观察输出翻转点的分布。如果翻转点在水平方向上有明显的展宽说明抖动严重如果翻转点集中在一个很窄的范围内说明电路稳定。这个技巧在调滞回比较器时特别好用可以直观地看到回差是否足够覆盖噪声。最后说一个我踩过的坑有一次用LM393做电池低压检测电路在实验室里工作正常装到设备上后偶尔误触发。查了很久才发现设备里的电机启动时电源瞬间跌落导致基准电压也跟着跌比较器误判。后来在基准分压电阻上并了一个大电容让基准电压在电源瞬变时保持稳定问题才解决。比较器的基准电压源必须比被测信号更稳定这是铁律。