传感器信号处理

这篇继续将信号处理相关的内容。

曲线是如何“变直”的?—— 线性化处理

物理世界通常是不完美的。 比尔 - 朗伯定律 告诉我们,光吸收和浓度是指数关系,不是线性关系。$$I = I_0 \cdot e^{-kc}$$ 但是,DCS 和环保局只要线性的 4-20mA(对应 0-1000 ppm)。 如果在屏幕上画出来,信号是一条弯曲的弧线。我们需要把它“掰直”**。

1. 多项式拟合 (Polynomial Fitting)

这是最常用的手段。我们在做标定(Calibration)时,通入 0%, 20%, 40%, 60%, 80%, 100% 的标气。CPU 采集到 6 个电压值,然后用数学方法算出一个公式:$$C = aV^4 + bV^3 + cV^2 + dV + e$$

  • a, b, c, d, e 就是存在存储器里的线性化系数
  • 只要系数算得准,再弯的线也能拟合成直线。

2. 查表法 —— 针对“奇葩”传感器

对于氧化锆(ZrO2)这种对数关系的传感器,或者极度非线性的传感器,公式太复杂了。我们就用最笨的办法:查字典。

  • 内存里存一张表:
    • 10mV -> 0.1 ppm
    • 12mV -> 0.15 ppm
  • 如果测到了 11mV 怎么办?线性插值 算中间值。

气体打架怎么办?—— 交叉干扰补偿

这是 CEMS 最头疼的问题。

  • 场景: 你要测 $\text{SO}_2$。
  • 现实: 烟气里有大量的水 ($\text{H}_2\text{O}$) 和 $\text{CO}_2$。
  • 麻烦: 虽然我们选了滤光片,但水和 $\text{CO}_2$ 在 $\text{SO}_2$ 的波段上可能还有 0.1% 的微弱吸收
  • 后果: 哪怕没 $\text{SO}_2$,水气也能骗过仪器,产生一个几十 ppm 的假读数。

解决方案:矩阵解耦 (Matrix Decoupling)

既然躲不掉,我们就不仅测 $\text{SO}_2$,顺便把干扰气体也测了。

  1. 硬件准备: 在切光轮上多加一个滤光片,专门测水的浓度(虽然我们不报告水,但我们要用它)。
  2. 数学模型:

$$C_{\text{real}} = C_{\text{meas}} - (K_{\text{H2O}} \times C_{\text{H2O}}) - (K_{\text{CO2}} \times C_{\text{CO2}})$$

  • $C_{\text{real}}$:真实的 $\text{SO}_2$ 浓度**(我们最终想要的)。
  • $C_{\text{meas}}$:仪器测量到的总读数(这是个混合值,包含了 $\text{SO}_2$ 的信号 + 干扰气体的伪信号)。
  • $C_{\text{H2O}}$:当前测量到的水含量(比如 10%)。
  • $K_{\text{H2O}}$:水对 $\text{SO}_2$ 的干扰系数**(Interference Coefficient)。
    • 物理意义:每 1% 的水,会让仪器误以为有 $K$ ppm 的 $\text{SO}_2$。这个系数是厂家出厂时测定并写在内存里的。
  • $C_{\text{CO2}}$ / $K_{\text{CO2}}$:同理,这是二氧化碳的浓度和它的干扰系数。

这就是为什么高端分析仪一定要测 $\text{H}_2\text{O}$ 和 $\text{CO}_2$。不是为了看,而是为了扣除背景干扰。如果你的仪器没有这个补偿功能,一下雨(湿度大),你的 $\text{SO}_2$ 数据就会莫名其妙飘高。

卡尔曼滤波 (Kalman Filter) —— 预测未来

这是现在最前沿的信号处理技术,主要用于 TDLAS 激光分析仪或高端质谱仪。普通的滤波是“事后诸葛亮”(求平均值)。卡尔曼滤波是“预言家”**。

  • 原理: 它包含两个模型:
    • 物理模型: 根据上一秒的浓度和流速,预测下一秒应该是多少。
    • 测量模型: 此时此刻传感器实测到了多少。
  • 融合:
    • 如果实测值和预测值差不多 $\to$ 相信实测值。
    • 如果实测值突然跳变(噪声),但物理模型说“不可能变这么快” $\to$ 更多地相信预测值,忽略实测值。

效果: 它能把响应时间(T90)缩短到极致,同时还能把噪声压得极低。这在需要毫秒级响应的工业过程控制中非常重要。

Licensed under CC BY-NC-SA 4.0