基于AVR单片机和DS18B20的多点温度测量系统

来源:本站
导读:目前正在解读《基于AVR单片机和DS18B20的多点温度测量系统》的相关信息,《基于AVR单片机和DS18B20的多点温度测量系统》是由用户自行发布的知识型内容!下面请观看由(电工技术网 - www.9ddd.net)用户发布《基于AVR单片机和DS18B20的多点温度测量系统》的详细说明。
简介:介绍基于AVR单片机、BASCOM-AVR语言和DS18B20传感器的多点温度测量系统。利用AVR单片机内部的E2PROM,建立了位置编号和传感器序列号的对应关系表,实现了在多点温度测量系统中对多个传感器的识别和处理,并给出了具体的编程实例。

1DS18B20和BASCOM-AVR简介

DS18B20是美国DALLAS公司生产的单总线数字温度传感器,从DS18B20读出或写入的信息仅需要一根口线。在单总线工作方式下,允许一条信号线上挂接多个DS18B20,特别适合于构成远距离多点温度测控系统,从而大大简化了系统布线,提高了可靠性,降低了成本,而实现这些的关键在于每片DS18B20都有唯一的ROM代码(64位产品序列号)。在多点温度测控系统中,ROM代码是识别和操作DS18B20的基础;无论读取还是选择对某一个传感器进行操作,主机必须发送64位ROM代码。

BASCOM-AVR是MSC Electronics公司推出的基于AVR系统的软件开发仿真平台。程序语句和Micrsoft VB/QB高度兼容;为标准LCD显示器、I2C芯片和单总线协议芯片等扩充了专用语句;内置模拟终端和程序下载功能;内置软件仿真平台用于测试;编译产生的运行代码可在所有带内部存储器的AVR微控制器中运行。DEMO版本可生成2KB程序代码。BASCOM-AVRDEMO版安装软件包可到http://www.mcselec.com免费下载。

2硬件设计

基于AVR单片机和DS18B20的多点温度测量系统

图1为温度检测系统原理图,DS18B20采用寄生电源方式供电。主机采用AVR单片机90S8515、I/O口PC1可以挂接多个DS18B20,LCD显示器采用TC1602AT(S)R(2×16字符)。开关K1打开时为正常工作方式,LCD依次循环显示各个测量点的编号(在上一行显示)和当前转换温度(在下一行显示)。开关K1闭合时,借助Z1和拨动开关K2测定DS18B20 ROM代码。ATMEL公司的AVR单片机是基于新的精简指令RISC结构的,吸取PIC及8051单片机的优点,并作了重大改进,内载Flash存储器、E2PROM(存储DS18B20的序列号等)、SRAM,I/O口线可直接驱动LED。它能采用高级语言编程,目前国际上已有许多公司推出了C、Basic等基于高级程序设计语言的AVR开发软件和平台。

3测量方法及软件设计

3.1获取序列号(64位ROM代码)

操作单总线数字温度传感器必须严格按规定的协议操作,即应按以下顺序操作:初始化、ROM操作命令、暂存存储器操作命令、数据传输。在ROM操作命令中,有两条命令专门用于获取传感器序列号:读ROM命令(33H)和搜索ROM命令(F0H)。读ROM命令只能在总线上仅有一个传感器的情况下使用。搜索ROM命令则允许总线主机使用一种“消去”处理方法来识别总线上所有的传感器序列号。为了建立64位ROM代码和测量位置点传感器之间的关系,我们选用读ROM命令(33H)。DS18B20的64位ROM代码结构如图2所示:

 

基于AVR单片机和DS18B20的多点温度测量系统

 8位产品类型号对DS18B20为28H。中间的48位序列号唯一的标识着每个传感器,最高位的一个字节是对前7个字节的内容所生成的CRC校验码。获取64位ROM代码方法如下:对所有的DS18B20按现场位置编号(1,2,3,…),将PC1引脚从T处和后级断开,按下开关K1,将要测试的DS18B20逐一插入Z1插座,将拨动开关拨到和插入Z1插座的DS18B20的编号相对应的数值上,单片机90S8515读取拨动开关的数值(编号),执行如下程序即可读取DS18B20的64位ROM代码并按编号存入其内部的E2PROM中,从而建立测量位置点和传感器64位ROM代码之间的关系表。64位序列号用8个字节单元来存储,位置号为n的DS18B20,其64位序列号在E2PROM中从(n-1)×8开始的单元存放。程序的主要部分如下:

基于AVR单片机和DS18B20的多点温度测量系统

基于AVR单片机和DS18B20的多点温度测量系统

如果某一传感器损坏,只需按上述连接方法,拨动开关K2输入损坏传感器的位置编号,将新的DS18B20插入Z1插座重新测试,单片机自动根据读取的编号值将测得的ROM代码取代E2PROM中相同位置编号处的原ROM代码即可。

3.2多点温度的巡回测量

开关K1打开,将T断开处接上。由于已经在上面获取了多个DS18B20的ROM代码并在AVR单片机内部的E2PROM中建立了测量位置点和传感器64位ROM代码之间的关系表,因此对多个温度的巡回测量的步骤如下:

(1)发跳过ROM命令CCH。

(2)发启动所有在线的DS18B20进行温度转换命令44H。

(3)延迟1s。

(4)发匹配ROM命令55H。

(5)按照E2PROM中建立的关系表的顺序取出64位ROM代码发送到单总线。

(6)发读温度值命令BEH,读取温度值。

(7)进行CRC校验和数据处理后送LCD显示器显示。

(8)重复第4步到第7步,直到所有的DS18B20测量处理完。

(9)再重复第1步到第8步,进行下一轮的巡回测量。

如果只对某一个DS18B20进行温度测量,只要将第1步的跳过ROM命令CCH,改为匹配ROM命令55H,将拨动开关拨到和要测量的DS18B20的编号相对应的数值上,单片机90S8515读取拨动开关的数值(编号)n,到E2PROM建立的关系表中从(n-1)×8开始的单元取出ROM代码发送到总线,去掉第8步,其余和上面步骤相似即可。

测试中,DS18B20选择芯片出厂时默认的12位转换精度,转换的结果用16位符号扩展的二进制补码读数形式提供。关于DS18B20可参考DALLAS公司的数据手册。

多点温度巡回测量的主要程序如下:

基于AVR单片机和DS18B20的多点温度测量系统

基于AVR单片机和DS18B20的多点温度测量系统

基于AVR单片机和DS18B20的多点温度测量系统

基于AVR单片机和DS18B20的多点温度测量系统

上述两个程序可以编写为两个子程序,主程序在初始化工作完成后,读开关K1的状态,如为打开状态调用温度巡回测量部分的子程序;如为闭合状态调用获取ROM代码子程序。

4温度报警处理

4.1设置报警限值

DS18B20设有温度高低限报警功能。DSl8B20的存储器由两部分组成:一个是9字节的静态RAM,其中第0和第1字节用于存储16位的温度转换值,第2(高温限TH)和第3字节(低温限TL)作为温度报警限值或通用存储器单元供用户使用;另一个是非易失性的E2PROM。当静态RAM作为温度报警限值使用时,可以在系统安装和工作前,用写RAM命令4EH将高温限TH和低温限TL写入第2和第3字节单元。由于静态RAM掉电后信息即丢失,因此需要再通过拷贝RAM命令48H将第2和第3字节单元的温度报警限值拷贝到E2PROM中。主程序只要在初始化部分使用重调E2PROM命令B8H,就可以将E2PROM中的温度报警限值重新拷贝到静态RAM中。

4.2报警处理

系统正常工作时,在启动所有的DS18B20作温度转换后,可以使用报警搜索命令ECH,发现温度值高于TH或低于TL的数值时,则读取报警的DS18B20的ROM代码,通过查AVR单片机内部E2PROM中测量位置点和传感器64位ROM代码之间的关系表即可得到报警的DS18B20的位置编号,从而启动语音报警或在LCD上显示报警点的位置编号。

本文的设计方法,将DS18B20 ROM代码的获取和温度的测量融为一体,利用单片机内部的E2PROM建立了测量位置点和ROM代码之间的关系表,用简单的硬件及编程方法实现了多点温度的测量、数字温度传感器的出错指示和识别,大大有利于系统的调试和扩充,能有效降低成本,缩短开发周期。在粮库测温系统、冷库测温系统、中央空调系统、智能建筑自控系统等多点温度测量系统中将获得广泛的应用。

参考文献

[1]耿德根,等.AVR高速嵌入式单片机原理与应用[M].北京:北京航空航天大学出版社,2001.

[2]BASCOM-AVR HELP文件[Z].

[3]DALLAS DS18B20数据手册[Z].http://www.maximic.com.

提醒:《基于AVR单片机和DS18B20的多点温度测量系统》最后刷新时间 2024-03-14 01:16:23,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《基于AVR单片机和DS18B20的多点温度测量系统》该内容的真实性请自行鉴别。