4、同步检测技术:锁相放大器原理、相敏检波器(PSD)的工作机制、如何利用同步检测从噪声中提取信号
做光电传感器这么多年,我遇到过最头疼的问题就是——信号被噪声淹没了。尤其是环境光干扰,它不像白噪声那样均匀,而是带有各种频率成分的杂散光。你想想看,一个微弱的光电信号,可能只有几微伏,而环境光噪声能到毫伏甚至伏特级别。这时候,普通的滤波手段基本失效。
那怎么办?我个人的经验是:同步检测技术。说白了,就是给信号一个「身份证」,然后只认这个身份证的信号,其他的统统不要。这个技术里最核心的两个东西,就是锁相放大器和相敏检波器。
4.1 锁相放大器原理
锁相放大器,英文叫 Lock-in Amplifier。我第一次用这玩意儿是在一个激光测距项目里,信号被日光灯管的100Hz频闪干扰得不成样子。当时我师父跟我说:「别慌,用锁相放大器,把信号从噪声里『拎』出来。」
它的核心思想其实很简单:你发射的信号是已知频率的,比如1kHz的正弦波。那么接收端也只认1kHz的信号,其他频率统统视为噪声。这就好比你在嘈杂的酒吧里,只听得见你朋友喊你名字的声音,其他声音自动过滤掉。
锁相放大器的工作流程大致分三步:
- 调制:把待测的直流或低频信号,调制到一个已知的载波频率上(比如10kHz)。
- 相敏检波:用与发射信号同频同相的参考信号,与接收到的混合信号相乘。
- 低通滤波:把相乘后的结果中的高频成分滤掉,只留下与参考信号相关的直流分量。
这里有个关键点:锁相放大器不是滤除噪声,而是把信号「搬」到一个噪声很少的频段,然后再提取出来。我刚开始做的时候,总以为它是某种超级滤波器,后来才明白,它其实是利用了信号的相关性。
核心公式(理解即可):
输入信号:Vsig = A·sin(ωt + φ)
参考信号:Vref = B·sin(ωt)
相乘后:Vout = (A·B/2)·[cos(φ) - cos(2ωt + φ)]
经过低通滤波后,只剩下直流项:Vdc = (A·B/2)·cos(φ)
你看,只要调整参考信号的相位φ=0,就能得到最大的直流输出。
4.2 相敏检波器(PSD)的工作机制
相敏检波器,简称PSD,是锁相放大器的心脏。它本质上就是一个乘法器。但别小看这个乘法器,它决定了整个系统的性能。
我在一个项目中用过模拟乘法器芯片AD633做PSD,结果发现它的线性度在高频段很差。后来换成了开关型PSD,效果好了很多。这里我给大家总结一下常见的PSD实现方式:
| 类型 | 原理 | 优点 | 缺点 | 我推荐的应用场景 |
|---|---|---|---|---|
| 模拟乘法器型 | 用模拟乘法器芯片(如AD633、MC1496)直接相乘 | 精度高,带宽宽 | 成本高,功耗大 | 实验室精密测量 |
| 开关型 | 用模拟开关(如DG201)将信号按参考频率切换极性 | 电路简单,成本低,动态范围大 | 有开关噪声,带宽受限 | 工业现场,环境光抑制 |
| 数字型 | ADC采样后,在MCU或FPGA内做数字乘法 | 灵活,可编程,无温漂 | 需要高速ADC,延迟较大 | 多通道系统,自适应系统 |
我个人最常用的是开关型PSD。为什么?因为它简单、皮实。你想想看,工业现场温度变化大,模拟乘法器容易漂移,而开关型PSD只关心信号的极性,对幅度不敏感,稳定性好很多。
开关型PSD的工作机制是这样的:
- 参考信号是一个方波,控制模拟开关。
- 当参考信号为高电平时,输入信号直接通过(增益+1)。
- 当参考信号为低电平时,输入信号反相通过(增益-1)。
- 这样,与参考信号同频同相的信号会被「整流」成直流,而噪声则被平均掉。
避坑指南:
我曾经在一个项目中,PSD的输出一直有低频波动。查了两天,最后发现是参考信号的占空比不是严格的50%。方波占空比偏离50%,会导致PSD输出一个与信号幅度相关的直流偏置。所以,一定要确保参考信号的占空比精确为50%,或者用差分结构来消除这个偏置。
4.3 如何利用同步检测从噪声中提取信号
好了,理论讲完了,咱们来点实际的。怎么用同步检测技术从噪声里把信号捞出来?我给大家画个流程图,一看就明白。
从流程图里你能看到,整个信号链路上有几个关键点:
- 调制频率的选择:我一般选在1kHz~100kHz之间。太低的话,容易受到1/f噪声和工频干扰;太高的话,传感器和放大器的带宽跟不上。我做过一个项目,环境光主要是LED照明(100Hz~1kHz的频闪),我就把调制频率选在10kHz,完美避开。
- 带通滤波器的Q值:Q值越高,选择性越好,但相位延迟也越大。我个人的习惯是Q值取10~30,既能有效抑制带外噪声,又不会让相位调整太麻烦。
- 低通滤波器的时间常数:这是决定噪声抑制能力的关键。时间常数越大,等效噪声带宽越窄,输出越干净。但代价是响应速度变慢。比如你要测一个缓慢变化的信号,时间常数可以设到1秒;但如果是快速变化的信号,时间常数只能设到10毫秒。
注意:
同步检测技术有一个前提——参考信号必须与发射信号严格同步。如果参考信号有频率偏移或相位抖动,输出就会衰减甚至完全消失。我见过有人用MCU的PWM做参考信号,结果PWM的时钟源精度不够,导致输出漂移。后来换成了晶振分频,问题才解决。
4.4 实战经验:一个环境光抑制的案例
最后,我分享一个实际案例。几年前我做了一个红外光电传感器,用于检测传送带上的物体。现场环境光非常复杂,有日光灯、LED灯、还有太阳光从窗户射进来。传感器输出信号的信噪比只有-20dB,也就是说噪声比信号大10倍。
我的解决方案是这样的:
- 发射端:用10kHz的方波调制红外LED。
- 接收端:用PIN光电二极管+跨阻放大器,然后经过一个中心频率10kHz、Q=10的带通滤波器。
- PSD:用模拟开关DG201实现开关型相敏检波。
- 低通滤波:时间常数设为100ms,截止频率约1.6Hz。
结果怎么样?输出信号的信噪比从-20dB提升到了+40dB,整整60dB的提升!环境光干扰几乎完全被抑制掉了。嗯,这里要注意,低通滤波器的时间常数100ms意味着传感器对快速移动的物体响应会有些滞后,但对于传送带这种应用,完全够用。
一个小技巧:
如果你觉得锁相放大器太复杂,也可以用现成的芯片,比如AD630。它内部集成了开关型PSD和低通滤波器,外围电路只需要几个电阻电容。我早期做项目时就用它,省了不少事。
好了,同步检测技术就讲到这里。说白了,它就是利用信号的相关性,把信号从噪声里「揪」出来。你想想看,环境光噪声是随机的,而你的信号是有规律的——只要抓住这个规律,噪声再大也不怕。