- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
1Wire总线测温网络构建
1—Wire总线测温网络的构建
摘要:本文以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器件仅在主机发出读时序时才向主机传输数据,因此,当主机发出读数据命令后,必须马上产生
原创力文档


文档评论(0)