一、传感器标定概述

大家好,我是老张。在嵌入式这行摸爬滚打了十几年,经手过的传感器少说也有上百种。今天咱们来聊聊传感器标定这件事。

说实话,我刚入行那会儿,觉得标定就是个「配参数」的活儿。直到有一次,一个IMU模块在实验室跑得好好的,上了无人机就飘得找不着北。排查了三天,最后发现是温度补偿没做好。从那以后,我再也不敢小看标定了。

1.1 什么是传感器标定

传感器标定,说白了就是给传感器「校准」的过程。

你想想看,一个温度传感器,出厂时标称精度±0.5°C。但实际用起来,可能因为焊接应力、PCB布局、甚至外壳材质的影响,读数会偏个1-2°C。标定要做的,就是找出这个偏差,然后把它修正回来。

我习惯把标定分成两个层面:

  • 出厂标定:在工厂环境下,用标准设备对传感器进行批量校准。比如压力传感器,用高精度压力源给一组标准值,记录传感器的输出,然后拟合出转换曲线。
  • 现场标定:设备装到现场后,由于环境变化(温度、湿度、振动),传感器特性会漂移。这时候需要重新校准。我记得有个项目,传感器装在炼钢炉旁边,温度从25°C飙到85°C,零点漂移了3%,不现场标定根本没法用。

核心观点:标定不是一次性的工作。传感器在整个生命周期中,特性会变化。定期标定是保证数据可信度的基础。

1.2 为什么需要标定

这个问题,我经常被刚入行的工程师问到。我的回答很简单:因为传感器不完美。

具体来说,有这几个原因:

  1. 制造公差:同一批次的传感器,特性也会有差异。比如两个一模一样的压力传感器,在相同压力下输出可能差5mV。这就是制造工艺带来的离散性。
  2. 环境干扰:温度、湿度、电磁场都会影响传感器。我做过一个项目,霍尔传感器装在电机旁边,电机一启动,读数就跳变。后来加了磁屏蔽和软件滤波才搞定。
  3. 老化漂移:传感器用久了,内部材料会老化。比如电化学气体传感器,使用一年后灵敏度可能下降20%。不重新标定,数据就是错的。
  4. 系统误差:传感器本身没问题,但信号调理电路、ADC、甚至电源噪声都会引入误差。标定可以把这些系统误差一并修正。

我的经验:标定不是万能的,但不标定是万万不能的。尤其是做工业级产品,客户对数据精度要求很高。我曾经因为一个温度传感器没标定,导致整批产品退货。损失惨重啊。

1.3 标定的核心指标

标定做得好不好,得用指标来衡量。我常用的三个核心指标是:精度、分辨率、线性度。

1.3.1 精度

精度,就是传感器测量值和真实值之间的接近程度。说白了,就是「准不准」。

举个例子:一个温度传感器,真实温度是25.0°C,传感器读数是25.3°C,那误差就是0.3°C。精度通常用满量程的百分比来表示,比如±0.5%FS。

但这里有个坑:精度和准确度不是一回事。准确度是单次测量的偏差,精度是多次测量的重复性。我见过有人把重复性当精度报给客户,结果现场一测就露馅了。

指标 定义 典型值
精度 测量值与真实值的偏差 ±0.1%FS ~ ±1%FS
重复性 相同条件下多次测量的离散程度 ±0.05%FS ~ ±0.5%FS
准确度 包含系统误差和随机误差的综合指标 ±0.2%FS ~ ±2%FS

1.3.2 分辨率

分辨率,是传感器能检测到的最小变化量。说白了,就是「多小的变化能看出来」。

比如一个12位ADC的力传感器,量程0-100N,那分辨率就是100N / 4096 ≈ 0.024N。但实际中,由于噪声的存在,有效分辨率往往比理论值低。

我记得有个项目,客户要求分辨率0.01mm,我选了个16位ADC的位移传感器。结果现场一测,噪声就有0.03mm。后来加了硬件滤波和软件平均,才勉强达到要求。所以选型时,分辨率一定要留余量。

注意:分辨率高不等于精度高。一个传感器可能有很高的分辨率(能看出微小变化),但精度很差(读数整体偏大)。标定要同时关注这两个指标。

1.3.3 线性度

线性度,是传感器的输出和输入之间成直线关系的程度。理想情况下,输入x和输出y应该是y = kx + b。但实际中,总会有偏差。

线性度通常用「非线性误差」来表示,单位是%FS。比如一个压力传感器,在0-10MPa范围内,非线性误差是±0.2%FS,意思就是最大偏差不超过0.02MPa。

我处理过一个案例:一个超声波液位传感器,在近距离(0-1m)线性度很好,但到了远距离(3-5m),由于声波衰减和反射干扰,线性度急剧恶化。后来我们做了分段标定,近距用一组系数,远距用另一组系数,才把整体精度提上去。

// 分段线性标定示例
// 输入:原始ADC值 raw
// 输出:标定后的压力值 pressure

float calibrate_pressure(int raw) {
    if (raw < 1000) {
        // 低量程段:0-1000
        return 0.0125 * raw - 0.5;
    } else if (raw < 3000) {
        // 中量程段:1000-3000
        return 0.0132 * raw - 1.2;
    } else {
        // 高量程段:3000-4095
        return 0.0148 * raw - 5.6;
    }
}

知识体系总览

下面这张图,是我自己整理的传感器标定知识框架。你可以看到,标定不是孤立的工作,它和传感器选型、信号调理、数据处理都紧密相关。

传感器标定知识体系 传感器标定 精度 分辨率 线性度 出厂标定 现场标定 定期标定 最小二乘法 分段线性插值 多项式拟合 标定目标:让传感器输出更接近真实值 精度、分辨率、线性度三者相互影响,需综合权衡

嗯,这张图基本把标定的核心内容串起来了。你可能会问:这三个指标怎么权衡?我的经验是,精度优先,分辨率够用就行,线性度看应用场景。比如做称重传感器,精度是命根子;做位移检测,分辨率更重要;做流量计,线性度决定了量程比。

避坑指南:我曾经在一个项目中,为了追求高分辨率,选了24位ADC。结果噪声太大,有效分辨率还不如16位。后来才明白,分辨率要和信噪比匹配。盲目追求高分辨率,反而会引入更多问题。

好了,这一章的内容就到这里。标定这件事,说难不难,说简单也不简单。关键是要理解传感器的特性,选对方法,留足余量。下一章咱们聊聊具体的标定流程和工具链搭建,到时候我会分享一些实战中的小技巧。

可可精品资料库