嵌入式微型数字温度传感器DS18B20的应用
关键词:传感器;一线总线;单片机;小体积
中图分类号: TD605 文献标识码:B 文章编号:1003-496X(2006)03-0041-03
基金项目:煤炭科学研究总院青年创新基金(2004QN13)
温度是影响传感器性能的一个关键因素,温度补偿对于提高传感器的性能起到关键作用,在研制新一代的传感器中,温度测量的难题以再一次摆在人们的面前。在小于
1 DS18B20和“一线”总线
纵观国际上现有的温度传感器的变化,总的趋势是从模拟向数字转变,相应的体积也在不断减小。在体积非常苛刻的传感器中使用高精度、数字输出型的温度传感器DS18B20最为符合要求。与以往模拟温度信号的输出不同,DS18B20可通过数据线供电,它将电源线和信号线复合在一起,仅使用一条口线;支持一线总线接口,既数字温度输出通过“一线”总线协议,总线接口只需一个端口进行通讯,每个芯片唯一编码,支持联网寻址,适合多点分布应用,接口电路非常简单,无需增加硬件。
这种一线总线的数字方式传输的另一个优点是大大提高了系统的抗干扰性,适合于恶劣环境的现场温度测量。DS18B20测温范围为-55~+
1.1 DS18B20的“一线”总线标识序号每一个DS18B20都有一个唯一的64位的“一线”总线标识序号,存放在DS18B20的内部ROM(只读存储器)中。开始8位是产品类型编码,接着的48位是每个器件的唯一序号,最后8位是前面56位的CRC码。
ROM的作用是使每一个DS18B20都各不相同,这样就可以实现一根总线上挂接多个DS18B20的目的。
1.2 DS18B20的温度数据表示格式DS18B20中有用于存储测得温度值的2个8位寄存器,它们存储的温度数据由2个字节组成,分别为LS Byte(低字节)和MS Byte(高字节),MS Byte的高5位存放温度值的符号,如果温度为负(℃),则MS Byte的高5位全为1,否则全为0。MS Byte的低3位用于存放温度值的补码,如果测得的温度大于0,只要将测到的数值乘于0.062 5即可得到实际温度,如果温度小于0,测到的数值
需要取反加1再乘于0.062 5即可得到实际温度。
1.3 DS18B20温度传感器的存储器
DS18B20温度传感器的内部存储器包括一个高速暂存RAM和一个非易失性的可电擦除的E2PROM,后者存放温度高位存储器TH、温度低位存储器TL和结构寄存器。暂存存储器包含了8个连续字节,前2个字节是测得的温度信息,第一个字节的内容是温度的低八位,第二个字节是温度的高八位。第三个和第四个字节是TH、TL的易失性拷贝,第五个字节是结构寄存器的易失性拷贝。第六、七、八个字节用于内部计算。
1.4 DS18B20使用中注意事项
(1)根据DS18B20的通讯协议,主机控制DS18B20完成温度转换必须经过3个步骤:每一次读写之前都要对DS18B20进行复位,复位成功后发送一条ROM指令,最后发送RAM指令,这样才能对DS18B20进行预定的操作。复位要求主CPU将数据线下拉500μs ,然后释放。DS18B20收到信号后等待16~60μs左右,后发出60~240μs的存在低脉冲,主CPU收到此信号表示复位成功。较小的硬件开销需要相对复杂的软件进行补偿,由于DS18B20与微处理器间采用串行数据传送,因此,在对DS18B20进行读写编程时,必须严格的保证读写时序,否则将无法读取测温结果。
(2)在DS18B20的单总线上所挂DS18B20数量问题,容易使人误认为可以挂任意多个DS18B20,在实际应用中并非如此。当单总线上所挂DS18B20超过8个时,就需要解决微处理器的总线驱动问题,这一点在进行多点测温系统设计时要加以注意。
(3)连接DS18B20的总线电缆是有长度限制的。试验中,当采用普通信号电缆传输长度超过
(4)在DS18B20测温程序设计中,向DS18B20发出温度转换命令后,程序总要等待DS18B20的返回信号,一旦某个DS18B20接触不好或断线,当程序读该DS18B20时,将没有返回信号,程序进入死循环。这一点在进行DS18B20硬件连接和软件设计时也要给予一定的重视。
1.5 DS18B20的供电方式
DS18B20使用数据总线供电方式,既电源线和数据总线共用一根导线,所有接口只需2条线,接线简单。
1.6 多路DS18B20的同步测量多个DS18B20进行同步测量即“一线”总线挂接多个节点的连接方法如图1所示。
每一片DS18B20内部ROM中都存在唯一的48位序列号,在出厂前已写入片内ROM中,当主机需要对众多在线DS18B20中的某一个进行操作时,首先发出匹配ROM命令,紧接着主机提供64位序列号,之后再针对该DS18B20进行操作,但是DS18B20的命令中允许对所有在线节点进行统一操作,利用的是跳过ROM命令。而所谓跳过ROM命令之后的操作是面对总线上所有DS18B20的,命令序列先跳过ROM,启动总线上所有DS18B20进行温度测量,然后通过匹配ROM再逐一地读回每个DS18B20的温度数据。这种方式使采集的温度数据具有很好的同步性,而且节省时间。
2 “一线”网关的硬件设计
为了收集温度传感器DS18B20采集的温度信息,需要控制挂接在“一线”总线网络上的DS18B20,所以需要研制“一线”网关。“一线”网关的主要功能就是面对试验人员,把“一线”总线上的DS18B20的信息转换成异步串口232接口中的信息,它是两种类型网络之间的网关,由于采用单一总线,因此叫做“一线”网关。“一线”网关由一个功能强大的8位单片机组合各种外围芯片构成,各模块之间的关系
(1) 由于“一线”总线本身通讯速率低,在温度采集节点较多的情况下,如果逐个采集每个节点数据,程序复杂且采集速度很慢,一些采集速度要求较高的应用对这种情况是不可容忍的,DS18B20的总线可以同步所有温度采集节点的采集过程,即在“一线”总线上发送同步采集指令,使系统对各个温度测量点的温度数据采集完成后再把数据存入E2PROM中,这样就可以避免“一线”总线本身通讯速率低的难题,而且也不用关心总线上挂接传感器的具体数量,程序也比较简单,流程图如图3所示。
图3 “一线”网关的同步温度数据采集图
(2)系统自带的E2PROM是掉电数据保存的可靠方式,系统利用E2PROM保存采集节点的历史温度数据,允许脱机运行,E2PROM中8 kbyte的存储空量和快速的区域写入方式足以实时保存现场采集的测量数据和相应的时间序列信息,否则,当系统掉电后所有历史温度数据都将丢失。
(3)联机运行时保存的历史数据通过串口上传上位机。在一般的应用方式下,系统通过串口连接现场的PC机或其它上位设备,通过通讯接收上位机的指令,并进行数据采集、保存和传输。这种工作方式即“一线”总线温度传感器网关的原始设计理念。由于系统可以保存脱机时采集的温度数据,因此可以在联机工作时接收命令,通过串口把保存在E2PROM中的历史数据上传至上位机,方便了数据的转移、备份和分析,上位机可以是最普通的PC机,也可以是具有串行232接口的嵌入式系统,注意:联机运行时不采集数据,已经采集的数据通过串口上传上位机。
4 抗干扰
(1)电源线加粗,合理走线、接地,三总线分开。减少互感振荡,由于系统需要和外部设备进行串口通讯,而232串口的电气接口需要地线作为参考电平,因此必须使用完全光耦隔离的方法来提高抗干扰能力。光耦器件应该选择高速类型。
(2)CPU、RAM、ROM等主芯片,VCC和GND间接电解电容及瓷片电容:去掉高、低频干扰脉冲。
(3)独立系统结构,减少接插件与连线:提高可靠性,减少故障率。
(4)在外部供电的输入接口应加入二极管桥依据电路,防止在一些特殊条件下出现的电流逆向问题,同时也使得内外电路的地线隔离,起到抗干扰作用。
(5)加复位电压检测电路。仿止复位不充分,CPU就工作,尤其有E2PROM的器件,复位不充分会改变E2PROM的内容。
(6)单片机空单元写上00H,最后放跳转指令到ORG 0000H,因干扰程序走飞,可以抓回去。
5 系统小体积设计
设备的小型化是每一个项目所追求的目标之一。由于简单的串行I
6 结论
本文阐述的数字温度传感器体积更小,测量数据直接以数字形式传输,适用电压更宽、更经济,可以很方便的嵌入传感器内部,对传感器的特性进行温度补偿,电路简单,价格低廉,独特的“一线”总线方式,使用户可轻松地组建传感器网络,为测量系统的构建引入了全新概念。