第一章:传感器校准概述

1.1 什么是传感器校准

传感器校准,说白了就是给传感器“做体检”和“调参数”。

我经常跟团队里的新人说:你买回来的传感器,就像一把没调过零的尺子。出厂时厂家给了一个理想模型,但实际用起来,每个传感器都有自己的“小脾气”。校准就是把这些小脾气摸清楚,然后补偿掉。

举个例子:一个温度传感器,理想情况下输出应该是 10mV/°C。但实际测下来,可能是 9.8mV/°C,而且还有零点偏移。校准要做的就是:

  • 测出真实的增益(9.8mV/°C)
  • 测出零点偏移(比如 0°C 时输出 2mV)
  • 建立从“实际输出”到“真实温度”的映射关系

我在项目中遇到过最典型的案例:一批压力传感器,同一批次、同一工艺,但每个传感器的零点偏移能差到 5% 以上。不做校准,这产品根本没法用。

核心定义:传感器校准是通过已知标准输入,建立传感器输出与真实物理量之间精确映射关系的过程。

1.2 为什么需要校准

这个问题我问过很多刚入行的工程师。有人回答“为了精度”,有人回答“为了符合规格书”。都对,但不够全面。

我总结三个核心原因:

  1. 消除个体差异——同一型号的传感器,每个都不一样。你想想看,一条产线一天生产几万个传感器,每个都完美一致?不可能的事。
  2. 补偿环境效应——温度、湿度、老化,这些都会让传感器“跑偏”。我记得有一次做汽车压力传感器项目,常温下精度 0.5%,到了 85°C 直接漂到 3%。不校准高温特性,这产品谁敢用?
  3. 满足系统精度要求——系统级精度往往比传感器本身精度高一个数量级。怎么办?只能靠校准来“拔高”。

避坑指南:我曾经见过一个团队,为了省成本跳过校准环节,结果整批产品在客户现场全被退货。省下的几毛钱校准费,赔进去几十万的返工成本。嗯,这个教训够深刻。

1.3 校准的数学本质

聊到数学,有些朋友可能头大。但别担心,我用最直白的方式讲清楚。

校准的数学本质,就是建立映射关系。输入是传感器原始读数,输出是真实物理量。

1.3.1 线性映射

最简单的形式:

真实值 = 增益 × 原始读数 + 偏移量

// 实际代码示例
float calibrate_linear(float raw_value, float gain, float offset) {
    return gain * raw_value + offset;
}

这个公式看着简单,但实际用起来门道很多。我习惯把这种校准叫做“两点校准”——用两个标准点(比如 0°C 和 100°C)把直线定下来。

校准点 标准值 传感器输出
低温点 0°C 2.1 mV
高温点 100°C 982.5 mV

算一下:增益 = (982.5 - 2.1) / 100 = 9.804 mV/°C,偏移 = 2.1 mV。搞定。

1.3.2 非线性映射

但现实世界哪有这么完美?

我做过一个红外温度传感器项目,它的输出和温度的关系是:

Vout = a × T^4 + b × T^3 + c × T^2 + d × T + e

四次多项式!线性模型根本搞不定。

这时候就需要非线性校准。常用的方法有:

  • 多项式拟合——用高次多项式逼近真实曲线
  • 分段线性插值——把曲线切成很多小段,每段用直线近似
  • 查找表(LUT)——存一批校准点,中间值靠插值

我的经验:分段线性插值在实际工程中用得最多。为什么?因为它计算量小,适合嵌入式 MCU 跑。多项式拟合精度高,但浮点运算慢,还容易过拟合。我建议新手先从分段线性入手,够用就好。

1.3.3 多维校准

更复杂的情况:传感器输出不仅受目标物理量影响,还受温度、供电电压等干扰。

举个例子:一个 MEMS 加速度计,它的零偏会随温度变化。这时候校准就不是一维问题了,而是:

真实加速度 = f(传感器输出, 温度, 电压)

我做过一个六轴 IMU 的校准项目,光温度补偿就建了 5×5 的二维查找表,每个温度点下还要做三轴对准。那段时间真是...嗯,痛并快乐着。

小结

这一章我们聊了:

  • 传感器校准是什么——给传感器“调参数”
  • 为什么需要校准——消除差异、补偿环境、满足精度
  • 校准的数学本质——从线性到非线性,从一维到多维

下一章我会详细讲校准的流程和标准步骤。到时候拿一个实际的压力传感器案例,手把手带大家走一遍完整的校准流程。

记住一句话:校准不是万能的,但不校准是万万不能的。

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