基于DS18B2O的测温系统设计
扫描二维码
随时随地手机看文章
1 DSl8820简介
DS18820数字温度计是DALEAS公司生产的1一Wire,即单总线器件,属于新一代适配微处理器的智能数字温度传感器。将温度感测、信号变换、A/D转换和加热功能集成到一个芯片上,采用T0—92封装,接口非常简单。其引脚和封装如图1所示,DQ为数字信号输入/输出端;GND为电源地;VDD为外接供电电源输入端(在寄生电源接线方式时接地)。
2 DSl8820的内部结构和工作时序
2.1 DSl8820的内部结构
DSl8820内部结构如图2所示,主要由4部分组成:64位ROM、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器。
ROM中的64位序列号是出厂前被光刻好的,它可以看作是该DSl8820的地址序列码,每个DSl8820的64位序列号均不相同。64位ROM的排的循环冗余校验码(CRC=X8+X5+X4+1)。ROM的作用是使每一个DSl8820都各不相同,这样就可以实现一根总线上挂接多个DSl8820的目的。高速暂存器是一个9字节的存储器。开始两个字节包含被测温度的数字量信息;第3、4、5字节分别是TH、TL、配置寄存器的临时拷贝,每一次上电复位时被刷新;第6、7、8字节未用,表现为全逻辑1;第9字节读出的是前面所有8个字节的CRC码,可用来保证通信正确。
DSl8820中的温度传感器可完成对温度的测量,并用16位符号扩展的二进制补码形式输出温度值,以0.0625℃/LSB形式表达,其中S为符号位。例+125℃的数字输出为07DOH,+25.06℃的数字输出为019lH,一25.06℃的数字输出为FF6FH,一55℃的数字输出为FC90H。
高低温报警触发器TH和TL、配置寄存器均由一个字节的EEPROM组成,使用一个存储器功能命令可对TH、TL或配置寄存器写入。其中配置寄存器的格式如下:
R1、RO决定温度转换的精度位数:RlR0=“00”,9位精度,最大转换时间为93.75ms;R1RO=“01”,10位精度,最大转换时间为187.5ms;R1RO=“10”,11位精度,最大转换时间为375ms;R1R0=“11”,12位精度,最大转换时间为750ms;默认为12位精度。
2.2 DSl8820的工作时序
DSl8820的一线工作协议流程是:初始化→ROM操作指令→存储器操作指令→数据传输。其工作时序包括初始化时序、写时序和读时序,如下图3所示:
(1)DSl8820的复位时序
(2)DSl8820的读时序
对于DSl8820的读时序分为读0时序和读1时序两个过程。对于DSl8820的读时隙是从主机把单总线拉低之后,在15秒之内就得释放单总线,以让DSl8820把数据传输到单总线上。DSl8820在完成一个读时序过程,至少需要60us才能完成。
(3)DSl8820的写时序
对于DSl8820的写时序仍然分为写0时序和写1时序两个过程。
对于DSl8820写0时序和写1时序的要求不同,当要写O时序时,单总线要被拉低至~>60us,保证DSl8820能够在15us到45us之间能够正确地采样IO总线上的“O”电平,当要写l时序时,单总线被拉低之后,在15us之内就得释放单总线。
3 DSl8820的应用设计
DSl8820采用的是1一Wire总线协议方式,即在一根数据线实现数据的双向传输。对AT89S5l单片机来说,硬件上并不支持单总线协议,因此必须采用软件的方法来模拟单总线的协议时序来完成对Dsl8820芯片的访问。
3.1 硬件设计
DSl8820采用的是1一Wire总线协议方式,即在一根数据线实现数据的双向串行传输,所以硬件接口电路非常简单。需要注意的地方是:DQ数据线需要接上拉电阻。DSl8820有两种接线方式:寄生电源方式和外接电源方式。图3以MCS一5l系列单片机为例,画出了DSl8820与微处理器的典型连接。图4(上)中DSl8820采用寄生电源方式,其VDD和GND端均接地,图4(下)中DS18820采用外接电源方式,其VDD端用3V~5.5V电源供电。
图4 DSl8820与微处理器的典型连接
3.2 软件设计
由于DSl8820是在一根I/0线上读写数据,因此,对读写的数据位有着严格的时序要求。DSl8820有严格的通信协议来保证各位数据传输的正确性和完整性。该协议定义了几种信号的时序:初始化时序、读时序、写时序。所有时序都是将主机作为主设备,单总线器件作为从设备。而每一次命令和数据的传输都是从主机主动启动写时序开始,如果要求单总线器件回送数据,在进行写命令后,主机需启动读时序完成数据接收。数据和命令的传输都是低位在先。
4 DSl8820使用中的注意事项
DSl820虽然具有测温系统简单、测温精度高、连接方便、占用口线少等优点,但在实际应用中也应注意以下几方面的问题:
(1)较小的硬件开销需要相对复杂的软件进行补偿,由于DSl820与微处理器问采用串行数据传送,因此,在对DSl820进行读写编程时,必须严格的保证读写时序,否则将无法读取测温结果。在使用PL/M、C等高级语言进行系统程序设计时,对DSl820操作部分最好采用汇编语言实现。
(2)在DSl820的有关资料中均未提及单总线上所挂DSl820数量问题,容易使人误认为可以挂任意多个DSl820,在实际应用中并非如此。当单总线上所挂DSl820超过8个时,就需要解决微处理器的总线驱动问题。
(3)连接DSl820的总线电缆是有长度限制的。试验中,当采用普通信号电缆传输长度超过50m时,读取的测温数据将发生错误。当将总线电缆改为双绞线带屏蔽电缆时,通讯距离可达150m,当采用每米绞合次数更多的双绞线带屏蔽电缆时,通讯距离进一步加长。这种情况主要是由总线分布电容使信号波形产生畸变造成的。因此,在用DSl820进行长距离测温系统设计时要充分考虑总线分布电容和阻抗匹配问题。
(4)在DSl820测温程序设计中,向DSl820发出温度转换命令后,程序需要等待DSl820的返回信号。一旦某个DSl820接触不好或断线,读该DSl820时将没有返回信号,程序将进入死循环。
5 结论
采用数字温度传感器DS18820进行温度的时实监测的系统具有转换精度高、体积小、与微处理器接口简单等优点;能够给硬件设计工作带来了极大的方便,能有效地降低成本,缩短开发周期。另外DSl8820芯片内部集成了9位~12位A/D转换精度,测温分辨率可达0.0625℃,被测温度用符号扩展的16位数字信号的方式串行输出,因此抗干扰能力也比同类芯片高。DSl8820在温度监测、自动控制等领域均已得到广泛的应用。