基于DS18B20单线多点温度测量系统课程设计设计.docx
《基于DS18B20单线多点温度测量系统课程设计设计.docx》由会员分享,可在线阅读,更多相关《基于DS18B20单线多点温度测量系统课程设计设计.docx(30页珍藏版)》请在冰豆网上搜索。
![基于DS18B20单线多点温度测量系统课程设计设计.docx](https://file1.bdocx.com/fileroot1/2023-1/4/a95017bd-0551-436b-aafa-71e7e2b88812/a95017bd-0551-436b-aafa-71e7e2b888121.gif)
基于DS18B20单线多点温度测量系统课程设计设计
基于DS18B20单线多点温度测量系统
专业班级:
电子信息工程2班学生姓名:
杜刘乾
指导老师:
秦玉龙职称:
讲师
摘要本次毕业设计是基于DS18B20单线多点温度测量系统。
以ATmega16单片机为核心,使用温度传感器DS18B20实现温度的采集。
论文设计的目的是对DS18B20进行编程,了解其性能特点,通过所学的C语言知识和相关资料提供的指令代码完成单片机与DS18B20的温度监测。
DS18B20是一种智能温度传感器,它能够直接读出被测温度并且可根据实际要求通过简单的编程实现9~12位的数字值读数方式。
使用DS18B20可使系统结构更趋简单,抗干扰能力强,适合于恶劣环境下现场温度的测量,可靠性更高,可应用于仓库测温、楼宇空调控制和生产过程监控等领域。
单片机对传感器采集来的数据进行处理,通过LCD把各个点的温度给显示出来,另一方面单片机可以通过串口通讯传给上位机,由上位机软件显示出来;该系统可以设定温度上下限值,当温度超出系统设定的范围时,系统会报警提示。
关键词:
ATmega16DS18B20单线多点温度测量
1-WireMulti-pointtemperaturemeasurementsystembasedonDS18B20
AbstractThegraduationprojectis1-WireMulti-pointtemperaturemeasurements-ystembasedonDS18B20.ATmega16microprocessorasthecoreofit,thetemper-aturecollectionisuseofDS18B20.OurexperimentalpurposeisprogrammingtoDS18B20andunderstanditsperformancecharacteristics.Theinstructioncodethro-ughtheClanguageknowledgeandrelevantinformationtocompletetheDS18B20temperaturemeasurements.DS18B20isasmarttemperaturesensor.TheDS18B20digitalthermometerprovides9-bitto12-bitCelsiustemperaturemeasurements.UseDS18B20makesthesystemstructuremoresimple,andhigherreliability.Thesystemcanbeusedinmanyfiledssuchasthetemperaturemeasurementsystemofwar-ehouse,theairconditioningcontrolofbuildingandthemonitorofproductiveprocess.Thetemperaturedataisconversedtodigitalsignalsinthesensorandthenistran-smittedtoMCU,whichprocessesthedatafromsensoracquisitionanddisplaysthetemperatureonvariouspointsthroughtheLCD.OntheotherhandMCUcanpass-throughtheserialportcommunicationsPC,fromPCsoftwaredisplayed.Thesyste-mcansettemperaturelimitsfromtoptobottom,whenthetemperatureexceedst-elimitssetbysystem,thesystemwillpromptthepolice.
KeywordsATmega16DS18B201-wiremulti-pointtemperaturemeasurement
第一章绪论
1.1选题背景和意义
温度是日常生活、工业、医学、环境保护、化工、石油等领域中不可缺少的物理量。
温度的测量和控制在这些领域中就显得尤其重要。
传统的温度检测是使用诸如热电偶、热电阻、半导体PN结之类的模拟传感器,经信号取样电路、放大电路和模数转换电路处理,获取表示温度值的数字信号,再交由微处理器或DSP处理。
因为监测环境复杂,测量点多,信号传输距离远及各种干扰的影响,使得传统测量系统的稳定性和可靠性下降。
随着社会的进步和工业技术的发展,温度因素在社会生活的各个方面都起到了重要的作用。
由于许多产品对温度范围的要求严格,而目前市场上普遍存在的温度检测仪器大多都是单点测量,同时有温度信息传递不及时、精度度不够高的缺点,不利于工业生产根据温度的变化及时做出决定。
在这样的前提下,开发一种能够同时测量多点,并且实时性高、精度度高,能够综合处理多点温度信息的测量系统就很有必要。
国外对温度检测技术研究较早,始于20世纪70年代。
先是采用模拟式的组合仪表采集现场信息并进行指示、记录和控制,80年代末出现了分布式控制系统,目前正开发和研制计算机数据采集控制系统的多因子综合控制系统。
现在世界各国的温度检测技术发展很快,一些国家在实现自动化的基础上正向着完全自动化、无人化的方向发展。
我国对于温度检测技术的研究较晚,始于20世纪80年代。
近年来,我国引进了多达16个国家和地区的工厂环境控制系统,在总体上,正从消化吸收、简单应用阶段向实用化、综合性应用阶段过渡和发展,对推动工厂温度自动检测产生了积极的作用。
与此同时,我国的温度测控设施计算机应用以单片机控制的单参数单回路系统居多,尚无真正意义上的多参数综合控制系统。
在生产实际中仍然有许多问题困扰着我们,比如环境控制水平落后,软硬件资源不能共享和可靠性差等缺点。
与发达国家相比,还存在较大的差距。
近年来随着单片机的发展和传感器技术的革新,温度检测领域也完成了从模拟信号到数字信号的转变。
DS18B20温度传感器的广泛应用更是推动了这一领域的发展。
我们可以基于ATmega16单片机,利用液晶显示器件以及DS18B20温度传感器等器件,通过温度传感器在单片机下的硬件连接,软件编程即可设计DS18B20温度传感器系统。
该系统可以方便的实现单线多点温度的测量,并可以根据需要任意设定上下限报警温度,它使用起来相当方便,具有精度高、量程宽、灵敏度高、体积小、功耗低等优点,适合于我们日常生活和工、农业生产中的温度测量,也可以当作温度处理模块嵌入其它系统中,作为其他主系统的辅助扩展。
DS18B20与ATmega16的结合实现了最简温度监测系统,该系统结构简单,抗干扰能力强,适合于恶劣环境下进行现场温度测量,有广泛的应用前景。
1.2系统概述
本文详细介绍了基于DS18B20单线多点温度测量系统的构成。
大致可分为硬件电路设计、软件程序设计和仿真设计。
第二章介绍了硬件电路的设计,包括ATmega16单片机、DS18B20传感器的介绍以及电路的连接;第三章介绍了软件的设计,包括DS18b20温度传感器的使用过程以及如何在一条线上实现单点和多点温度的测量;第四章介绍了如何通过软件平台得出仿真图。
关于各个模块的流程图和相关原程序代码将在下面的章节中一一介绍。
第二章硬件电路的设计
该电路是通过ATmega16单片机和DS18B20传感器连接而成的温度测量系统。
单片机除了可以测量电信号外,还可以用于温度、湿度等非电信号的测量,能独立工作的单片机温度监测、温度控制系统已广泛应用。
单片机的接口信号时数字信号,要用单片机作为控制其测量温度,用温度传感器将温度信息转换为电流或电压信号输出,如果转化的信号是模拟信号,还需要进行A/D转化,以满足单片机接口的需要。
可以采用温度传感器DS18B20,此传感器可以直接获取测温值,进行转换,成功采集温度后,利用单片机进行数据处理,通过LCD显示温度。
以下是系统组成框图。
图1-1系统组成框图
2.1ATmega16单片机
ATmega16是基于增强的AVRRISC结构的低功耗8位CMOS微控制器。
由于其先进的指令集以及单时钟周期指令执行时间,ATmega16的数据吞吐率高达1MIPS/MHz,从而可以减缓系统在功耗和处理速度之间的矛盾。
ATmega16内核具有丰富的指令集和32个通用工作寄存器。
所有的寄存器都直接与运算逻单元(ALU)相连接,使得一条指令可以在一个时钟周期内同时访问两个独立的寄存器。
这种结构大大提高了代码效率,并且具有比普通的CISC微控制器最高至10倍的数据吞吐率。
2.1.1ATmega16的主要特性
(1)先进的RISC结构
-16K字节的系统内可编程Flash,擦写寿命:
10,000次
-512字节的EEPROM,擦写寿命:
100,000次
-1K字节的片内SRAM
(2)JTAG接口(与IEEE1149.1标准兼容)
-符合JTAG标准的边界扫描功能
-支持扩展的片内调试功能
-通过JTAG接口实现对Flash、EEPROM、熔丝位和锁定位的编程
(3)外设特点
-两个具有独立预分频器和比较器功能的8位定时器/计数器
-一个具有预分频器、比较功能和捕捉功能的16位定时器/计数器
-具有独立振荡器的实时计数器RTC
-四通道PWM
-8路10位ADC
-8个单端通道
-面向字节的两线接口
-两个可编程的串行USART
-可工作于主机/从机模式的SPI串行接口
-具有独立片内振荡器的可编程看门狗定时器
-片内模拟比较器
(4)I/O和封装
-32个可编程的I/O口
-40引脚PDIP封装,44引脚TQFP封装,与44引脚MLF封装
2.1.2ATmega16引脚介绍
图1-2ATmega16引脚图
(1)VCC:
供电电压
(2)GND:
接地
(3)端口A(PA7~PA0):
端口A做为A/D转换器的模拟输入端。
端口A为8位双向I/O口,具有可编程的内部上拉电阻。
其输出缓冲器具有对称的驱动特性,可以输出和吸收大电流。
作为输入使用时,若内部上拉电阻使能,端口被外部电路拉低时将输出电流。
在复位过程中,即使系统时钟还未起振,端口A处于高阻状态。
(4)端口B(PB7~PB0):
端口B为8位双向I/O口,具有可编程的内部上拉电阻。
其输出缓冲器具有对称的驱动特性,可以输出和吸收大电流。
作为输入使用时,若内部上拉电阻使能,端口被外部电路拉低时将输出电流。
在复位过程中,即使系统时钟还未起振,端口B处于高阻状态。
(5)端口C(PC7~PC0):
端口C为8位双向I/O口,具有可编程的内部上拉电阻。
其输出缓冲器具有对称的驱动特性,可以输出和吸收大电流。
作为输入使用时,若内部上拉电阻使能,端口被外部电路拉低时将输出电流。
在复位过程中,即使系统时钟还未起振,端口C处于高阻状态。
如果JTAG接口使能,即使复位出现引脚PC5(TDI)、PC3(TMS)与PC2(TCK)的上拉电阻被激活。
(6)端口D(PD7~PD0):
端口D为8位双向I/O口,具有可编程的内部上拉电阻。
其输出缓冲器具有对称的驱动特性,可以输出和吸收大电流。
作为输入使用时,若内部上拉电阻使能,则端口被外部电路拉低时将输出电流。
在复位过程中,即使系统时钟还未起振,端口D处于高阻状态。
(7)RESET:
复位输入引脚。
持续时间超过最小门限时间的低电平将引起系统复位。
持续时间小于门限间的脉冲不能保证可靠复位。
(8)XTAL1:
反向振荡放大器与片内时钟操作电路的输入端。
(9)XTAL2:
反向振荡放大器的输出端。
(10)AVCC:
AVCC是端口A与A/D转换器的电源。
不使用ADC时,该引脚应直接与VCC连接。
使用ADC时应通过一个低通滤波器与VCC连接。
(11)AREF:
A/D的模拟基准输入引脚。
2.2DS18B20芯片
DS18B20是美国DALLAS公司推出的单总线数字化测温集成电路,它具有独特的单线接口方式,将非电模拟量温度值转换为数字信号串行输出,仅需占用1位I/O端口,能够直接读取被测现场的温度值。
它的体积小,电压适用范围宽(3V~5V),并且可以通过编程实现9~12位的温度读数,即具有可调的温度分辨率,因此实用性和可靠性较高,在许多行业中被广泛应用。
DS18B20数字温度传感器接线方便,封装成后可应用于多种场合,如管道式,螺纹式,磁铁吸附式,不锈钢封装式。
型号多种多样,有LTM8877,LTM8874等等。
主要根据应用场合的不同而改变其外观。
封装后的DS18B20可用于电缆沟测温,高炉水循环测温,锅炉测温,机房测温,农业大棚测温,洁净室测温,弹药库测温等各种非极限温度场合。
由于其耐磨耐碰,体积小,使用方便,封装形式多样的特点,也适用于各种狭小空间设备数字测温和控制领域。
2.2.1DS18B20芯片的特性
DS18B20单线数字温度传感器,即“一线器件”,其具有独特的优点:
(1)采用单总线的接口方式,与微处理器连接时,仅需要一条口线即可实现微处理器与DS18B20的双向通讯。
单总线具有经济性好,抗干扰能力强,适合于恶劣环境的现场温度测量,使用方便等优点,使用户可轻松地组建传感器网络,为测量系统的构建引入全新概念。
(2)测量温度范围宽,测量精度高DS18B20的测量范围为-55℃~+125℃;在-10~+85℃范围内,精度为±0.5℃。
(3)在使用中不需要任何外围元件。
(4)持多点组网功能,多个DS18B20可以并联在惟一的单线上,实现多点测温。
(5)供电方式灵活,DS18B20可以通过内部寄生电路从数据线上获取电源。
因此,当数据线上的时序满足一定的要求时,可以不接外部电源,从而使系统结构更趋简单,可靠性更高。
(6)测量参数可配置DS18B20的测量分辨率可通过程序设定9~12位。
(7)负压特性电源极性接反时,温度计不会因发热而烧毁,但不能正常工作。
(8)掉电保护功能,DS18B20内部含有EEPROM,在系统断电以后,它仍可保存分辨率及报警温度的设定值。
2.2.2DS18B20引脚排列
图1-3DS18B20引脚排列
1.GND为接地。
2.DQ为数字信号输入/输出端。
3.VDD为外接供电电源输入口。
2.2.3DS18B20的内部结构
DSl8B20的内部主要包括寄生电源、温度传感器、64位激光ROM单线接口、存放中间数据的高速暂存器、温度报警触发器TH和TL用于存储用户写入报警上下限的报警触。
ROM中的64位序列号是出厂前被光刻好的,它可以看作是该DS18B20的地址序列码,每个DS18B20的64位序列号均不相同。
64位ROM的排的循环冗余校验码(CRC=X^8+X^5+X^4+1)。
ROM的作用是使每一个DS18B20都各不相同,这样就可以实现一根总线上挂接多个DS18B20的目的。
图1-4DS18B20方框图
2.2.4DS18B20芯片各部分介绍
(1)64位激光ROM
每个DS18B20都有一个唯一储存在ROM中的64位编码。
最前面8位是单线产品系列编码:
28h。
接着的48位是一个唯一的序列号。
最后8位是以上56位的CRC编码。
64位ROM和ROM操作控制区允许DS18B20作为单总线器件并按照单总线协议工作。
8位CRC编码
48位序列号
8位产品系列编码
图1-564位激光ROM码
(2)高速暂存存储贮器
高速暂存存储器由9个字节组成,其分配如下图所示。
字节0和字节1为测得温度信息的LSB和MSB,这两个字节是只读的。
字节2和字节3是TH和TL的拷贝。
字节4包含配置寄存器数据,详细介绍如下图所示。
字节5、6和7被器件保留,禁止写入。
这些数据在读回时全部表现为逻辑1。
高速暂存器的位8是只读的,包含以上八个字节的CRC码,CRC的执行方式如CRC发生器节所述。
图1-6高速暂存存储器映象
存储器的第4位为配置寄存器。
用户可以通过按下图所示设置R0和R1位来设定DS18B20的精度。
上电默认设置:
R0=1,R1=1(12位精度)。
注意:
精度和转换时间之间有直接的关系。
暂存器的位7和位0-4被器件保留,禁止写入;在读回数据时,它们全部表现为逻辑1。
bit7bit6bit5bit4bit3bit2bit1bit0
0
R1
R0
1
1
1
1
1
图1-7配置寄存器
表1-1温度分辨率配置
R1
R0
精度
最大转换时间
0
0
9-bit
93.75ms
Tconv/8
0
1
10-bit
187.5ms
Tconv/4
1
0
11-bit
375ms
Tconv/2
1
1
12-bit
750ms
Tconv
(3)温度传感器
DS18B20中的温度传感器可完成对温度的测量。
当温度转换命令发布后,经转换所得的温度值以二字节补码形式存放在高速暂存存储器的第0和第1个字节。
单片机可通过单线接口读到该数据,读取时低位在前,高位在后,数据格式如图所示。
对应的温度计算:
当符号位S=0时,直接将二进制位转换为十进制;当S=1时,先将补码变为原码,再计算十进制值。
图1-8DS18B20温度寄存器格式
表1-2温度/数据关系
温度/℃
二进制表示
十六进制表示
+125
0000011111010000
07D0H
+25.0625
0000000110010001
0191H
+10.125
0000000010100010
00A2H
+0.5
0000000000001000
0008H
0
0000000000000000
0000H
-0.5
1111111111111000
FFF8H
-10.125
1111111101011110
FF5EH
-25.0625
1111111001101111
FE6FH
-55
1111110010010000
FC90H
(4)CRC发生器
CRC字节作为DS18B2064位ROM的一部分存储在存储器中。
CRC码由ROM的前56位计算得到,被包含在ROM的重要字节当中。
CRC由存储在存储器中的数据计算得到,因此当存储器中的数据发生改变时,CRC的值也随之改变。
CRC能够在总线控制器读DS18B20时进行数据校验。
为校验数据是否被正确读取,总线控制器必须用接受到的数据计算出一个CRC值,和存储在DS18B20的64位ROM中的值(读ROM时)或DS18B20内部计算出的8位CRC值(读存储器时)进行比较。
如果计算得到的CRC值和读取出来的CRC值相吻合,数据被无错传输。
CRC值的比较以及是否进行下一步操作完全由总线控制器决定。
图1-9CRC生成
2.3单线总线系统
单总线系统只有一条定义的信号线。
每一个总线上的器件必须是漏极开路或三态输出。
这样的系统允许每一个挂在总线上的区间都能在适当的时间驱动它。
DS18B20的单总线端口(DQ引脚)是漏极开路式的,单总线需要一个约5KΩ的外部上拉电阻;单总线的空闲状态是高电平。
无论任何理由需要暂停某一执行过程时,如果还想恢复执行的画,总线必须停留在空闲状态。
在恢复期间,如果单总线处于非活动(高电平)状态,位与位间的恢复时间可以无限长。
如果总线停留在低电平超过480us,总线上的所有器件都将被复位。
图1-10DS18B20电路连接
2.3.1处理顺序
经过单线总线接口访问DS18B20的协议如下:
步骤1:
初始化
步骤2:
ROM操作指令
步骤3:
DS18B20功能指令
2.3.2初始化
通过单总线的所有执行操作处理都从一个初始化序列开始。
初始化序列包括一个由总线控制器发出的复位脉冲和其后由从机发出的存在脉冲。
存在脉冲让总线控制器知道DS18B20在总线上且已准备好操作。
2.3.3ROM操作指令
一旦总线控制器探测到一个存在脉冲,它就发出一条ROM指令。
如果总线上挂有多只DS18B20,这些指令将基于器件独有的64位ROM片序列码使得总线控制器选出特定要进行操作的器件。
这些指令同样也可以使总线控制器识别有多少个什么型号的器件挂在总线上,同样,它们也可以识别哪些器件已经符合报警条件。
ROM指令有5条,都是8位长度。
总线控制器在发起一条DS18B20功能指令之前必须先发出一条ROM指令。
表2-3ROM操作指令
指令名称
指令代码
指令功能
读ROM
33H
读DS18B20ROM中的编码
(即读64位地址编码)
ROM匹配
55H
发出此命令之后,接着发出64位ROM编码,访问单总线上与编码相对应DS18B20使之作出响应,为下一步对该DS18B20的读写作准备
搜索ROM
0F0H
用于确定接在同一总线上DS18B20的个数和识别64位ROM地址,为操作各器件作好准备
跳过ROM
0CCH
忽略64位ROM地址,直接向DS18B20发温度变换命令,适用于单片机工作
报警搜索
0ECH
该指令执行后,只有温度超过设定值上限或下限的片子才做出响应
2.3.4DS18B20功能指令
在总线控制器发给欲连接的DS18B20一条ROM命令后,跟着可以发送一条DS18B20功能指令。
这些命令允许总线控制器读写DS18B20的暂存器,发起温度转换和识别电源模式。
DS18B20功能指令如下图所示:
表2-4DS18B20功能指令
指令名称
指令代码
指令功能
温度变换
44H
启动DS18B20进行温度转换,转换时间最长为500ms(典型为200ms),结果存入内部9字节RAM中
读暂存器
0BEH
读内部RAM中9字节的内容
写暂存器
4EH
发出向内部RAM的第3,4字节写上,下限温度数据命令,紧跟着该命令之后是传送两字节的数据
复制暂存器
48H
将RAM的第3,4字节的内容复制到EEPROM中
重调EEPROM
0B8H
EEPROM中的内容恢复到RAM中的第3,4字节
读供电方式
0B4H
读DS18B20的供电模式,寄生供电时DS18B20发送“0”,外接供电时DS18B20发送“1”
第三章系统软件设计
整个系统的功能是由硬件电路配合软件来实现的,当硬件基本定型后,软件的功能也就基本定下来了。
从软件的功能不同可分为两大类:
一是监控软件(主程序),它是整个控制系统的核心,专门用来协调各执行模块和操作者的关系。
二是执行软件(子程序),它是用来完成各种实质性的功能如测量、计算、显示、报警等。
每一个执行软件也就是一个小的功能执行模块。
这里将各执行模块一一列出,并为每一个执行模块进行功能定义和接口定义。
各执行模块规划好后,就可以规划监控程序了。
以下是系统软件结构图:
图3-1系统软件结构图
3.1DSl8B20温度测量
3.1.1单点测量温度
如果总线上只有一个器件,则不需要识别器件的编码,直接访问该器件即可。
访问流程图如下:
图3