3、模拟输入信号调理:电压衰减与放大电路设计、低通滤波器设计与选型、抗混叠滤波器原理

好,咱们接着聊。上一章我们把传感器和信号类型理清楚了,这一章要动真格的了——信号调理。说白了,就是让被测信号“乖乖听话”,变成ADC能准确采样的样子。

我个人习惯把信号调理分成三步走:幅度调整(衰减或放大)、频率过滤(低通滤波)、抗混叠保护。这三步走对了,后面采样出来的数据才靠谱。走错了?嗯,你可能会花三天时间查一个根本不存在的故障。

3.1 电压衰减与放大电路设计

先问个问题:你的ADC输入范围是多少?大部分HIL系统的ADC是±10V或0~10V。但被测信号呢?可能是毫伏级的热电偶,也可能是几百伏的电机母线电压。

所以,幅度调整是第一步。

3.1.1 衰减电路:把大信号“压”下来

我在项目中遇到过最头疼的情况:客户说信号是0~10V,结果一接上发现峰值到了48V。还好我习惯在输入端先加一级衰减保护。

最简单的衰减电路就是电阻分压:

Vin —— R1 —— Vout —— R2 —— GND

Vout = Vin × R2 / (R1 + R2)

举个例子,你要把±100V衰减到±10V,分压比就是10:1。选R1=90kΩ,R2=10kΩ,搞定。

⚠️ 避坑指南: 我曾经因为没考虑输入阻抗,导致分压精度一塌糊涂。记住:R1+R2要远大于信号源内阻,至少大100倍以上。否则分压比会偏移,你算得再准也没用。

另外,衰减电路后面一定要跟一个高输入阻抗的电压跟随器。为什么?因为分压网络的输出阻抗是R1//R2,如果不加缓冲,后级电路一接上去,分压比就变了。

3.1.2 放大电路:把小信号“提”上来

小信号放大,我首选仪表放大器。比如AD620、INA128这些经典芯片。为什么不用普通运放?因为小信号通常伴随着共模干扰,普通运放扛不住。

仪表放大器的典型接法:

         ┌─────────┐
Vin+ ────┤  IN+    │
         │  INA128 │──── Vout
Vin- ────┤  IN-    │
         │  RG     │
         └────┬────┘
              │
             Rg (增益电阻)

增益公式:G = 1 + 49.4kΩ / Rg

比如你要放大100倍,Rg = 49.4kΩ / (100 - 1) ≈ 499Ω。选个标准值499Ω就行。

💡 我的经验: 增益不要一次放太大。我习惯分两级:先放10倍,再放10倍。为什么?因为单级增益太高,带宽会下降,噪声也会被放大得很难看。你想想看,100倍的单级放大,带宽可能只剩几kHz了。

3.2 低通滤波器设计与选型

信号幅度调好了,接下来要处理噪声。HIL环境里,噪声来源太多了:开关电源的纹波、电机驱动的PWM干扰、甚至隔壁工位的手机信号。

低通滤波器就是干这个的——把高频噪声滤掉,保留有用的低频信号。

3.2.1 一阶RC低通:最简单,但够用吗?

一阶RC滤波,一个电阻加一个电容:

Vin —— R —— Vout —— C —— GND

截止频率:fc = 1 / (2πRC)

比如你要滤除100Hz以上的噪声,选R=1.6kΩ,C=1μF,fc≈100Hz。

但说实话,一阶滤波的衰减斜率只有-20dB/十倍频。什么意思?100Hz的信号衰减3dB,1000Hz的信号才衰减20dB。如果噪声频率离信号频率很近,一阶滤波根本不够用。

🔑 关键点: 我在实际项目中,一阶RC只用在信号质量已经比较好的场合,或者作为抗混叠滤波的前置预滤波。真正的主力滤波,还得看高阶的。

3.2.2 二阶有源低通:巴特沃斯还是贝塞尔?

二阶有源滤波,衰减斜率-40dB/十倍频,效果好得多。常用的拓扑是Sallen-Key结构:

         ┌──────────────┐
Vin ── R1 ── R2 ──┤+   │
         │     │    │    │──── Vout
         C1    C2   │-   │
         │     │    └────┘
        GND   GND

选型时有两个经典选择:

类型 特点 适用场景
巴特沃斯 通带最平坦,截止特性好 一般信号滤波,最常用
贝塞尔 线性相位,无过冲 需要保真波形形状的场合

我个人习惯:测稳态信号用巴特沃斯,测动态波形用贝塞尔。比如测发动机转速信号,巴特沃斯就够了;但测爆震传感器波形,必须用贝塞尔,否则相位畸变会让你误判。

3.2.3 滤波器阶数怎么选?

阶数越高,滤波效果越好,但代价也大:

  • 二阶:大多数场景够用,设计简单
  • 四阶:噪声环境恶劣时用,比如电机测试台架
  • 六阶以上:很少用,因为群延迟太大,信号会“走样”
⚠️ 注意: 高阶滤波器会引入明显的群延迟。我曾经在一个项目中用了六阶滤波器,结果发现采样到的信号比实际晚了2ms,导致控制闭环不稳定。后来换成四阶贝塞尔,问题解决。

3.3 抗混叠滤波器原理

这个知识点,我觉得是信号调理里最容易被忽视但又最关键的一环。

3.3.1 什么是混叠?

简单说:采样频率不够高,高频信号“伪装”成了低频信号。

举个例子:你以100Hz采样一个80Hz的信号,理论上没问题。但如果信号里有个120Hz的噪声,采样后会发生什么?

120Hz - 100Hz = 20Hz。这个20Hz的“假信号”会混入你的数据里,而你根本不知道它是假的。

🔑 核心原理: 根据奈奎斯特采样定理,采样频率必须大于信号最高频率的两倍。但实际工程中,我建议至少留出20%的余量,也就是采样频率 ≥ 2.5倍信号最高频率。

3.3.2 抗混叠滤波器的设计要点

抗混叠滤波器本质上就是一个低通滤波器,但要求更严格:

  • 截止频率:设为采样频率的1/2.5到1/3
  • 阻带衰减:至少40dB以上,最好60dB
  • 过渡带:越陡越好,但要注意相位

我常用的设计流程:

  1. 确定采样频率fs,比如1000Hz
  2. 抗混叠截止频率设为fs/2.5 = 400Hz
  3. 选择四阶巴特沃斯,阻带衰减60dB
  4. 在400Hz以上,信号已经被衰减到ADC量化噪声以下

3.3.3 一个真实的教训

我曾经调试一个电机控制器HIL项目,发现电流波形上总有奇怪的毛刺。查了三天,换了传感器、换了线缆、甚至换了机箱,问题依旧。

最后用示波器一看——电机PWM的开关频率是10kHz,而我的采样频率是2kHz。10kHz的噪声混叠成了2kHz - (10kHz mod 2kHz) = 2kHz - 0kHz = 0kHz?不对,算一下:10kHz / 2kHz = 5,余数为0,所以混叠到了直流分量上。

嗯,这就是为什么我的电流信号上有个“直流偏置”在来回跳。后来在ADC前端加了一级二阶低通滤波,截止频率设到800Hz,问题立刻消失。

💡 我的建议: 抗混叠滤波器不要只靠软件。软件滤波能处理已知频率的噪声,但对付不了混叠。硬件抗混叠滤波器是最后一道防线,必须做。

3.4 小结

这一章内容不少,我帮你捋一下重点:

  • 衰减放大:先调幅度,再缓冲,注意输入阻抗匹配
  • 低通滤波:一阶够简单,二阶是主力,高阶要谨慎
  • 抗混叠:这是硬门槛,不做的话数据可能全是错的

下一章我们讲模拟输出信号调理,也就是DAC后面的事。到时候你会看到,输出和输入虽然对称,但坑完全不一样。