×
嵌入式 > 技术百科 > 详情

能温度传感器Dsl8b20在多路测温中的应用

发布时间:2021-05-27 发布时间:
|

单总线芯片可以使得硬件结构非常简单,特别适合应用在对于距离远、节点分布多的场合,如粮仓温度检测,大棚温室温度监控等。本文给出的设计通用性好,可以方便地移植到其他应用场合。

1 dsl8b20编程简介

每一片单总线芯片内部都有一个全球惟一的64b编码,在多路测温时就是通过匹配每个芯片的rom编码(1d),来搜寻该路的温度。dsl8b20有9个可擦写的内部寄存器,称为便笺式ram。所有的串行通讯,读写每一个bit位数据都必须严格遵守器件的时序逻辑来编程,同时还必须遵守总线命令序列,对单总线的dsl8b20芯片来说,访问每个器件都要遵守下列命令序列: 首先是初始化;其次执行rom命令;最后就是执行功能命令(rom命令和功能命令后面以表格形式给出)。

如果出现序列混乱,则单总线器件不会响应主机。当然,搜索rom命令和报警搜索命令,在执行两者中任何一条命令之后,要返回初始化。

基于单总线上的所有传输过程都是以初始化开始的,初始化过程由主机发出的复位脉冲和从机响应的应答脉冲组成。应答脉冲使主机知道,总线上有从机设备,且准备就绪。

在主机检测到应答脉冲后,就可以发出rom命令。这些命令与各个从机设备的惟一64 brom代码相关。在主机发出rom命令,以访问某个指定的dsl8620,接着就可以发出dsl8620支持的某个功能命令。这些命令允许主机写入或读出dsl8b20便笺式ram、启动温度转换。软件实现dsl8b20的工作严格遵守单总线协议:

(1)主机首先发一复位脉冲,信号线上所有dsl8620器件都被复位。

(2)接着主机发送rom命令,程序开始读取单个在线的芯片rom编码并保存在单片机数据存储器中,然后卸下已读出的,将未读出编码的dsl8620逐个挂在总线上并读取其rom编码,直到把所有的需要用到的dsl8620的rom编码都离线读出,最后用一个二维数组保存所有这些rom编码,数据保存在x25043中。

(3)系统工作时,把所有读取了编码的且需要用的dsl8b20挂在总线上。发温度转换命令,再总线复位。 (4)然后就可以从刚才的二维数组逐个匹配在线的温度传感器,随后发温度读取命令就可以依次获得各路对应的温度值了。读取温度软件流程框图如图1所示。

在主机初始化过程,主机通过拉低单总线至少480/us,以产生复位脉冲。接着,主机释放总线,并进入接收模式。当总线被释放后,上拉电阻将单总线拉高。在单总线器件检测到上升沿后,延时15~60/us,接着通过拉低总线60-240//s,以产生应答脉冲。

//总线复位程序bit dsl8b20_reset(void)

写时隙均起始于主机拉低总线,产生写1时隙的方式:主机在拉低总线后,接着必须在15ups之内释放总线;而产生写。时隙的方式:在主机拉低总线后,只需在整个时隙期间保持低电平即可(至少60us)。

在写字节程序中的写一个bit位的时候,没有按照通常的分别写。时序和写1时序,而是把两者结合起来,当主机拉低总线后在15us之内将要写的位c给do:如果c是高电平满足15/is内释放总线的要求,如果c是低电平,则do=c这条语句仍然是把总线拉在低电平,最后都通过延时58us完成一个写时序(写时序0或写时序1)过程。

每个读时隙都由主机发起,至少拉低总线1us,在主机发起读时隙之后,单总线器件才开始在总线上发送。或1。所有读时隙至少需要60us。

以上3个子程序虽然是针对dsl8b20开发的,其实单总线芯片的时序都相似,只要根据其他类似芯片的时序特点对上述子程序稍做修改就可以同样使用。下面是多点测温主程序。输入参数x为测温点的号码。

限于篇幅,这里没有列出读单个dsl8620芯片rom编号的程序。多路测温没有采用发rom命令0fh搜索所有在线温度传感器,而是采用rom命令33h先离线读出需要用到的每个温度传感器,这样做不但简化了编程,也不用进行在线的逐个搜索rom编码而浪费大量的时间等待搜索是否完成(平均每搜索75个芯片rom编码需1s)。通过离线一片一片地读出其中rom编码,在存储这些编码的二维数组中也可以事先匹配好测温的对象。

3 应用实例

在混凝土大坝温度检测中,需要实时而准确地显示温度变化情况,将温度传感器埋在需要温度监控的位置,每个测温模块在需要重点监控温度的地方都放置了测温芯片,而测温模块分布很广,所以单片机采用rs485总线形式与上位机通讯,该总线为主从式,通讯接口用rs485芯片maxl487,经验证,当波特率选为9 600kb/s时,通讯距离可在2 km左右范围正常工作,上位机发命令轮巡读取下位机端温度,下位机之间不传递数据,下位机收到上位机发来的命令,启动测温点温度转换,转换完后送上位机,并在led上显示,整个工作由上位机程序和下位机串口中断协调完成,该系统测温值稳定、精确。

4 结 语

在大范围多点测温系统中,这种分布式温度监控系统具有广阔的应用前景。


『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
Keil5(MDK5)在调试(debug)过程中遇到的问题