开篇:润墨网以专业的文秘视角,为您筛选了一篇DS18S20温度传感器的高精度测温及校正算法范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!
摘  ;要: 文献[1]中给出一种ds18s20数字式温度传感器测温修正算法,但这种算法还不能充分利用DS18S20寄存器所给出的数据,最大限度地反映温度传感器的测量数值。其次是没有考虑算法给出的温度的校准问题,这里提出一种精确的测温算法,可以无误差地表示传感器给出的温度值,同时还研究了传感器输出值的校准问题,给出了基于最小二乘法的校准公式。在仿真过程中,以高精度的测温仪器为标准,给出了算法的校正公式,结果表明校正公式的误差优于0.01 ℃。
关键词: DS18S20; 测温; 传感器; 校正
中图分类号: TN62?34; TK311  ;  ;  ;  ;  ;  ;  ;  ;文献标识码: A  ;  ;  ;  ;  ;  ;  ;  ;  ;  ;  ; 文章编号: 1004?373X(2014)23?0097?03
Algorithm of high?precision temperature measurement
and calibration for temperature sensor DS18S20
AN Kai
(Shandong Aerospace Electro?technology Institute, Yantai 264670, China)
Abstract: An algorithm on temperature measurement calibration for the digital temperature sensor DS18S20 is proposed in Reference [1], but it can′t make full use of the data given by DS18S20 registers to represent the temperature value from the sensor exactly. In addition, the algorithm does not pay attention to the calibration of temperature measurement. A accurate algorithm for temperature measurement is presented in this paper, which can derive the temperature values from the DS18S20 sensor. The calibration of temperature output value of DS18S20 is investigated in this paper. The calibration expression based on the least square method is offered. By dint of the measuring instrument with high precision, the calibration expression was developed. The simuliation results indicate that the calibration expression can greatly improve the measurement precision, and its measurement error is less than 0.01℃.
Keywords: DS18S20; temperature measurement; sensor; callibration
0  ;引  ;言
目前,测量温度都是采用间接测量的方法,即利用温度传感器的性能随温度而变化的特性,通过测量该性能参数得到被测温度的大小[2]。用以测量温度的特性有材料的热膨胀、电阻、热电动势、导磁率、介电系数、光学特性、弹性等[3]。温度传感器的选用是高精度测温的重要环节。在温度测量时由于被测对象常常远离测试设备,传统的模拟温度传感器与测试设备之间的导线的电阻值随环境温度产生变化,而流过传感器的工作电流在导线电阻上产生的电压将迭加在传感器的输出信号上,成为无法消除的原始误差,这种误差会严重制约温度测量精度[4?7]。此外,多点测量切换和放大电路零点漂移也将严重影响温度测量精度[8]。由于模拟温度传感器存在上述不足,新型温度传感器的研究与应用正从模拟式向数字式方向发展[9?10]。数字温度传感器不必进行误差补偿,并适配各种微控制器,具有较高的温度分辨率。
1  ;DS18S20温度传感器特性
DS18S20是美国DALLAS半导体公司生产的可组网数字式温度传感器,在其内部使用了片上(ON?B0ARD)专利技术。全部传感元件及转换电路集成在形如一只三极管的集成电路内。与其他温度传感器相比,DS18S20具有以下特性:
(1) 独特的单线接口方式,DS18S20在与微处理器连接时仅需要一条口线即可实现微处理器与DS18S20的双向通信。
(2) DS18S20支持多点组网功能,多个DS18S20可以并联在惟一的三线上,实现多点测温。
(3) DS18S20在使用中不需要任何元件。
(4) 温范围为-55~+125 ℃,固有测温分辨率为0.5 ℃。
(5) 测量结果以9位数字量方式串行传送。
由于DS18S20的上述优点,因此被广泛应用于各种测温场合。然而在正常测温情况下,DS18S20的测温分辨率仅为0.5 ℃,对许多测温精度要求较高场合DS18S20仍显精度不足。为此文献[1]中给出一种DS18S20测温的修正算法。首先用DS18S20提供的读暂存寄存器指令(BEH)读出以0.5 ℃为分辨率的温度测量结果,然后切去测量结果中的最低有效位(LSB),得到所测实际温度整数部分[T整数,]然后再用BEH指令读取计数器1的计数剩余值[M剩余]和每度计数值[M每度,]考虑到DS18S20测量温度的整数部分以0.25 ℃,0.75 ℃为进位界限的关系,实际温度[T实际]可用下式计算得到:
[T实际=(T整数-0.25 ℃)+(M每度-M剩余)M每度] (1)
式中:[T整数]是所测实际温度整数部分;[M剩余]是计数器1的计数剩余值;[M每度]是每度计数值。这些值都可从DS18S20的内部暂存寄存器中获得。但是,这个公式存在很大问题。例如,实际温度为25.18 ℃,不妨设[M每度=]100,则[M剩余=82,]根据式(1)算出来的[T实际=]24.93 ℃,误差甚至大于原有输出25.0 ℃。
针对这个问题,本文提出了改进公式,可以消除上述公式的计算误差。此外,本文还提出了基于最小二乘法的温度修正公式,用以消除计算温度与实际温度之间的误差。
2  ;高精度测温算法
文献[1]中给出的测温算法有两个缺陷,其一是不能准确反映传感器所给出的温度;其二是不能消除传感器本身存在输出频率随时间漂移所引起的测量误差。高精度测温算法旨在消除计算误差,准确给出温度传感器所反映的温度。根据DS18S20内部暂存寄存器的工作原理,高精度测温算法可表示为:
当LSB=0时:
[T实际=T输出+(M每度-M剩余)M每度] (2)
当LSB=1时:
[T实际=(T输出-0.5)+(M每度-M剩余)M每度] (3)
式中:[T输出]为测量结束后DS18S20串行输出的符号位以外的变换结果;LSB为温度结果字符串的最低位。
假定实际温度为25.18 ℃,仍然不妨假定[M每度=]100,则[M剩余=82,]并且LSB=0,选择式(2),则:
[T实际=25.0+(100-82)100=25.18 ℃]
也就是说,分辨率提升到0.01 ℃。
再假定实际温度为25.88 ℃,仍然不妨假定[M每度=]100,则[M剩余=12,]并且LSB=1,选择式(3),则:
[T实际=(25.5-0.5)+(100-12)100=25.88 ℃]
因此这种测温算法可以彻底消除温度传感器反映温度与计算温度之间的误差。
3  ;测温公式的校正
DS18S20温度传感器的测温原理是建立在晶振频率相对变化率与温度存在线性关系基础之上。但从晶体的频率温度特性曲线图(见图1)可以看出晶振频相对变化率与温度并不具有线性关系,只不过是在某一段温度区间内“十分”接近线性关系而已。因此为了更准确地测量出实际温度,还需要在上述高精度测温算法的基础上进行校正。
<;E:\2014年23期\2014年23期\Image\25t1.tif>;
图1 频率温度特性曲线图
假定[Y(1),Y(2),…,Y(n)]为不同时刻由标准测温仪器测得的某一物体的温度值,而[T(1),T(2),…,T(n)]是在相应时刻由DS18S20温度传感器利用上述算法计算得到的温度值。由晶体的频率温度特性曲线可以发现,这线曲线与三次抛物线比较接近,因此可以采用三次抛物线模型表示实际温度,即:
[Y(t)=c0+c1T(t)+c2T2(t)+c3T3(t)]  ; (4)
式中:[c0,c1,c2,c3]为待定系数。
由此可以得到方程组:
[Y(1)=c0+c1T(1)+c2T2(1)+c3T3(1)Y(2)=c0+c1T(2)+c2T2(2)+c3T3(2)  ;  ;  ;  ;  ;  ;  ;?Y(n)=c0+c1T(n)+c2T2(n)+c3T3(n)]
或:
[Y(1)Y(2)?Y(n)=1T(1)T2(1)T3(1)1T(2)T2(2)T3(2)????1T(n)T2(n)T3(n)c0c1c2c3]
记:
[Y=Y(1)Y(2)?Y(n),C=c0c1c2c3,T=1T(1)T2(1)T3(1)1T(2)T2(2)T3(2)????1T(n)T2(n)T3(n)]
则有:
[Y=TC]
其最小二乘解为:
[C=(TTT)-1TTY]
将求出的解代入式(4)中就得到高精度测温的校正公式:
[Y(t)=c0+c1T(t)+c2T2(t)+c3T3(t)]
4  ;仿  ;真
在恒温箱内利用CTC?1200A温度校准仪和DS18S20温度传感器同时测温,后者采用本文中给出的高精度测温算法,测得的结果如表1所示。
由表1利用校正公式可求出:
[C=-0.222 21.023 0-0.000 80.000 008]
因此校正后的测温公式为:
[Y=-0.222 2+1.023 0T-0.000 8T2+0.000 008T3]
利用这个公式得:
当温度[T=79]时:
[Y=79.996 2]
当温度[T=-18.990 6]时:
[Y=-19.990 7]
测温精度优于0.01 ℃。
5  ;结  ;论
仿真结果表明,通过采用高精度测温算法和校正公式可以将测温精度从原来的0.5 ℃提高到0.01 ℃。需要指出的是,由于DS18S20温度传感器本身的差异,校正公式只能针对具体的器件通过实验给出,但一经校准,公式就可以确定。另外,由于DS18S20温度传感器比较便宜,利用廉价的器件进行高精度测温,可以有效地降低高精度测温系统的成本,具有广泛的社会价值和经济价值。
表1 CTC?1200A温度校准仪和DS18S20温度
传感器测温结果比较表
[[Y]\&;[T]\&;[Y]\&;[T]\&;[Y]\&;[T]\&;-20\&;-18.990 6\&;15\&;15.027 0\&;50\&;49.936 0\&;-15\&;-14.271 0\&;20\&;20.008 0\&;55\&;54.875 0\&;-10\&;-9.488 0\&;25\&;25.001 0\&;60\&;59.784 0\&;-5\&;-4.657 0\&;30\&;30.000 0\&;65\&;64.657 0\&;0\&;0.216 0\&;35\&;34.999 0\&;70\&;69.488 0\&;5\&;5.125 0\&;40\&;39.992 0\&;75\&;74.271 0\&;10\&;10.064 0\&;45\&;44.973 0\&;80\&;79.000 0\&;]
参考文献
[1] Dallas Semiconductor. DS18S20 data books [M]. USA: Dallas Semiconductor, 1995.
[2] 曹玉璋.传热学[M].北京:北京航空航天大学出版社,2001.
[3] 罗文广,兰红莉,陆子杰.基于单总线的多点温度测量技术[J].传感器技术,2002,21(3):47?50.
[4] 闵桂荣,郭舜.航天器热控制[M].北京:科学出版社,1998.
[5] 楮桂柏,马世俊.宇航技术概论[M].北京:航空工业出版社,2002.
[6] 张恩勤.模糊控制与PID控制方法的比较[J].上海交通大学学报,1999,33(5):501?503.
[7] 张开逊.远程温度测量的新原理[J].仪器仪表学报,1998,19(2):113?117.
[8] 高宪文,蔡晓燕.基于PID控制的遗传神经网络在焦炉温度控制中的应用研究[J].信息与控制,2005,34(6):709?713.
[9] 赵肇田,许伦辉.基于模糊推理的人工气候室温度PID控制器参数的整定[J].现代电子技术,2006,29(4):13?15.
[10] 黄继昌,徐巧鱼,张海贵,等.传感器工作原理及应用实例[M].北京:人民邮电出版社,1998.