零位校准的基本概念
做嵌入式系统这么多年,我见过太多工程师在零位校准上栽跟头。说白了,零位校准就是让传感器在没有任何输入信号时,输出一个已知的、稳定的基准值。这个基准值,就是咱们常说的「零位」。
你想想看,一个压力传感器在不通气的时候,ADC读数是2048还是2050?一个加速度计平放在桌面上,输出是0g还是0.01g?这些偏差如果不处理,后面的数据全是错的。
什么是零位?
零位,也叫零点、偏置。它指的是传感器在零输入条件下的理论输出值。
举个例子。一个12位的ADC,满量程是4095。理论上,输入0V时输出应该是0。但实际呢?我测过一批MEMS加速度计,平放时输出从-50到+50的都有。这就是零位偏差。
零位的本质:零位不是「0」,而是「基准」。校准零位,就是告诉系统:这个值代表「没有信号」。
零位校准的目标很简单——让传感器在零输入时,输出一个已知的、可重复的值。通常我们会把这个值映射到0,或者ADC的中间值(比如2048)。
零位漂移的原因
零位不是一成不变的。它会漂。为什么会漂?我归纳了三个主要原因。
1. 温度变化
温度对零位的影响最大。半导体器件的PN结电压会随温度变化,电阻值也会变。我记得有一次做工业压力变送器,常温下零位很稳,一到60℃就偏了30个LSB。查了半天,是运放的温漂。
温度引起的零位漂移,通常用ppm/℃来表示。比如一个传感器温漂是±50ppm/℃,环境变化10℃,零位就漂了0.05%。
| 温度范围 | 典型零位漂移 | 影响程度 |
|---|---|---|
| -40℃ ~ 0℃ | ±0.1% ~ ±0.5% FS | 高 |
| 0℃ ~ 50℃ | ±0.05% ~ ±0.2% FS | 中 |
| 50℃ ~ 85℃ | ±0.1% ~ ±0.3% FS | 高 |
2. 老化效应
元器件会老化。电阻值会变,电容会漏电,晶体管的特性会偏移。我见过一个项目,传感器出厂时零位很准,用了半年后偏了2%。客户投诉,我们查了三个月,最后发现是参考电压芯片老化了。
老化引起的漂移是缓慢的、不可逆的。通常以年为单位变化。我个人习惯在产品的生命周期内,至少做一次零位复校。
3. 应力释放
这个很多人会忽略。PCB板在焊接后会有残余应力,安装螺丝拧紧后也有应力。这些应力会通过封装传递到传感器芯片上,改变其机械结构,导致零位偏移。
我曾经遇到过一批加速度计,刚焊好时零位很正,放了一晚上后偏了0.5g。后来发现是PCB板变形了,应力释放导致传感器基座发生了微米级的位移。
避坑指南:我曾经在批量生产中吃过亏——同一批传感器,用不同扭矩的螺丝固定,零位能差出1%。后来我要求所有安装工序必须使用扭矩螺丝刀,扭矩公差控制在±5%以内。
零位校准与满量程校准的区别
很多新手会把零位校准和满量程校准搞混。其实它们干的是两件事。
零位校准,解决的是「没有信号时输出是多少」的问题。满量程校准,解决的是「有最大信号时输出是多少」的问题。两者合在一起,才构成完整的传感器校准。
| 对比项 | 零位校准 | 满量程校准 |
|---|---|---|
| 输入条件 | 零输入(如0压力、0加速度) | 满量程输入(如10MPa、2g) |
| 校准目标 | 消除偏置误差 | 消除增益误差 |
| 校准方法 | 读取零输入时的输出值,作为偏置 | 读取满量程输入时的输出值,计算增益系数 |
| 典型误差 | ±0.1% ~ ±1% FS | ±0.5% ~ ±2% FS |
| 校准频率 | 每次上电或定期 | 出厂时或更换传感器时 |
说白了,零位校准是「找原点」,满量程校准是「定标尺」。原点找不准,后面的测量全是错的。标尺定不准,测量范围就不对。
我个人的习惯是:先做零位校准,再做满量程校准。顺序不能乱。因为零位不准,满量程校准算出来的增益系数也是错的。
注意:零位校准和满量程校准不是一次性的。温度变了、时间久了、应力释放了,都需要重新校准。很多产品出问题,就是因为只做了出厂校准,没有考虑长期漂移。
零位校准的核心逻辑
为了让你更直观地理解零位校准在整个传感器系统中的位置,我画了一张流程图。
这张图把零位校准的流程拆成了五步。从传感器原始信号开始,经过ADC采样,在零输入条件下读取零位值,计算偏置,最后输出校准后的值。每一步都有坑,每一步都需要仔细处理。