关于热敏电阻温度校准问题的测试和解决
关于热敏电阻温度校准问题的测试和解决
测温偏差较大的问题
一、 问题描述
首先对 1.0 版本温度贴硬件做一个简单描述:该方案的测温方式是使用热敏电阻
NTC
,采集其模拟电压并转换为相应的温度值,原理图如图
1
所示,使用单运放
TLV521
搭建一个桥,起初,对多片焊接完整的温度贴线路板进行温度准确度测试,发现测得温度与实际水温偏差较大且不一致,正偏和负偏均存在,无规律可寻,由于本产品对测温精度的要求为
-0.1~+0.1
°,所以该结果未能满足要求,一开始想过对不同偏差的板子通过一条拟合曲线对温度进行校准,但采集了多组数据后找到一条拟合曲线加进去后仍无法全部满足要求且耗时较长,放弃了此方式校准,故进行了以下分析测试;
图 1
二、 该问题造成的影响
正如问题描述中提到的,本产品对测温精度的要求是 -0.1~+0.1 °,然而对
30+
片的温度测试发现,有相当多的一部分未能满足要求,这里说明一下,当时的具体测试数据未能保留下来,是个疏忽。
三、 对该问题的分析过程
发现这个问题后,由于当时我经验不足,请教了一些人,寻求到一些建议,从以下方面对该问题逐一分析: 1 、热敏电阻精度一致性;
2
、
CPU
的
ADC
采集误差;
3
、外围电路元器件精度;
1、 热敏电阻精度一致性:因热敏电阻本身存在一定的差异,所以率先验证该因素是否为影响测温准确度的主要因素,具体步骤为,在上述 30+ 片温度贴里取三片(附带原热敏电阻),①号温度偏低,②号温度接近水温,③号温度偏高,重新在一相对恒定水浴温度内测得三片裸板的对应温度并记录下来,然后将三片裸板上的热敏电阻一一取下,分别对应
a
、
b
、
c
,然后彼此之间两两交换,并测量后记录结果,发现相比之下①号总是偏低,②号接近水温,③号温度偏高,三轮测试之后可以基本确定,同一批次的热敏电阻导致该温度误差的可能性已经可以被排除;
2、CPU 的
ADC
采集误差:将三片裸板的
TLV521
取下,断开其与
CPU
的连接,将
ADIN
接
GND
,读取采集到的值转化成电压值,三片一致性较好,几乎为
0
,故
ADC
的影响可以忽略;
3、 外围电路元器件精度:首先验证桥上各个电阻阻值大小及精度对温度准确度的影响,选取上述图 1 中的一组
1%
精度电阻值后,先后换了两组,测试数据发现温度并无大的改善,也没变得更差,基本排除电阻值对温度准确度的影响;其次就是对
TLV521
的测试,可以从图
2
中观察到
TLV521
的电气特性第一项
Vos
较大,当前硬件设计中模拟电压约
5mV
对应
0.1
°,所以极有可能是因为这个特性指标造成温度误差较大,接下来的测试就是针对
TLV521
进行,第一步,我先把当前状态下的三片裸板(①号温度偏低,②号温度接近水温,③号温度偏高)温度贴再次测试一下恒温水浴下的温度并一一记录数据,然后将三片板子上的
TLV521
两两互换,保证其他量不变,发现①号的
TLV521
无论换到哪块板子上,测试出的温度始终是低的,且与其在①号上时近似,然后将②号板子上的
TLV521
取下放在另外两块板子上,发现测得温度与②号板子之前的数据近似,如此操作,对下一个验证,结论仍是如此,到此基本可以确定,
TLV521
的影响是造成温度准确度不够的主要因素。
图 2
四、 解决该问题的修改方案
针对以上分析的结果,已经基本确定是 TLV521 的
Vos
电压导致,所以,综合部门总管和嵌入式软件工程师的讨论,有两种解决办法:
a
、换一个性能更好的运放,如
TLV333
;
b
、可以用
ADC
采集热敏电阻阻值在
30K
(对应
37
°)时的电压值与标准电压值作比较,并自动补偿该差值写入
flash
,之后的计算调用该值以达到校准的目的;显然,从成本和当前情况来看,
a
方案是不可行的,所以采取了
b
方案,具体可行性分析还要经过验证;接下来嵌入式软件工程师针对当前现象以及讨论的解决方案进行了固件改进,搭载硬件烧写工具进行了再一次测试,前期选取的样本仍是之前测试的三片板子,烧写过最新修改的固件版本以后,可以读取写入的偏移量,初步计算后发现不同板子的偏移量值均处于
-15.00~+15.00mV
区间范围内,然后放入恒温水浴测试,结果发现,三片板子测得的数据一致性较之前有很大提高,且均处在
37
°±
0.1
°范围内,该结果已初步验证了上述解决方案的可行性,为了确保万无一失,我又进行了多片抽样验证,最终的测试结果与前三片一致,故说明定位的问题及解决方案均正确,该问题算是基本解决,但为了产品升级的需要,且后来发现一个问题,热敏电阻的一致性仅限于每一批次,即同一批次生产出来的热敏电阻我们认为它的曲线一致性较好,但下一次批次就会有所偏差,或偏大或偏小,所以为了更好地校准热敏电阻,嵌入式软件
APP
端计算好的拟合曲线没办法对每一批次修改升级,后期嵌入式软件又加入了对不同批次的热敏电阻进行抽检预测试,即通过抽检确定该批次的一个误差范围,然后将该误差通过嵌入式软件中分配一块区域存储并后期计算时调用,这样就解决了升级却不会修改测温精度的问题,希望这种工程案例能对你们有所启发和帮助。
五、 最终结果
以上描述是解决温度贴 1.0 版本温度不准确的一些重要步骤,当然还有一些中间进行的操作没有具体说明,或者说是因个人能力不够做了一些无用功,没能够快速准确地定位到是
TLV521
导致的,庆幸的是,在部门总管和众人的帮助下,终于找到问题所在并成功解决,这算是我工作中的一个学习和进步。
附:
当然,上述陈述中是前期温度贴 1.0 版本存在的一个较大的问题,后期我们有发现了一些额外的问题:
a
、不同温度状态下,测得温度与实际水温存在偏差,如
25~35
°时偏高超出
0.1
°,
36~39
°时偏低在
0.1
°内,
39~45
°高出实际水温
0.2~0.4
°;
b
、正确使用方式下测得的温度偏低于人体温度,我们欲使其偏高于准确温度
0.1
°,故后面又经过了一轮新的测试;
c
、人体测温时升温速度慢;
针对上述问题 a 、
b
的现象,后面增加了一些测试及验证,因怀疑不同批次的热敏电阻存在
R-T
曲线误差,所以为了解决
a
、
b
问题,我们对
R-T
曲线做了取舍,将原来的拟合范围由
25~45
°缩小至
30~40
°,能够保证在
30~40
°范围内准确度在±
0.1
°内,然后为了使其正偏,即高于实际水温(
0,0.1
)°,而且能够适应不同批次的热敏电阻,嵌入式软件工程师在
flash
中预留一定字节的空间来存储校准系数,且经过首轮验证和再次验证,成功证实了该方案的可行性,只是有些繁琐且必要的前期测试要做,如针对每一批次的热敏电阻抽取一定的样本,经过测试和验证,确定出一条适用于该批次的温度拟合曲线,将其系数写入
flash
以得到符合既定要求的温度数据。