第四节:信号调理与数据采集

各位好,我是老张。今天咱们聊聊信号调理和数据采集这块。说实话,这部分是PID调控的"眼睛"和"耳朵"。你算法写得再好,信号进来全是噪声,那一切都是白搭。我在项目里见过太多这种情况——温控曲线看着漂亮,一查原始信号,全是毛刺。

4.1 放大电路设计

热电偶输出的信号有多微弱?K型热电偶也就40μV/℃左右。你想想看,要分辨0.1℃的变化,就得能检测到4μV的电压变化。这可不是随便找个运放就能搞定的。

我个人习惯用仪表放大器,比如AD620或INA128。为什么?因为共模抑制比高,噪声低。我曾经在一个项目中偷懒用了普通运放搭差分电路,结果50Hz工频干扰大得离谱,后来老老实实换了仪表放大器。

放大电路设计要点:

  • 增益设定:根据ADC输入范围反推。比如ADC是0-5V,热电偶最大输出50mV,那增益就是100倍。别贪心,留点余量
  • 偏置处理:单电源供电时,需要加一个Vref偏置,把负温度信号抬到正电压范围
  • 保护电路:输入端串个10kΩ电阻,再加两个二极管钳位到电源轨。我吃过亏,有一次热电偶碰上了加热丝,直接把ADC烧了
// 典型仪表放大器增益计算
// AD620: G = 49.4kΩ / Rg + 1
// 目标增益100倍
Rg = 49400 / (100 - 1) = 499Ω
// 实际选510Ω标准电阻,增益约97.8倍
// 嗯,够用了

4.2 滤波电路设计

信号放大之后,噪声也跟着放大了。这时候就需要滤波。说白了,滤波就是"该留的留,该扔的扔"。

我建议做两级滤波:

  1. 硬件滤波:一阶RC低通,截止频率设在10-100Hz。别用高阶有源滤波,调试起来太麻烦,而且相移会影响PID响应
  2. 软件滤波:滑动平均或中值滤波。我习惯用滑动平均,窗口大小取4-16点。窗口太大,响应变慢;太小,滤波效果差

避坑指南:我曾经在硬件滤波上栽过跟头。RC滤波的电容别用普通瓷片电容,温度系数太大。用C0G或NP0材质的,或者干脆用聚丙烯电容。电阻用金属膜电阻,温漂小。

// 软件滑动平均滤波示例
#define FILTER_WINDOW 8
float buffer[FILTER_WINDOW];
uint8_t index = 0;
float sum = 0;

float moving_average(float new_sample) {
    sum -= buffer[index];
    buffer[index] = new_sample;
    sum += new_sample;
    index = (index + 1) % FILTER_WINDOW;
    return sum / FILTER_WINDOW;
}

4.3 ADC选型与配置

ADC选型,我主要看三个指标:分辨率、采样率、噪声。

参数 推荐值 说明
分辨率 16位以上 12位ADC在0-5V范围内分辨率约1.22mV,对应温度约0.3℃,不够用
采样率 100-1000 SPS 色谱仪温度变化慢,太高采样率反而引入更多噪声
有效位数(ENOB) ≥14位 别只看标称位数,要看实际有效位数

我个人偏爱Σ-Δ型ADC,比如ADS1256或LTC2440。为什么?内置数字滤波器,抗噪能力强。记得有一次用逐次逼近型ADC,怎么调都有噪声,换成Σ-Δ型立马干净了。

注意:ADC的参考电压一定要用高精度基准源,比如REF5025或ADR421。别直接从电源分压,那点精度根本不够看。我见过有人用7805的输出当基准,结果温度一变化,测量值跟着飘。

4.4 采样率设定

采样率怎么定?有个经验法则:采样率至少是系统带宽的10倍。色谱柱温箱的带宽大概0.1-1Hz,所以采样率10-100 SPS就够了。

但实际中我会设得高一点,比如50-200 SPS。为什么?

  • 高了可以做软件过采样,提升分辨率
  • 高了可以检测到异常跳变,及时报警
  • 高了方便做数字滤波,不会丢失细节

不过也别太高。我曾经试过1000 SPS采样,结果数据量太大,单片机处理不过来,PID控制周期都乱了。后来降到200 SPS,一切正常。

// 采样率与PID控制周期配合
#define SAMPLE_RATE 100  // 100 SPS
#define PID_INTERVAL 10  // PID每10ms计算一次

void timer_isr() {
    static uint8_t count = 0;
    adc_sample();  // 每次中断都采样
    if (++count >= (SAMPLE_RATE / 100)) {  // 每10ms执行一次PID
        pid_compute();
        count = 0;
    }
}

小技巧:采样率设定后,别忘了做抗混叠滤波。截止频率设在采样率的1/2以下。比如采样率100 SPS,低通滤波截止频率设在30-40Hz。这是奈奎斯特定理的基本要求,别偷懒。

好了,信号调理这块就聊到这儿。说白了,就是让干净的信号进ADC,让ADC的数据进控制器。每一步都马虎不得。下一节咱们聊聊PID参数的整定方法,那才是真正见功夫的地方。