? 在DS18B20中的每个器件上都有独一无二的序列号。 ? 实际应用中不需要外部任何元器件即可实现测温。 ? 测量温度范围在-55.C到+125.C之间。
? 数字温度计的分辨率用户可以从9位到12位选择。 ? 内部有温度上、下限告警设置。
TO-92封装的DS18B20的引脚排列见右图, 其引脚功能描述见表
表3-2 DS18B20详细引脚功能描述
序号 1 2 3 名称 GND DQ VDD 引脚功能描述 地信号 数字输入输出引脚,开漏单总线接口引脚,当使用寄生电源时,可向电源提供电源 可选择的VDD引脚,当工作于寄生电源时,该引脚必须接地 ② DS18B20的内部结构
DS18B20的内部框图下图所示。64位ROM存储器件独一无二的序列号。暂存器包含两字节(0和1字节)的温度寄存器,用于存储温度传感器的数字输出。暂存器还提供一字节的上线警报触发(TH)和下线警报触发(TL)寄存器(2和3字节),和一字节的配置寄存器(4字节),使用者可以通过配置寄存器来设置温度转换的精度。暂存器的5、6和7字节器件内部保留使用。第八字节含有循环冗余码(CRC )。使用寄生电源时,DS18B20不需额外的供电电源;当总线为高电平时,功率由单总线上的上拉电阻通过DQ引脚提供;高电平总线信号同时也向内部电容CPP充电,CPP在总线低电平时为器件供电。
图3-2 DS18B20的内部框图
(4)DS18B20的4个主要数据部件:
①光刻ROM中的64位序列号是出厂前被光刻好的,它可以看作是该
7
DS18B20的地址序列码。64位光刻ROM的排列是:开始8位(28H)是产品类型标号,接着的48位是该DS18B20自身的序列号,最后8位是前面56位的循环冗余校验码(CRC=X8+X5+X4+1)。光刻ROM的作用是使每一个DS18B20都各不相同,这样就可以实现一根总线上挂接多个DS18B20的目的。
②DS18B20中的温度传感器可完成对温度的测量,以12位转化为例:用16位符号扩展的二进制补码读数形式提供,以0.0625℃/LSB形式表达,其中S为符号位。
这是12位转化后得到的12位数据,存储在18B20的两个8比特的RAM中,二进制中的前面5位是符号位,如果测得的温度大于0,这5位为0,只要将测到的数值乘于0.0625即可得到实际温度;如果温度小于0,这5位为1,测到的数值需要取反加1再乘于0.0625即可得到实际温度。
例如+125℃的数字输出为07D0H,+25.0625℃的数字输出为0191H,-25.0625℃的数字输出为FF6FH,-55℃的数字输出为FC90H。
表3-3 DS18B20温度数据表
TEMPERATURE +125℃ +85℃ +25.0625℃ +10.125℃ +0.5℃ 0℃ -0.5℃ -10.125℃ -25.0625℃ -55℃ DIGITAL OUTPUT 0000 0111 1101 0000 0000 0101 0101 0000 0000 0001 1001 0001 0000 0000 1010 0010 0000 0000 0000 1000 0000 0000 0000 0000 1111 1111 1111 1000 1111 1111 0101 1110 1111 1110 0110 1111 1111 1100 1001 0000 DIGITAL OUTPUT 07D0H 0550H 0191H 00A2H 0008H 0000H FFF8H FF5EH FE6FH FC90H ③DS18B20温度传感器的存储器
DS18B20温度传感器的内部存储器包括一个高速暂存RAM和一个非易失性的可电擦除的EEPRAM,后者存放高温度和低温度触发器TH、TL和结构寄存器。
④配置寄存器
表3-4 配置寄存器 0 R1 R0 1 1 1 1 1 8
低五位一直都是\,TM是测试模式位,用于设置DS18B20在工作模式还是在测试模式。在DS18B20出厂时该位被设置为0,用户不要去改动。R1和R0用来设置分辨率,如下表所示:(DS18B20出厂时被设置为12位)
表3-5 R1与R0确定传感器分辨率设置表
R1 0 0 1 1 R0 0 1 0 1 传感器精度/bit 9 10 11 12 转换时间/ms 93.75 187.5 375 750 (5)DS18B20的工作过程 ? 初始化
? ROM命令跟随着需要交换的数据 ? 功能命令跟随着需要交换的数据
访问DS18B20必须严格遵守这一命令序列,如果丢失任何一步或序列混乱,DS18B20都不会响应主机(除了Search ROM 和Alarm Search这两个命令,在这两个命令后,主机都必须返回到第一步)。
a).初始化:
DS18B20所有的数据交换都由一个初始化序列开始。由主机发出的复位脉冲和跟在其后的由DS18B20发出的应答脉冲构成。当DS18B20发出响应主机的应答脉冲时,即向主机表明它已处在总线上并且准备工作。
b). ROM命令:
ROM命令通过每个器件64-bit的ROM码,使主机指定某一特定器件(如果有多个器件挂在总线上)与之进行通信。DS18B20的每个ROM命令都是8 bit长。
c). 功能命令:
主机通过功能命令对DS18B20进行读/写Scratchpad存储器,或者启动温度转换。DS18B20的功能命令如表3-6所示。
指令 读ROM 符合ROM 搜索ROM 跳过ROM 协议 33H 55H 0F0H 0CCH 功能 读DS18B20中的编码(即64位地址) 发出此命令后,接着发出64位ROM编码,访问单总线上与该编码相对应的DS18B20,使之作出响应,为下一步对该DS18B20的读写作准备 用于确定挂接在同一总线上DS18B20的个数和识别64位ROM地址,为操作各器件作好准备 忽略64位ROM地址,直接向DS18B20V 温度转换命令,适用于单个DS18B20工作 执行后,只有温度超过庙宇值上限或下限的片子才做出响应 9
报警搜索命令 0ECH 温度转换 读暂存器 写暂存器 复制暂存器 重调EPROM 读供电方式 244H BEH 4EH 48H 0B8H 0B4H 启动DS18B20进行温度转换,转换时间最长为500ms(典型为200ms),结果丰入内部9字节RAM中 读内部RAM中9字节的内容 发出向内部RAM的第3、4字节写上、下温度数据命令,紧该温度命令之后,传达两字节的数据 将RAM中第3、4字内容复制到E2PROM中 将EPROM中内容恢复到RAM中的第3、4字节 读DS18B20的供电模式,寄生供电时DS18B20发送“0”,外部供电时DS18B20发送“1” 表3-6
2(6)DS18B20的信号方式
DS18B20采用严格的单总线通信协议,以保证数据的完整性。所有单总线器件要求遵循严格的通信协议,以保证数据的完整性。1-wire协议定义了几种信号类型:复位脉冲、答应脉冲、写0、写1、读0和读1时序。所有的单总线命令序列(初始化、ROM命令、功能命令)都是由这些基本的信号类型组成。这些信号,除了应答脉冲外都是由主机发出同步信号,并且发出的所有命令和数据都是字节的低位在前。初始化时序包括主机发送的复位脉冲和从机发出的应答脉冲主机通过拉低单总线至少480us,以产生TX复位脉冲:然后主机释放总线,并进入RX接收模式,当主机释放总线时,总线由低电平跳变为高电平时产生一上升沿,单总线器件检测到这上升沿后,延时15~60us,接着单总线器件通过拉低总线60~240us,以产生应答脉冲。主机接收到从机应答脉冲后,说明有单总线器件在线,然后主机就开始对从机进行ROM命令和功能命令操作。除了应答脉冲所有这些信号都由主机发出同步信号。总线上传输的所有数据和命令都是以字节的低位在前。
a).初始化序列:复位脉冲和应答脉冲
在初始化过程中,主机通过拉低单总线至少480μs,以产生复位脉冲(TX)。然后主机释放总线并进入接收(RX)模式。当总线被释放后,5kΩ的上拉电阻将单总线拉高。DS18B20检测到这个上升沿后,延时15μs~60μs,通过拉低总线60μs~240μs产生应答脉冲。初始化波形如图3-3所示。
图3-3 初始化脉冲
b).读和写时序
10
在写时序期间,主机向DS18B20写入指令;而在读时序期间,主机读入来自DS18B20的指令。在每一个时序,总线只能传输一位数据。读/写时序如图3-4所示。
? 写时序
存在两种写时序:“写1”和“写0”。主机在写1时序向DS18B20写入逻辑1,而在写0时序向DS18B20写入逻辑0。所有写时序至少需要60μs,且在两次写时序之间至少需要1μs的恢复时间。两种写时序均以主机拉低总线开始。
产生写1时序:主机拉低总线后,必须在15μs内释放总线,然后由上拉电阻将总线拉至高电平。产生写0时序:主机拉低总线后,必须在整个时序期间保持低电平(至少60μs)。
在写时序开始后的15μs~60μs期间,DS18B20采样总线的状态。如果总线为高电平,则逻辑1被写入DS18B20;如果总线为低电平,则逻辑0被写入DS18B20。
? 读时序
图3-4 DS18B20读/写时序图
DS18B20只能在主机发出读时序时才能向主机传送数据。所以主机在发出读数据命令后,必须马上产生读时序,以便DS18B20能够传送数据。所有读时序至少60μs,且在两次独立的读时序之间至少需要1μs的恢复时间。
每次读时序由主机发起,拉低总线至少1μs。在主机发起读时序之后,DS18B20开始在总线上传送1或0。若DS18B20发送1,则保持总线为高电平;
11