单总线数字温度传感器的自动识别技术_第1页
单总线数字温度传感器的自动识别技术_第2页
单总线数字温度传感器的自动识别技术_第3页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、单总线数字温度传感器的自动识别技术线结构和星型结构。总线结构是指在一根I/O口线上挂接若干只温度传感器,星型结构则在若干根I/O口线上分别挂接若干只温度传感器(图中虚线表示)。实际应用时考虑单总线的驱动能力、布线问题,更多地是采用星型结构,同时这种结构更容易对多个温度传感器进行出错指示、自动识别其序列号和排序。 总线结构的传感器识别 获取序列号的ROM操作命令     操作单总线数字温度传感器必须严格按规定的协议操作,即应按以下顺序操作:初始化、ROM操作命令、暂存存储器操作命令。在ROM操作命令中,有两条命令专门用于获取传感器序列号:读ROM命令(33H)和搜索

2、ROM命令(F0H)。读ROM命令只能在总线上仅有一个传感器的情况下使用。搜索ROM命令则允许总线主机使用一种“消去”处理方法来识别总线上所有的传感器序列号。搜索过程为三个步骤:读一位,读该位的补码,写所需位的值。总线主机在ROM的每一位上完成这三个步骤,在全部过程完成后,总线主机便获得一个传感器ROM的内容,其他传感器的序列号则由相应的另外一个过程来识别。具体的搜索过程为:(1)总线主机发出复位脉冲进行初始化,总线上的传感器则发出存在脉冲做出响应;(2)总线主机在单总线上发出搜索ROM命令;(3)总线主机从单总线上读一位。每一个传感器首先把它们各自ROM中的第一位放到总线上,产生“线与”,总

3、线主机读得“线与”的结果。接着每一个传感器把它们各自ROM中的第一位的补码放到总线上,总线主机再次读得“线与”的结果。总线主机根据以上读得的结果,可进行如下判断:结果为00表明总线上有传感器连着,且在此数据位上它们的值发生冲突;为01表明此数据位上它们的值均为0;为10表明此数据位上它们的值均为1;11表明总线上没有传感/TL中(两个字节的EEPROM)。使用该方法,系统可以由运行人员来维护,并减少维护工作量,但仍有缺点:需要专门的编码器,维护工作量减少得仍不够;必须是在TH/TL不使用的前提下。本文给出一种方法,只需在系统中增加一片EEPROM芯片,通过编程,可实现多个传感器的出错指示、自动

4、识别。 图1 系统电路原理图硬件设计     图1为系统电路原理图,主要由PIC单片机PIC16C63、四位LED显示器、锁存器74LS373、二-四译码器74LS139、2KB的EEPROM存储器DCM0016C、拨位开关K以及数字温度传感器DS18B20等组成。PIC系列单片机是一种采用精简指令集(RISC)、哈佛(Harvard)双总线和两级指令流水线结构的高性价比的8位嵌入式控制器,I/O口线直接驱动LED,片内有4KB的程序存储器和256B的数据存储器。可电改写的DCM0016C主要用于存储DS18B20的序列号。LED显示器用于显示各测量点的编号、温度

5、以及传感器故障时的指示。拨位开关K在系统正常运行时处于打开状态,需要更换传感器时将其拨至闭合位置,单片机调用相应的子程序进行传感器自动识别。图中数字温度传感器DS18B20的接线拓扑结构考虑了两种结构:总线结构和星型结构。总线结构是指在一根I/O口线上挂接若干只温度传感器,星型结构则在若干根I/O口线上分别挂接若干只温度传感器(图中虚线表示)。实际应用时考虑单总线的驱动能力、布线问题,更多地是采用星型结构,同时这种结构更容易对多个温度传感器进行出错指示、自动识别其序列号和排序。 总线结构的传感器识别 获取序列号的ROM操作命令     操作单总线数字温度传感器必须

6、严格按规定的协议操作,即应按以下顺序操作:初始化、ROM操作命令、暂存存储器操作命令。在ROM操作命令中,有两条命令专门用于获取传感器序列号:读ROM命令(33H)和搜索ROM命令(F0H)。读ROM命令只能在总线上仅有一个传感器的情况下使用。搜索ROM命令则允许总线主机使用一种“消去”处理方法来识别总线上所有的传感器序列号。搜索过程为三个步骤:读一位,读该位的补码,写所需位的值。总线主机在ROM的每一位上完成这三个步骤,在全部过程完成后,总线主机便获得一个传感器ROM的内容,其他传感器的序列号则由相应的另外一个过程来识别。具体的搜索过程为:(1)总线主机发出复位脉冲进行初始化,总线上的传感器

7、则发出存在脉冲做出响应;(2)总线主机在单总线上发出搜索ROM命令;(3)总线主机从单总线上读一位。每一个传感器首先把它们各自ROM中的第一位放到总线上,产生“线与”,总线主机读得“线与”的结果。接着每一个传感器把它们各自ROM中的第一位的补码放到总线上,总线主机再次读得“线与”的结果。总线主机根据以上读得的结果,可进行如下判断:结果为00表明总线上有传感器连着,且在此数据位上它们的值发生冲突;为01表明此数据位上它们的值均为0;为10表明此数据位上它们的值均为1;11表明总线上没有传感号来,若与存储在0001H0007H单元的内容相同,说明这次识别出的仍是1号传感器的序列号,不存储并接着进行

8、另一个过程,得到不同的序列号(即2号传感器的序列号),将其存储在0008H000EH单元中。获得序列号的同时也就获得了总线上挂接传感器的个数。 由上述知,总线上挂接多个传感器时,若编制的程序不当,可能同一个传感器要被识别多次,识别时间增长。为了减少识别时间,编程时要注意“需要的位值”取值。传感器序列号的最低8位为产品代号,“需要的位值”可按对应的值给出,关键是其后的48位器件序列号的识别。这里采用了“完全二叉树”的排序思想,如图3所示。具体思路:设在K位首次发生数据位冲突,这时所有的传感器分成两类,即该位为1的传感器和为0的传感器。“需要的位值”给1,K位为1的传感器仍挂接在总线上。若接下来K

9、+M、K+N位发生数据位冲突,“需要的位值”仍分别给1,获得一个序列号。下一个过程在K、K+M位“需要的位值”仍给1,但在K+N位则给0,获得另一个传感器的序列号。第三个过程在K位仍给1,而在K+M位给0,在这条支路上继续识别。K位为1的传感器的序列号识别完后,回到K位时,“需要的位值”给0,按同样的方法识别该支路的传感器序列号。按此思路,多个传感器的序列号只需要分别识别一次。 出错指示 建立关系表后,编制好程序,系统可投入运行。读取每个测温点的温度时,需要用到“符合”ROM命令,该命令要求将关系表中的序列号取出送到总线上,只有序列号与之相符的传感器才挂接在总线上,可读取其温度。若相应的传感器

10、出错,显然不会有序列号与之相符的传感器,这时显示器显示位置编号和“FFFF”,表明该测温点的传感器出错。更换传感器后的自动识别     给8个传感器建立临时关系表,占用EEPROM存储单元地址范围为:0039H0070H,将更换后传感器的序列号存入这些单元中。当只有一个传感器出错时,临时关系表中的序列号与关系表的序列号比较,只有一个号不同,用该号取代前文所述的关系表中序列号,即存入对应的存储单元中,便完成了更换传感器后的自动识别。有两个及以上传感器出错时,若同时将这些传感器更换掉,则它们的序列号同时进入临时关系表,将无法进行排序,因此更换传感器时也要按一定的顺序进

11、行:只能一个一个更换,且位置编号小的先更换;更换一个传感器,显示器显示位置编号和“PPPP”后,再更换下一个传感器。实现该功能的子程序主要流程:(1)建立临时关系表;(2)临时关系表的内容与关系表比较。建立临时关系表子程序与建立关系表的程序基本一样,主要是存储单元地址不同。建立该表的同时也就获得了总线上挂接的传感器数,该数据决定两个表的比较次数。 星型结构的传感器识别     拓扑结构采用星型结构,如图1所示,RA0、RA1、RA2、RA3、RA4、RA5、RC0为七根单总线,分别挂接若干个传感器,以挂接8个为例,建立表2所示的关系表。 因为各单总线分别操作,它们的编程及操作和上述单总线差不多,此处不再详述。采用星型结构有一个主要优点:当七根总线上分别只有一个传感器出错

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论