1DS18B20的性能特点
DS18B20在-10℃~+85℃范围内.可确保测量误差不超过±0.5℃;在-55℃~+125℃范围内,其测量误差不超过±2℃。供电电压范围为3.0 V~5.5 V。
DS18B20内置64位经过激光修正的ROM.出厂前作为唯一的产品序号存入ROM中。构成大型温控系统时,允许在单总线上挂接多个DS18B20,理论上可挂接264个。
DS18B20可分别设定各路温度的上、下限并写入RAM中.并能迅速识别出温度越限的器件。
采用Dallas公司独特的“单总线(1-Wire)”专有技术,通过串行口(I/O)直接输出所测温度值。
内含寄生电源。既可由单总线供电,亦可采用外部5 V电源供电。
2系统简介
KJ05温度传感器系统包括:单总线DS18B20温度传感器。ATmega8单片机及其接口电路构成的温度数据采集模块;由数码管,键盘和遥控电路构成友好的人机界面;报警灯和报警蜂鸣器电路,以及标准的4 mA~20 mA电流输出模块。其结构框图如图1所示。
图1 系统结构框图
3利用测温原理降低非线性误差
首先.由于DS18B20的分辨率为9~12位可编程,为了得到较高精度的温度,可采用l2位模式,理论上最小温度分辨率为0.0625℃ .但由于受各种因素影响,DS18B20测量温度的分辨率真实值只有0.5℃,该系统设计巧妙结合DS18B20的内部结构.进一步提高其分辨率。DS18B20的内部结构框图如图2所示。
图2 DSI8B20的内部结构框图
图2中,高温度系数振荡器确定一个门控周期,然后在此门控周期内通过对低温度系数振荡器的时钟个数进行计数便可测量温度。在计数器和温度寄存器内均预置了对应于-55℃的初值,如果在门控周期结束前,计数器的值没有减到零,就表明当前测量温度高于-55℃,温度寄存器中的值要增加。同时,斜率累加器再给计数器预置初值,计数器重新计数到零.若门控周期没有计数,则重复上述过程。
利用下式可计算出高分辨率的温度值:
T=temp_read-0.25+(count-per_degree-count_remain)/count_per_degree
其中,temp_read:DS18B20中读出的温度读数;count_per_degree:每摄氏度的计数值;count remain:门控周期结束时计数器中的余数。
为了提高温度分辨率,必须从DS18B20中读出count_per_degree和count_remain.这两个值存储在便笺RAM的第6、7个字节中。从DS18B20中读出count_per_degree和count_remain的C语言程序如下:
void readtm
{unsigned char tmp;
reset(); /*复位DS18B20*/
sendcmd();/*发读DS18B20 RAM命令*/
templ=read_tmp();/*读温度低字节*/
temph=read_tmp(); / 读温度高字节 /
tmp=read_tmp();
tmp=read_tmp();
tmp=read_tmp();
Count_remain=read_tmp();
Count_per_degree=read_tmp();
}
4采用最小二乘估计降低线性误差
通过以上方法理论上可以得到0.1℃范围内的误差,但由于受各种因数的影响.往往误差范围能达到0.5℃。通过分析.得知误差主要来源于芯片内部半导体热噪声。其类型为线性误差,并随温度的上升而误差增大。为了提高估计精度,对于不同的温度区间应采用不同的修正系数.设该系统的线性误差模型如下:
T=KTγ+C
其中,T为测量值,Tγ为真实值(采用更高精度MS6506测量而得).K为随温度变化的线性误差修正系数,C为误差补偿参数。
建立了DS18B20的误差模型后,通过试验来估计误差模型的参数。设被估计量X是n维随机向量,为了得到其估计量.对它进行k次线性观测得到:
z=HiX+V,(i=1,2,…k) (2)
该式可写成:
其中,Z是m维观测向量。Hi是mxn观测矩阵是均值为零的m维观测误差向量。当km>n时,由于方程的数目多于未知数的数目,因此可以根据Z来估计X。如果要求选择X的一个估计,使下列性能指标达到极小.那么.就称这个估计为X的最小二乘估计.上述最小二乘估计只是一个确定性的求极小值问题。因此可以通过使J(X)对X的梯度等于零的方法来实现。
则当(HTH)为非奇异阵时,可得:
上式就是由观测数据Z求的最小二乘估计的表示式。其中XTS(Z)是观测数据的Z的线性函数。
某次实验所得的数据如表1所列,取这五次DS18B20修正前的数据为Z向量,高精度温度计(MS6506)的数据为H向量,被估计的温度为X向量:
表1 温度采集实验数据表
DS18B20修正前 高精度温度计 DS18B20修正后
25.0625 25.54 25.5
28.125 28.5 28.5
31.187 31.52 31.4375
34.9375 35 35.125
37.875 38 37.9375
采用最小二乘法的最优估计公式(4)计算得出K=1.0408.C=-1.5256,该修正系数是在25℃~40℃温度下得到的。其他温度范围内也可采用相同方法获得修正系数。根据计算得到的修正系数编写相应的单片机程序,就可得到误差在0.1℃以内的温度精度。基于以上的理论基础,可以设计出高精度、低性价比的温度传感器。
6 设计中遇到的问题和总结
实验中,如果连接DS18B20传感器的普通电缆长度超过50 m,采集到的温度将会发生错误,若是采用双绞线带屏蔽电缆,通讯距离可以达到150 m,通过分析.可知是由于线路的分布电容使信号波形失真,在实际井下应用中,所传输的距离更近,同时屏蔽层必须接地。
通过以上方法在-10℃~+85℃之间精度提高了最少3倍。而在温度超过+85℃和低于-10℃时误差比较大,因为DS18B20器件的温漂比较大。