3. 信号调理技术:信号放大、滤波、隔离、线性化处理

做数据采集这些年,我最大的体会是:传感器出来的信号,很少能直接用的。你想想看,热电偶输出才几毫伏,PT100的阻值变化就那么一点点,工业现场还有各种干扰。这时候就需要信号调理技术登场了。

说白了,信号调理就是把原始信号"收拾"成ADC能愉快接受的样子。我习惯把这部分工作分成四大块:放大、滤波、隔离、线性化。咱们一个一个聊。

核心观点:信号调理不是可选项,而是数据采集系统可靠性的基石。跳过这一步,后面再好的ADC也白搭。

3.1 信号放大

放大是最基础的操作。为什么?因为很多传感器的输出信号太弱了。比如热电偶,温度变化1°C才产生几十微伏的变化。ADC的输入范围通常是0-5V或0-10V,你不放大,ADC根本分辨不出来。

我个人习惯用仪表放大器(Instrumentation Amplifier,简称INA)。它有三个特点:高输入阻抗、高共模抑制比、增益可调。这三个特性在工业现场特别实用。

选型时我关注三个参数:

  • 增益范围:根据信号幅度和ADC量程来算。比如信号最大50mV,ADC量程5V,那增益至少100倍。
  • 共模抑制比(CMRR):这个参数越高越好。工业现场共模干扰很严重,CMRR低了信号会被淹没。
  • 噪声密度:放大器本身也会引入噪声。选低噪声的型号,比如AD620、INA128。
我的经验:增益不要一次加到位。我习惯分两级放大:第一级放大10-50倍,第二级再放大到目标值。这样能避免放大器饱和,也方便调试。

举个例子,我曾经做一个温度采集项目,热电偶信号只有0-20mV。我选了INA128,增益设成250倍,输出0-5V。效果很好,噪声控制在0.1%以内。

3.2 滤波

放大之后,噪声也被放大了。这时候就需要滤波。滤波的目的很简单:把有用的信号留下,把没用的干扰滤掉。

常见的干扰源:

  • 50Hz工频干扰(来自电源线)
  • 高频开关噪声(来自DC-DC转换器)
  • 射频干扰(来自无线设备)

我一般用两种滤波器:

类型 特点 适用场景
RC低通滤波器 简单、便宜、无源 低频信号,截止频率固定
有源滤波器(如Sallen-Key) 增益可调、陡峭的滚降特性 需要精确截止频率的场景

嗯,这里要注意:滤波器的截止频率要选对。我见过有人把截止频率设得太低,结果有用的信号变化也被滤掉了。一般规则是:截止频率设为信号最高频率的3-5倍。

避坑指南:我曾经在一个振动监测项目里,用了二阶有源低通滤波器,截止频率设成100Hz。结果发现高频振动信号全没了。后来改成500Hz,才正常。记住:滤波不是越狠越好。

3.3 隔离

隔离是信号调理里最容易被忽视的一环。很多人觉得只要信号放大了、滤干净了就行。但工业现场,地环路干扰能让你怀疑人生。

隔离的作用:切断两个电路之间的电气连接,但让信号能传过去。常见的隔离方式有三种:

  • 光耦隔离:用光传递信号,便宜,适合数字信号。
  • 磁耦隔离:用变压器传递信号,适合模拟信号。
  • 电容隔离:用电容耦合,速度快,适合高频信号。

我个人习惯在传感器和ADC之间加一级隔离。特别是当传感器和采集系统距离超过10米时,隔离是必须的。否则地电位差就能把ADC烧掉。

我的经验:隔离电源也很重要。光耦隔离了信号,但电源不隔离,地环路依然存在。我一般用隔离DC-DC模块给传感器供电,这样信号和电源都隔离了。

3.4 线性化处理

很多传感器的输出和被测物理量不是线性关系。比如热电偶,温度-电压曲线是非线性的;PT100的阻值-温度曲线也不是直线。如果不做线性化,采集出来的数据误差会很大。

线性化有两种方法:

  1. 硬件线性化:用模拟电路做补偿。比如用对数放大器处理热电偶信号。优点是实时性好,缺点是电路复杂、精度有限。
  2. 软件线性化:在MCU或上位机里用查表法或多项式拟合。优点是灵活、精度高,缺点是需要计算资源。

我现在基本都用软件线性化。查表法最常用:把传感器的标准曲线做成表格,采集到信号后直接查表得到物理量。如果表格不够密,可以用插值法。

// 热电偶线性化查表示例(简化版)
// 输入:电压值(mV)
// 输出:温度值(°C)

float lookup_table[] = {0.0, 0.5, 1.0, 1.5, 2.0, ...}; // 电压值
float temp_table[] = {0.0, 12.5, 25.0, 37.5, 50.0, ...}; // 对应温度

float linearize(float voltage) {
    int i;
    for (i = 0; i < TABLE_SIZE - 1; i++) {
        if (voltage >= lookup_table[i] && voltage < lookup_table[i+1]) {
            // 线性插值
            float ratio = (voltage - lookup_table[i]) / (lookup_table[i+1] - lookup_table[i]);
            return temp_table[i] + ratio * (temp_table[i+1] - temp_table[i]);
        }
    }
    return -1; // 超出范围
}
避坑指南:我曾经用多项式拟合做线性化,选了5阶多项式,结果在端点处出现严重振荡(龙格现象)。后来改用分段3阶多项式拟合,效果就好多了。记住:高阶多项式不一定好,分段低阶更靠谱。

知识体系总览

下面这张图是我自己整理的信号调理技术知识结构。你可以看到,四大技术不是孤立的,而是环环相扣的。

信号调理技术 信号放大 滤波 隔离 线性化处理 仪表放大器(INA) 增益、CMRR、噪声 RC低通 / 有源滤波 截止频率选择 光耦 / 磁耦 / 电容 信号隔离 + 电源隔离 查表法 / 多项式拟合 分段低阶拟合 四大技术环环相扣,缺一不可

这张图把信号调理的四个核心模块串起来了。你从传感器拿到信号,先放大,再滤波,然后隔离,最后线性化。每一步都有讲究,每一步都不能省。

最后说一句:信号调理做得好不好,直接决定数据采集系统的精度和可靠性。我见过太多项目,ADC选得顶级,结果信号调理没做好,采集出来的数据一塌糊涂。记住:好钢要用在刀刃上,信号调理就是那个刀刃。

公众号:蓝海资料掘金营,微信deep3321