本方案以Dallas公司开发一线制数字温度传感器DS18B20为核心.docVIP

本方案以Dallas公司开发一线制数字温度传感器DS18B20为核心.doc

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
本方案以Dallas公司开发的一线制数字温度传感器DS18B20为核心,通过采用每个并行端口上连接一个DS18B20器件,实现同时对多个DS18B20进行同步操作的方法。本方案可广泛应用于各种工业控制、仪器仪表产品中。 1 技术概述 Dallas公司开发的一线制数字温度传感器DS18B20是一款性能优异的数字式传感器,广泛应用于各种工业控制、仪器仪表产品当中。DS18B20与传统的热敏电阻温度传感器相比,能够直接读出被测温度,并且根据实际要求通过简单的编程可设置9~12位的分辨率,可以在750ms内将温度转化为12位的数字量,具有多种可选的封装方式。因而使用DS18B20可使系统结构更加简单,可靠性更高。 GND 接地 DQ 一线制总线(输入/输出) VD 供电电源而DS18B20的一线制总线独特而经济的特点,使用户可轻松地组建传感器网络,为测量系统的 在一线制总线上串接多个DS18B20器件时,实现对其中一个DS18B20器件进行一次温度转换和读取操作主要包括以下13个步骤(所有的操作都是通过DQ线进行信号传输的): 1 主机MCU发复位脉冲 2 DS18B20发应答脉冲(即MCU接收该应答信号,以确认器件在总线上) 3 主机发匹配ROM命令 4 主机发64位器件序列号(器件序列号与总线上的某个DS18B20器件一一对应) 5 主机发温度转换指令 6 总线保持高电平50ms 7 主机发复位命令 8 DS18B20发应答脉冲 9 主机发匹配ROM命令 10 主机发64位器件代码 11 主机发读数据寄存器指令 12 主机接收数据 13 主机发复位脉冲 参考DS18B20的数据手册可知,当DS18B20的精度设置为12位精度表示时,依据上面的步骤完成对一个器件的测温、读取温度值的过程,大概会消耗掉1秒钟的时间。而如果总线上存在8个DS18B20器件的话,完成一次8个器件的查询需要8秒的时间,这不还没计算在系统初始化时,对总线上的器件序列号进行初始化过程所消耗的时间。 针对所述利用多个DS18B20器件串接在一线制总线上进行多点温度查询时速度慢的原因,做进一步分析如下。 DS18B20器件在进行一线制总线操作时,仅有一根DQ线用于双向的数据传输,每一个操作最小的细分至每一个的读写过程,即一个位的读写操作为一线制总线操作的最小单位,可以参考DS18B20的手册,了解到每一次最小单位的总线操作利用了规定时间内MCU驱动DQ线的高低电平来决定读/写的操作,然后在其后的规定时间内完成读/写一个位数据的操作。这样,就决定了每一次操作的过程中,要传输的数据位数越多,每一次的操作耗时越长。而DS18B20的一线制总线的操作对时序的要求很严格,一般在设计MCU对其总线操作的程序时,都是利用延时去保证每个读写周期的时间准确性,即说明这些时间内CPU必然是闲置的。 另外,在多个器件串接在一线制总线上时,为了区分每次操作是针对总线上哪一个器件,DS18B20器件在内部提供了每个器件独有的64位ROM序列号,也就是说每一次操作都要首先在对DS18B20器件的ROM序列号进行匹配后,方可对其中的某一个器件进行测温/读取温度值的操作。可以估算出,每一次序列号的匹配操作,差不多需要4ms的时间,完成一次完整的测温/读取温度值操作,就需要进行两次序列号匹配,即消耗掉大概8个ms的时间。 多个器件串接在总线上时,对所有的器件的查询操作,需要一个一个来,完成一次全部器件的查询需要成倍的操作时间,整个系统把大量时间消耗在时序所要求的延时上。 此外,当采用多个器件串接在一线制总线的系统时,还需要在系统的初始化其间花销较长的时间来进行烦琐的总线上器件的序列号查询,并以此获知总线上的每个器件的序列号。 如前所述,可以总结出,影响查询多点DS18B20温度速度的最主要因素有如下几个: 1.每次操作都需要附加两次对64位序列号的匹配过程; 2.多个器件串接,完成全部的查询就需要与器件个数成倍增长的耗时。 这样的应用在一些对实时性要求相对较高的系统当中,是非常占用资源的(虽然省掉了端口资源,但CPU不得不等待N长时间后方可获取多点的温度值),所以使用起来总会有些遗憾。下面,介绍一种快速查询多点DS18B20温度的方法,包括硬件的连线构成以及软件的编程思路。 2 解决方案 由于一般都会将对DS18B20器件的温度查询放置在中断当中实现或者是在程序的主循环当中采用定时查询的方法实现,所以这就要求每次对DS18B20的操作都能快速的完成,尽快退出来进行其它的处理。所以为了解决串联多个器件在一线制总线上的结构导致的在查询多点温度时速度缓慢的问题,本设计提出一种解决方案,具体说是通过修改硬件连接来实现方便快捷的查询多点DS18B20器件温度的方法。 2.1 快速查询多点

文档评论(0)

wuyoujun92 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档