鍗曠墖鏈烘俯搴︽帶鍒剁郴缁熸瘯涓氳鏂囪璁?- 鐧惧害鏂囧簱 联系客服

发布时间 : 星期四 文章鍗曠墖鏈烘俯搴︽帶鍒剁郴缁熸瘯涓氳鏂囪璁?- 鐧惧害鏂囧簱更新完毕开始阅读e2f53ea9fb0f76c66137ee06eff9aef8941e482b

当符号位S=0时,表示测得的温度值为正值,可以直接将二进制位转换为十进制;

当符号位S=1时,表示测得的温度值为负值,要先将补码变成原码,再计算十进制数值。 表2.4是一部分温度值对应的二进制温度数据。

表2-3 DS18B20温度转换时间表

R1 0 0 1 1 R0 0 1 0 1 分辨率/位 9 10 11 12

温度最大转向时间/ms 93.75 187.5 375 750 表2-4 一部分温度对应值表

温度/℃ +125 +85 +25.0625 +10.125 +0.5 0 -0.5 -10.125 -25.0625 -55

4) CRC的产生

二进制表示 0000 0111 1101 0000 0000 0101 0101 0000 0000 0001 1001 0000 0000 0000 1010 0001 0000 0000 0000 0010 0000 0000 0000 1000 1111 1111 1111 0000 1111 1111 0101 1110 1111 1110 0110 1111 1111 1100 1001 0000 十六进制表示 07D0H 0550H 0191H 00A2H 0008H 0000H FFF8H FF5EH FE6FH FC90H 在64 b ROM的最高有效字节中存储有循环冗余校验码(CRC)。主机根据ROM的前56位来计算CRC值,并和存入DS18B20中的CRC值做比较,以判断主机收到的ROM数据是否正确。另外,由于DS18B20单线通信功能是分时完成的,它有严格的时隙概念,因此读写时序很重要。系统对DS18B20的各种操作按协议进行。操作协议为:初使化DS18B20(发复位脉冲)→发ROM功能命令→发存储器操作命令→处理数据。

3 DS18B20温度传感器简介

3.1 温度传感器的历史及简介

温度的测量是从金属(物质)的热胀冷缩开始。水银温度计至今仍是各种温度测量的计量标准。可是它的缺点是只能近距离观测,而且水银有毒,玻璃管易碎。代替水银的有酒精温度计和金属簧片温度计,它们虽然没有毒性,但测量精度很低,只能作为一个概略指示。不过在居民住宅中使用已可满足要求。在工业生产和实验研究中为了配合远传仪表指示,出现了许多不同的温度检测方法,常用的有电阻式、热电偶式、PN结型、辐射型、光纤式及石英谐振型等。它们都是基于温度变化引起其物理参数(如电阻值,热电势等)的变化的原理。随着大规模集成电路工艺的提高,出现了多种集成的数字化温度传感器。

3.2 DS18B20的工作原理

3.2.1 DS18B20工作时序

根据DS18B20的通讯协议,主机控制DS18B20完成温度转换必须经过三个步骤: 1. 每一次读写之前都必须要对DS18B20进行复位; 2. 复位成功后发送一条ROM指令;

3. 最后发送RAM指令,这样才能对DS18B20进行预定的操作。

复位要求主CPU将数据线下拉500微秒,然后释放,DS18B20收到信号后等待15~60微秒左右后发出60~240微秒的存在低脉冲,主CPU收到此信号表示复位成功。其工作时序包括初始化时序、写时序和读时序,具体工作方法如图3.1,3.2,3.3所示。

(1) 初始化时序

等待15-60主机主机复位脉冲最小480US最小480响应脉冲60~240

图3-1 初始化时序

总线上的所有传输过程都是以初始化开始的,主机响应应答脉冲。应答脉冲使主机知道,总线上有从机设备,且准备就绪。主机输出低电平,保持低电平时间至少480us,以产生复位脉冲。接着主机释放总线,4.7KΩ上拉电阻将总线拉高,延时15~60us,并进入接受模式,以产生低电平应答脉冲,若为低电平,再延时480us。

(2) 写时序

主机写\>1>1主机写\采样15~45图3-2 写时序

采样15~45

写时序包括写0时序和写1时序。所有写时序至少需要60us,且在2次独立的写时序之间至少需要1us的恢复时间,都是以总线拉低开始。写1时序,主机输出低电平,延时2us,然后释放总线,延时60us。写0时序,主机输出低电平,延时60us,然后释放总线,延时2us。

(3) 读时序

主机写\>1>1主机写\主机采样45主机采样45

图3-3 读时序

总线器件仅在主机发出读时序是,才向主机传输数据,所以,在主机发出读数据命令后,必须马上产生读时序,以便从机能够传输数据。所有读时序至少需要60us,且在2次独立的读时序之间至少需要1us的恢复时间。每个读时序都由主机发起,至少拉低总线1us。主机在读时序期间必须释放总线,并且在时序起始后的15us之采样总线状态。主机输出低电平延时2us,然后主机转入输入模式延时12us,然后读取总线当前电平,然后延时50us

3.2.2 ROM操作命令

当主机收到DSl8B20 的响应信号后,便可以发出ROM 操作命令之一。

3.3 DS18B20的测温原理

3.3.1 DS18B20的测温原理:

每一片DSl8B20在其ROM中都存有其唯一的48位序列号,在出厂前已写入片ROM 中。主机在进入操作程序前必须用读ROM(33H)命令将该DSl8B20的序列号读出。

程序可以先跳过ROM,启动所有DSl8B20进行温度变换,之后通过匹配ROM,再逐一地读回每个DSl8B20的温度数据。

DS18B20的测温原理如图3.4所示,图中低温度系数晶振的振荡频率受温度的影响很小,用于产生固定频率的脉冲信号送给减法计数器1,高温度系数晶振随温度变化其震荡频率明显改变,所产生的信号作为减法计数器2的脉冲输入,图中还隐含着计数门,当计数门打开时,DS18B20就对低温度系数振荡器产生的时钟脉冲后进行计数,进而完成温度测量。计数门的开启时间由高温度系数振荡器来决定,每次测量前,首先将-55 ℃所对应的基数分别置入减法计数器1和温度寄存器中,减法计数器1和温度寄存器被预置在-55 ℃所对应的一个基数值。减法计数器1对低温度系数晶振产生的脉冲信号进行减法计数,当减法计数器1的预置值减到0时温度寄存器的值将加1,减法计数器1的预置将重新被装入,减法计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到减法计数器2计数到0时,停止温度寄存器值的累加,此时温度寄存器中的数值即为所测温度。图2.3中的斜率累加器用于补偿和修正测温过程中的非线性,其输出用于修正减法计数器的预置值,只要计数门仍未关闭就重复上述过程,直至温度寄存器值达到被测温度值.

表3-1 ROM操作命令

指令 读ROM 符合ROM 约定代码 33H 55H 功 能 读DS18B20 ROM中的编码 发出此命令之后,接着发出64位ROM编码,访问单线总线上与该编码相对应的DS18B20 使之作出响应,为下一步对该DS18B20的读写作准备 搜索ROM 0F0H 用于确定挂接在同一总线上DS18B20的个数和识别64位ROM地址,为操作各器件作好准备 跳过ROM 0CCH 忽略64位ROM地址,直接向DS18B20发温度变换命令,适用于单片工作。