锁相放大器

粉红噪声 后篇,这篇学习锁相放大器 (Lock-in Amplifier),或者更具体一点,叫相敏检波器 (PSD, Phase Sensitive Detector)

为了明白这个概念,举一个推秋千的例子。想象你是一个“相敏检波器 (PSD)”,你的任务是让秋千荡得越高越好(提取出信号)

场景设定

  1. 信号 (Input Signal): 坐在秋千上的孩子。
    • 他有规律地荡来荡去
    • 向前荡代表正电压 (+V)。
    • 向后荡代表负电压 (-V)。
    • 这就是我们一直在说的交流信号 (AC)。
  2. 噪声 (Noise): 一群捣乱的风。
    • 风一会儿从前吹,一会儿从后吹,完全没规律。
  3. 参考信号 (Reference Signal): 你的大脑指令(推还是拉)。
    • 你的大脑里有一个节拍器,频率和秋千完全同步。
    • 指令 +1(正指令): 用力推。
    • 指令 -1(负指令): 用力拉。

核心机制:同步乘法

所谓的“乘法”,在这里就是你的动作(参考信号)与秋千运动(输入信号)的相互作用。我们来看三种情况:

情况一:完美的信号提取(同步乘法生效)

你想让信号变大(提取信号),你必须配合秋千的节奏。

  • 第一半周期(秋千向前荡 +):
    • 输入信号: 正 (+)(孩子向前冲)。
    • 你的动作: 你的节拍器告诉你,现在是前半拍,指令是 推 (+)。
    • 乘法运算: $(+) \times (+) = \mathbf{+}$ (获得正向的能量,秋千变高)。
  • 第二半周期(秋千向后荡 -):
    • 输入信号: 负 (-)(孩子荡回来了)。
    • 你的动作: 你的节拍器告诉你,现在是后半拍,指令是 拉 (-)。
      • 注意:这里是关键!你不是推,你是顺势往回拉。
    • 乘法运算: $(-) \times (-) = \mathbf{+}$ (负负得正!你顺着他回来的劲用力拉,秋千依然获得正向能量,变得更高)。

结果: 无论秋千是向前还是向后,因为你的动作(参考信号)总是和它同步反转,你做的每一次功都是正功。经过一段时间(积分),秋千荡得非常高(输出一个稳定的直流高电压)。

情况二:噪声的过滤(随机信号被抵消)

现在看看那阵乱吹的风(噪声)。

  • 第一回合:
    • 风向前吹 (+)。
    • 你的动作是 推 (+)。
    • 结果:$(+) \times (+) = +$ (风帮你省力了,产生正能量)。
  • 第二回合:
    • 风依然向前吹 (+)(因为风是随机的,没必要跟着你换方向)。
    • 你的动作变成了 拉 (-)。
    • 结果:$(+) \times (-) = \mathbf{-}$ (你和风对着干,抵消了能量)。

结果: 因为风(噪声)没有你的节拍器,它一会儿帮你,一会儿阻碍你。当你做 1000 次动作后,这些帮助和阻碍互相抵消,平均下来等于 0

这就是“只选想要的频率,过滤掉所有其他频率”的物理本质。

情况三:相位的诅咒(不同步会怎样?)

这也解释了为什么要有 “相位设置”。假设你的节拍器虽然频率对了(也是 1 秒一次),但是慢了半拍(相位差 90 度)。

  • 秋千已经荡到最高点准备往回落了(速度为 0),你才刚开始用力推。
  • 秋千已经荡到最低点速度最快了,你却停手了。

这时候,你做功的效率就会大打折扣,甚至有时候会起反作用(阻碍秋千)。 在仪表上,这就表现为:虽然有信号,但读数很小,甚至接近于 0。

所以,工程师调校仪器,就是为了让你的“推拉节奏”和“秋千的摆动”严丝合缝(同频同相),从而获得最大的推力(最大的输出信号)。

实际案例:红外气体分析仪

CEMS 机柜中的 CO 和 CO2 分析仪,它们通常用的是 非分散红外法 (NDIR)

在老式或者经典的 NDIR 分析仪里,有一个核心的机械部件叫 切光轮(实际上,在电子调制技术(像脉冲氙灯那样直接开关灯)还不成熟,或者光源无法快速开关的年代,工程师们用纯机械的方式解决信号处理问题的杰作)。

一、 为什么要“切”?(物理约束)

在讲结构之前,我们要先解决一个核心矛盾。

  • 红外光源的惰性: CEMS 用的红外光源通常是黑体辐射源(比如陶瓷加热棒、MEMS 热源)。 想象一个烧红的电炉丝,你能让它每秒钟开关 10 次吗? 不能。 你断电了,它还要几秒钟才冷却。它的热惯性(Thermal Inertia)太大了,没法像氙灯那样做“电子脉冲”。它只能常亮。
  • 探测器的“怪癖”: NDIR 最常用的探测器是热释电探测器 或 气动探测器 。 它们有一个致命的特性:**只对“变化”敏感。
    • 如果光强恒定(哪怕很强),探测器输出电荷会逐渐中和,输出信号归零
    • 只有光强发生跳变时,它才会输出一个尖峰电压。

矛盾出现了: 光源只能常亮(DC),但探测器只吃跳变信号(AC) —> “既然灯关不掉,那我就用手挡住它!快点挡,快点松开!” —— 这就是切光轮。

二、切光轮结构拆解

一个典型的 NDIR 切光组件包含三个核心部分:

1. 切光轮本体

  • 材质: 通常是轻质铝合金或不锈钢,表面发黑处理(防止反光)。
  • 形状: 像电风扇叶片。最简单的是半圆盘(50% 透光,50% 遮光)。
  • 转速: 通常由一个无刷直流电机带动,转速极其稳定。频率通常设定在 10 Hz ~ 60 Hz 之间。
    • 太慢了:避不开粉红噪声。
    • 太快了:红外探测器反应慢,来不及响应。

2. 光路截断

  • 切光轮安装在 光源 和 气室/探测器 之间。
  • 状态 A(透光): 叶片转走,红外光穿过样气,打在探测器上。
    • 信号 = 气体吸收后的光强 + 背景杂散光 + 探测器热漂移。
  • 状态 B(遮光): 叶片挡住光路。探测器处于“黑暗”中。
    • 信号 = 切光轮自身的辐射 + 背景杂散光 + 探测器热漂移。

3. 同步信号发生器

  • 在切光轮的边缘,通常会开一个小孔,或者切光轮本身就是齿轮状的。
  • 旁边装有一个 U 型光电开关。
  • 轮子每转一圈,光电开关就输出一个方波脉冲。
  • 作用: 这个方波直接发给 CPU,告诉 CPU:“现在是亮的时候!”或者“现在是暗的时候!”。这就是参考信号 (Reference Signal)

三、 信号处理流程(把“直流”变成“交流”)

让我们看看探测器实际输出了什么波形,以及 PSD 是怎么处理的。

  1. 原始光强 (Optical Input):是一个方波。有光 -> 无光 -> 有光 -> 无光。
  2. 探测器输出 (Detector Output):由于探测器有热容(反应慢),它输出的不是完美的方波,而是像鲨鱼鳍一样的三角波/锯齿波。
    • 光来了,电压慢慢爬升。
    • 光断了,电压慢慢下降。
  3. 锁相放大 (PSD Processing):CPU 拿着光电开关给的“参考信号”,对探测器的“锯齿波”进行同步解调。$$\text{最终值} = (\text{爬升的峰值}) - (\text{下降的谷值})$$

核心优势:假设探测器因为环境温度升高,产生了一个巨大的直流漂移(比如电压整体抬升了 5V)。

  • 爬升峰值变成了 5.1V。
  • 下降谷值变成了 5.0V。
  • 相减: $5.1 - 5.0 = \mathbf{0.1V}$。
  • 结果: 那个 5V 的温漂被机械切光轮完美干掉了!

“进阶玩法”:GFC (气体相关滤波)

既然轮子都要转,“为什么只做挡光和透光?能不能干点更高级的?”于是诞生了 气体相关滤波轮 (Gas Filter Correlation, GFC)。这是 NDIR 抗干扰的终极武器。

切光轮上不再是空的,而是装了两个充满气体的透明小盒子:

  1. 测量室 (Measure Cell): 里面充的是纯氮气 ($N_2$)
    • 作用:透光。红外光穿过去,被烟道里的样气吸收。这是“有信号”的状态。
  2. 参比室 (Reference Cell): 里面充的是极高浓度的待测气体(比如 100% 的 CO)。
    • 作用:“光学饱和”。
    • 因为浓度太高,CO 对应的吸收波长的光被这个小盒子全部吃光了。
    • 此时打到探测器上的光,已经不包含任何 CO 的信息了(因为那个频段已经黑了)。这相当于一个“特异性极强的物理挡板”**。

工作逻辑:

  • 轮子转到氮气格: 测得 $I_{meas}$(包含样气吸收信息)。
  • 轮子转到 CO 格: 测得 $I_{ref}$(样气里的 CO 吸无可吸,因为光已经被小盒子吸干了,所以这个信号不受样气浓度影响,只受粉尘、光源衰减影响)。
  • 计算: 通过对比这两个信号,不仅扣除了背景,还完美扣除了粉尘干扰窗口污染

疑问解答

如何理解这句话:通过对比这两个信号,不仅扣除了背景,还完美扣除了粉尘干扰和窗口污染

为了解开这个结,我们需要引入一个核心物理概念:“光谱指纹”与“饱和”。

第一步:理解前提 —— 光不是“铁板一块”

红外光不是单纯的一束白光,它像一条包含各种颜色糖果的传送带(光谱)。

  • 糖果 A(特定波长): 只有 CO 喜欢吃(比如 4.6 微米波段)。
  • 糖果 B(其他波长): CO 根本不碰,只有灰尘(墨镜)会挡住它们。

比尔定律的基础: 我们通过数“糖果 A 少了多少”,来算出 CO 有多少。

第二步:解密“吸无可吸”

现在的场景是:光(传送带)先经过烟道(样气),再经过切光轮上的小盒子。

场景 1:轮子转到“测量室”(纯氮气 $N_2$)

  • 设定: $N_2$ 啥都不吃。
  • 过程:
    1. 传送带上有 100 颗“糖果 A”。
    2. 经过烟道(样气),样气里的 CO 比较少,偷吃了 20 颗。
    3. 经过 $N_2$ 盒子,没变化。
    4. 到达探测器: 收到 80 颗。
    5. 结论: 探测器发现少了 20 颗,算出样气里有 CO。

场景 2:轮子转到“参比室”(高浓度 CO)

  • 设定: 这个小盒子里塞满了高压 CO,它是超级大胃王,能把所有的“糖果 A”全部吃光,一颗不剩。
  • 过程:
    1. 传送带上有 100 颗“糖果 A”。
    2. 阶段一(经过烟道): 样气里的 CO 还是偷吃了那 20 颗。剩下 80 颗。
    3. 阶段二(经过 CO 盒子): 剩下的 80 颗糖果 A 进入盒子。因为盒子里的 CO 浓度极高(饱和),它会把进来的所有“糖果 A”统统吃掉。
    4. 到达探测器: 收到 0 颗 “糖果 A”。

现在我们来做一个思想实验:如果样气里的 CO 浓度变高了,它在阶段一偷吃了 50 颗(而不是 20 颗),结果会怎样?

  • 阶段一: 100 颗 -> 剩下 50 颗。
  • 阶段二(CO 盒子): 盒子里的超级大胃王把剩下的 50 颗统统吃掉。
  • 到达探测器: 依然收到 0 颗 “糖果 A”。

结论:无论样气里的 CO 偷吃了多少(是 0 颗、20 颗还是 50 颗),只要后面跟着一个“通吃”的参比室,最终到达探测器的“糖果 A”永远是 0。这就是为什么我说:$I_{ref}$ 信号不受样气中 CO 浓度的影响。 对于 CO 敏感的那个波段来说,光已经被彻底“拉黑”了,谁也改变不了结局。

第三步:那 $I_{ref}$ 到底是测什么的?

你可能会问:“既然糖果 A 都是 0 了,那探测器读到的信号 $I_{ref}$ 是哪里来的?”别忘了传送带上还有 “糖果 B”(其他波长的光)!

CO 不吃糖果 B,所以糖果 B 会穿过样气,也会穿过 CO 盒子,最终打在探测器上。

这时候,灰尘(粉尘)的作用就显现了:灰尘是不挑食的,它像一块半透明的布,既挡糖果 A,也挡糖果 B。

  • 如果有灰尘: 糖果 B 的数量会减少(比如从 1000 减到 900)。
  • 如果有光源老化: 糖果 B 的初始数量就会减少。

所以,$I_{ref}$ 测量的是“除了 CO 吸收波段以外的背景光强”

第四步:最终的算术魔法

分析仪 CPU 做的是这样一个对比运算:$$浓度 \propto \frac{I_{meas} - I_{ref}}{I_{ref}}$$

  • $I_{meas}$ (测量信号):背景光 + 剩余 CO 波段的敏感光
  • $I_{ref}$ (参比信号): 仅包含(背景光)。注:因为 CO 波段已经黑了,剩下的全是背景。
  • $I_{meas} - I_{ref}$ (差值): 这代表 “样气到底吃掉了多少光”

![[Pasted image 20251209232443.png]]

通过这个公式:

  1. 抵消干扰: 灰尘是非选择性吸收,无论光是“背景光成分”还是“CO 敏感光成分”,灰尘都一视同仁,统统挡掉一半。通过比值之后,抵消掉这个干扰
  2. 提取浓度: 分子和分母的差值,正好就是“样气 CO 吃掉的那部分光”。

总结

  • 测量室($N_2$): 像一块透明玻璃。样气里的 CO 吃多少,我就能看到光少多少。
  • 参比室(高浓度 CO): 像一块特定颜色的黑布(针对 CO 波段)。它强制把 CO 的波段“清零”。
    • 既然已经强制清零了,样气之前吃没吃过这口光,对结果(0)没有影响。
    • 它剩下的光,反映的是“光路脏不脏、灯泡亮不亮”。
Licensed under CC BY-NC-SA 4.0