热敏电阻如何测温度
热敏电阻的主要应用之一就是测量温度的,下面和大家聊聊,如何使用一颗热敏电阻来测试温度并显示出来呢?
首先是根据你要测量的温度范围来购买相应的热敏电阻。
原厂提供热敏电阻样品,并提供热敏电阻温度和阻值的对应关系。
绘制电路原理图,一般使用AD单片机来读取电压值,然后进过计算算出电阻值。
根据电阻值来查表,由于温度和阻值不是一个线性关系,所以需要把温度和阻值放在一个数组里面。
显示部分一般使用数码管或者是液晶,这个可以根据自己的应用来选择显示屏。
最后就是需要对温度进行去除抖动,由于热敏电阻对温度很敏感,如果对检测的结果不进行任何处理,会出现温度忽高忽低的显示,一般对电阻值多次检测然后取平均值。
热敏电阻温度校准问题的测试和解决
一、问题描述
首先对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以得到符合既定要求的温度数据。