基于SD5020温度传感器的数字温度计∗
2018-03-20王安敏孔令布孟海彦
王安敏 孔令布 孟海彦
(青岛科技大学机电学院 青岛 266061)
1 引言
随着工业不断的发展,生产中需要对温度测量精度的要求越来越高,传统的温度检测大多以热敏电阻为传感器不能满足某些场合对精度的要求。数字温度传感器与传统的热敏电阻有所不同的是把温度传感器集成在芯片中,同时它可以直接将被测温度转化成串行数字信号,抗干扰能力强,测温精度高。SD5020采用TO-92封装形式,具有体积小,使用方便等特点。为了能测量液体温度,把SD5020芯片装入不锈钢保护管中密封,具有耐磨耐碰、防水等功能。
2 硬件电路
单片机选用AT89C52芯片,AT89C52有40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,3个16位可编程定时计数器,2个全双工串行通信口,2个读写口线,完全可以满足系统的对数据采集处理等要求[1],温度传感器选用SD5020。电路原理图如图1所示,SD5020的DIO引脚与单片机的P3.7引脚连接,进行双方通信,采用4.7kΩ的电阻上拉。采用外接电源方式供电通过HT7533降压3.3V给SD5020芯片供电。
图1 基于SD5020数字温度计电路原理图
3 SD5020简介及寄存器的配置
3.1 SD5020简介
SD5020是12位数字温度传感器芯片,分辨率0.0625,SD5020的测量精度可以满足工业现场的使用以及普通家庭对温度精度的要求。SD5020内部集成了温度传感器AD,SD5020进行温度测量时温度传感器产生与温度成正比变换的电压信号,由AD转换成数字信号再经过51单片机处理将温度显示给数码管。SD5020内部有温度结果寄存器、配置寄存器、迟滞阈值寄存器、过温阈值寄存器、CRC寄存器、单次测温命令、从机地址、地址CRC等,可以通过设置相关的寄存器来确定过温报警的温度。SD5020具有单次测温工作模式功率小,可以减少发热提高温度的测量精度。SD5020引脚如图2所示DIO引脚为数据的输入/输出;开漏端口;单总线数据接口。NC引脚为悬空。GND引脚为接地。VDD为电源,电压范围为2.7℃~5.5℃。
图2 SD5020引脚
3.2 SD5020寄存器配置
SD5020相关寄存器的配置如表1所示。通过设置SD5020相关的寄存器,当温度超过设定的最高值将会自动报警。SD5020具有单次测温模式,完成一次测温后进入待机状态。
表1 SD5020寄存器配置
4 软件设计
4.1 误差分析
因为数字温度传感器SD5020的非线性输出和输出误差随着温度变化,所以SD5020输出的温度值包含了实际检测温度值以及SD5020自身对环境温度的漂移量两个部分。不同的SD5020数字温度芯片由于制造工艺中的微小差别对温度测量的精确度离散型较大,但是对同一个SD5020数字温度传感器芯片其输出温度值与环境温度是一个固定的对应关系。SD5020数字温度传感器芯片具有0.0625的分辨率,所以只要用0.05级的温度表对其进行标定,然后通过软件补偿就可以实现SD5020在-20℃~120℃内测量误差在±0.1℃。通过软件算法不但能提高温度的测量精度而且还能保证SD5020数字温度传感器温度输出的一致性。
4.2 线性插值原理
线性差值原理的基本方法是将非线性测温曲线按照一定的要求分成若干段,把相邻的分割点用直线连接起来,用此段直线代替相应的曲线,通过标定温度值和实际测量的温度值从而对曲线进行迁移这样可以完成线性化处理和误差校正。式(1)~(3)为插值公式
x为实际测得温度值,Y为校正以后的温度,xi为标定点的温度值,yi为校正点的温度补偿值,y为在温度测量范围内任一点的温度补偿值,ki为校正点曲线的斜率。
4.3 线性插值软件修正
1)在-20℃~120℃内以10℃为等距间隔选取插值点可以确定-20℃,-10℃,0℃,10℃,20℃,30℃,40℃,50℃,60℃,70℃,80,90℃,100℃,110℃,120℃等15个插值点。
2)用精密仪器对插值点进行标定,并确定各插值点的补偿温度。
3)根据确定的插值点值及其对应的温度补偿值确定相邻的插值点的拟合直线的斜率。并以表格的形式存储在ROM中以供CPU需要时查找。
4)根据实际测的温度值x作为查表基准点,确定所在区间(xx,xx+1),并取出该区间的拟合直线斜率ki基准点温度值xx以及基准点的温度补偿值yi。
5)计算实测温度值x的温度补偿值y=yi+ki(x-xx)。
6)计算测得温度补偿以后的实际温度值Y=x+y。
7)如图3所示分段线性插值的程序流程图。通过实验结果证明采取上述方法可以有效减小每段线性化误差,保证测量精度的要求[2]。
图3 线性插值流程图
4.4 单总线通信
SD5020数字温度芯片与51单片机之间的数据传输必须严格遵守单总线协议,确保数据传输的正确性。使用串行单总线技术可以使该系统设计过程大大简化,系统的体积减小,可靠程度提高,使该产品数字温度计便于携带,更加方便地在工业现场和一般家庭中使用。而且在后续完善产品性能中更加方便更改系统和扩充系统。SD5020数字温度与51单片机之间总线通信主要有以下过程:初始化;读/写寄存器;读取从机地址等[3~4]具体过程如下:
1)初始化:初始化的过程主机拉低总线5ms~8ms后从机检测到主机的信号后等待180μs~500μs后从机在拉低总线100μs~250μs主机检测到从机的响应后表示握手成功,握手之后主机就可以向从机发送数据了。由于一个系统中可能存在多个从机,所以为了避免数据传输混乱,主机在向从机发送数据之前必须进行寻址操作。在该测温系统中由于只有一个从机,此时不用寻址操作直接发送跳过地址命令69H。
2)读寄存器:由于该测温系统只有一个从机主机,可以不进行寻址操作直接发送跳过地址命令69H进行读写操作,发送读命令24H,之后主机开始接受从机发送的数据。直到数据全部发送完毕。
3)写寄存器:主机向从机发送写命令36H,然后主机就要发送写入从机寄存器的据,直到全部数据发送完毕。
4)读从机地址:主机首先要发送读从机的地址命令AAH,然后主机就可以接受从机发送的地址数据。SD5020数字温度芯片与单片机进行通信时必须严格遵守单总线通信协议,以保证数据传输的正确性与准确性。通信流程如图4所示。
图4 单片机通信流程
4.5 单片机程序流程图
软件设计是该测温装置进行温度精确测量的保证,其主要任务是配置SD5020数字温度芯片,在初始化之后设置SD5020数字温度传感器芯片进入单次测温模式,可以减少能耗,降低发热,提高温度测量的过动态扫描的方式将SD5020数字温度传感器芯显示在数码管上。根据以上分析得到如图5所示单片机主要程序流程图。
图5 单片机程序流程图
5 测温效果分析
在完成硬软件设计的基础上,为了检测该测温装置在实际使用时测量的误差以及该装置在实际应用中测量温度的稳定性。所以用该测温装置与高精密的测温装置在相同环境,相同温度下进行温度测量以验证在实际应用的测温效果。步骤如下:
1)首先在该测温装置允许测量温度范围-10℃~120℃内设置14个温度测量点。
2)把精密测温装置和基于SD5020的数字温度计放在环境相同的封闭恒温槽容器内,通过串口把测得的温度值显示在LCD12864液晶显示屏上。
3)每十分钟观测一次温度值,并将观测的温度数据记录下来。各个温度点的测量值,数据记录见表2。通过对比高精密测温装置与基于SD5020数字温度计,实际测得温度数据表明该测温装置测温稳定性能好,测温精度达到一般家庭和工业现场使用的要求。同时利用线性插值的方法,可以减小每段的线性化误差,在整个的测温范围内具有±0.1℃测量误差,保证了测温的准确性。
表2 测量数据
6 结语
传统的温度检测以热敏电阻为传感器,测量温度准确性和可靠性不高。热敏电阻容易受温度影响,当温度发生变化的热敏电阻测量温度准确性将大大降低。该数字温度计采用SD5020芯片,SD5020内部集成了A/D转换,可以将测得的与温度成正比的电压信号直接转换成数字信号,增加了测量温度的准确性。通过对本系统的理论分析及实际测试,与更高精度的测量仪器进行对比,具有结构简单,测温精度高,稳定性好等优点,可广泛在工业现场和普通家庭使用,若想进一步提高该装置的测温精度,可在分段线性插值的快速定位和直线方程的拟合上做进一步的研究。
[1]广州周立功单片机发展有限公司.AT89C52微控器数据手册[EB/OL].(2008-04-16)[2009-06-17].http://www.zlgmcu.com/LUMINARY/Stellaris/lm3s615/
LM3S615_ds_cn.pdf.Guangzhou ZLG MCU Development Co.,Ltd.AT89C52 MicrocontrollerData Sheet[EB/OL]. (2008-04-16)[2009-06-17].http://www.zlgmcu.com/LUMINARY/Stel⁃laris/lm3s615/LM3S615_ds_cn.pdf.
[2]刘晓阳,周炎涛.一线总线结构的DS18B20的序列号搜索算法研究[J].计算技术与自动化,2010,29(1):38-42.
LIU Xiaoyang,ZHOU Yantao.DS18B20 line bus struc⁃ture,the serial number of the search algorithm[J].Com⁃puting Technology and Automation,2010,29(1):38-42.
[3]李钢,赵彦峰.1-Wire总线数字温度传感器DSl8820原理及应用[J].现代电子技术,2005(21):77-79.
LI Gang,ZHAO Yanfeng.1-Wire bus digital temperature sensor DSl8820 theory and application[J].Modern Elec⁃tronic Technology,2005(21):77-79.
[4]潘理刚.一种高精度数据采集系统的电路设计与实现[J].中国科技信息,2009(15):151-152.
PAN Ligang.Circuit of high precision data acquisition sys⁃tem design and lmplementation[J].China Science and Technology Information,2009(15):151-152.
[5]罗文广.单总线数字温度传感器的自动识别技术[J].电子产品世界,2002(16):69-70.
LUO Wenguang.Single-bus digital temperature sensor of automatic identification technology[J].Electronic World,2002(16):69-70.
[6]吴越,方方,周伟,等.基于SHT75的氡室温湿度测控系统[J].核电子学与探测技术,2008,28(4):783-785.
WU Yue,FANG Fang,ZHOU Wei,et al.The temperature&humidity measurement and control system for radon chamber based on SHT75[J].NuclearElectronicsDetec⁃tionTechnology,2008,28(4):783-785.
[7]王静涛,张立军.液晶显示控制器T6963C与C8051F的接口及编程[J].仪表技术,2009(2):9-13.
WANG Jingtao,ZHANG Lijun.Interface circuit and pro⁃gramming for LCD controller T6963C and C8051F[J].In⁃strumentation Technology,2009(2):9-13.
[8] Carreira J,Madeira H,Silva J G.Xception:A tech⁃nique for the experimental evaluation of dependability in modern computers[J].IEEE Transactions on Software En⁃gineering,1998,24(2):125-136.
[9]赵跃齐,马瑞卿,梁贵毅,等.基于单片机C8051F的智能温控系统的设计与实现[J].计算机测量与控制,2009,17(3):490-491,514.
ZHAO Yueqi,MA Ruiqing,LIANG Guiyi,et al.Design and realization of intelligent temperature control system based on C8051F microcontrollers[J].Computer Measure⁃ment&Control,2009,17(3):490-491,514.
[10]武刚.基于AT89C52单片机的温度巡回检测系统设计[J].国外电子元器件,2008(9):30-32.
WU Gang.Design of temperature detection system based on AT89S52[J].International Electronic Elements,2008(9):30-32.
[11]曹玉珍,陈敏.高速A/D转换器AD7654与单片机接口电路设计[J].国外电子元器件,2006(10):45-47.
CAO Yuzhen,CHEN Min.Design of interface circuit for high speed A/D converter AD7654 and single-chipmi⁃crcomputer[J].International Electronic Elements,2006(10):45-47.