传感器原理与应用课程设计报告-基于ds18b20数字温度传感器的温度检测系统内容摘要:

序号 8 位 CRC 编码检验 内部电源探测位和单线端口位产生器暂存器下限触发上限触发温度传感器存储器和控制逻辑 图 3- 1 DS18B20 内部结构 2) 非挥发的温度报警触发器 (包括上限温度触发器 TH 和下限温度触发器 TL)。 可 通过软件程序写入设定用户所要求的报警上下限温度值。 3) 高速 暂存器。 可以设置 DS18B20 温度转换的精度。 DS18B20 出厂时该位被设置为 0,用户要去改动, R1 和 R0 决定温度转换的精度位数,来设置分辨率 ,如图。 DS18B20 温度传感器的内部存储器还包括一个高速暂存 RAM 和一个非易失性的可电擦除的 E2PRAM。 高速暂存 RAM 的结构为 8 字节的存储器, 表 3- 2 DS18B20 高速暂存器结构 序号 寄存器名称 作用 0 温度低字节 以 16 位补码形式存放 1 温度高字节 6 2 TH/用户字节 1 存放温度上限值 3 HL/用户字节 2 存放温度下限值 5 保留字节 2 6 计数器余值 7 计数器 8 CRC 值 12 此外, DS18B20 内部还包括寄生电源、电源检测、存储控制逻辑、 8 位循环冗余码生成器( CRC)等部分。 DS18B20 有两种供电方式。 如图 32 所示:图( a)是由外电源供电,图 (b)是 I/O 口总线和寄生电容配合供电。 DS18B20 寄生电源由两个二极管和寄生电容构成。 电源检测电路用于判定供电方式。 寄生电源供电时,电源端与接地端并联接地,器件从总线上获取电源。 在 I/O 线呈低电平时,改由寄生电容上的电压继续向器件供电。 采用寄生电源有两个优点:一是检测远程温度是无需本地电源;二是缺少正常电源时也能读 ROM。 若采用外部电源,则通过二极管向器件供电。 UDD I/O I/O GND UDD GND 图 (a)使用外部电源供电 图 ( b)使用寄生电源供电 图 32 DS18B20 与微处理器的硬件连接方式 由表 33 可见,分辨率越高,所需要的温度数据转换时间越长。 因此,在实际应用中要 将分辨率和转换时间权衡考虑。 高速暂存 RAM 的第 8 字节保留未用,表现为全逻辑 1。 第 9 字节读出前面所有8 字节的 CRC 码,可用来检验数据,从而保证通信数据的正确性。 当 DS18B20 接收到温度转换命令后,开始启动转换。 转换完成后的温度值就以 16 位带符号扩展的二进制补码形式存储在高速暂存存储器的第 2 字节。 单片机可以通过单线接口读出该数据,读数据时低位在先,高位在后,数据格式以 ℃/ LSB 形式表示。 当符号位 S= 0 时,表示测得的温度值为正值,可以直接将二进制位转换为十进制;当符号位 S= 1 时,表 示测得的温度值为负值,要先将补码变成原码,再计算十进制数值。 表 24 是一部分温度值对应的二进制温度数据。 MCU (单片 机 ) DS18B20 MCU (单片 机 ) DS18B20 13 表 3- 3 DS18B20 温度转换时间表 R1 R0 分辨率 /位 温度最大转向时间 /ms 0 0 9 0 1 10 1 0 11 375 1 1 12 750 表 3- 4 一部分温度对应值表 温度 /℃ 数字输出(二进制) 数字输出(十六进制) +125 0000 0000 1111 1010 00FAH +25 0000 0000 0011 0010 0032H + 0000 0000 0000 0001 0001H 0 0000 0000 0000 0000 0000H 1111 1111 1111 1111 FFFFH 25 1111 1111 1100 1110 FFCEH 55 1111 1111 1001 0010 FF92H DS18B20 的测温原理 每一片 DSl8B20 在其 ROM 中都存有其唯一的 64 地址位序列号,在出厂前已写入片内ROM 中。 主机在进入操作程序前必须用读 ROM(33H)命令将该 DSl8B20 的序列号读出。 程序可以先跳过 ROM,启动所有 DSl8B20 进行温度变换,之后通过匹配 ROM,再逐一地读回每个 DSl8B20 的温度数据。 DS18B20 的测温原理如图 33 所示。 低温度系数晶振的振荡频率受温度的影响很小 ,用于产生固定频率的脉冲信号送给减法计数器 1,高温度系数晶振随温度变化其震荡 频率明显改变,所产生的信号作为减法计数器 2 的脉冲输入,图中还隐含着计数门,当计数 门打开时, DS18B20 就对低温度系数振荡器产生的时钟脉冲后进行计数,进而完成温度测量。 计数门的开启时间由高 温度系数振荡器来决定,每次测量前,首先将 55 ℃ 所对应的基数分别置入减法计数器 1 和温度寄存器中,减法计数器 1 和温度寄存器被预置在 55 ℃ 所对应的一个基数值。 减法计数器 1 对低温度系数晶振产生的脉冲信号进行减法计数,当减法计数器 1 的预置值减到 0 时温度寄存器的值将加 1,减法计数器 1 的预置将重新被装入,减法计数器 1 重 新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到减法计数器 2 计数到 0 时, 停止温度寄存器值的累加,此时温度寄存器中的数值即为所测温度。 图 中的斜率累加器用 于补偿和修正测温过程中的非线性, 提高测量准确制度。 其输出用于修正减法计数器的预置值,只要计数门仍未关闭就重复上述过程,直至温度寄存器值达到被测温度值。 14 图 33 DS18B20的测温原理 图 DS18B20 与微处理器的接口技术 1. DS18B20 与单片机的链接有两种方法,如图 32 所示:一种是 VDD 接外部电源, GND接地, I/O 与单片机的任一条 I/O 线相连;另一种是用寄生电源供电,此时 VDD、GND 并联接地, I/O 接单片机的任一条 I/O。 无论是内部寄生电源供电还是外部供电, I/O 接口都要接漏极开路或三态输出以提高负载驱动能力。 本设计采用寄生电源供电模式, I/O 口接 5KΩ左右的上拉电阻。 实际应用中, DS18B20 可以距单片机150m 远,测量数据不会产生误差,在同一条数据总线上可以并接许多片 DS18B20实现多路温度采集。 2. DS18B20 控制命令 ( 1) 暂存器命令 访问 DS18B20 的暂存器共有 6 条命令,如表 35 所示。 表 35 DS18B20 暂存器命令 指令 约定代码 操作说明 温度变换 44H 启动 DS18B20 进行温度转换,转换时间最长为500MS,结果存入内部 9 字节 RAM 中 读暂存器 0BEH 读内部 RAM 中 9 字节的内容 写暂存器 4EH 发出向内部 RAM 的第 3, 4 字节写上、下限温度数据命令,紧跟读命令之后,是传送两字节的数据 复制暂存器 48H 将 E2PRAM 中第 3, 4 字节内容复制到 E2PRAM 中 重调 E2PRAM 0BBH 将 E2PRAM 中内容恢复到 RAM 中的第 3, 4 字节 读 供 电方 式 0B4H 读 DS18B20 的供电模式,寄生供电时 DS18B20 发送“ 0”,外接电源供电 DS18B20 发送“ 1” ( 2)对 ROM 的 5 种操作命令。 如表 36 所示: ① 读 ROM 命令(代码为 33H):该命令允许主 CPU 读取 DS18B20 中的 8 位产品减法计数器 1 斜坡累加器 减到 0 减法计数器 2 预 置 低温度系数 振 荡 器 高温度系数 振 荡 器 计数比较器 预 置 温度寄存器 减到 0 加 1 置位 /清零 停止 15 序列编号、 48 位产品序列号及 8 位 CRC 值。 该命令值适用于总线上只挂接一片 DS18B20,对总线上挂有多片 DS18B20 时不适用。 ② 符合 ROM 命令(代码为 55H):该指令适合在一条总线上挂接多片 DS18B20的情况。 具体应用是这样的,主 CPU 先向总线发这条命令,然后再发 64位的 ROM 数据。 再总线上,只有符合所发的 64 位 ROM 的 DS18B20 才有操作权。 这样就实现了单总线上的寻址。 ③ 寻找 ROM 命令(代码为 F0H):这条命令用于对连在单总线 上的多个 DS18B20进行初始化操作。 ④ 跳过 ROM 命令(代码为 CCH):该命令用于对总线上的报警器进行寻找,其用法与寻找 ROM 一样。 ⑤ 寻找报警命令(代码为 ECH):该命令用于对总线上的报警器件进行寻找ROM 一样。 表 36 ROM 操作命令 指令 约定代码 操作说明 读 ROM 33H 读 DS18B20 ROM 中的编码 符合 ROM 55H 发出此命令之后,接着发出 64 位 ROM 编码,访问单线总线上与该编码相对应的 DS18B20 使之作出响。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。