4、信号调理电路:模拟信号滤波、放大与抗混叠设计

风向传感器输出的原始信号,说白了就是个小电压。

有多小?我见过不少传感器,满量程输出也就几十毫伏。直接送给ADC?那基本等于没信号。更麻烦的是,现场环境里各种噪声——电机启停的尖峰、变频器的谐波、甚至风吹过塔筒的振动,全都会叠加在信号上。

所以,信号调理电路就是干这个的:把微弱的、带噪声的原始信号,变成干净的、幅度合适的、ADC能愉快处理的信号。

4.1 信号调理的核心任务

我个人习惯把调理电路拆成三个环节来看:

  • 滤波:把不需要的频率成分干掉。尤其是高频噪声和工频干扰。
  • 放大:把信号幅度抬到ADC的满量程附近。比如0~5V或者0~3.3V。
  • 抗混叠:这是采样定理的要求。采样前必须把高于1/2采样频率的信号滤掉,否则会发生频谱混叠。

你想想看,这三个环节其实是串在一起的。滤波做不好,放大就把噪声一起放大了。抗混叠没做好,后面数字滤波也救不回来。

核心原则:先滤波,后放大。或者至少滤波和放大要统筹考虑。千万别先放大再滤波——那样会把噪声放大到跟信号一样大,再想滤就难了。

4.2 模拟滤波器的选型与设计

风向信号的变化有多快?

我实测过,风速从0突变到10m/s,风向的响应时间大概在0.5~2秒之间。对应的信号频率,基本都在10Hz以下。所以,我们的滤波器截止频率设在10~20Hz就足够了。

4.2.1 一阶RC滤波 vs 高阶有源滤波

最简单的就是一阶RC低通。一个电阻加一个电容,成本几分钱。但它的衰减斜率只有-20dB/十倍频。什么意思?如果100Hz的噪声有1V,过了滤波器还有0.1V。对于很多场合,这不够用。

我在项目中遇到过这样的情况:一阶RC滤波后,ADC采样数据里依然能看到明显的50Hz工频干扰。后来换成了二阶巴特沃斯有源滤波器,效果立竿见影。

常用的滤波器类型对比:

滤波器类型 衰减斜率 通带平坦度 适用场景
一阶RC -20dB/dec 噪声不大、成本敏感
二阶巴特沃斯 -40dB/dec 非常好 通用场景,我最常用
二阶切比雪夫 -40dB/dec 通带有纹波 需要更陡峭的截止
四阶及以上 -80dB/dec以上 取决于设计 强噪声环境

嗯,这里要注意:阶数越高,电路越复杂,相位延迟也越大。对于风向这种低频信号,二阶巴特沃斯基本够用。

4.2.2 实战电路:二阶低通有源滤波器

下面这个电路,是我在多个风向项目中用过的。运放选LM358或者MCP6002都行,关键是便宜又好买。

// 二阶巴特沃斯低通滤波器设计
// 截止频率 fc = 10Hz
// 增益 G = 1 (单位增益)

// 元件取值(标准E24系列)
R1 = R2 = 15.8kΩ
C1 = 1.0μF
C2 = 0.47μF

// 实际截止频率验证
fc = 1 / (2 * π * sqrt(R1 * R2 * C1 * C2))
   = 1 / (2 * 3.1416 * sqrt(15.8e3 * 15.8e3 * 1e-6 * 0.47e-6))
   ≈ 10.2Hz

小技巧:实际焊接时,电阻电容都有误差。我习惯用万用表测一下再焊。尤其是电容,误差可能到±20%。焊完用信号发生器扫个频,确认截止频率在目标范围内。

4.3 放大电路设计

风向传感器的输出,常见的有两种:

  • 电位计式:输出电阻变化,需要接成电阻分压,再放大。
  • 霍尔式或磁阻式:直接输出模拟电压,但幅度很小。

不管哪种,放大倍数怎么定?

我有个简单的公式:

放大倍数 = ADC满量程电压 / 传感器最大输出幅度

举例:
ADC满量程 = 3.3V
传感器最大输出 = 50mV
放大倍数 = 3.3 / 0.05 = 66倍

实际设计时,我一般留20%的余量。比如算出来66倍,我会取50~55倍。为什么?因为传感器输出可能比标称值大一点,或者ADC的参考电压有偏差。留点余量,防止信号削顶。

4.3.1 差分放大 vs 单端放大

如果传感器输出是差分信号(比如很多磁阻传感器),一定要用差分放大器。它能抑制共模噪声,效果比单端好太多。

我曾经在一个项目中偷懒,把差分信号直接转成单端再放大。结果现场一开机,信号上全是共模干扰,根本没法用。后来老老实实加了INA128仪表放大器,问题解决。

避坑指南:差分放大器的共模抑制比(CMRR)很关键。便宜的运放CMRR可能只有60dB,好一点的能到100dB以上。对于风向这种小信号,我建议至少选80dB以上的。

4.4 抗混叠滤波设计

这部分是很多工程师容易忽略的。

ADC采样有个基本定理:采样频率必须大于信号最高频率的两倍。否则,高频信号会折叠到低频段,产生虚假信号。这就是混叠。

举个例子:

采样频率 fs = 100Hz,信号里有个 80Hz 的噪声。按照采样定理,80Hz 会折叠到 20Hz(因为 100 - 80 = 20)。而 20Hz 正好在风向信号的频带内。结果就是,你采到的风向数据里,莫名其妙多了一个 20Hz 的波动。

抗混叠滤波器,就是在ADC之前,把高于 fs/2 的信号全部干掉。

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

  • 截止频率:设为 fs/2 的 0.8~0.9 倍。留点余量。
  • 衰减量:在 fs/2 处,至少衰减 40dB。也就是把噪声压到原来的 1% 以下。
  • 阶数选择:如果 fs 远高于信号频率,一阶RC可能就够了。如果 fs 跟信号频率接近,至少需要二阶甚至三阶。

我个人的习惯做法是:

// 抗混叠滤波器设计流程
1. 确定采样频率 fs = 200Hz(实际项目中常用)
2. 确定信号最高频率 fmax = 10Hz
3. 抗混叠滤波器截止频率 fc = fs/2 * 0.8 = 80Hz
4. 检查:fc 远大于 fmax,所以滤波器对信号本身影响很小
5. 选择二阶巴特沃斯,fc=80Hz

关键点:抗混叠滤波器的截止频率,不是由信号频率决定的,而是由采样频率决定的。这一点千万别搞反了。

4.5 整体电路架构

下面这张图,是我常用的信号调理电路架构。它把滤波、放大、抗混叠串在了一起。

信号调理电路架构图 风向传感器 一阶RC 预滤波 二阶巴特沃斯 低通滤波 仪表放大器 ADC 信号流向:传感器 → 预滤波 → 主滤波 → 放大 → ADC采样 关键参数 • 一阶RC截止频率:100Hz(滤除高频尖峰) • 二阶巴特沃斯截止频率:10Hz(保留风向信号) • 放大倍数:50倍(适配3.3V ADC) • 抗混叠:由二阶巴特沃斯兼任,fs=200Hz时满足要求

这个架构的好处是:

  • 一阶RC先干掉高频毛刺,保护后面的运放不被过载。
  • 二阶巴特沃斯做精确的低通滤波,同时兼任抗混叠。
  • 仪表放大器做差分转单端和放大,共模抑制比高。

4.6 实战中的几个坑

最后,分享几个我踩过的坑:

坑1:运放供电。很多运放是双电源的,但嵌入式系统通常只有单电源。选轨到轨运放,比如MCP6002,可以在单电源下工作。否则信号会削底。

坑2:电容漏电。滤波电容如果用了电解电容,漏电流会引入直流偏置。我建议用CBB电容或者钽电容,漏电小很多。

坑3:PCB布局。模拟信号线要远离数字信号线,尤其是PWM和SPI线。我见过一个案例,就是因为模拟线和数字线平行走了5cm,结果ADC读数一直跳。

嗯,信号调理这部分,说难不难,说简单也不简单。关键是把滤波、放大、抗混叠这三个环节想清楚,然后根据实际信号特征去选型。别盲目追求高精度,够用就好。


专注资料整理