20xx届毕业设计论文数字温度计内容摘要:

方式下可以解决电流供应不走的问题 , 因此也适合于多点测温应用,缺点就是要多占用一根 I/O 口线进行强上拉切换。 图 寄生电源工作方式 ( 2) 外接电源工作方式 当温度高于 100℃ 时, 不推荐 使用寄生电源,因为此时器件中较大的漏电流会使总线不能可靠检测高低电平,从而导致数据传输误码率的增大。 在类似这种温度的情况下, 推荐 使用 DS18B20 的 VDD 引脚。 图 外接电源工作方式 2. 2 DS18B20 存储器 及 设置寄存器 DS18B20 温度传感器的内部存储器包括一个高速暂存 RAM 和一个非易失性的可电擦除的 E2RAM, 后者存放高温度和低温度触发器 TH 、 TL 和结构寄存器。 数据先写入 RAM ,经校验后再传给 E2RAM。 暂存存储器包含了 8 个连续字节,前两个字节是测得的温度信息,第一个字节的内容是温度的低八位 TL ,第二个字节是温度的高八位 TH。 第三个和第四个字节是 TH 、 TL 的易失性拷贝,第五个字节是结构寄存器的易失性拷贝,这三个字节的内容在每一次上电复位时被刷新。 第六、七、八个字节用于内部计算。 第九个字节是冗余检验字节,可用来保证通信正确。 DS18B20 的分布如下: 基于单总线温度传感器的温度检测系统设计 12 表 DS18B20 的暂存寄存器分布 寄存器内容 地址 温度的低八位数据 0 温度的高八位数据 1 高温阀值 2 低温阀值 3 保留 4 保留 5 计数剩余值 6 每度计数值 7 CRC 校验 8 在 64 b ROM 的最高有效字节中存储有循环冗余校验码( CRC )。 主机根据 ROM 的前 56 位来计算 CRC 值,并和存入 DS18B20 中的 CRC 值做比较,以判断主机收到的 ROM 数据是否正确。 设置寄存器位于高速闪存的低 5 个字节,这个寄存器中的内容被用来确定温度的转换精度。 寄存器各位的内容如下: 表 DS18B20 的设置寄存器各位内容 BIT7 BIT6 BIT5 BIT4 BIT3 BIT2 BIT1 BIT0 TM R1 R0 1 1 1 1 1 该寄存器的低五位一直都是 1,TM 是测试模式位,用于设置 DS18B20 在工作模式还是在测试模式。 在 DS18B20 出厂时该位被设置为 0,用户不要去改动。 R1 和 R0 用来设置分辨率,如下表所示 :( DS18B20 出厂时被设置为 12 位) 表 分辨率设置 R1 R0 分辨率 温度最大转换时间 0 0 9 位 ms 0 1 10 位 ms 1 0 11 位 375 ms 0 0 12 位 750 ms 基于单总线温度传感器的温度检测系统设计 13 由表可知,设定的分辨率越高,所需要的温度数据转换时间就越长。 因此,在实际应用中要在分辨率和转换时间权衡考虑。 本次设计中采用的为 12 位分辨率,即 750MS 转换时间 2. 3 DS18B20 测温原理 DS18B20 其内部含有两个温度系数不同的温敏振荡器 , 其中低温度系数振荡器相当于标尺,高温度系数振荡器相当于测温元件,通过不断比较两个温敏振荡器的振荡周期得到两个温敏振荡器在测量温度下的振荡频率比值。 根据频率比值和温度的对应曲线得到相应的温度值。 这种方式避免了测温过程中的 A/D 转换,提高了温度 测量的精度。 低温度系数晶振的振荡频率受温度的影响很小,用于产生固定频率的脉冲信号送给减法计数器 1。 高温度系数晶振随温度变化其震荡频率明显改变,很敏感的振荡器,所产生的信号作为减法计数器 2 的脉冲输入,为计数器 2 提供一个频率随温度变化的计数脉冲。 图中还隐含着计数门,当计数门打开时, DS18B20 就对低温度系数振荡器产生的时钟脉冲后进行计数,进而完成温度测量。 计数门的开启时间由高温度系数振荡器来决定,每次测量前,首先将 55 ℃ 所对应的基数分别置入减法计数器 1 和温度寄存器中,减法计数器 1 和温度寄存器被预置在 55 ℃ 所对应的一个基数值。 减法计数器 1 对低温度系数晶振产生的脉冲信号进行减法计数,当减法计数器 1 的预置值减到 0 时温度寄存器的值将加 1 ,减法计数器 1 的预置将重新被装入,减法计数器 1 重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到减法计数器 2 计数到 0 时,停止温度寄存器值的累加,此时温度寄存器中的数值即为所测温度。 斜率累加器用于补偿和修正测温过程中的非线性,其输出用于修正减法计数器的预置值,只要计数门仍未关闭就重复上述过程,直至温度寄存器值达 到被测温度值。 图 DS18B20 的内部测温电路框图 基于单总线温度传感器的温度检测系统设计 14 DS18B20 内部结构主要由四部分组成: 温度传感器 、 64 位光刻 ROM、非挥发的温度报警触发器 TH 和 TL、配置寄存器。 光刻 ROM 中的 64 位序列号是出厂前被光刻好的,它可以看作是该 DS18B20 的地址序列码。 64位光刻 ROM 的排列是:开始 8位(地址 : 28H)是产品类型 的编号 ,接着的 48 位是 每个 DS18B20 自身的序列号,并且每个 DS18B20 的序列号都不相同,因此它可以看作是该 DS18B20的地址序列码;最后 8位则是前面 56位的 CRC校验码( CRC=X8+X5+X4+1)。 由于每一个 DS18B20 的 ROM 数据都各不相同,因此微控制器就可以通过单总线对多个 DS18B20 进行寻址,从而实现一根总线上挂接多个 DS18B20。 图 64b 闪速 ROM DS18B20 中的温度传感器用于完成对温度的测量,它的测量精度可以配置成 9 位, 10位, 11 位或 12 位 4种状态。 温度传感器在测量完成后将测量的结果存储在 DS18B20 的两个 8BIT 的 RAM 中,单片机可通过单线接口读到该数据,读取时低位在前,高位在后数据的存储格式如下表 ( 以 12 位转化为例 ): 图 温度信号寄存器格式 这是 12 位转化后得到的 12 位数据,存储在 18B20 的两个 8 比特的 RAM 中,二进制中的前面 5 位是符号位,如果测得的温度大于 0 ,这 5 位为 0 ,只要将测到的数值乘于 即可得到实际温度;如果温度小于 0 ,这 5 位为 1 ,测到的数值需要取反加 1 再乘于 即可得到实际温度。 例如: + 125 ℃ 的数字输出为 07D0H , + ℃ 的数字输出为 0191H , ℃ 的数字输出为 FF6FH , 55 ℃ 的数字输出为 FC90H。 基于单总线温度传感器的温度检测系统设计 15 DS18B20 完成温度转换后,就把测得的温度值与 TH , TL 作比较,若 TTH 或 TTL, 则将该器件内的告警标志置位,并对主机发出的告警搜索命令作出响应。 因此,可用多只 DS18B20 同时测量温度 并进行告警搜索。 2. 4 DS18B20 测温过程 1WIRE 网络具有严谨的控制结构,其结构如图 所示,一般通过双绞线与 1WIRE 元件进行数据通信,它们通常被定义为漏极开路端点,主 / 从式多点结构,而且一般都在主机端接上一个上拉电阻 +5V 电源。 通常为了给 1WIRE 设备提供足够的电源,需要一个 MOSFET 管将 1WIRE 总线上拉至 +5V 电源。 图 DS18B20 组成的 1WIRE 网络 1WIRE 网络通信协议是分时定义的,有严格的时隙概念,下图是复位脉冲的时隙。 图 1WIRE 协议的复位脉 冲时隙 基于单总线温度传感器的温度检测系统设计 16 图 1WIRE 读写 “ 0/1” 时隙 DS18B20 单线通信功能是分时完成的,他有严格的时隙概念,如果出现序列混乱,1WIRE 器件将不响应主机,因此读写时序很重要。 系统对 DS18B20 的各种操作必须按协议进行。 根据 DS18B20 的协议规定,微控制器控制 DS18B20 完成温度的转换必须经过以下 4 个步骤 : ( 1) 每次读写前对 DS18B20 进行复位初始化。 复位要求主 CPU 将数据线下拉 500us ,然后释放, DS18B20 收到信号后等待 16us~ 60us 左右,然后发出 60us~ 240us 的存在低脉冲 ,主 CPU 收到此信号后表示复位成功。 ( 2) 发送一条 ROM 功能 指令,如表 所示: 表 DS18B20 的 ROM 指令集 指令名称 指令代码 指令功能 读 ROM 33H 读 DS18B20ROM 中的 序列号 (即读 64 位地址) ROM 匹配(符合 ROM ) 55H 发出此命令之后,接着发出 64 位 ROM 编码,访问单总线上与编码相对应 DS18B20 使之作出响应, 用于多个基于单总线温度传感器的温度检测系统设计 17 DS18B20 时定位 搜索 ROM 0F0H 用于确定挂接在同一总线上 DS18B20 的 个数和识别 64 位 ROM 地址,为操作各器件作好准备 跳过 ROM 0CCH 忽略 64 位 ROM 地址,直接向 DS18B20 发温度变换命令, 该命令将针对所有在线的 DS18B20 警报搜索 0ECH 该指令执行后,只有温度超过设定值上限或下限的片子才做出响应 ( 3) 发送存储器指令,如表 所示 : 表 DS18B20 的存储器指令集 指令名称 指令代码 指令功能 温度变换 44H 启动 DS18B20 进行温度转换,转换时间最长为 500ms (典型为 200ms ) ,结果存入内部 9 字节 RAM 中 读暂存器 0BEH 读内部 RAM 中 9 位温度值和 CRC 值 写暂存器 4EH 发出向内部 RAM 的第 3 , 4 字节写上,下限温度数据命令,紧跟该命令之后,是传送两字节的数据 复制暂存器 48H 将 RAM 中第 3 , 4 字节的内容复制到 EEPROM 中 重调 EEPROM 0B8H EEPROM 中的内容恢复到 RAM 中的第 3 , 4 字节 读供电方式 0B4H 读 DS18B20 的供电模式,寄生供电时 DS18B20 发送 “ 0 ” ,外接电源供电 DS18B20 发送 “ 1 ” ( 4) 进行数据通信。 2. 5 DS18B20 使用注意事项 DS1820 在实际应用中 应注意以下几方面的问题: ( 1) 每一次读写之前都要对 DS18B20 进行复位,复位成功后发送一条 ROM 指令,最后发送 RAM 指令,这样才能对 DS18B20 进行预定的操作。 复位要求主 CPU 将数据线下拉 500 微 秒,然后释放, DS18B20 收到信号后等待 16 ~ 60 微 秒左右,后发出 60 ~ 240 微 秒的存在低脉冲,主 CPU 收到 此信号表示复位成功。 ( 所有的读写时序至少需要 基于单总线温度传感器的温度检测系统设计 18 60us ,且每个独立的时序之间至少需要 1us 的恢复时间。 在写时序时,主机将在下拉低总线 15us 之内释放总线,并向单总线器件写 1 ;若主机拉低总线后能保持至少 60us 的低电平,则向单总线器件写 0。 单总线仅在主机发出读写时序时才向主机传送数据,所以,当主机向单总线器件发出读数据指令后,必须马上产生读时序,以便单总线器件能传输数据。 ) ( 2) 在写数据时,写 0 时单总线至少被拉低 60us, 写 1 时 , 15us 内就得释放总线。 ( 3) 转化后得 到的 12 位数据,存储在 18B20 的两个 8 比特的 RAM 中,二进制中的前面 5 位是符号位,如果测得的温度大于 0 ,这 5 位为 0 ,只要将测到的数值乘于 即可得到实际温度;如果温度小于 0 ,这 5 位为 1 ,测到的数值需要取反加 1 再乘于 即可得到实际温度。 ( 4) 较小的硬件开销需要相对复杂的软件进行补偿,由于 DS1820 与微处理器间采用串行数据传送,因此,在对 DS1820 进行读写编程时,必须严格的保证读写时序,否则将无法读取测温结果。 在使用 PL/M 、 C 等高级语言进行系统程序设计时,对 DS1820 操作部分最好采用汇编语言实现。 ( 5) 在 DS1820 的有关资料中均未提及单总线上所挂 DS1820 数量问题,容易使人误认为可以挂任意多个 DS1820 ,在实际应用中并非如此。 当单总线上所挂 DS1820 超过 8 个时,就需要解决微处理器的总线驱动问题,这一点在进行多点测温系统设计时要。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。