DS18B20的操作

DS18B20

1    Feature

1.         一总线接口,只有一个端口用来通信;

2.         可多个传感器支路并联使用简化了分布式温度传感应用;

3.         不需要再外接其他器件;

4.         可以从数据线驱动,电源供应范围为3.0V到5.5V,也可从专用管脚接电;

5.         零备用电源要求;

6.         测温范围为-55度到125度,在-10到+85度之间测量时误差为0.5度;

7.         可编程分辨率9到12位,12位时转换时间最大转换时间为750ms;

8.         可由用户定义非易失性的报警温度

9.         报警搜索命令自动辨别和寻址温度超出程序设定温度的设备;

10.      可用于恒温控制,工业系统,消费类产品,温度计或任何热敏系统;

2    概述

如图展示了DS18B20的四大主要组成部分:

1.64位光刻ROM

2.温度传感器,

3.非易失性温度报警触发器,包括高温触发和低温触发;

4.一个配置寄存器。

内部结构

一 DS18B20单总线事项

一总线系统只一种有一个bus master和一或多个slaves;DS就是这样的一个slave;关于这种一总线系统的讨论使用通常有三点:

1硬件配置;

2操作顺序

3一总线信号(包括信号的类型和时序)

1.硬件配置:

一线总线只定义一个单独的信号线,基于此,总线上的每个设备在恰当的时候可以驱动总线这项能力就显的犹为重要。To  facilitate  this(为了做到这样), 每个链接到单总线上的设备都应当有漏极开路或三态输出;DS18B20的DQ引脚就是漏极开路,如下图为其内部端口电路的造价模型;多站总线通常由一总线和多个slave组成。单总线要求大约5K欧的上拉电阻:

操作processing顺序

The protocol for accessing the DS18B20 via the 1-Wire port is as follows:

通过单总线端口访问DS18B20的协议如下:

Initialization【初始化】

ROM Function Command【ROM函数命令】

Memory Function Command【内存函数命令】

Transaction/Data【数据传输命令】

1.1初始化

单总线上的所有处理操作应该首先以一个初始化序列为开始;The initialization sequence consists of a reset pulse transmitted by the bus master followed by presence pulse(s) transmitted by the slave(s).初始化序列由一个由master发送的复位脉冲组成, 随后slaves会传递一个存在脉冲;

存在脉冲的目的是让总线master知道DS18B20在bus上而且已经初始化成功做好开始操作的准备;更详细的部分看section“1-wire signaling”

时序图:

初始化程序:

bit Init_DS18B20(void)

{

bit dat=0;

DQ = 1;    //最最初始,DQ置1

DelayUs2x(5);   //稍做延时

DQ = 0;         //单片机将DQ拉低,一人reset 脉冲完成;

DelayUs2x(200); //根据时序DQ低平需要延时 大于 480us 小于960us

DelayUs2x(200);

DQ = 1;        //时间到,拉高总线

DelayUs2x(50); //等待15~60us ,接收DS18B20发的持续60-240us的存在脉冲(0)

dat=DQ;        //接收操作;dat通知总程序初始化结果, dat=0成功, dat=1失败

DelayUs2x(25); //稍作延时返回

return dat;

}

1.2 ROM Function Command【ROM函数命令】

一旦总线master检测到一个存在信号,即可以发出以下五种ROM命令中的一种。所有的ROM函数命令都是8全长度。命令如下:

Read ROM [33h]这个命令允许总线master读DS18B20的8位产品系列编码,唯一的48位序列号,以及8位的CRC校验码。这条命令只有在单线上才可有效使用。如果使用这个命令的时候,有多个slave在bus上,当这些slave同时传输数据时会发生数据冲突。(结果会是线与结果)。

Match ROM [55h]: 匹配rom命令,再加上一个64位的ROM序列,允许总线master在多支线的总线上寻址特定的DS18B20。只有正确匹配到发送的64位序列号的DS18B20才会对随后的内存操作指令进行响应。那些没匹配64位ROM序列的slaves将等待一下个复位脉冲。这个命令在单线多路和单路时均可使用。

Skip ROM [CCh]跳过ROM操作;在单点总线系统中,这个命令允许总线master不发送64位的ROM序列而直接进行memory操作命令。如果是在多点总线系统使用了这个命令,那么如果随后又发送Read command,总线上就会出现数据冲突。(结果会是线与结果)

Search ROM [F0h]系统在初始工作时,总线mastr可能并不知道单线总线上有几个设备或者这些设备的64位ROM codes.那么search ROM命令即允许总线master使用一种消去处理来识别bus上的所有设备。

Alarm Search [ECh]此命令的流程与搜索ROM命令相同。但是,仅在最近一次温度测量出现告警的情况下,DS18B20才对此命令作出响应。报警的条件是高于TH或低于TL。只要DS18B20一上电,报警条件就保持在设置状态ountil another temperature measurement reveals a non-alarming value。报警的的触发值存储在E2PROM中。如果报警条件存在而且TH或TL被改变,一个温度转换就会开始,目的是验证温传感是否报警。

 

1.3     MEMORY COMMAND FUNCTIONS[内存操作指令]

1.3.1 Write Scratchpad [4Eh]

这个命令写向DS18B20的高速缓存区,接下来应为3个字节的数据被写进从TH register到TL register 到 配置寄存器,这些数据得在下一次复位信号前写进来。

1.3.2 READ Scratchpad[BEH]

这个命令会读高速缓存区的内容。从第0字节开始到byte8共九字节。如果不是所有的方位都需要被读,总线master可以随时编写 一个复位信号来终止读出。

1.3.3 Copy Scratchpad[48h]

这个命令会复制DS18B20的Scratchpad到时E2 memory ,存储到非易失性的温度触发器字节。

1.3.4 CONVERT【44h】

时间: 2025-01-10 22:31:40

DS18B20的操作的相关文章

Arduino传感器连载之温度测量篇

来源:http://www.hzhike.com/School/2016/201607/20160711100131.html 温度是我们经常接触到的物理量,能够被我们所直观的感受得到,例如天气凉了需要增添衣物,吃的食物太烫需要吹一吹,同时也需要对温度精确的测量,例如人类的正常体温是37.5℃,一个大气压下纯水沸腾时的温度是100℃,都需要我们去做实验来找出其中的科学.下面我们将详细讲解几种常用的温度传感器,并利用Arduino来实现温度的测量,包括热敏电阻.LM35.DS18B20.DHT11

51单片机1-Wire总线及应用实例

-------------------------------------------- 1-Wire总线 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 只使用一根导线(地址线.数据线.控制线合一) 可以传输时钟和数据 双向传输 信号线上可挂许多测控

51单片机课程设计:基于DS18B20的温度报警器

51单片机课程设计:基于DS18B20的温度报警器 本程序用于读取DS18B20温度,同时具备报警功能,工程分为3个文件,main.c.temp.c.temp.h,经本人修改部分代码,适用于吉林农业大学51开发板,其他朋友亦可移植到其他型号开发板.工程文件在文章最下方. 1.main.c文件 /*********************************说明****************************************** 本程序用于读取温度检测模块DS18B20数值,并

DS18B20时序分析详细步骤

作者:华清远见讲师 1.过程1.2是初始化过程,每次读取都要初始化,否则18b20处于待机状态,无法成功读取.过程1:拉低信号线480-700us,使它复位,然后释放总线15-60us,18b20会拉低总线60-240us,然后它释放总线.所以初始化成功的一个标志就是能否读到18b20这个先低后高的操作时序. (注意:黑色部分表示主机操作,蓝色部分表示18b20操作,每次主机操作完成之后等待18b20状态时,必须要释放总线,比如将IO设置为高阻态什么的.否则18B20没法把状态写到线上) 2.过

【Espruino】NO.10 数字温度传感器DS18B20

http://blog.csdn.net/qwert1213131/article/details/28845147 本文属于个人理解,能力有限,纰漏在所难免,还望指正! [小鱼有点电] [Espruino中文社区] DS18B20是很常用的数字温度传感器,供电范围为3.0V到5.5V,测温范围为-55~+125℃,在-10~+85℃范围内精度为+-0.5℃,每个器件都有唯一的64为序列号存储在内部存储器中,因此在一根总线上可以挂载多个器件,且独特的单线接口方式,使得DS18B20与微控制器连接

DS18B20

DS18B20驱动 [ 2012-5-14 12:01:00 | By: 吴师傅 ]   14 推荐 一.概述 DS18B20是一种单总线数字温度传感器.測试温度范围-55℃-125℃,温度数据位可配置为9.10.11.12位,相应的刻度值分别为0.5℃.0.25℃.0.125℃.0.0625℃,相应的最长转换时间分别为93.75ms.187.5ms.375ms.750ms.出厂默认配置为12位数据,刻度值为0.0625℃,最长转换时间为750ms.从以上数据能够看出,DS18B20数据位越低.

基于ARM-LINUX的温度传感器驱动(DS18B20) .

DS18B20数字温度传感器接线方便,封装成后可应用于多种场合,如管道式,螺纹式,磁铁吸附式,不锈钢封装式,型号多种多样,有LTM8877,LTM8874等等.主要根据应用场合的不同而改变其外观.封装后的DS18B20可用于电缆沟测温,高炉水循环测温,锅炉测温,机房测温,农业大棚测温,洁净室测温,弹药库测温等各种非极限温度场合.耐磨耐碰,体积小,使用方便,封装形式多样,适用于各种狭小空间设备数字测温和控制领域. 技术性能描述 1. 独特的单线接口方式,DS18B20在与微处理器连接时仅需要一条口

DS18B20测温原理及逻辑时序

DS18B20测温原理: 图中低温度系数晶振的振荡频率受温度的影响很小,用于产生固定频率的脉冲信号送给减法计数器1,高温度系数晶振随温度变化其震荡频率明显改变,所产生的信号作为减法计数器2的脉冲输入, DS18B20内部的低温度系数振荡器是一个振荡频率随温度变化很小的振荡器,为计数器1提供一频率稳定的计数脉冲. 高温度系数振荡器是一个振荡频率对温度很敏感的振荡器,为计数器2提供一个频率随温度变化的计数脉冲. 初始时,温度寄存器被预置成-55℃,每当计数器1从预置数开始减计数到0时,温度寄存器中寄

DS18B20 驱动编写

嵌入式开发平台:mini2440 DS18B20 所用GPIO:S3C2410_GPF(3) 一.DS18B20 时序分析 DS18B20的一线工作协议流程是:初始化→ROM操作指令→存储器操作指令→数据传输,其工作时序包括:初始化时序.写时序.读时序. 1.初始化时序 主机首先发出一个480-960微秒的低电平脉冲,然后释放总线变为高电平,并在随后的480微秒时间内对总线进行检测,如果有低电平出现说明总线上有器件已做出应答,若无低电平出现一直都是高电平说明总线上无器件应答.  作为从器件的DS