IustitiaeのBlog
首页项目归档照片墙音乐说说笔记关于
封面
📓 笔记/📁 硬件基础/比较器基础——输出级、输入范围与颤振的解决之道

比较器基础——输出级、输入范围与颤振的解决之道

2026-08-03 12:00:00
# 硬件基础
# 比较器
# 模拟电路
# 迟滞电路

一、比较器是什么——工作在开环的判决电路

功能

比较器(Comparator)只有一个核心任务:比较两个模拟输入电压的大小,输出一个二值(高/低)的结果。

  • 同相输入端 V+V_+V+​,反相输入端 V−V_-V−​
  • 当 V+>V−V_+ > V_-V+​>V−​ 时,输出高电平
  • 当 V+<V−V_+ < V_-V+​<V−​ 时,输出低电平

输入是连续的模拟量,输出是离散的数字量,所以比较器本质上是模拟世界到数字世界的桥梁——ADC 的前端、过压保护的眼睛、PWM 发生器的心脏,背后常常站着一个比较器。

与运算放大器的区别

比较器和运放在符号上一模一样(都是 +、- 两个输入端),但它们是为不同任务设计的两种芯片,不能简单互换:

维度 运算放大器(Op-Amp) 比较器(Comparator)
工作方式 设计用于闭环负反馈 开环使用,无反馈
内部补偿 有补偿电容,保证闭环稳定 无补偿,不为线性放大优化
输出 模拟量(线性区) 饱和到电源轨(数字式)
响应速度 慢(受补偿电容拖累,退出饱和也慢) 快(专为快速翻转设计)
当对方用 运放当比较器:能用但慢,退出深度饱和需几微秒 比较器当运放:开环必饱和,无法线性放大

⚠️ 简单记法:运放追求"线性听话",比较器追求"果断判决"。运放里有补偿电容防止自激,代价是慢;比较器砍掉补偿换取速度,但一上电就饱和,永远只输出两个极端。所以能用比较器的地方别用运放凑合,反之亦然。

典型应用

  • 过压 / 欠压检测、电池低电量报警
  • 过零检测(把正弦波变成方波)
  • PWM 信号产生(三角波与直流比较)
  • 窗口比较(判断信号是否落在某区间内)
  • 把缓慢变化的传感器信号转成数字触发

二、输出结构——为什么比较器常常需要上拉电阻 ★

这一节回答最常被问到的问题:比较器输出到底要不要加上拉电阻? 答案取决于它内部的输出级结构。比较器输出级有两种典型形式。

1. 推挽输出(Push-Pull / 图腾柱)

内部有两个输出管一上一下:

  • 上管导通时,把输出拉高到正电源
  • 下管导通时,把输出拉低到地

两管轮流工作,能主动输出高电平,也能主动输出低电平,不需要任何外部元件。输出电压由比较器自己的供电决定。

🔑 推挽输出的比较器不需要上拉电阻,接上负载直接用。

2. 开漏 / 开集输出(OD / OC)

内部只有一个下拉管,没有上拉管:

  • 输出低电平:下拉管导通,把输出拉到地(低电平有驱动能力)
  • 输出高电平:下拉管截止,输出端悬空(高阻态)——完全靠外部上拉电阻把电压拉上去

换句话说,开漏/开集结构自己给不出高电平。

⚠️ OD/OC 输出的比较器必须外接上拉电阻,否则输出永远只能在地电平和高阻之间跳,永远到不了真正的高电平。

什么时候必须加上拉电阻 ★(核心问题)

把上面的结论归纳成几条判别规则:

  1. 输出是 OD/OC 结构 → 必须加上拉电阻,否则没有高电平
  2. 输出是推挽结构 → 不需要上拉电阻,加了反而可能和内部上管打架
  3. 看数据手册:输出类型写 "Open Drain" / "Open Collector" 就是开路输出,要加上拉;写 "Push-Pull" / "Totem Pole" 就是推挽,不用加
  4. 经验型号:LM393、LM339 系列是经典的开集输出,几乎一定要加上拉电阻。这是新手最容易踩的坑——电路接好了,输出永远只有低电平,查半天才发现没加上拉

💡 一个简单的自检:如果比较器输出低电平正常、高电平却上不去(万用表量出来在 0V 附近或乱飘),第一个怀疑的就是漏了上拉电阻。

上拉电阻接到哪、取多大

  • 接到 VCCV_{CC}VCC​(比较器电源),高电平等于 VCCV_{CC}VCC​
  • 也可以接到另一个电压:比如用 3.3V 供电的比较器,输出上拉到 5V,就能把 3.3V 逻辑转成 5V 逻辑。这正是开漏/开集结构做电平转换的能力所在,推挽输出做不到
  • 取值权衡:
上拉电阻 RRR 优点 缺点
太大(如 1MΩ) 功耗低、低电平灌流小 上升沿由 R⋅C负载R \cdot C_{负载}R⋅C负载​ 决定,慢,高频波形差
太小(如 100Ω) 上升沿快 低电平时灌入电流大(I=VCC/RI = V_{CC}/RI=VCC​/R),功耗高,可能超过下拉管灌流能力
典型 4.7kΩ~100kΩ(常用 10kΩ) 平衡速度与功耗 ——
  • 校核灌电流:输出低电平时,上拉电阻的电流 I=VCC/RpullupI = V_{CC}/R_{pullup}I=VCC​/Rpullup​ 全部灌入比较器输出管,必须小于比较器的最大灌电流(LM393 典型 6~16mA)。例如 5V 上拉用 1kΩ,灌流就是 5mA,在范围内;用 100Ω 就是 50mA,肯定超了。

三、OD与OC的区别——开漏 vs 开集

很多人把 OD 和 OC 当同义词混用,它们本质相同(都是开路输出 + 外部上拉),区别只在输出管的制造工艺。

维度 OD(Open Drain,开漏) OC(Open Collector,开集)
输出管类型 MOSFET(场效应管) BJT 三极管
制造工艺 CMOS 双极(Bipolar)
低电平压降 I⋅RDS(on)I \cdot R_{DS(on)}I⋅RDS(on)​,低压差,几乎不随电流变 VCE(sat)≈0.1∼0.4VV_{CE(sat)} \approx 0.1 \sim 0.4\text{V}VCE(sat)​≈0.1∼0.4V,随灌流增大而升高
开关速度 一般更快 略慢(受存储电荷影响)
典型型号 多数低压 CMOS 比较器 LM393 / LM339 系列
静态功耗 较低 输入端需偏置电流,略高

🔑 共同本质:两者输出都只能主动拉低,高电平由外部上拉决定。正因如此,它们都能:

  • 上拉到任意电压做电平转换(把输出电平适配到不同电源域的后级)
  • 多路输出并联做"线或"(Wire-OR)——多个开漏/开集输出接在同一根线上、共用一个上拉,只要任一输出为低,整根线就被拉低;这是推挽输出做不到的(推挽并联会短路)

一句话:OD 是 CMOS 工艺的开路输出,OC 是双极工艺的开路输出,电气细节有别,但用法和"必须上拉"的规矩完全一样。


四、输入信号范围——共模电压的禁区

共模输入电压范围 VCMV_{CM}VCM​

比较器两个输入端的电压都必须落在允许的共模输入范围内,否则性能恶化甚至输出错误。数据手册里这个参数写作 VCMRV_{CMR}VCMR​ 或 "Common-Mode Input Voltage Range"。

注意是"两个输入端"——不仅被测信号要合规,参考电压也要在范围内。

超出范围的后果

  • 输入级差分对退出正常偏置区 → 增益急剧下降,翻转阈值偏移
  • 严重时发生相位反转(Phase Inversion):输出跳到与真实比较结果相反的极性。比如本该输出高,却输出低,逻辑完全颠倒
  • 这类错误非常隐蔽,仿真里未必体现,上电才暴露

为什么有这个限制

输入级的差分对管需要一定压差才能正常工作。经典双极比较器有两种输入结构:

输入结构 共模范围 特点
PNP 输入型 可达地(0V),但到不了正电源(约 VCC−1.5VV_{CC}-1.5\text{V}VCC​−1.5V) 能处理低端信号
NPN 输入型 可达正电源,但到不了地 能处理高端信号

经典型号 LM393 的共模范围通常是 0∼VCC−1.5V0 \sim V_{CC}-1.5\text{V}0∼VCC​−1.5V(PNP 输入),意味着输入电压不能顶到正电源,留 1.5V 余量。

Rail-to-Rail(轨到轨)输入

要覆盖 0∼VCC0 \sim V_{CC}0∼VCC​ 全程,需要轨到轨输入。这类比较器内部并联了两套差分对(一套管低端、一套管高端),在全范围都能工作。当信号可能接近电源轨时,应优先选 Rail-to-Rail 型号。

设计建议

  • 估算被测信号和参考电压在比较器输入端实际呈现的电压范围,确认都落在 VCMV_{CM}VCM​ 内
  • 超范围时:用电阻分压把信号缩进范围、换用 Rail-to-Rail 比较器、或调整参考电平位置
  • 留意"相位反转"这个隐藏陷阱,输入绝不能长时间压在范围之外

五、颤振(Chattering)——缓慢信号过阈值时的麻烦 ★

现象

当输入信号缓慢变化经过比较器的翻转阈值时,叠加在信号上的噪声会让输入电压在阈值上下快速来回。比较器增益极高,毫伏级噪声就被放大成满幅翻转,于是输出不再是干净的跳变,而是在 0 和 1 之间高频抖动——这就是颤振(也叫振荡、抖动)。

后级的计数器会乱跳、中断会被反复触发、继电器会啪啪打火——一切依赖"输出跳一次"的逻辑都会出错。

成因

  • 单阈值比较器只有一个翻转点
  • 信号缓慢爬升到阈值附近时,哪怕 1mV 的噪声都能让输入在阈值上下穿越多次
  • 比较器响应又快,于是输出疯狂翻转
输入信号 ───────╱╲ 噪声 ╱╱─────── 缓慢上升过阈值
阈值 ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─

输出   ─┐┌┐┌┐┌──────────────── 颤振!反复翻转

解决方案

方案 1:迟滞(正反馈)——首选 ★

引入施密特触发器结构:从输出端接一个正反馈电阻到同相输入端,让翻转阈值随当前输出状态而变。结果是产生两个阈值:

  • 上升阈值 Vth_highV_{th\_high}Vth_high​:信号上升时,必须超过它,输出才翻高
  • 下降阈值 Vth_lowV_{th\_low}Vth_low​:信号下降时,必须低于它,输出才翻低
  • 两者之差 Vhys=Vth_high−Vth_lowV_{hys} = V_{th\_high} - V_{th\_low}Vhys​=Vth_high​−Vth_low​ 称为迟滞量

只要噪声幅度小于 VhysV_{hys}Vhys​,输出就稳如磐石,不会颤振。

🔑 迟滞的核心思想:"请神容易送神难"。一旦翻到高,就要降很多才肯回低;一旦翻到低,就要升很多才肯回高。两个阈值之间的"死区"把噪声吞掉了。

设计原则:VhysV_{hys}Vhys​ 要大于信号上的噪声峰峰值,但又不能大到影响判决精度(迟滞太大,判决点会明显偏移)。

方案 2:RC 低通滤波

在输入端或输出端加 RC 滤波,滤除高频噪声。

  • 优点:简单
  • 缺点:引入延迟、拖慢响应,治标不治本,适合噪声主要是高频分量的场合

方案 3:后级消抖 / 锁存

用软件消抖(采样多次判定)或 D 触发器锁存,适合慢变信号(如按键、温度阈值)。

实践中,方案 1(迟滞)是最干净的硬件解法,几乎所有"正经"的比较器电路都会按需加一点迟滞。

迟滞电路怎么算

最常用的同相端正反馈接法:参考电压 VrefV_{ref}Vref​ 经电阻 R1R_1R1​ 接到同相输入端,比较器输出经反馈电阻 R2R_2R2​ 也接到同相输入端,被测信号 VinV_{in}Vin​ 接反相端。

利用叠加原理,同相端电压(也就是当前的翻转阈值)为:

Vth=Vref+(Vout−Vref)⋅R1R1+R2V_{th} = V_{ref} + (V_{out} - V_{ref}) \cdot \frac{R_1}{R_1 + R_2}Vth​=Vref​+(Vout​−Vref​)⋅R1​+R2​R1​​

  • 输出为高(Vout=VOHV_{out} = V_{OH}Vout​=VOH​)时:阈值是上升阈值的反向关系……实际更常见的是信号接反相端、阈值由同相端决定,于是:

Vth_high=Vref+(VOH−Vref)⋅R1R1+R2V_{th\_high} = V_{ref} + (V_{OH} - V_{ref}) \cdot \frac{R_1}{R_1 + R_2}Vth_high​=Vref​+(VOH​−Vref​)⋅R1​+R2​R1​​

Vth_low=Vref+(VOL−Vref)⋅R1R1+R2V_{th\_low} = V_{ref} + (V_{OL} - V_{ref}) \cdot \frac{R_1}{R_1 + R_2}Vth_low​=Vref​+(VOL​−Vref​)⋅R1​+R2​R1​​

迟滞量:

Vhys=Vth_high−Vth_low=(VOH−VOL)⋅R1R1+R2V_{hys} = V_{th\_high} - V_{th\_low} = (V_{OH} - V_{OL}) \cdot \frac{R_1}{R_1 + R_2}Vhys​=Vth_high​−Vth_low​=(VOH​−VOL​)⋅R1​+R2​R1​​

设计步骤:先定 VrefV_{ref}Vref​ 和中心阈值,再根据想要的 VhysV_{hys}Vhys​ 反推 R1/(R1+R2)R_1/(R_1+R_2)R1​/(R1​+R2​) 的比值,最后选具体阻值(通常 R2≫R1R_2 \gg R_1R2​≫R1​,使迟滞量远小于参考电压)。注意 VOH/VOLV_{OH}/V_{OL}VOH​/VOL​ 要代入实际输出电平——如果是开漏输出加 5V 上拉,VOH≈5VV_{OH}\approx 5\text{V}VOH​≈5V,VOL≈0VV_{OL}\approx 0\text{V}VOL​≈0V。


总结

概念 要点
功能 比较 V+V_+V+​ 与 V−V_-V−​,输出二值(高/低),模拟到数字的桥梁
与运放区别 比较器开环、无补偿、饱和输出、响应快;运放闭环、有补偿、线性、慢。不可简单互换
推挽输出 主动拉高也主动拉低,不需要上拉电阻
开漏/开集(OD/OC) 只能拉低,高电平靠外部上拉电阻
何时加上拉 OD/OC 必须加;推挽不用加。LM393/LM339 是开集,必加
上拉电阻取值 典型 4.7k~100kΩ(常用 10kΩ),权衡速度与功耗;校核灌电流 VCC/RV_{CC}/RVCC​/R 不超最大值
OD vs OC 本质相同(开路+上拉),区别是输出管工艺:OD 是 MOS,OC 是 BJT。都能做电平转换和线或
共模输入范围 VCMV_{CM}VCM​ 两输入端电压必须落在范围内;超出会增益下降甚至相位反转。LM393 约 0∼VCC−1.5V0 \sim V_{CC}-1.5\text{V}0∼VCC​−1.5V
Rail-to-Rail 输入可覆盖 0∼VCC0 \sim V_{CC}0∼VCC​ 全程,适合信号接近电源轨的场合
颤振 缓变信号过阈值 + 噪声 → 输出高频抖动
颤振解法 迟滞(正反馈,首选)、RC 滤波、后级消抖
迟滞量 Vhys=(VOH−VOL)⋅R1/(R1+R2)V_{hys} = (V_{OH}-V_{OL}) \cdot R_1/(R_1+R_2)Vhys​=(VOH​−VOL​)⋅R1​/(R1​+R2​),要大于噪声峰峰值

比较器是模拟电路里最"干脆"的角色——它不磨叽,不模棱两可,给它两个电压,它立刻报出谁大谁小。但这份果断也带来两个脾气:一个是不爱自己拉高电平(开漏/开集要靠你外接上拉),一个是阈值附近容不得噪声(缓变信号非得加迟滞不可)。摸清这两个脾气,比较器就成了电路里最可靠的"判决官"。


本文是硬件基础系列的一篇,属于有源器件主题。比较器常与运算放大器成对出现,建议结合后续的运放笔记对照阅读——同样三个引脚的符号,工作哲学却截然不同。

avatar

Iustitiae

在代码、单片机,电机控制模拟间穿梭的普通人。近期正埋头于 freerots学习。

2026年8月

一
二
三
四
五
六
日
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31

Recent Records

MOS管基础——从电压控制的电子开关到电源开关与防反接

2026-08-03 12:00:00

三极管基础——从小电流撬动大电流的放大器到电子开关

2026-07-29 12:00:00

二极管基础——从整流到稳压的通俗讲解

2026-07-21 12:00:00