单片机应用技术课程设计报告-基于单片机的数字温度计设计内容摘要:

料中均未提及单总线上所挂 DS18B20 数量问题,容易使人误认为可以挂任意多个 DS18B20,在实际应用中并非如此,当单总线上所挂 DS18B20 超过 8 个时,就需要解决微处理器的 总线驱动问题,这一点在进行多点测温系统设计时要加以注意。 ●在 DS18B20测温程序设计中,向 DS18B20 发出温度转换命令后,程序总要等待 DS18B20的返回信号,一旦某个 DS18B20 接触不好或断线,当程序读该 DS18B20 时,将没有返回信号,程序进入死循环,这一点在进行 DS18B20硬件连接和软件设计时也要给予一定的重视。 DS18B20 内部结构 图为 DS1820 的内部框图,它主要包括 寄生电源 、 温度传感器 、 64 位激光 ROM 单线接口 、 存放中间数据的高速暂存器 (内含便笺式 RAM),用于存储用户 设定的温度上下限值的 TH 和 TL触发器存储与控制逻辑、 8 位循环冗余校验码( CRC)发生器等七部分。 DS18B20采用3脚 PR- 35 封装或8脚 SOIC封装,其内部结构框图如图 14 图 DS18B20内部结构框图 64 b 闪速 ROM 的结构如下: 开始8位是产品类型的编号,接着是每个器件的惟一的序号,共有 48 位,最后8位是前面 56 位的 CRC 检验码,这也是多个 DS18B20 可以采用一线进行通信的原因。 温度报警触发器TH和TL ,可通过软件写入户报警上下限。 主机操作 ROM的命令有五种,如表所列 15 DS18B20 温度传感器的内部存储器还包括一个高速暂存RAM和一个非易失性的可电擦除的 EERAM。 高速暂存 RAM 的结构为8字节的存储器,结构如图。 图 高速暂存 RAM结构图 前2个字节包含测得的温度信息,第3和第4字节TH和TL的拷贝,是易失的,每次上电复位时被刷新。 第5个字节,为配置寄存器,它的内容用于确定温度值的数字转 换分辨率。 DS18B20 工作时寄存器中的分辨率转换为相应精度的温度数值。 温度低位 温度高位 TH TL 配置 保留 保留 保留 8 位 CRC LSB MSB 指 令 说 明 读 ROM( 33H) 读 DS1820的序列号 匹配 ROM( 55H) 继读完 64位序列号的一个命令,用于多个 DS1820时定位 跳过 ROM( CCH) 此命令执行后的存储器操作将针对在线的所有 DS1820 搜 ROM( F0H) 识别总线上各器件的编码,为操作各器件作好准备 报警搜索( ECH) 仅温度越限的器件对此命令作出响应 16 当 DS18B20 接收到温度转换命令后,开始启动转换。 转换完成后的温度值就以 16 位带符号扩展的二进制补码形式存储在高速暂存存储器的第 1,2 字节。 单片 机 可通过单线接口读到该数据,读取时低位在前,高位在后,数据格式以 5 ℃ /LSB 形式表示。 温度值格式如下: 这是 12 位转化后得到的 12 位数据,存储在 18B20 的两个 8 比特的 RAM中,二进制中的前面 5 位是符号位,如果测得的温度大于 0,这 5 位为 0,只要将测到的数值乘于 即可得到实际温度;如果温度小于 0,这 5位为 1,测到的数值需要取反加 1 再乘于 即可得到实际温度。 图 中,S 表示位。 对应的温度计算:当符号位 S=0 时, 表示测得的温度植为正值,直接将二进制位转换为十进制;当 S=1 时, 表示测得的温度植为负值, 先将补码变换为原码,再计算十进制值。 例如 +125℃ 的数字输出为 07D0H,+℃ 的数字输出为 0191H, ℃ 的数字输出为 FF6FH, 55℃ 的数字输出为 FC90H。 DS18B20 温度传感器主要用于对温度进行测量,数据可用 16 位符号扩展的二进制补码读数形式提供,并以 ℃ / LSB 形式表示。 表 2 是 部分温度值对应的二进制温度表示数据。 表 2 部分温度值 17 DS18B20 完成温度转换后,就把测得的温度值与 RAM 中的 TH、 TL 字节内容 作比较,若 TTH 或 TTL,则将该器件内的告警标志置位,并对主机发出的告警搜索命令作出响应。 因此,可用多只 DS18B20 同时测量温度并进行告警搜索。 在 64 位 ROM 的最高有效字节中存储有循环冗余校验码( CRC)。 主机根据 ROM 的前 56 位来计算 CRC 值,并和存入 DS18B20 中的 CRC 值做比较,以判断主机收到的 ROM 数 据是否正确。 DS18B20 测温原理 DS18B20 的测温原理如图 2 所示,图中低温度系 数晶振的振荡频率受温度的影响很小用于产生固定频率的脉冲信号送给减法计数器 1,高温度系数晶振随温度变化其震荡频率明显改变,所产生的信号作为减法计数器 2 的脉冲输入,图中还隐含着计数门,当计数门打开时, DS18B20 就对低温度系数振荡器产生的时钟脉冲后进行计数,进而完成温度测量 .计数门的开启时间由高温度系数振荡器来决定,每次测量前,首先将 55 ℃ 所对应的基数分别置入减法计数器 1 和温度寄存器中,减法计数器 1 和温度寄存器被预置在 55 ℃所对应的一个基数值。 减法计数器 1 对低温 度系数晶振产生的脉冲信号进行减法计数,当减法计数器 1 的预置值减到 0 时温度寄存器的值将加 1,减法计数器 1 的预置将重新被装入 ,减法计数器 1 重新开始对低温度系数晶振产生的脉冲信号进行计数 ,如此循环直到减法计数器 2 计数到 0 时,停止温度寄存器值的累加,此时温度寄存器中的数值即为所测温图 2 中的斜率累加器用于补偿和修正测温过程中的非线性其输出用,于修正减法计数器的预置值,只要计数门仍未关闭就重复上述过程,直至温度寄存器值达到被测温度值,这就 是 DS18B20的测温原理。 另外,由于 DS18B20 单线通信功能是分时完成的, 他有严格的时隙概念,因此读写时 序很重要。 系统对 DS18B20 的各种操作必须按协议进行。 操作协议为:初始化 DS18B20 (发复位脉冲) → 发 ROM 功能命令→ 发存储器操作命令 → 处理数据。 18 图( 2) DS18B20 测温原理图 在正常测温情况下, DS1820 的测温分辨力为 ℃,可采用下述方法获得高分辨率的温度测量结果:首先用 DS1820 提供的读暂存器指令( BEH)读出以 ℃为分辨率的温度测量结果,然后切去测量结果中的最低有效位( LSB),得到所测实际温度的整数部分 Tz,然后再用 BEH 指令取计 数器 1的计数剩余值 Cs 和每度计数值 CD。 考虑到 DS1820 测量温度的整数部分以℃、 ℃为进位界限的关系,实际温度 Ts 可用下式计算: Ts=( ℃) +(CDCs)/CD 提高 DS1820 测温精度的途径 ( 1)、 DS1820 高精度测温的理论依据 DS1820 正常使用时的测温分辨率为 ℃ ,这对于水轮发电机组轴瓦温度监测来讲略显不足,在对 DS1820 测温原理详细分析的基础上,我们采取直接读取 DS1820 内部暂存寄存器的方法,将 DS1820 的测温分辨率提高到 ℃ ~ ℃ . DS1820 内部暂存寄存器的分布如表 1 所示,其中第 7 字节存放的是当温度寄存器停止增值时计数器 1 的计数剩余值,第 8 字节存放的是每度所对 19 应的计数值,这样,我们就可以通过下面的方法获得高分辨率的温度测量结果。 首先用 DS1820 提供的读暂存寄存器指令 (BEH)读出以 ℃ 为分辨率的温度测量结果,然后切去测量结果中的最低有效位 (LSB),得到所测实际温度整数部分 T 整数,然后再用 BEH 指令读取计数器 1 的计数剩余值 M 剩余和每度计数值 M 每度,考虑到 DS1820 测量温度的整数部分以 ℃ 、 ℃为进位界限的关系,实际温度 T 实际可用下式计算得到: T 实际 =(T 整数-℃ )+(M 每度- M 剩余 )/M 每度。 表 1 DS18B20 暂存寄存器分布 该字节各位的定义如下: 低 5 位一直都是 1, TM 是测试模式位,用于设置 DS18B20 在工作模式还是在测试模式。 在 DS18B20 出厂时该位被设置为 0,用户不要去改动, R1 和 R0 决定温度转换的精度位数 , 即是来设置分辨率,如表 1 所示( DS18B20 出厂时被设置为 12 位)。 R1 R0 分辨率 温度最大 转换时 /mm 0 0 9 位 0 1 10 位 1 0 11 位 1 1 12 位 表 1 R1 和 R2 模式表 由表 1 可见,设定的分辨率越高,所需要的温度数据转换时间就越长。 因此,在实际应用中要在分辨率和转换时间权衡考虑。 高速暂存存储器除了TM R1 R0 1 1 1 1 1 20 配置寄存器外,还有其他 8 个字节组成,其分配如下所示。 其中温度信息(第1, 2 字节)、 TH 和 TL 值第 3, 4 字节、第 6~ 8 字节未用,表现为全逻辑 1;第 9 字节读出的是前面所有 8 个字节的 CRC 码,可用来保证通信正确。 根据 DS18B20 的通讯协议,主机控制 DS18B20 完成温度转换必须经过三个步骤:每一次读写之前 都要对 DS18B20 进行复位,复位成功后发送一条 ROM。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。