笔记 / 硬件基础

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

功能

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

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

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

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

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

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

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

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


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

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

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

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

超出范围的后果

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

为什么有这个限制

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

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

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

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

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

设计建议

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

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

现象

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

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

成因

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

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

解决方案

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

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

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

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

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

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

方案 2:RC 低通滤波

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

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

方案 3:后级消抖 / 锁存

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

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

迟滞电路怎么算

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

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

Vth=Vref+(VoutVref)R1R1+R2V_{th} = V_{ref} + (V_{out} - V_{ref}) \cdot \frac{R_1}{R_1 + R_2}

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

Vth_high=Vref+(VOHVref)R1R1+R2V_{th\_high} = V_{ref} + (V_{OH} - V_{ref}) \cdot \frac{R_1}{R_1 + R_2}

Vth_low=Vref+(VOLVref)R1R1+R2V_{th\_low} = V_{ref} + (V_{OL} - V_{ref}) \cdot \frac{R_1}{R_1 + R_2}

迟滞量:

Vhys=Vth_highVth_low=(VOHVOL)R1R1+R2V_{hys} = V_{th\_high} - V_{th\_low} = (V_{OH} - V_{OL}) \cdot \frac{R_1}{R_1 + R_2}

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


总结

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

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


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