找回密码
 注册
关于网站域名变更的通知
查看: 300|回复: 1
打印 上一主题 下一主题

基于数字温度传感器实现单总线测温系统的设计

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2020-3-16 15:14 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
基于数字温度传感器实现单总线测温系统的设计

1 B% k1 W8 e) j0 c. _# _
      单总线技术是美国Dallas公司的一项专有技术,采用单根
信号线
传输数据,具有节省I/O口资源、结构简单、成本低、便于总线扩展和维护等诸多优点。单总线技术适用于单个主机系统控制一个或多个从机设备。Dallas公司的单总线产品中均有一个8字节只读
存储器
ROM
),用于存放产品的序列号(每个芯片唯一的64位标识代码)。如图1所示,从低位起第一个字节(8位)是器件的家族代码,表示产品的分类;接下来的6个字节(48位)是每个器件唯一的ID号;最后一个字节(8位)是前56位的CRC校验码。同一种类型的器件有248个ID号码总量,确保了在总线上不会产生地址冲突。
. H) C( W+ Y" M: T, G


6 i2 q$ Z8 S+ ]8 V  b  p

        传统的基于单总线的测温系统采用ROM搜索的方式在线识别挂接在总线上器件的注册码和器件的类型,由此可在线确定总线上的器件数量。但是,随着挂接在总线上的单总线器件增加,搜索ROM的时间也随之增加,系统开销增大。基于此,本设计采用支持菊链模式的新型数字温度传感器芯片DS28EA00组建单总线测温网络。该方案无需进行传统的ROM搜索步骤,允许用户将器件在链路中的物理位置与序列号对应,节省了RAM开销,简化了基于单总线的应用设计。

  [8 I) N+ t, C" F+ R( m

        1、 DS28EA00特性分析

% x$ ?! T( O- U* ^7 E( I& W

        DS28EA00是具有9位(0.5℃)至12位(0.062 5℃)分辨率和用户可编程非易失性(NV)上/下触发点报警功能的数字温度计。每个DS28EA 00都有工厂编程的唯一64位序列号。DS28EA00具有滞回和干扰滤波功能,使其能够在大的单总线网络中可靠工作。与其他单总线器件(例如DS18B20)不同,DS28EA00具有两个额外的引脚用以执行顺序检测功能。该特性允许用户将器件在链路中的物理位置与序列号对应,例如用来测量储存塔不同高度处的温度。如果无需顺序检测功能,这些引脚可作为通用输入或输出。

        2 、基于DS28EA00的测温系统的硬件连接

        采用DS28EA00的单总线测温系统硬件连接图如图2所示,主控制器采用51系列单片机,通过一个通用I/O口与单总线器件DS28EA00连接。与Dallas其他的数字温度传感器不同,DS28EA00具有两个额外的引脚PIOA和PIOB。其中,除了连接在总线上的第一个DS28EA00的PIOB接地外,其他每一个器件的PIOA均与下一个器件的PIOB相连接,最后一个DS28EAOO的PIOA悬空或接地,所有的DS28EA00采用菊链的方式互连在一起。微控制器的其他部分连接输入设备、输出设备和通信接口

       

        3、 单总线菊链模式下的顺序检测分析

如表1所列,在菊链模式连接方式下,DS28EA00有3种工作状态:OFF、ON和DONE。这3种状态的转换由Chain command命令控制。当接通电源后,总线上所有的DS28EA00均处于OFF状态,在该状态下顺序检测ROM命令“Conditional Read ROM”不起作用。当处于ON状态时,如果DS28EA00的PIOB引脚处于低电平状态,那么它将响应“Conditional Read ROM”命令,发送自己的ROM序列号。当发送完成后,该DS28EA00将处于DOWN状态,不再响应“Conditional Read ROM“命令,并将自己的PIOA引脚置“0”电平,使得下一个DS28EA00继续响应“Conditional Read ROM”命令,发送自己的ROM序列号,直到连接在单总线上的最后一个DS28EAOO。当微控制器把所有DS28EA00的序列号都读到后,发送Chain DOWN命令,使得总线上挂接的所有DS28EA00均回复到OFF状态。如此,便完成了对总线上所有DS28EA00的ROM检测,并且是按照顺序一个一个检测的,这使得检测的序列号与器件在链路中的物理位置相对应。如图3所示,主控制器采用Chain command命令可以使DS28EA00在3种状态间切换,当发送Chain command命令后,主控制器必须接着往总线上先写入一个字符的命令码,然后把该命令码以反码的形式再写入一遍。3个命令码3Ch、5Ah、96h分别对应状态OFF、ON和DOWN。如果菊链状态改变成功,则微控制器收到字符AAh,否则收到OOh。

       


; J6 q* e+ a5 V: [/ o4 Y/ J

4 、基于DS28EA00的测温系统的软件设计

) h5 d% Z8 V+ _5 M6 L

        菊链状态下利用DS28EA00进行多点测温的程序流程如图4所示,测温主要分为下面几步:


9 D1 J  ?3 p0 y3 ~4 |* v! j

        ①首先,单片机通过I/O口发送Skip ROM命令,同时向多个DS28EA00发送信号,接在Skip ROM命令后,发送Chain ON命令,使得所有的DS28EA00均处在ON状态,此时所有从器件的PIOA/PIOB引脚都是高电平状态除了总线网络中的第一个DS28EA00,它的PIOB是接地的。


+ b6 l- U5 ]4 Q9 A7 S" M

        ②主控制器发送Conditional Read ROM命令,此时菊链网络中的第一个DS28EA00将响应此命令,并发送自己的64位ROM序列号,当主控制器接收到序列号后,接着发送Chain DONE命令,把第一个DS28EA00置为DOWN状态,并且使其PIOA脚输出低电平,由于状态变为DOWN,第一个DS28EA00将不再响应ConditionalRead ROM命令。

③主控制器继续发送Conditional Read ROM命令,此时由于第二个DS28EA00的PIOB脚被置低电平,所以将响应该条命令,并发送自己的64位ROM序列号,当主控制器接收到序列号后,继续发送Chain DONE命令,把第二个DS28EA00也置为DOWN状态,并且使其PIOA脚输出低电平,将选通第三个DS28EA00。

( ?0 j3 X7 x. g" a9 O

        ④主控制器将重复的执行Conditional Read ROM命令,直到总线上所有的DS28EA00都完成发送ROM序列号。


2 j- y4 v; ~& Z

        ⑤主控制器通过发送Skip ROM命令和Chain OFF命令结束顺序检测操作。


1 l0 s) _8 m6 t. C

        ⑥主控制器根据读到的DS28EA00序列号,向指定的DS28EA00读取温度值。


7 U4 m! {3 X7 Z/ p# d4 _2 s/ x

        以下为部分测温的源程序,编程环境是Keil C。


& m0 _$ x0 g6 @3 Z! M

       

5 、小结


+ J* ]: |: m/ e

        本文介绍了一种基于DS28EA00的单总线测温系统的设计方案。采用Dallas公司生产的支持菊连模式的数字温度传感器DS28EA00作为基本测温元件,重点分析了菊连模式下的顺序检测过程,给出了硬件连接图及软件流程。采用该方案无需进行传统的ROM序列号搜索步骤,节省了RAM开销,简化了基于单总线测温的设计。

* ^4 {0 g) T4 v2 d/ w2 D/ L

; C3 [! J( k) W+ A# @6 o9 m0 C, d
) P$ z. e. Z% r) A" [, X* \

该用户从未签到

2#
发表于 2020-3-16 16:58 | 只看该作者
该方案无需进行传统的ROM搜索步骤,允许用户将器件在链路中的物理位置与序列号对应,节省了RAM开销,简化了基于单总线的应用设计。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-7-21 03:38 , Processed in 0.125000 second(s), 23 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表