1—Wire总线测温网络的构建

来源 :电子产品世界 | 被引量 : 0次 | 上传用户:lhm136
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘要:本文以1-Wire 器件DS18B20为核心元件,以单片机教学实验仪PHOENIX325为平台,搭建了一套集成度高、扩充空间大的测温网络。该测温网络由4只DS18B20组成,挂接在单片机P1口;软件设计方面,采用二叉树遍历算法,搜索总线上所有家族号为28H的器件,匹配ID号后启动温度转换,将结果送到1-Wire总线上,并对编程思路、1-Wire器件的各种操作作了详细的介绍。
  关键词:单片机;二叉树搜索;1-Wire总线;DS18B20;测温网络
  DOI: 10.3969/j.issn.1005-5517.2012.10.009
  引言
  多点测温是重要库所、场站、厂房安全工作的重要环节,多点测温应以实时、精确为原则,在此基础上,电路设计要求尽量简单,程序设计应功能强、效率高,本文采用DS18B20作为核心元件,充分利用该器件分辨率高、所需元件少、宜于组网的特点,以二叉树遍历法为编程算法,构建基于1-Wire总线的测温网络。
  方案设计
  核心元件的选择
  测温元件选用Dallas公司出品的DS18B20,与传统热敏电阻不同,DS18B20是1-Wire总线的数字温度传感器,可直接将被测温度转化成串行数字信号供单片机处理,适用于恶劣环境的现场温度测量[1-2]。
  1-Wire器件的特性
  DS18B20具有以下特性:测温范围-55℃~+125℃,在-10~+85℃时精度为±0.5℃;可由软件设定9~12位分辨率,对应的测量精度分别为0.5℃、0.25℃、0.125℃和0.0625℃,实现高精度测温;在寄生电源方式下可由数据线供电;独特的单线接口方式,DS18B20在与单片机连接时仅需要一条口线即可实现与单片机的双向通信;支持多点组网,多个DS18B20可以并联在总线上,实现组网测温;测量结果直接输出数字温度信号,同时可传送CRC校验码,具有极强的抗干扰纠错能力[3]。
  电路设计
  DS18B20供电方式有两种:内部电源和外部电源。采用内部电源供电时,功率由总线提供,此时引脚3接地,引脚2通过上拉电阻接至总线,在总线高电平期间,器件内部的寄生电容充电,总线低电平期间,寄生电容向器件供电;采用外部电源供电时,引脚3接VCC,在温度转换期间总线不用保持高电平,这样在温度转换期间总线上可以进行其他数据往来,本文采用外部电源方式。图1是测温网络电路图。
  除测温电路之外,还有LCD显示、USB通信及电源模块,其功能分别为数据显示、程序下载、系统供电,由于这几部分电路通用性强,参考资料较多,故此处省略。
  图1 1-Wire总线测温网络
  软件编程
  二叉树遍历算法
  二叉树遍历算法是搜索识别网络中1-Wire器件的编程首选,二叉树遍历算法的要点可归纳为“读2位,写1位”。
  编程思路
  首先主机向从机发出搜索命令,等待从机向主机发回当前位之后,再读从机发回当前位的反码,这两个位数据的编码存在4种可能:00、01、10和11。
  00表示从机在当前位上有位分叉,即0和1两个分支;01表示从机的当前位均为0;10表示从机的当前位均为1;11表示总线上无器件响应。
  显然,出现11时搜索应退出。对于前3种情况,根据搜索策略,主机向从机写1位数据,决定继续搜索哪一分支。第2和第3种情况下,搜索仅有一个方向,如果是第1种情况即出现00时,需要选择下一步搜索路径,方法是比较搜索位所在位置和最后一次发生位差异的所在位置,若二者相等,搜索1分支,若前者>后者,搜索0分支,若前者<后者,则采用上一次的搜索路径。
  在此有两点需要注意:一是网络上从机发回的位数据呈“线与”关系;二是DS18B20中64位ID码分别标记为第1—64位,而不是0—63位,空出来的0用来表示差异位位置记录的初始状态。
  编程要点
  1-wire总线既可传输时钟,又可传输数据,并且数据传输是双向的,因此读写时序至关重要,1-wire总线定义了复位脉冲、应答脉冲、写操作、读操作等几种信号类型,所有的1-wire总线命令序列都是由这些基本的信号类型组成。
  (1)复位子函数
  主机通过拉低总线至少480ms产生复位脉冲,然后释放总线,主机释放总线时,会产生低电平向高电平的跳变,之后延时60ms,等待DS18B20的应答,DS18B20通过拉低总线240ms产生应答脉冲,主机收到器件的应答脉冲后,说明有1-wire器件在线,然后主机就可以对DS18B20进行ROM命令。
  (2)读写操作
  所有的读写时序至少需要60ms,写时序时,主机在拉低总线15ms之内释放总线,并向1-wire器件写1。1-wire器件仅在主机发出读时序时才向主机传输数据,因此,当主机发出读数据命令后,必须马上产生读时序,以便1-wire器件传输数据[4]。
  (3)温度转换
  1-wire器件工作时,首先需要进行ROM操作,然后转换温度。编程时需注意三点。
  ⑴DS18B20ROM命令共5种,读ROM、匹配ROM、跳过ROM、搜索ROM、报警。
  ⑵增加延时函数,确保温度转换完成。
  (3)读出温度数据后,要进行数据转换。读出温度低8位和高8位,把此低8位和高8位转换为1个16位的数,其高5位是相同的,代表符号;低11位,是温度的二进制数,其中高7位是温度整数,低4位是温度小数;如果是负温度,则从温度寄存器读出的是补码,应将补码取反加1得到原码。
  DS18B20的小数位可以这样理解:单片机发出读取温度寄存器命令后,DS18B20会返回9组数据,其中第一组数据的低4位代表温度小数部分,换言之,即是把1度分解为16个4位二进制数来表示,则温度小数部分的精度为1/16=0.0625。
  与列举ID号编程的比较
  列举ID法需要预先储存器件ID号,然后接入全部器件读取温度,实验需分两步进行。储存ID号时,仅允许接入一只器件,此器件操作完成后取下,再接入另一只器件,效率低下,且频繁插拔对电路板及器件均有损伤,因此这种编程方法在实际应用中比较受限。二叉树搜索可以直接读取总线上所有器件温度,功能强大,操作简便,是1-Wire总线器件组网编程的首选[5]。
  图2 测温网络在PHOENIX325实验仪上的应用
  测试
  笔者设计了一款单片机教学实验仪——PHOENIX325,实验仪上集成了由4只DS18B20构成的测温网络,图2是采用二叉树遍历算法测温网络的工作情况,LCD1602显示4只器件的温度值,由于LCD显示存在延时[6],因此拍到的只显示一只器件的测量温度。经实际测试,用本文设计的方法组网进行多点测温,测量精度、响应速度均令人满意。
  结论
  利用DS18B20的优异特性,采用多只器件构成1-Wire总线网络,外围元件少,结构简单,抗干扰性强,成本低廉,软件编程采用二叉树遍历算法,可搜索总线上所有器件,将具有同一家族号的器件识别出来,读出温度值,从教学实际来看,这种方案灵活性高,测量精度和响应速度都可得到保证,升级空间可自由扩充,是一种行之有效的多点测温模式。
其他文献
自2009年特斯拉风暴席卷中国,不少科技工作者加大了对特斯拉线圈的制作和应用研究,许多青少年科技爱好者也参与到特斯拉线圈的制作中。我们小组也希望通过制作特斯拉线圈,更好地了解并探究它的应用。  我们制作的小型特斯拉线圈由一个12V摩托车电瓶、一个型号为2N3055的三极管、两个27Ω5W、240Ω5W的水泥电阻、一个任意型号的完好高压包、一个由22个耐压20kV容量1000pF并联而成的主电容、打
我第一次主动表现自己是在小学三年级时。那年汶川发生大地震,学校开展了“情系灾区”献爱心活动。我想起家里的储蓄罐里存有妈妈过年时给我的100元压岁钱,便毫不犹豫地全倒了出来。捐款时,我第一个走向募捐箱,带动大家一起捐款,为此老师还特意表扬了我。  进入初中,担任语文科代表的我不但把本职工作干得风生水起,还积极参与班上其他有意义的活动。元旦前夕,班上准备举办文艺晚会,要选一男一女两个学生当主持人。我不
流言:曾有这样一则新闻在网上疯传:南非发现一种“奇特”的蚊虫.被叮咬的动物皮肤不但不会红肿,反而会塌陷,动物学家研究后,发现这种蚊子不吸血,而是吸食皮肤表层的脂肪,围绕着吸脂蚊
摘要:针对于汽车技术上出现的通信量大、电气系统通信技术的缺点等缺陷,重点研究了CAN总线智能节点的设计和实现。通过P87C591微处理器对步进电机进行控制和利用CAN接口进行数据传输,将数据传送到CAN总线上,而且完成了从信号的采集到显示以及控制系统和传输系统的软硬件设计,实现了CAN总线的数据传输,使通信速率和容错性大大提高。  关键词:CAN总线;步进电机;单片机;发动机转速  DOI: 10
大多数人都对“美”情有独钟。美无所不至,我认为能动人心弦者,赵世术算一人。2010年,他成为“感动重庆十大人物”之一。  从师范大学毕业后,赵世术被分配到重庆巫县担任教师。三尺讲台上,他用铿锵有力的讲课声和丰富多彩的知识回应台下一双双渴求的眼睛。  当发现学生上学需经过一条湍急的河流时,他主动承担起护送学生的责任。在几百次来来回回中,年仅20岁的他就得了风湿性关节炎,腿脚变得越来越不方便,但他从来
同学们写字时,因为姿势不对,常常出现虎口扁合的问题。虎口扁合是指握笔写字时,虎口开张不够,虎口洞不圆满,成扁椭形或凤眼形,导致笔握得过于倾斜,下油不流畅,笔画难以写到位,而且只能在手指肚上用力,很吃力。  正确的写字姿势应是虎口成近似于圆形,利于在指尖处用力,握笔牢固。听说一位小学语文老师曾用在虎口塞枣子的方法纠正了女儿的错姿,但枣子很容易从虎口脱落。  有没有一种可以固定的东西替代枣子呢?经过几
一天,我们学校几个同学上厕所时,发现厕所墙角的红砖上有“白毛”.而在赤壁古城墙以及农村的火砖旧建筑裸墙表面都曾出现过长“白毛”现象.