基于DS18B20的数字温度计设计与实现

发布时间:2022-05-26 18:40:08   来源:作文大全    点击:   
字号:

摘 要:传统温度传感器系统多采用放大、调理、A/D转换等形式将温度信号转换成数字信号传递至计算机进行处理,不仅处理电路复杂,占用计算机资源多,而且無法保证其可靠性。DS18B20不仅电路简单,而且成本低,并且具有较好的扩展性,便于组网及多点测量。该研究探讨一种基于DS18B20的数字温度计。

关键词:DS18B20 数字温度计 设计

中图分类号:TH811 文献标识码:A 文章编号:1672-3791(2017)03(b)-0117-02

1 DS18B20的特点及性能

传统的温度测量系统通常采用热电偶或热电阻测量温度,而热电阻必须在一个良好的恒流源中才能保证温度测量的准确性;而热电偶发送的信号为模拟信号,必须经过A/D转换才能将其发送至CPU进行相应处理,且热电偶信号仅有十几个mA,由于过于微弱在A/D转换之前需要进行增益放大,因此应用热电偶或热电阻构成的温度测量系统比较复杂。DS18B20是一种单线数字温度传感器芯片,由美国Dallas公司生产,与传统的温度传感器不同,DS18B20可将测得的温度信号直接转换为可供单片机处理的串行数字信号,因此可获得更高的工作效率。通过编程,可通过DS18B20实现9~12位的温度读数,其温度测量范围在-55 ℃~+125 ℃,其中- 10 ℃~+ 85 ℃其测温准确度误差可控制在0.5 ℃。相比其他温度测量元件,DS18B20的小体积、低功耗、强大的抗干扰能力、易连接微处理器等优势十分突出,其测量温度时无需其他硬件,仅需一根I/O口线即可实现与单片机的信息交换,其工作电源既可远端引入,也可采用寄生电源的方式而无需额外电源,可通过数据总线向其提供读写及温度转换功率等,大大简化了电路设计。此外,每片DS18B20均设置对应的产品序列号,该序列号存放于其内部ROM中,由于DS18B20的序列号具有唯一性,单片机在识别序列号时通过简单的协议即可实现,正是其这一特点使得多个DS18B20可挂接于同一条单线总线,不仅占据较少微处理器的端口,而且可减少引线及逻辑电路的应用,在多点温度测控系统的应用中具有较大优势。

2 DS18B20温度测量原理

达拉斯公司将其特有的温度测量技术融入到DS18B20中,其内部具有低温度系数振荡器及高温度系数振荡器,应用过程中该低温振荡器可产生频率信号f0,而被测温度会将高温度系数振荡器转换成频率信号f,DS18B20计数门的开通时间由高温系数振荡器来决定,计数门打开时DS18B20对f0计数;测温过程中频率会存在非线性,DS18B20内部设置为斜率累加器用于补偿频率的非线性。DS18B20测温完毕后将测量结果暂存于温度寄存器,单片机可直接读取测量结果。DS18B20完成温度变换后温度值会与告警触发值进行比较,告警触发值存储于TH与TL内。如实际测量过程中温度高于TH或低于TL,则器件内告警标志将置位,每测量一次温度此标志就会更新。当告警标志置位时DS18B20会响应告警搜索命令,故单线上多个DS18B20均可同时测量温度,如果某处温度越限,正在告警的器件也会被准确识别出来。

3 基于DS18B20数字温度计的设计与实现

3.1 硬件电路设计

该研究提出基于一种基于DS18B20的数字温度计,采用ATMEL公司推出的单片机AT89C2051作为控制器,其属于小型单片机,其体积小且低压供电,故成本较低,该温度计应用两节电池作为电源。

该系统中采用DS18B20作为温度传感器,其不仅可将温度信号直接转换为单片机可识别的串行数字信号,且经过编程后,还可实现9~12位的温度读数。应用一条信号经及地线即可实现DS18B20与单片机的可靠连接,为保证数字温度系统运行的可靠性,该研究以两节电池作为外接电源,这种情况下DS18B20第1脚接地,第2脚为信号线,第3脚直接连接电源。系统中还需要一个上拉电阻,由于DS18B20在写存储器操作状态及温度A/I转换操作状态时需要开启500 ms的上拉,上拉电阻则是为满足这一要求所设。采用4位一体的共阳LED数码管作为显示电路,段码由P1口输出,P3.0~P3.3口实现列扫描,采用8550三极管实现列驱动,温度显示由LED数码管以动态扫描的方法显示出来。

3.2 软件设计

该系统程序包括主程序、读出温度子程序、温度转换命令子程序、计算温度子程序、显示数据刷新子程序等多个模块。其中DS18B20测量的温度值主要通过主程序实现实时的显示、读取及处理,每1 s进行1次温度测量。读出温度模块的主要作用是读出RAM中的9字节,读出时需进行CRC校验,如发现错误则不得改写温度数据。温度转换命令模块的主要作用是发送温度转换开始命令,如采用12位分辨率,则转换时间在750 ms左右。该系统中采用1 s显示程序延时法等待转换完成。计算温度模块的主要作用是将RAM中读取值进行BCD码的转换运算,并判断温度值的正负情况。

3.3 系统调试

系统调试需要针对硬件、软件两大部分进行分别调试,其中硬件调试要仔细检查电路焊接质量,再用万能表测试,或进行通电检测。软件调试则先将显示程序编写完成,再用硬件对程序编写的正确性进行检验,检查各显示模块是否正常,再逐一调试各程序模块。设计过程中需要注意,DS18B20是通过串行数据实现向单片机的数据传送,因此DS18B20的读/写编程要严格按照读/写时序进行,以免无法准确读取测量结果。软件调试可正确显示当前温度值,且当用手接触温度传感器时温度发生变化后,则温度显示也会随之改变,证明系统设计基本可满足设计要求。

4 结语

总之,传统的多路温度测量系统多采用公用的放大电路及A/D转换电路,如需要测量多路温度则只能逐一转换,不仅电路复杂且工作效率低下。而基于DS18B20的多点温度测量系统可实现多点温度的同步转换,大大提高了温度的测量效率,由此可见,DS18B20具有接口电路简单可靠的优势,其在温度检测领域的应用前景十分广阔。

参考文献

[1]吴志忠,王克家,吴利予,等.一种基于单线数字温度传感器DSl8B20的储粮温度检测系统的设计[J].应用科技,2015,28(7):15-16.

[2]王广志,吴颖.数字式温度传感器与分布式温度测量系统[J].传感技术学报,2014,14(1):26-31.