传感器

本页目录

设备读到了 I²C 数据,数值也在变化,却不一定测到了想要的物理量。贴在发热 PCB 上的温度计可能主要测到板温,运动中的加速度计不能只按重力算倾角,VOC 算法输出的 CO₂ 等效值也不是直接测得的 CO₂ 浓度。理解传感器要沿物理对象、敏感元件、采样和结果解释逐层追踪。

物理量 → 敏感元件热耦合、安装、方向调理 / 采样增益、带宽、ADC原始数据 / 时间戳字节序、比例、状态校准、补偿与估计带单位的结果 + 有效性读到寄存器只是链路中间一步:物理安装与解释模型同样重要数字输出减少外部模拟电路,不会自动消除安装误差、温漂、采样失真或模型偏差。
问题查阅入口先区分什么
规格写 16 bit,是否就精确误差与分辨率最小码步进、噪声、偏差
NTC 算温度方向反了分压与反算上臂、下臂及温度单位
数据平滑但运动不对采样与滤波混叠、延迟与真实变化
IMU 积分为何漂移惯性测量与融合角速度、比力、可观测方向
环境数值是否可信安装与模型直接测量、补偿、推算
ID 正常但数据异常完整读取流程配置、转换完成、原子读取与标定

分辨率、重复性和准确度分别回答不同问题

理想 12 bit ADC 在 3.3 V 范围内的码宽约为 3.3/4096 = 0.806 mV。这只是量化刻度,实际还包含偏置、增益、非线性、参考误差与噪声。把数字显示到 0.01°C 不意味着测量误差小于 0.01°C;多次结果相近说明重复性好,也可能整体偏高。

误差预算要区分确定性偏差和随机不确定度。若两个误差只有最大界限,保守总界限可相加;只有在具有相应统计定义且近似独立时,才适合用平方和开方。不能把数据表上的两个“±最大误差”直接 RSS 后当作有保证的最坏误差。

量程也有代价:更大范围通常使每 LSB 对应更多物理量,但噪声、过载恢复与带宽不必按同一比例变化。应先确认峰值不会饱和,再在目标频带和温度下评价有效结果。

NTC:从真实分压方向推回电阻

VEX = 3.3 VR固定10 kΩNTCR25 = 10 kΩADC 节点 VV = VEX × RNTC / (R固定 + RNTC)RNTC = R固定 × V / (VEX − V)开路趋近 VEX;短路趋近 0 VNTC 在分压下臂:温度升高时,ADC 节点电压降低ADC 若使用同源参考,可作比率测量;异常判定仍要考虑引脚漏电、保护及故障位置。

图中固定电阻在上、NTC 在下,因此 V = VEX·RNTC/(R固定+RNTC),反解得到 RNTC = R固定·V/(VEX−V)。将上下电阻互换,公式也随之改变。NTC 温度升高时阻值下降,所以本图电压随温度升高而降低;这是检查公式方向的简单依据。

在适用温区内,B 参数近似可写成 1/T = 1/T25 + ln(R/R25)/B,T 与 T25 使用 K,最后才减 273.15 转为摄氏度。假设 R25=10 kΩ、B=3950 K,25°C 时节点为 1.65 V;50°C 时阻值约 3.588 kΩ,节点约 0.871 V。这个参数组只是算例,不代表所有 10 kΩ NTC。

若分压激励与 ADC 参考来自同一电源,使用归一化读数 q≈V/VEX,可写 RNTC=R固定·q/(1−q),理想情况下消去激励幅值误差。它不能消除电阻容差、ADC 偏置、参考路径噪声和 NTC 模型误差。ADI:比率式 NTC 接口

电流还会造成自热:25°C 时两个 10 kΩ 电阻串在 3.3 V 下,NTC 功耗约 0.272 mW。温升需结合实际介质中的耗散系数计算,不能从“功耗很小”断言温度误差可忽略。提高电阻或间歇供电可以减小功耗,但也会增加源阻抗或等待稳定的需求。更宽温区可按厂家曲线、查表或 Steinhart–Hart 模型,不能保证单个 B 值覆盖所有温度。ADI:热敏电阻测量设计

节点逼近 0 或电源时,应先判断短路、开路和超量程,再进入反算,避免分母趋零或得到看似有效的极端温度。具体故障响应依断点位置、漏电和保护网络而定。

上下臂换了,温度曲线会反过来

同一温度切换上下臂,q会变为1−q,而正确反算仍回到同一个温度。观察高温和低温端的斜率变化:相同ADC码宽并不对应全温区相同的温度分辨率。比率式消去激励电压,也没有消去元件和模型误差。

正在呈现知识画面
上下臂换了,温度曲线会反过来

电阻随温度下降,输出方向却取决于NTC位于上臂还是下臂;反算必须使用对应连接。

温度测量:传感器温度怎样代表被测对象

NTC、RTD 和数字温度计都需要热耦合;响应速度由封装、安装、介质和热容量共同决定。高精度铂电阻还需考虑激励自热、两线引线电阻及三/四线补偿,不能仅凭“PT100”就保证 ±0.1°C。数字器件省去部分模拟设计,并不消除封装和板上热源的影响。

DS18B20 支持可选分辨率与多点 1-Wire,12 bit 转换最长时间可达 750 ms;分辨率设置、供电模式和总线负载会影响系统行为。寄生供电时转换阶段可能需要强上拉,不能只接一根数据线便忽略供电与返回路径。ADI DS18B20 数据表

热电偶产生与两端温度相关的热电势,不是单个焊点输出绝对温度。冷端补偿测量接线端温度,转换成该类型相对于参考温度的等效热电势,与测得电压合成后再反查热端温度;由于关系非线性,不能在所有温区简单把两个温度相加。补偿传感器应代表实际接线端温度,而非附近芯片的温度。ADI:冷端补偿

模拟与数字采样都需要时间模型

SAR ADC 的采样电容需要经信号源充电。简化为单极点模型,全量程阶跃要收敛到半个 N bit LSB,约需 t ≥ (N+1)ln2·R源C采样;12 bit 约为 9 个时间常数。假设 10 kΩ 和 10 pF,仅这一部分便约 0.90 μs,实际还要计开关阻抗和驱动器稳定过程。ADI:源阻抗与采样建立时间

采样率必须与模拟带宽及抗混叠滤波配合。例如 1 ksample/s 采样 900 Hz 正弦,会在离散数据中与某个 100 Hz 正弦无法区分;采样后移动平均无法恢复原本的 900 Hz 身份。数字传感器内部已有采样/滤波,也仍需核对输出数据率、带宽与滤波配置。

平均可以降低满足条件的随机噪声,但会增加延迟。长度 N 的简单移动平均在其线性相位模型下有 (N−1)/2 个采样间隔群延迟,1 ksample/s、N=21 时约 10 ms。它不能消除固定偏置,相关噪声也不一定按 1/√N 下降;控制系统应把延迟纳入闭环预算。

数字接口速度只是传输能力,不是测量更新率。UART 本身不规定长距离物理层,I²C 功耗也不固定低于 SPI。选接口要结合线缆电气、有效数据量、地址或片选、时间戳和 FIFO 深度,具体电平见 接口物理层。

同一组采样点,可能来自两条不同曲线

默认900 Hz与100 Hz曲线在每一个采样点相交,点之间却完全不同。把输入设成1000 Hz,采样甚至全部变成同一个值。使用余弦是为了在图中保持相位对应;这并不意味着所有混叠都无需处理相位。

正在呈现知识画面
同一组采样点,可能来自两条不同曲线

离散采样点可以完全相同;采样之后的算法无法仅凭这些点判断原始频率。

IMU:各观测量怎样约束姿态

加速度计测得比力,可用 f = Rᵀ(a−g) 表示一类常用坐标约定:R 从机体映射到世界,a 是平动加速度,g 是重力向量。静止支撑时模长约为 1g,哪个轴为正或负取决于安装与坐标定义;自由落体理想输出接近零。利用它估倾角,依赖平动加速度相对重力可忽略等条件。ADI:加速度计倾角测量

陀螺仪提供角速度,积分可短时追踪姿态变化,但零偏会累计。恒定 0.1°/s 未校正偏置在 60 s 后可造成约 6° 角度误差;三维运动还需按旋转关系更新四元数或旋转矩阵,不能把三个欧拉角各自随意相加。

观测能约束什么主要限制
陀螺角速度短时旋转变化零偏、温漂、噪声积分
加速度比力准静态时的重力方向平动、振动,不能独自确定绕重力轴的偏航
磁场向量合适条件下提供航向参考硬铁/软铁、附近电流、当地磁场与倾角

融合算法利用互补信息并估计误差,不能承诺“九轴就有无漂移绝对姿态”。磁场受扰时强行信任磁力计,可能把航向拉向错误方向;持续加速也可能被误解释为倾斜。需要时间同步、安装轴变换、有效性判断和合理的噪声/偏置模型,而非只更换算法名称。

静止陀螺均值可估计该条件下的零偏;加速度计却不能把三个静止轴读数全部减成零,否则会把重力观测一起删掉。多姿态标定用于区分偏置、比例及轴间误差,温度变化仍可能需要额外补偿。

环境传感器:输出单位不等于全部解释

湿度与温度关联,壳体通风、热源、污染和凝露都会改变测量。芯片校准过,并不表示装进密闭发热外壳后仍能代表室内空气;环境温湿度安装应围绕热隔离与气体交换设计。Sensirion:温湿度设计指南

气压换算高度需要参考气压与大气模型。近海平面、假设密度 1.225 kg/m³,Δh≈−Δp/(ρg),100 Pa 约对应 8.32 m;这只是局部近似,天气造成的压力变化也会被解释成高度变化。某个气压精度不能在所有海拔下直接换成固定高度精度。类似 BME280 的原始数据还需按出厂补偿参数转换,不能把 ADC 寄存器直接当作 Pa 或 %RH。Bosch BME280 数据表

照度 lux 含有人眼光谱加权含义,外壳透光率、光源光谱和入射角都会影响系统结果;输出 lux 的数字传感器也可能需要整机修正。颗粒物光散射测量则依赖粒径、折射率和湿度等条件,“采用激光”不能直接推出质量浓度无误差。

VOC 器件计算出的 CO₂eq/eCO₂ 与直接针对 CO₂ 吸收等物理特性的测量不同。例如 SGP30 明确输出经算法计算的 TVOC 与 CO₂ 等效信号,不能把它当成真实 CO₂ 浓度的通用替代品,也不应拿单个气体指标概括全部空气质量。Sensirion SGP30 数据表

从通信通到结果可信的读取流程

读 ID 只证明一次通信取得了预期识别值,还需要配置并读回量程、输出率和工作模式,等待转换完成,核对状态/CRC,并按规定的连读或锁存机制取得同一帧多字节数据。全零或 0xFF 可能是总线、电源、未转换、配置或真实数据,不能仅凭一种位型确定故障。

解析时明确有符号格式、字节序、单位比例和时间戳,检查溢出、FIFO 丢样与数据陈旧。滤波前保存原始数据和配置,校准则使用已知条件及合适参考,不能默认普通冰水和当地沸水精确构成所有温度计的 0/100°C 校准点。最后把参考误差、安装和重复性一起纳入结果可信范围。

复算模型

from math import exp, log, isclose, sin, pi
r25, beta, t25 = 10000, 3950, 298.15
r50 = r25*exp(beta*(1/323.15-1/t25))
v50 = 3.3*r50/(10000+r50)
r_back = 10000*v50/(3.3-v50)
t_back = 1/(1/t25+log(r_back/r25)/beta)-273.15
assert isclose(t_back, 50)
assert 3588 < r50 < 3589 and 0.871 < v50 < 0.872
assert isclose((3.3/20000)**2*10000*1000, 0.27225)
assert 0.9 < 13*log(2)*10000*10e-12*1e6 < 0.91
assert isclose((21-1)/2/1000, 0.010)
assert isclose(0.1*60, 6)
assert 8.32 < 100/(1.225*9.80665) < 8.33
for n in range(20):
    assert isclose(sin(2*pi*900*n/1000), -sin(2*pi*100*n/1000), abs_tol=1e-12)
print('NTC 反算、自热、建立时间、混叠、延迟和局部气压高度模型通过')

上述模型用于区分传感关系、采样和误差来源;实际精度还需用可追溯的参考量校准。

继续查阅