一种基于DS18B20的温度采集新方案
扫描二维码
随时随地手机看文章
摘要:目前DS18B20数据的采集方法,存在不能自动更新DS18B20序列号和定位DS18B20的不足,因此不能及时进行 DS18B20的更换。本课题利用单片机I/O端口号和DS18B20的温度报警触发器(TH和TL),作为在外部存储器中的存储地址和DS18B20的物理地址,实现了DS18B20和ROM序列号的自动更新,和温度数据的准确定位。并给出了软、硬件设计。
关键词:DS18B20 AVR单片机;单总线
0 引言
温度监控系统在工业、农业和医疗领域拥有很大的应用价值和前景。随着计算机技术、测量技术和无线通信技术的发展,传统的人工监控由于存在很多缺点,正在逐渐被电子监控所代替。现有的一根I/O线上连接多个DS18B20的数据采集方法,在DS18B20接入系统之前,需要采用人工方式将DS18B20的64位ROM序列号逐一读出,并在单片机程序中或外部存储器中进行存储。这种方法给DS18B20物理位置的确定带来了困难,特别是当更换出现故障的DS18B20时,这个问题变得尤为突出。
因此,本课题通过采用软件编程与硬件设计相结合的方式,解决了在AVR单片机与DS18B20结合的测温系统中数字传感器的更换问题。在本课题提出的解决方案中,数据采集模块采用低功耗AVR单片机-Atmega16、单总线数字温度传感器DS18B20以及外部存储器-低能耗串行EEP-ROM。系统根据DS18B20数量的多少,可以选择基于MAX485的有线组网,也可以选择基于nRF905或ZigBee的分布式无线组网。
1 DS18B20简介
1.1 概述
DS18B20是由美国DALLAS(达拉斯)公司生产的高性能单线数字式温度传感器。该传感器提供9到12位温度读数;可实现-55℃到+125℃范围内的温度测量,增量值为0.5℃。现场测量的温度值通过单总线接口传给微处理器,多个DS18B20可以存在于同一条单线总线上。因此,在实际应用中可以在多个不同的地方放置DS18B20,并将这些传感器接在同一条单线总线上,由一个单片机进行控制。对DS18B20数字传感器供电有两种方式:一是寄生电源供电;二是外部电源供电。每个DS18B20在出厂时都有一个唯一的64位编号,存放在内部ROM中。
1.2 引脚说明
DS18B20只有三个引脚:一个是GDN(电源地);一个是VDD(当采用寄生电源供电时,VDD接地;若采用外部电源供电时,VDD接工作电源 );还有一个引脚是DQ(数据输入/输出引脚)。
1.3 硬件电路
1.3.1 寄生电源供电电路
1.3.2 外部电源供电电路
采用寄生电源供电时,VDD引脚必须接地,由I/O引脚为DS18B20提供电源电流。采用外部电源供电时,VDD接外部电源,为DS18B20提供电源电流。寄生电源有双重优点:a.利用此引脚,远程温度检测无需本地电源;b.缺少正常电源条件下也可以读ROM。但是这种供电方式无法保证在数据转换期间的供电,从而DS18B20无法进行精确地温度转换。当多个DS18B20挂在同一根I/O线上并同时进行温度转换时,这个问题变得更加明显。所以本课题采用外部电源供电方式,以达到提高温度转换精确度的目的。
1.4 内部结构
DS18B20内部主要包括:64位光刻ROM、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器。如图3所示:
1.4.1 64位光刻ROM
用于存储64位序列号。该序列号是DS18B20的唯一编号,在出厂前被光刻在64位ROM中。DS18B20在与单片机通信时,用此序列号以区别其它传感器。64位序列号可以看作是DS18B20的地址序列码。
64位光刻ROM的位排列是:低8位是产品类型标号;接着的48位是该DS18B20的自身序列号;最后高8位是低56位的循环冗余校验码,该8位又被单独提出,称为CRC发生器,主要是实现串行通信中的数据校验,判断接收的数据是否正确。64为序列号的作用,是使每一个DS18B20都各不相同,这样就可以实现一根总线上挂接多个DS18B20。
1.4.2 非易失性温度报警触发器
DS18B20的温度报警触发器TH和TL各由一个非易失性EEPROM字节构成,如果没有对DS18B20使用报警搜索指令,可以作为一般的EEPROM存储器使用。利用每个DS18B20唯一的序列号可读取同一根I/O线上的多个DS18B20的温度数据,利用I/O端口号和已经写入层数信息的DS18B20的温度报警触发器(TH和TL),可将每个DS18B20的温度数据和其物理位置对应起来。因此在DS18B20安装之前,就需将DS18B20所在层的信息写入到温度报警触发器(TH和TL)中。
2 DS18B20与AVR单片机的连接
在本课题中DS18B20采用寄生电源供电,单片机选用AVR单片机-Atmega16。之所以选择AVR单片机,是因为其具有51单片机无法提供的优点:a.读写速度快,AVR单片机采用了大型快速存取寄存器文件和快速单周期指令。其快速存取RISC寄存器文件由32个通用工作寄存器组成。AVR用32个通用寄存器代替累加器,避免了传统的累加器与存储器之间的数据传送,可在一个时钟周期内执行一条指令来访问两个独立的寄存器,代码效率比常规CISC微控制器快十倍。高效的读写速度,更适合于对及时性要求高的场合。b.性价比高。c.工作电压范围宽(2.7~6V)、抗干扰能力强,这样更适合在各种条件下处理测量温度值。总之,AVR单片机在一个芯片内将增强性能的RISC 8位CPU与可下载的FLA-SH相结合使其成为适合于许多要求、具有高度灵活性和低成本的嵌入式高效微控制器。
图4给出了DS18B20采用外部电源供电方式时,与Atmega16单片机的硬件连接图。
3 DS18B20更新问题的解决方案
本课题在深入研究了数字传感器工作机理的基础上,通过硬件设计和软件编程,提出了解决数字传感器更换的方案,并应用在了通过无线传感器网络远程控制传感器的设计中,而且在硬件平台上实现了仿真。图5是通过Proteus 7单片机软件仿真系统设计的,单片机控制DS18-B20并显示测试结果的电路图。
3.1 硬件设计
单片机通过I/O口控制DS18B20,每个I/O口外接60个DS18B20,同时单片机通过SPI串行接口外接外部存储器EEPROM,如图6所示。
本课题中,外部存储器EEPROM选用意法半导体(ST)生产的M95128;选用Atmega16单片机。DS18B20采用外部电源供电方式,所以VCC接外部电源,GDN接地。
M95128芯片采用MLP8微型封装技术,因此,可以大大节省产品的空间和成本;待机功耗低于3μA,也是该芯片的一大特点;四线的SPI接口支持最高 2 Mbit/s的通信速率,除提供标准的硬件写保护功能外,还支持软件写保护。外部存储器EEPROM用来存放单片机控制的所有DS1-8B20的序列号,和对应的逻辑地址。一个DS18B20的序列号占八个字节,所以一路数据线上所接DS18B20温度传感器的个数与外部存储器EEPR-OM的存储空间有关。M95128芯片的容量达128kbit,可以存储13107个DS18B20的序列号和对应的逻辑地址,足以满足本课题的需要。
单片机Atmega16的PB5(MOSI)口接EEPROM的DI(数据输入)口,PB6(MISO)口接DO(数据输出)口,PB7(SCK) 口接SK(读写时钟信号输入引脚)。单片机读到每个DS18B20的序列号后,通过PB5口将序列号和对应的逻辑地址写入EEPROM中。需要某个逻辑地址对应的序列号时,EEPROM通过DO口将序列号传入单片机中。
3.2 软件设计
本课题设计使单片机每次上电时,都重新读取每根数据线上的每个DS18B20的序列号和温度报警器中的内容,I/O端口号+温度报警触发器中的层信息即为该DS18B20的逻辑地址。单片机将读取到的各DS18B20的序列号与其对应的逻辑地址,通过MOSI引脚保存在外部存储器EEP-ROM中。在控制模块的固化程序中,只涉及传感器的逻辑地址。当需要访问某个传感器时,单片机会根据固化程序中的逻辑地址在EEPROM中查找该逻辑地址对应的 DS18B20序列号,从而找到需要访问的传感器。在更换了某个DS18B20时,只需给单片机重新上电,微控制会更新EEPRO-M,而不需修改控制模块中的固化程序。
本课题中,使用ICCAVR编译器作为软件开发环境,编译C语言程序代码。向EEPROM中保存序列号的程序流程图如图7所示。
根据控制模块中涉及的逻辑地址,单片机在EEPROM中查找对应的DS18B20的序列号的程序流程如图8所示。
4 结语
无线测温系统的应用前景非常广阔。本课题提出的通过外接EEPROM存储器,保存DS18B20的序列号和对应的逻辑地址的方案,解决了 DS-18B20的更新问题。可以极大地提高技术人员及工作人员的工作效率;同时,由于在通信链路中传输的是逻辑地址,所以减少了链路中的冗余信息,增加有效信息的传输,提高无线传输效率。因此,本课题设计的温度采集系统具有运行速率快、性能稳定、数字化程度高、便于维护等特点。此系统在各类数字通信、环境监测、安防系统等多个领域具有广泛的应用价值。并且已经在CX-AT16硬件平台上实现了仿真。