1. 先想清楚:为什么这颗老掉牙的比较器还值得单独拿出来拆一遍
LM311比较器这颗片子,我第一次正经用它是在一块把工业现场 ±10V 信号送进单片机的采集板上。当时图省事,拿 LM358 当比较器用,结果在输入缓慢越过阈值的那一段,输出在高低之间来回抽搐,后级计数器直接乱跳。换成 LM311、加了 20mV 回差之后,世界瞬间安静。从那以后,凡是遇到"信号慢、环境脏、还要跨电平域"的场合,我都会先把它从料架上拿下来看看。
LM311比较器的定位很清楚:单通道、开集电极输出、输入共模范围能一路压到负电源轨、响应时间在 200ns 量级、输出管能灌几十毫安电流。它不是精密比较器,也不是高速比较器,但它把"够快、够皮实、够灵活"这三件事凑在了一起。做工业控制板、电机驱动、电源监控、光耦隔离接口、把 24V 现场信号搬到 3.3V 逻辑域的人,基本绕不开它。刚入门的同学看它引脚少、外围简单,容易掉以轻心;实际上它的坑大多藏在引脚定义和输出结构里,不看手册直接抄图,翻车概率很高。
下面我把这几年用它踩过的坑、算过的参数、改过的板子,按照"先看结构、再算参数、然后抄电路、最后排查问题"的顺序完整铺一遍。不管你是在校做课设,还是在公司画第一版原理图,都能直接拿去用。
1.1 它到底是个什么东西,一句话说透
电压比较器做的事情只有一件:比较两个输入端的电位,谁高就输出对应状态。LM311比较器的同相端电位高于反相端时,输出管关断,输出脚被外部上拉电阻拉高;反过来,输出管导通,把输出脚拉到接近地。就这么简单,没有任何"线性放大"的义务,也没有内部补偿电容,所以它能做得比运放快得多。
关键差别在于输出。普通运放是推挽输出,你什么都不接它也能自己输出高电平和低电平;LM311比较器的输出是一个孤零零的 NPN 管,集电极引到第 7 脚,发射极引到第 1 脚,两个脚都在外面。这意味着:不接上拉电阻,它永远给不出高电平,输出脚就是悬空的。这一点是新手最容易犯的错,我在论坛上回答过不下二十次"我的 LM311 输出一直是低"的问题,最后十有八九是忘了上拉。
1.2 拿运放当比较器,问题到底出在哪
很多人第一反应是:运放也能比较,干嘛要多花钱买比较器。这话在小信号、慢速、干净的场合成立,但在真实板子上会暴露三个问题。
第一是恢复时间。运放开环工作时,输入一旦越过阈值,内部差分对会进入饱和,退出饱和需要时间,典型运放可能要几微秒到几十微秒才能恢复。如果你的信号是 1kHz 以上的方波或者带毛刺的开关量,运放根本跟不上,输出会出现明显的拖尾和脉宽失真。
第二是输出摆幅与电平域。运放输出摆幅受供电轨限制,想直接把 24V 域的信号搬到 3.3V 域,中间还得再加一级电平转换。而 LM311比较器的集电极是独立引出的,上拉电阻想接哪路电源就接哪路电源,只要不超过输出管耐压,一根电阻就完成了电平搬移,这是它最讨人喜欢的地方。
第三是确定性。运放没有内部迟滞,输入信号在阈值附近带一点点噪声,输出就会在高低之间高频抖动;比较器虽然也没有内部迟滞,但它响应快、边沿陡,配合外部正反馈做迟滞非常容易收敛。而且比较器的输入失调、共模范围这些参数是照着"开关判断"这个用途标的,你按手册用不会出意外。
1.3 该用它和不该用它的分界线
我把自己的判断标准整理成下面这张表,基本上照着对号入座就不会选错:
| 场景特征 | 建议 | 理由 |
|---|---|---|
| 需要把高压侧信号搬到低压逻辑域 | 优先 LM311 | 集电极独立,上拉直接接目标电压轨 |
| 信号边沿慢、带噪声、需要迟滞 | 优先 LM311 | 响应快,外部正反馈好设计,不易抖 |
| 要直接驱动光耦、小继电器、LED | 优先 LM311 | 灌电流能力强,省一级三极管 |
| 多路信号一起判断,需要"线与" | 优先 LM311 或 LM339 | 开集电极输出可以直接并联 |
| 要求失调小于 1mV | 别用它 | 手册最大值 7.5mV 量级,得选精密型 |
| 要求纳秒级响应 | 别用它 | 200ns 量级,高速场合要换专用器件 |
| 电池供电、静态功耗敏感 | 慎重 | 静态电流 5mA 量级,比微功耗比较器高一个数量级 |
| 输入信号会顶到正电源轨 | 慎重 | 共模上限大约在 V+ 减 1.5V 到 2V |
这张表里最后一行特别值得展开说。很多人看到"输入共模范围包含负电源轨"就以为它轨到轨,其实只有下限好,上限是够不着的。5V 单电源供电时,输入超过 3.5V 左右,内部差分对就退出线性区,输出状态可能反过来,也可能卡住不动。这个现象非常像"芯片坏了",实际只是用超范围了。
2. 引脚和内部结构:三个必须吃透的细节
LM311比较器常见的 8 脚封装,引脚定义不复杂,但有三处地方跟直觉不一样,必须掰开讲。
2.1 第 1 脚不是"地",是输出管的发射极
大部分人看到第 4 脚标着 V-,就默认第 1 脚是电源地,随手接到 GND 完事。在单电源场合这么接确实没问题,因为 V- 本来就是地。但在双电源 ±15V 的场合,第 1 脚和第 4 脚是两个不同的节点:第 4 脚接 -15V,第 1 脚接系统的模拟地。
为什么?因为第 1 脚是输出管的发射极,它决定了输出低电平的参考点。发射极接地,输出低电平就是 0V 附近,后级逻辑电路能直接认;如果把第 1 脚接到 -15V,输出低电平就跑到 -15V 附近去了,后级直接被拉爆。我见过一块板子把这两个脚接反,上电之后输出端一直挂着 -14V,把后面的 CMOS 门电路全带走了。
注意:双电源供电时,第 1 脚接模拟地,第 4 脚接负电源。这个顺序不能凭感觉,画原理图时把这两个网络名写清楚,别都用 GND 符号糊过去。
顺便说一个冷门用法:既然发射极和集电极都引出来了,把这两个脚对调着接,就能得到一路射极跟随的输出,能主动拉电流而不是只灌电流。驱动容性负载或者需要快速拉高的时候有点用,但绝大多数场合没必要这么折腾,接错就是短路,风险大于收益。
2.2 第 6 脚:平衡和选通挤在一个脚上
第 5 脚和第 6 脚是一对,手册里叫 BALANCE / STROBE。这两个脚有两个用途:一是外接电位器做失调调零,二是第 6 脚单独还能当输出使能/关断用。
调零的标准接法大致是:10k 电位器跨接在 5、6 两脚之间,滑动端串一只几十 k 的电阻接到正电源轨,也有资料接成到地,两种接法都能调,只是调零范围不同。动手前建议翻一眼手上那颗片子对应厂家的手册里 Offset Balancing 那一页,阻值标注各家略有出入。调零的代价是会增加一点输入偏置电流的不对称,所以只有在真的需要压失调时才用,普通开关判断场合让这两个脚悬空就行。
真正要命的是选通功能。第 6 脚的电位被拉到比第 1 脚(发射极)低大约 1V 以下时,输出管被强制关断,输出进入高阻态,不管输入是什么状态。
单电源供电时第 1 脚就是地,那么第 6 脚只要接到地,输出就被永久关断。表现出来是什么?输出脚被上拉电阻拉高,永远高,输入怎么变都不动。新手一看"输出不动",第一反应是芯片坏了,换一片还是这样,最后发现第 6 脚在画图时被顺手连到了地网络。
注意:不用调零和选通时,第 5、6 脚悬空处理。千万不要为了"防干扰"把它们接地或者接电源,尤其是第 6 脚接地等于给自己关了个死开关。
如果确实需要选通功能,比如多路比较器分时复用一根输出线,那就用一个小逻辑门或者三极管去拉第 6 脚,注意拉低时要低于发射极电位 1V 以上才可靠触发。
2.3 输入级:下限很宽容,上限很吝啬
LM311比较器的输入级是 PNP 差分对,这个结构决定了共模范围的下限能一直延伸到负电源轨甚至略微超出(手册里在 ±15V 供电时下限能到 -14.7V 左右),上限则止步于正电源轨下方 1.5V 到 2V 的位置。
换算成实际数字:5V 单电源,输入有效共模范围大约是 0 到 3.5V;12V 单电源,大约是 0 到 10.5V;±15V 双电源,大约是 -14.7V 到 +13V。你在设计分压网络的时候,必须把这个上限当成硬约束来算。
举个具体的例子。某块板子用 12V 供电,要检测一路 0 到 10V 的传感器输出是否超过 8V。如果直接把信号送进同相端,8V 还没到 10.5V 的上限,看着没问题;但只要传感器输出瞬间窜到 11V(工业现场很常见),输入级就退出线性区,输出可能翻转到错误状态,而且这个错误状态会一直保持到信号回落。正确做法是用两只电阻把 0 到 12V 分压到 0 到 4V 再送进去,阈值相应折算,同时在高输入端并一只钳位二极管到 12V 轨,把异常高压挡在外面。
共模范围之外还有两个隐性参数容易被忽略。一个是输入失调电压,手册最大值在 7.5mV 量级,意味着两个输入端即使"看起来一样高",实际也可能有 7.5mV 的判断偏差。另一个是输入偏置电流,典型值在 100nA 到 150nA 量级,这个电流流过信号源内阻会产生额外压降。如果信号源内阻是 100kΩ,150nA 乘上去就是 15mV 的额外失调,比芯片本身的失调还大。
提示:信号源内阻超过 10kΩ 时,一定要把偏置电流的影响算进去,并且尽量让两个输入端的等效源阻抗接近,让偏置电流产生的误差互相抵消。温度升高时偏置电流还会成倍增长,85℃ 环境下 100kΩ 源阻抗带来的误差可能达到几十毫伏,高温场合尤其要留余量。
3. 参数怎么算:上拉电阻、迟滞窗口、功耗、延迟
这一节是全文最"干货"的部分,我把平时算参数的过程原样写出来,你照着代数字就行。
3.1 上拉电阻:从上升沿倒推,别凭手感
上拉电阻选多大,取决于三件事:后级要的边沿速度、输出能灌多少电流、以及你愿不愿意为这点速度付功耗。
先说边沿。开集电极输出的高电平是靠上拉电阻给负载电容充电建立的,上升时间近似等于 2.2 乘以 R 乘以 C(这里的 C 是输出节点所有电容之和:后级输入电容、布线电容、调试时探头电容)。10% 到 90% 的上升时间,基本上就是这个量级。
场景一:接 3.3V 单片机输入,负载电容按 15pF 输入电容 + 10pF 布线 + 10pF 探头算,合计 35pF。要求上升时间小于 100ns,那么 R 要小于 100ns 除以(2.2 × 35pF),约等于 1.3kΩ。取 1kΩ 标准值,输出低电平按 0.3V 算,灌电流约 3mA,远在器件的几十毫安能力之内,上拉电阻本身耗电约 9mW,可以接受。
场景二:驱动光耦。假设用常见的晶体管光耦,正向电流要 5mA,发光管压降 1.2V,上拉接到 12V。电阻等于(12 − 1.2 − 0.5)除以 5mA,约 2.06kΩ,取 2kΩ,实际灌电流约 5.15mA。这里减掉的 0.5V 是输出管饱和压降的估计值,实际值会随灌电流变化,手册里灌 8mA 时典型饱和压降在 0.75V 左右,所以驱动电流大的时候要按实际曲线再核一遍。
场景三:信号要经过 5 米排线送到另一块板,线缆电容按每米 100pF 估,总共 500pF。要求上升时间小于 1μs,R 要小于 1μs 除以(2.2 × 500pF),约 909Ω,取 820Ω,灌电流约 4mA。这种场合还要考虑反射,最好在接收端串 33Ω 到 100Ω 的阻尼电阻。
注意:上拉电阻不是越小越好。电阻越小,输出低电平时流过输出管的电流越大,芯片内部耗散越多,同时"低电平"会被饱和压降抬得更高,后级的电平容限可能就不够了。手册里那个 0.75V 的饱和压降是实打实的,别拿它当 0V 用。
3.2 迟滞窗口:两个阈值的手算过程
迟滞比较器的原理是在同相端引入正反馈,让输出翻转后把阈值往反方向推一把,形成上下两个不同的门限。这样输入信号在门限附近抖动时,只要抖动幅度小于回差,输出就不会反复翻转。
我拿一组实际用过的参数来算。设参考电压 2.5V 由基准源给出,同相端经 R1 = 10kΩ 接参考,经 R2 = 100kΩ 接输出,输出上拉到 5V。输出高时接近 5V,输出低时接近 0.2V。
输出为高时的上门限:VTH_H = (Vref × R2 + Vout_H × R1) / (R1 + R2) = (2.5 × 100k + 5 × 10k) / 110k = (250 + 50) / 110 = 2.727V。
输出为低时的下门限:VTH_L = (2.5 × 100k + 0.2 × 10k) / 110k = (250 + 2) / 110 = 2.29V。
回差等于 2.727 减 2.29,约 0.44V。这个回差很宽,适合信号带大量毛刺的场合。但如果信号本身很干净、你又想要精确的翻转点,0.44V 就太粗了,得把 R2 调大。
反过来算:如果 R2 取 1MΩ,上门限变成 (2.5 × 1M + 5 × 10k) / 1.01M = (2500 + 50) / 1010 = 2.525V,下门限是 (2500 + 2) / 1010 = 2.477V,回差只有 48mV。这时候如果输入噪声峰峰值有 100mV,输出照样会抖,回差不够用。
中间值怎么找?按需要的回差倒推。假设输入噪声最大 100mV 峰峰,我一般留两倍余量,取 200mV 回差。回差公式可以简化成 (Vout_H − Vout_L) 乘以 R1 除以 (R1 + R2),把已知量代进去:0.2 = 4.8 × 10k / (10k + R2),解出 R2 约 230kΩ,取 220kΩ。这时候回差约 209mV,正好覆盖噪声并留了余量。
注意:回差的大小跟输出高电平直接相关。同一套电阻,上拉到 5V 和上拉到 12V,回差能差出一倍多。如果你后期改板把上拉电压从 5V 换到 12V,迟滞窗口会跟着变宽,翻转点会偏移,一定要重算。我吃过这个亏,改了个上拉网络,结果整套阈值判定全部错位。
还有一个容易被忽略的问题:反馈电阻 R2 会把输出端的电压往参考节点上灌,如果参考是用两只电阻分压得到的,分压点的等效内阻会被 R2 拉偏。举例来说,12V 经 10kΩ 和 3.3kΩ 分压得到约 2.97V,等效源阻抗是两只电阻并联,约 2.48kΩ;你接一个 100kΩ 的反馈电阻上去,直流工作点立刻偏移百分之几,阈值全错。解决办法有两个:一是把分压电阻取小(比如 1kΩ 和 330Ω),代价是静态电流涨到 9mA;二是用一只基准源或者运放缓冲,把源阻抗压到几欧姆。我更倾向后者,多花几分钱,换来阈值不用反复调。
3.3 输出级功耗与结温:别让上拉电阻把芯片烤了
LM311比较器自身的静态电流在 5mA 量级,双电源 ±15V 供电时静态功耗约 150mW。这个数字看起来不大,但要注意输出级的额外功耗:输出低电平时,上拉电流全部从输出管流过,这部分功率完全消耗在芯片内部。
算一笔账。上拉接 30V,电阻 1kΩ,输出低时电流约 30mA,假设饱和压降 1.5V(大电流下会明显高于 0.75V),输出管上的功耗就是 45mW。加上静态的 150mW,总共接近 200mW。8 脚封装的热阻按 150℃/W 估,结温会比环境高 30℃。如果环境本身就有 70℃,结温冲到 100℃,参数漂移、寿命下降都会跟着来。
所以大电流驱动场合,我会做三件事:一是把上拉电阻加大到刚好够用的程度,别为了追求边沿速度一路往下压;二是尽量让输出管的占空比低,别让它长期处于导通状态;三是如果确实要长时间灌大电流,干脆在外面加一只三极管或者 MOS 管,让 LM311 只负责判断,功率交给外面的管子。
3.4 延迟与过驱:200ns 是"有条件"的
手册标的响应时间 200ns 左右,这个数字有前提:输入过驱是毫伏级的小信号。所谓过驱,就是输入超出阈值的幅度。过驱越大,内部节点充放电越快,延迟越短;过驱只有几毫伏时,输出可能要几百纳秒才动。
实际设计时我按这个经验取值:过驱 5mV 到 20mV,延迟按 200ns 到 300ns 估;过驱 100mV 以上,延迟能压到 100ns 以内;如果是大幅度的阶跃信号,几十纳秒就能建立。
这个特性带来一个副作用:如果你的信号是缓慢上升的斜坡,输入刚好越过阈值那一刻过驱几乎为零,输出翻转会拖得很慢,边沿上容易出现"台阶"甚至振荡。加迟滞能解决大部分问题,因为迟滞让输入在翻转瞬间有一个明确的过驱量,等于人为把过驱做大了。
还有一个隐性延迟是输出级的。开集电极输出加上拉电阻,本质是一个 RC 充电过程,前面算过,1kΩ 配 35pF 是 77ns 量级。所以系统总延迟大致等于器件延迟加上拉建立时间,两者量级相当,谁都不能忽略。想把总延迟压到 100ns 以内,上拉电阻必须往 500Ω 以下走,这时候就得重新算功耗了。
4. 四个可以直接抄的电路
下面这几个电路都是我在实际板子上用过的,参数是最终版,可以直接照搬,改供电时记得重算阈值。
4.1 过零检测加 3.3V 电平搬移
用途:把一路以地为参考的交流信号(比如电流互感器二次侧经过整流的脉动信号)转换成 3.3V 逻辑方波,送给单片机做频率测量或者相位判断。
接法:反相端接信号,同相端接一个由两只 10kΩ 电阻从 3.3V 分压得到的 1.65V 偏置,输出经 1kΩ 上拉到 3.3V 送进单片机。信号幅度要限制在 0 到 3.3V 之间,超范围时前面加分压和钳位。
为什么用 1.65V 而不是 0V 做阈值?因为单电源供电时输入共模下限虽然是地,但信号在 0V 附近时输入级工作状态很差,加个中点偏置让输入始终待在舒适区,同时也能检测双向信号。
上拉为什么是 1kΩ?按前面算的,接 3.3V 逻辑、35pF 负载,1kΩ 给出 77ns 上升时间,足够 100kHz 以下的信号使用。如果信号频率更高,把上拉降到 470Ω,同时确认单片机引脚的灌电流承受能力。
调试要点:这个电路最容易出的问题是地线。信号源和比较器不在同一个接地点,共模电压会把阈值顶偏。我的做法是信号进来先过一个 100Ω 电阻,再并在输入端一只 100nF 到地,把高频共模滤掉,同时保留直流判断。
4.2 反相迟滞比较器:一组能直接用的完整参数
用途:把一路缓慢变化的模拟量(比如热敏电阻分压、电池电压采样)转换成干净的开关信号,用于告警或者状态切换。
完整参数:供电 12V,参考 2.5V(用基准源给出,源阻抗小于 1Ω),R1 = 10kΩ 从参考到同相端,R2 = 220kΩ 从输出到同相端,输出经 4.7kΩ 上拉到 12V 送给后级 MOS 管栅极,反相端接被检测信号。
算一遍阈值:输出高时接近 12V,上门限等于 (2.5 × 220k + 12 × 10k) / 230k = (550 + 120) / 230 = 2.91V;输出低时接近 0.2V,下门限等于 (550 + 2) / 230 = 2.4V。回差约 0.51V。
等等,这里有个细节要注意:输出上拉到 12V,输出高电平就是 12V,直接送 MOS 管栅极是可以的,但如果后级是 3.3V 逻辑,就必须改成上拉到 3.3V,此时阈值全部要重算。这就是前面强调过的"上拉电压影响回差"。
MOS 管栅极那一侧,串一只 100Ω 电阻限流,栅源之间并一只 10kΩ 下拉,防止比较器输出高阻态时栅极悬空误导通。如果驱动的是感性负载(继电器线圈),线圈两端必须并续流二极管,否则关断瞬间的反电动势会顺着栅极倒灌。
4.3 两片做窗口比较器,输出直接线与
用途:判断一路信号是否落在 [下限, 上限] 区间内,比如电池电压在 10.5V 到 14.5V 之间算正常,超出任一边界就报警。
接法:第一片负责下限,信号接反相端,下限参考接同相端,信号低于下限时输出被拉低;第二片负责上限,信号接同相端,上限参考接反相端,信号高于上限时输出被拉低。两片的输出脚直接连在一起,共用一只 10kΩ 上拉到 3.3V,再接到单片机。
这就是开集电极输出的价值所在:两只输出管并联,任何一只导通都会把线拉低,天然实现"或"逻辑,一行代码都不用写。如果用推挽输出的比较器,两个输出脚直接并联会打架,一个想拉高一个想拉低,轻则输出错乱,重则烧管子。
实际接线时有一个坑:两片的参考电压必须由同一个基准源分压得到,不能各用各的分压电阻,否则两路参考的温漂方向不一致,窗口会随温度"呼吸"。我一般用一只可调基准,再用精密电阻分成两路,中间加点去耦。
另外,线与的节点上如果有长线引出,要在靠近比较器的地方串一只 100Ω 电阻,防止外部干扰直接打到输出管上。上拉电阻放在接收端还是发送端?我习惯放在比较器这一侧,这样线断了接收端就是低电平,是安全状态。
4.4 单电源上电延时与光耦驱动
用途一:上电延时。系统上电后,某些电路需要等电源稳定再使能。做法是用 RC 网络:V+ 经 100kΩ 电阻给一只 10μF 电容充电,电容电压送到同相端,反相端接 1.2V 参考(用两只电阻从 5V 分压)。上电瞬间电容电压为 0,输出被拉低;电容充到 1.2V 时输出翻高,延时时间约等于 100k × 10μF × ln(5 / (5 − 1.2)),大约 0.27 秒。经验公式是 1.1 倍 RC 这个量级,实际受电容容差和阈值精度影响,误差能到 30%,要求精确就用 NE555 或者单片机。
用途二:光耦驱动。输出经 2kΩ 上拉到 12V,接光耦发光管阳极,阴极接地,发光管两端反并一只保护二极管。输出低时光耦导通,把信号传到隔离侧。注意 LM311 只能灌电流,所以光耦必须接成"阳极接上拉、阴极接输出"的灌电流形式,不能反过来接成拉电流形式。
这里有个细节:光耦关断时,发光管结电容和上拉电阻构成 RC,关断沿会比开通沿慢。传高速信号时要选高速光耦,或者把上拉电阻减小到 1kΩ 以下,同时确认比较器的灌电流能力够用。
5. 从面包板到能出厂的板子:布线与调试
面包板上能跑通的电路,画成 PCB 之后跑不通,这在比较器电路上特别常见,因为它涉及模拟阈值和数字边沿两种特性。
5.1 布局布线的五条硬规矩
第一条,电源去耦必须靠近芯片。第 8 脚和第 4 脚(单电源时是地)之间并一只 100nF 陶瓷电容,距离控制在 5mm 以内,再在整板电源入口放一只 10μF 电解或者钽电容。比较器翻转瞬间会有几十毫安的瞬态电流,去耦不到位,电源上会出现尖峰,尖峰又会耦合回输入端,形成自激。
第二条,输入端和输出端走线尽量垂直,不要平行走太长。开集电极输出的边沿很陡,dV/dt 大,平行走线容易通过寄生电容耦合到高阻抗输入端,造成误翻转。如果实在躲不开,中间加一根地线隔离。
第三条,参考电压节点单独走线,不要和数字信号共用一根地。分压电阻的地要接到模拟地,最后单点汇合。
第四条,输入信号线尽量短;如果必须长距离引入,串电阻加对地电容做低通,把高频干扰挡在芯片外面。串阻取 100Ω 到 1kΩ,电容取 100pF 到 1nF,时间常数不要影响到有用信号的带宽。
第五条,输出驱动大电流负载时,负载电流回路要单独走,不要从比较器地线上借道。灌电流那几十毫安如果流经输入端的参考地,会在地线上产生压降,直接串进阈值里。我见过一块板子,光耦一动作比较器就误翻转,最后查出来就是负载地和信号地共用了一段走线。
5.2 调试时的测量方法
示波器看比较器输出,最忌讳用长地线夹子。探头的地线夹子有十几纳亨电感,测快速边沿时会看到一堆振铃,误以为电路自激。正确做法是把探头帽拔掉,用接地弹簧直接顶在输出脚旁边最近的地过孔上。
测上升沿时要注意探头本身的影响。普通的 10 倍探头输入电容在 10pF 量级,接到输出节点上等于给上拉电阻增加了负载,你测到的上升沿会比实际电路慢。如果实测边沿和你算的理论值差得多,先想想探头的影响。
判断有没有自激,别只看输出的高低状态,要把示波器时基调到微秒级,看输出边沿上有没有叠加高频振荡成分。有时候输出"看起来是高的",实际上是在高速抖动,万用表测出来是个中间电压,骗人不浅。
验证迟滞窗口时,用一个可调直流源慢慢扫输入,同时用万用表测输出,记录翻转点的输入电压,上下各扫一遍,两个点的差值就是实际回差。如果实测回差和你算的差很多,先检查参考节点的源阻抗是不是被反馈电阻拉偏了。
5.3 上电顺序与端口保护
LM311比较器在双电源系统里有上电顺序问题。如果正电源先到、负电源后到,输入端可能承受超出范围的电压。稳妥的做法是在两个输入端各串一只 1kΩ 到 10kΩ 电阻,再各接一只肖特基二极管钳位到正负电源轨,把异常电压泄放到电源网络里。
输出端如果连到外部连接器,要假设它会被人手摸、被静电打。串一只 100Ω 电阻,再加一只 TVS 或者钳位二极管到地,是最低配置。上拉电阻本身也有保护作用,它限制了输出管的最大灌电流。
还有一点是热插拔。板子插拔瞬间,外部信号可能先于电源建立,形成"输入有信号、芯片没上电"的状态,这时电流会通过输入端的 ESD 结构倒灌进电源网络。如果设备要支持热插拔,输入端必须串限流电阻,并且确认倒灌电流在芯片允许范围内。
6. 排查实录:那些让人怀疑芯片坏了的现场
我把自己和同事遇到过的问题整理成下面这几组,基本上覆盖了 LM311比较器在量产板上的大多数故障模式。
6.1 输出永远是高,怎么都不翻转
第一个怀疑对象是上拉电阻接错了位置,接到了输入端而不是输出端。第二个怀疑对象是第 6 脚被误接到地,触发了强制关断。第三个是输入端接反了:同相和反相互换,逻辑整个倒过来,看起来像"不翻转"。第四个是输入信号没有真正到达芯片,中间有隔直电容或者虚焊。
排查顺序我一般是这样:先用万用表量输出脚对地的电压,如果一直是电源电压,说明输出管从来没导通;然后把第 6 脚撬起来(或者断开它的接地),再看输出是否恢复;还没好的话,把输入两端短接,同时手动加一个明确的高低电平到同相端,强制制造一个翻转条件。这三步走完,问题基本定位到具体节点。
还有一种很隐蔽的情况:芯片是假的或者翻新的。市面上流通过的拆机件,参数可能已经漂移,失调电压大到几十毫伏,你以为的阈值和实际的阈值差了老远。批量化产品尽量走正规渠道,样机阶段遇到"怎么调都不对"的片子,换一片同型号对比一下最快。
6.2 边沿抖动、多次翻转
典型现象是输入信号缓慢变化,输出在翻转点附近连跳好几下。原因只有一个:没有迟滞,或者迟滞不够。
先量实际回差。用可调源慢慢扫,记录上下翻转点。如果两点几乎重合,说明反馈电阻没起作用,检查 R2 是不是虚焊,或者接成了负反馈。
如果回差有,但比设计值小很多,检查输出高电平的实际值。上拉电阻如果选得太大,输出高电平可能被后级负载拉低,导致回差缩小。还有一种可能是输出带的负载是感性的,边沿上出现振铃,振铃穿过阈值就造成多次翻转,这时候要在输出端加 RC 吸收。
输入端干扰也会造成多翻。信号线附近有继电器、电机、开关电源,干扰通过空间耦合进来。解决办法是输入端加 RC 低通,把干扰频段滤掉,同时加大回差。两个手段一起上最稳。
6.3 温度一高就误动作,低温又好了
这是偏置电流和失调电压温漂的典型表现。LM311比较器的输入偏置电流在高温下成倍增长,如果你用了高源阻抗的分压网络(比如几百 kΩ),高温时偏置电流产生的误差能到几十毫伏甚至更多,直接把阈值顶偏。
对策是把源阻抗降下来。分压电阻从 100kΩ 级别降到 10kΩ 级别,静态电流增加一点,但换来温度稳定性。如果功耗不允许,那就改用低偏置电流的比较器,或者在前端加一级运放缓冲。
另一个温度相关的坑是输出饱和压降。低温时饱和压降会变大,输出低电平抬高,如果后级的低电平门限卡得紧,就会出现"低温时后级识别不到低电平"的怪现象。留 0.3V 以上的电平余量比较稳妥。
6.4 常见问题速查表
| 现象 | 最可能原因 | 快速验证 | 处理办法 |
|---|---|---|---|
| 输出恒高,输入变化无反应 | 第 6 脚接地触发关断 | 断开第 6 脚再看 | 第 5、6 脚悬空 |
| 输出恒低 | 忘接上拉电阻 | 量输出脚对电源是否有电阻 | 补上拉,1kΩ 到 10kΩ |
| 输出高电平低于预期 | 上拉电阻太大或负载太重 | 空载测高电平 | 减小上拉或加缓冲 |
| 翻转点附近多次抖动 | 无迟滞或回差不足 | 扫输入测实际回差 | 减小反馈电阻加大回差 |
| 翻转点与设计值偏差大 | 参考源内阻被反馈电阻拉偏 | 量参考点实际电压 | 用基准源或降低分压电阻 |
| 高温误动作 | 偏置电流在高源阻抗上产生误差 | 加热后测阈值 | 降低源阻抗或换低 Ib 器件 |
| 一驱动负载就误翻转 | 负载电流污染地线 | 断开负载再看 | 分开功率地与信号地 |
| 上电瞬间输出乱跳 | 电源建立过程中输入超范围 | 看上下电波形 | 输入端加钳位与串阻 |
| 输出边沿有振铃 | 长线反射或探头地线太长 | 换接地弹簧再测 | 串阻尼电阻,缩短地线 |
| 双电源下输出低电平跑到负压 | 第 1 脚接到负电源 | 量第 1 脚电位 | 第 1 脚接模拟地 |
这张表我打印出来贴在工位上,遇到问题先对一遍,八成的故障五分钟内能定位。
7. 选型与替换:什么时候该把它换掉
LM311比较器不是万能的,下面这张对比表帮你在几个常见型号之间做选择。数据是量级值,具体项目还是以手上器件的手册为准。
| 型号 | 通道数 | 响应时间量级 | 输入共模范围 | 输出形式 | 静态电流量级 | 适合场景 |
|---|---|---|---|---|---|---|
| LM311 | 1 | 200ns | 含负轨,上限约 V+ 减 1.5V | 开集电极,灌流能力强 | 5mA | 电平搬移、快速开关、驱动光耦 |
| LM393 | 2 | 1.3μs | 含负轨,上限约 V+ 减 1.5V | 开集电极,灌流中等 | 0.8mA | 通用双路判断、成本敏感 |
| LM339 | 4 | 1.3μs | 同上 | 开集电极 | 0.8mA | 多路信号集中判断 |
| 宽温版本 | 1 | 200ns | 同上 | 开集电极 | 5mA | 工业宽温环境 |
| 高速比较器 | 1 | 几 ns 到几十 ns | 视型号 | 推挽或差分 | 几十 mA | 高速采样、时钟整形 |
替换时有几个地方必须重新核。第一是引脚定义,不同系列的比较器引脚排布不一样,LM393 是双路,引脚完全是另一套,不能直接插。第二是输出结构,从开集电极换成推挽,原来的上拉电阻要拆掉,否则输出高电平时会有灌电流冲突。第三是共模范围,换型号后如果新器件的上限更靠近正轨,原来的分压网络可能要重算。第四是输入偏置电流,从双极型换成 CMOS 输入,偏置电流会小好几个数量级,原来为了补偿偏置电流做的阻抗匹配可能反而引入问题。
还有一个替换方向值得提:如果项目里只是做一路简单的阈值判断,对速度没要求,其实可以用单片机内部的模拟比较器,省一颗芯片、省几路布线。但要注意单片机内部比较器的输入范围通常限制在电源轨内,而且没有开集电极那种跨域能力,外部有高压或者需要线与的时候还是得用分立比较器。
我个人在实际操作中的体会是,LM311比较器这类"结构简单但细节多"的器件,最省时间的做法不是反复试错,而是把三个数字提前算清楚:上拉电阻对应的上升时间、迟滞窗口对应的回差、输出灌电流对应的功耗。这三个数字定下来,电路基本就定型了,剩下的布线、去耦、保护都是围绕它们做加固。反过来,如果这三个数字是拍脑袋定的,后面调试时会用十倍的 time 去补。
最后再分享一个小习惯:每次用 LM311比较器画完原理图,我会在图旁边手写三个值——上拉电阻、上下门限电压、最大灌电流,然后让同事照着图算一遍,看能不能算出同样的数字。算不出来,说明图上哪里标错了或者漏标了。这个笨办法帮我拦下过好几次把第 6 脚接到地、把上拉接到输入端的低级错误,比事后飞线强得多。