基于单总线多点温度采集系统设计与制作.docx
《基于单总线多点温度采集系统设计与制作.docx》由会员分享,可在线阅读,更多相关《基于单总线多点温度采集系统设计与制作.docx(33页珍藏版)》请在冰豆网上搜索。
![基于单总线多点温度采集系统设计与制作.docx](https://file1.bdocx.com/fileroot1/2023-1/21/58c9c88b-8866-4df1-9dbe-46d7e992a356/58c9c88b-8866-4df1-9dbe-46d7e992a3561.gif)
基于单总线多点温度采集系统设计与制作
论文编号:
华南师范大学增城学院
本科毕业论文(设计)
题目:
基于单总线多点温度采集系统设计与制作
——多功能多点温度采集设计与实现
姓名:
唐庆良
学号:
070654120
系别:
计算机系
专业班级:
信息管理与信息系统07信息
指导教师:
2011年04月20日
学位论文原创性声明
本人郑重声明:
所呈交的学位论文,是本人在导师的指导下,独立进行研究工作所取得的成果。
除文中已经注明引用的内容外,本论文不含任何其他个人或集体已经发表或撰写过的作品或成果。
对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。
本声明的法律结果由本人承担。
论文作者签名:
日期:
年月日
学位论文版权使用授权书
本学位论文作者完全了解学校有关保留、使用学位论文的规定,同意学校保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。
本人授权华南师范大学增城学院可以将本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。
本学位论文属于
1、保密□,在______年解密后适用本授权书。
√
2、不保密□。
(请在以上相应方框内打“√”)
作者签名:
日期:
年月日
指导老师签名:
日期:
年月
摘要
本课题主要研究基于STC89C52单片机与单总线DS18B20数字温度传感器的多点温度测量系统。
它以STC89C52单片机为主控制芯片,采用数字温度传感器DS18B20实现多路温度的检测,测量精度可以达到0.5℃。
该系统采用了LED16x64点阵显示模块,该模块用于提示当前的操作情况,用4位公阳极数码管显示温度,利用两个单片机实现双机通信,一个用于控制温度,一个用于控制点阵,还运用单片机与PC机通信技术实现对DS18B20的序列号读取;通过红外遥控器控制读取某一点的温度,实现无线通信。
关键词:
温度测量;单总线;温度传感器;单片机
Abstract
ThistopicresearchbasedonsinglebusSTC89C52single-chipmicrocomputerandthedigitaltemperaturesensorDS18B20multi-spottemperaturemeasuringsystem.ItmainlySTC89C52single-chipmicrocomputercontrolchip,usingdigitaltemperaturesensorDS18B20realizemultipletemperaturedetectionandmeasurementaccuracycanreach0.5℃.ThesystemUSESLED16x64dotmatrixdisplaymodule,thismoduleusedtoindicatecurrentoperatingconditions,withfourmaleanodedigitalpipedisplaytemperature,usetwoSCMrealizingdoublemachinecommunication,oneforcontroltemperature,oneforcontroldotmatrix,stillusingMCUandPCcommunicationstechnologiestoachievetheserialnumberofDS18B20read;Throughreadingsomeinfraredtemperaturecontrol,wirelesscommunications.
Keywords:
Temperaturemeasurement;Singlebus;Temperaturesensors;Microcontroller
1.背景及研究意义
1.1温度传感器的发展状况
传感器主要大体经过了三个发展阶段:
第一阶段、模拟集成温度传感器。
该传感器是采用硅半导体集成工艺制成,因此亦称硅传感器或单片集成温度传感器。
此种传感器具有功能单一(仅测量温度)、测温误差小、价格低、响应速度快、传输距离远、体积小、微功耗等,适合远距离测温、控温,不需要进行非线性校准,外围电路简单。
第二阶段、智能温度传感器(亦称数字温度传感器)是在20世纪90年代中期问世的。
它的特点是能输出温度数据及相关的温度控制量,需配相应的微控制器(MCU);并且它是在硬件的基础上通过软件来实现测试功能的,其智能化程度也取决于软件的开发水平。
第三阶段、数字温度传感器,进入21世纪后,温度传感器的发展趋势正朝着高精度、多功能、总线标准化、高可靠性及安全性、开发虚拟传感器和网络传感器、研制单片测温系统等高科技的方向迅速发展。
所以数字温度传感器得以更加广泛的应用。
数字温度传感器DS18B20是智能温度传感器一种,它将非电模拟量温度值转换为数字信号输出仅需占用1位I/O端口,能够直接读取被测物体的温度值。
它体积小,电压适用范围宽3V~5V,用户还可以通过编程实现9~12位的温度读数,即具有可调的温度分辨率,因此它的实用性和可靠性比同类产品更高。
1.2智能温度传感器发展的新趋势
进入21世纪后,智能温度传感器正朝着高精度、多功能、总线标准化、高可靠性及安全性、开发虚拟传感器和网络传感器、研制单片测温系统等高科技的方向迅速发展。
1.2.1提高测温精度和分辨力
在20世纪90年代中期最早推出的智能温度传感器,采用的是8位A/D转换器,其测温精度较低,分辨力只能达到1°C。
目前,国外已相继推出多种高精度、高分辨力的智能温度传感器,所用的是9~12位A/D转换器,分辨力一般可达0.5~0.0625°C。
由美国DALLAS半导体公司新研制的DS1624型高分辨力智能温度传感器,能输出13位二进制数据,其分辨力高达0.03125°C,测温精度为±0.2°C。
为了提高多通道智能温度传感器的转换速率,也有的芯片采用高速逐次逼近式A/D转换器。
以AD7817型5通道智能温度传感器为例,它对本地传感器、每一路远程传感器的转换时间分别仅为27us、9us。
1.2.2增加测试功能
新型智能温度传感器都具有多种工作模式可供选择,主要包括单次转换模式、连续转换模式、待机模式,有的还增加了低温极限扩展模式,操作非常简便。
对某些智能温度传感器而言,主机(外部微处理器或单片机)还可通过相应的寄存器来设定其A/D转换速率(典型产品为MAX6654),分辨力及最大转换时间(典型产品为DS1624)。
1.2.3总线技术的标准化与规范化
目前,智能温度传感器的总线技术也实现了标准化、规范化,所采用的总线主要有单线(1-Wire)总线、I2C总线、SMBUS总线和SPI总线。
温度传感器作为从机可通过专用总线接口与主机进行通信。
1.3选题背景和研究意义
温度的测量和控制在储粮仓库、智能楼宇空调控制及其它的工农业生产和科学研究中应用广泛。
温度检测的传统方法是使用诸如热电偶、热电阻、半导体PN结如AD590之类的模拟传感器经信号取样电路、放大电路和模数转换电路处理,获取表示温度值的数字信号,再交由微处理器或DSP处理。
被测温度信号从敏感元件接收的非电模拟量开始,到转换为微处理器可处理的数字信号之间,设计者须考虑的线路环节较多,相应测温装置中元器件数量难以下降,随之影响产品的高可靠性及体积微缩化。
这样,由于各种因素会造成传输检测系统较大的偏差;又因为检测环境复杂、测量点多、信号传输距离远及各种干扰的影响,会使检测系统的稳定性和可靠性下降。
本文介绍一种基于数字温度传感器DS18B20的主从分布式多路测温系统、该系统以单片机为主机,数字温度传感器通过与单片机P3.7连接,系统结构简单,抗干扰能力强,适合于恶劣环境下进行现场温度测量,可应用于仓库测温、楼宇空调控制和生产过程监控、酒窖等领域。
2.方案论证比较与选择
2.1引言
温度测量的方案有很多种,可以采用传统的分立式传感器、模拟集成传感器以及新兴的智能型传感器。
对于控制系统可以采用计算机、单片机等。
2.2方案设计
2.2.1 设计方案一
采用模拟分立元件,如电容、电感或晶体管等非线形元件,实现多点温度的测量及显示,该方案设计电路简单易懂,操作简单,且价格便宜,但采用分立元件分散性大,不便于集成数字化,而且测量误差大。
2.2.2设计方案二
本方案采用STC89C52单片机为核心,通过温度传感器AD590采集温度信号,经信号放大器放大后,送到A/D转换芯片,最终经单片机检测处理温度信号。
图2-1方案二的框图
如图2-1,采用该方案技术已经成熟,AD转换电路设计较烦琐,而且使用AD590进行温度检测必须对冷端进行补偿,以减小误差。
2.2.2设计方案三
本设计运用主从分布式思想,由一个单片机控制点阵实现,另一个单片机实现多点温度数据采集,组成两级分布式多点温度测量的巡回检测系统。
数字温度传感器采用DS18B20。
DS18B20利用单总线的特点可以方便的实现多点温度的测量,轻松的组建传感器网络,系统的抗干扰性好、设计灵活、方便,而且适合于在恶劣的环境下进行现场温度测量。
本系统可以应用在大型工业及民用常温多点监测场合。
如粮食仓储系统、楼宇自动化系统、温控制生产线之温度影像检测、医疗与健诊的温度测试、空调系统的温度检测、石化、机械…等。
系统框图如2-2与图2-3:
图2-2读取DS18B20框图
图2.3系统控制框图
2.3方案的比较与选择
基于数字式温度计DS18B20的温度测量仪的硬软件开发过程是将DS18B20温度信号直接转换为数字信号,实现了与单片机的直接接口,从而省去了信号调理电路。
该仪器电路简单、功能可靠、测量效率高,很好地弥补了传统温度测量方法的不足。
相对与方案1,在功能、性能、可操作性等方面都有较大的提升。
相对与方案2,硬件电路简单,易于操作,具有更高的性价比,更大的市场。
所以我采用方案3完成本设计。
3.硬件设计
本课题研究的多点测温系统是以单片机和单总线数字温度传感器DS18B20为核心,充分利用单片机优越的内部和外部资源及数字温度传感器DS18B20的优越性能构成一个完备的测温系统,实现对温度的多点测量。
整个系统由单片机控制,能够接收传感器的温度数据并显示出来,可以从用遥控其输入命令,系统根据命令,选择对应的温度传感器,并由驱动电路驱动温度显示,利用LED点阵对你的操作给予提示。
本课题设计了一种合理、可行的单片机监控软件,完成测量和显示的任务。
由于单片机具有强大的运算和控制功能,使得整个系统具有模块化、硬件电路简单以及操作方便等优点。
本课题的整个系统的电路是由单片机、显示电路、红外遥控接收、DS18B20驱动电路,串口通信等构成。
3.1单片机应用系统
在当今新科学技术飞速发展的年代里,单片机的应用已越来越受到人们的重视,它被广泛的应用于家电、医疗、智能仪表、工业自动化等各个领域。
单片机全称单片微型计算机,是将计算机的基本部分微型化,使之集成在一块芯片上的微机。
目前市场上较为流行的单片机有Intel公司和Philip公司的8051系列单片机.Motorola公司的M6800系列单片机。
本系统使用宏晶公司的STC89C52进行系统控制。
3.1.1复位电路
无论哪种单片机,都会涉及到复位电路。
如果复位电路不可靠,在工作中就有可能出现“死机”,“程序走飞”等现象。
所以,一个单片机复位电路的好坏,直接影响到整个系统工作的可靠性。
复位操作完成单片机片内电路的初始化,使单片机从一种确定的状态开始运行。
本复位电路有上电自动复位与手动复位功能,由一个电解电容和一个按键组成,具体电路如图3-1:
图3-1复位电路图
3.1.2时钟电路
89C52单片机的时钟信号通常用内部振荡和外部振荡方式。
在引脚XTAL1和XTAX2外接晶体振荡器,就够成了内部振荡方式。
由于单片机内部有一个高增益反相放大器,当外接晶振后,就构成了自激振荡器并产生振荡时钟脉冲。
晶振通常选用6MHZ、12MHZ或24MHZ。
内部振荡器方式如下。
如图3.7,电容器C1、C2起稳定振荡频率、快速起振的作用,电容值一般为5-30PF。
内部振荡方式所得的时钟信号比较稳定。
外部振荡方式是把已有的时钟信号引入单片机内,这种方式适于用于用来使单片机的时钟与外部信号保持一致。
具体电路如下:
图3-2时钟原理图
3.1.3最小应用系统电路
有了复位电路与时阵电路就可以构成单片机的最小应用系统了,单片机的I/O在做输入输出用时需要接上拉电阻,但51单片机的P1、P2、P3口就已经在内部接了上拉电阻就,外部就不需要接,而当你需要用P0口时就必须得接上拉电阻才能用,具体情况如图3-3:
图3.3单片机最小系统
3.2红外遥控接收电路设计
红外遥控器是电子设备常见的输入装置,作为人们与电子设备交流的重要途径,一旦出错,将影响到电子设备的整体使用,所以接收电路虽然简单,但接收电路的稳定性、可靠性,应引起足够的重视。
本系统红外输入设置是用一个普通遥控器,而接收具体电路如图3-4:
图3-4红外接收电路
3.3温度传感器应用设计
DS18B20温度传感器的主要特点就是单总线,电路接法简单,不用别的复杂的辅助电路只要一个10K的上拉电阻,一个I/O口就可以将多个18B20接在一条总线下,就实现多点温度采集系统的功能了,一条总线上最多可以接2的64次平方个18B20,这里我们只用到了8温度传感器,电路简单并节省资源,具体如图3-5:
图3.5DS18B20原理图
3.4温度显示电路
本系统的温度显示主要是用到四位共阳极数码管,电路应用简单方便,具体电路如下图3-6:
图3-6数码管显示原理图
4.软件系统设计
单片机应用软件系统设计包括功能模块划分、程序流程确立、模块接口设计以及程序代码编写。
我们依据系统的功能要求,将整体软件系统分割成若干个独立的程序模块。
这些程序模块可以是几条语句的集合、功能函数或程序文件。
随后,根据各程序模块的实现功能写出流程,一般需要写出具体的实现功能描述。
程序代码通常采用汇编语言或高级语言(C语言)编写,本系统采用的是C语言。
4.1系统软件设计的一般步骤
统进行软件设计时,先要对本课题硬件有一个熟练的掌握,知道系统的组成,数据的传输,信号是如何被控制的,以及信号的显示。
然后进行软件设计时,先搞清楚各个部分的子程序及他们的流程图,然后进行C语言编程,最后将它们系统的编程。
4.2软件实现思路
系统软件设计步骤主要包括系统程序和流程图,根据整个系统的要求,完成温度的测量与控制必须经过以下几个步骤:
单片机接受传感器的温度信号,通过数码管将其显示出来,并向主机(另一个控制LED点阵的单片机)接收一个提示信号,实现读取某一点的温度。
系统总框架图如图4-1:
图4-1系统总框架图
4.2.1系统主程序流程图
图4-2系统主程序流程图
4.3DS18B20传感器程序设计
DS18B20数字温度传感器是DALLAS公司生产的1-Wire,即单总线器件,具有线路简单,体积小的特点。
因此用它来组成一个测温系统,具有线路简单,在一根通信线,可以挂多这样的数字温度传感器,十分方便。
4.3.1DS18B20产品特点
●只要求一个端口即可实现通信。
●在DS18B20中的每个器件上都有独一无二的序列号。
●实际应用中不需要外部任何元器件即可实现测温。
●测量温度范围在-55.C到+125.C之间。
●数字温度计的分辨率用户可以从9位到12位选择。
●内部有温度上、下限告警设置。
TO-92封装的DS18B20的引脚排列见右图,其引脚功能描述见表4-1:
引脚功能表4-1
序号
名称
引脚功能描述
1
GND
地信号
2
DQ
数字输入输出引脚,开漏单总线接口引脚,当使用寄生电源时,可向电源提供电源
3
VDD
可选择的VDD引脚,当工作于寄生电源时,该引脚必须接地
4.3.2DS18B20的内部结构
DS18B20的内部框图下图4-3所示。
64位ROM存储器件独一无二的序列号。
暂存器包含两字节(0和1字节)的温度寄存器,用于存储温度传感器的数字输出。
暂存器还提供一个字节的上线警报触发(TH)和下线警报触发(TL)寄存器(2和3字节),和一个字节的配置寄存器(4字节),使用者可以通过配置寄存器来设置温度转换的精度。
暂存器的5、6和7字节器件内部保留使用。
第八字节含有循环冗余码(CRC)。
使用寄生电源时,DS18B20不需额外的供电电源;当总线为高电平时,功率由单总线上的上拉电阻通过DQ引脚提供;高电平总线信号同时也向内部电容CPP充电,CPP在总线低电平时为器件供电。
图4-3DS18B20的内部框图
4.3.3DS18B20的4个主要数据部件
①光刻ROM中的64位序列号是出厂前被光刻好的,它可以看作是该DS18B20的地址序列码。
64位光刻ROM的排列是:
开始8位(28H)是产品类型标号,接着的48位是该DS18B20自身的序列号,最后8位是前面56位的循环冗余校验码(CRC=X8+X5+X4+1)。
光刻ROM的作用是使每一个DS18B20都各不相同,这样就可以实现一根总线上挂接多个DS18B20的目的。
②DS18B20中的温度传感器可完成对温度的测量,以12位转化为例:
用16位符号扩展的二进制补码读数形式提供,以0.0625℃/LSB形式表达,其中S为符号位。
这是12位转化后得到的12位数据,存储在18B20的两个8比特的RAM中,二进制中的前面5位是符号位,如果测得的温度大于0,这5位为0,只要将测到的数值乘于0.0625即可得到实际温度;如果温度小于0,这5位为1,测到的数值需要取反加1再乘于0.0625即可得到实际温度。
例如+125℃的数字输出为07D0H,+25.0625℃的数字输出为0191H,-25.0625℃的数字输出为FF6FH,-55℃的数字输出为FC90H。
表4-2DS18B20温度数据表
TEMPERATURE
DIGITALOUTPUT
DIGITALOUTPUT
+125℃
0000011111010000
07D0H
+85℃
0000010101010000
0550H
+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
③DS18B20温度传感器的存储器
DS18B20温度传感器的内部存储器包括一个高速暂存RAM和一个非易失性的可电擦除的EEPRAM,后者存放高温度和低温度触发器TH、TL和结构寄存器。
④配置寄存器
表4-3配置寄存器
0
R1
R0
1
1
1
1
1
低五位一直都是"1",TM是测试模式位,用于设置DS18B20在工作模式还是在测试模式。
在DS18B20出厂时该位被设置为0,用户不要去改动。
R1和R0用来设置分辨率,如下表所示:
(DS18B20出厂时被设置为12位)
表4-4R1与R0确定传感器分辨率设置表
R1
R0
传感器精度/bit
转换时间/ms
0
0
9
93.75
0
1
10
187.5
1
0
11
375
1
1
12
750
4.3.4DS18B20的指令集
前面提及单总线器件的ROM命令,在主机检测到应答脉冲后,就可以发出ROM命令。
这些命令与各个DS18B20设备的唯一64位ROM代码相关。
允许主机在单总线上连接多个从机设备时,指定操作某个DS18B20设备。
这些命令还允许主机能够检测到总线上有多少个从机设备,以及其设备类型或者有没有设备处于报警状态。
从机设备可能支持5种ROM命令(实际情况与具体型号有关),每种命令长度为8位。
主机在发出功能命令之前,必须发送合适的ROM命令。
DS18B20的功能命令如表4-5:
表4-5DS18B20的功能命令
指令
协议
功能
读ROM
33H
读DS18B20中的编码(即64位地址)
符合ROM
55H
发出此命令后,接着发出64位ROM编码,访问单总线上与该编码相对应的DS18B20,使之做出响应,为下一步对该DS18B20的读写做准备
搜索ROM
0F0H
用于确定挂接在同一总线上DS18B20的个数和识别64位ROM地址,为操作各器件作好准备
跳过ROM
0CCH
忽略64位ROM地址,直接向DS18B20V温度转换命令,适用于单个DS18B20工作
报警搜索命令
0ECH
执行后,只有温度超过庙宇值上限或下限的片子才做出响应
温度转换
44H
启动DS18B20进行温度转换,转换时间最长为500ms(典型为200ms),结果写入到内部9字节RAM中
读暂存器
BEH
读内部RAM中9字节的内容
写暂存器
4EH
发出向内部RAM的第3、4字节写上、下温度数据命令,紧该温度命令之后,传达两字节的数据
复制暂存器
48H
将RAM中第3、4字内容复制到E2PROM中
重调E2PROM
0B8H
将E2PROM中内容恢复到RAM中的第3、4字节
读供电方式
0B4H
读DS18B20的供电模式,寄生供电时DS18B20发送“0”,外部供电时DS18B20发送“1”
4.3.5DS18B20读取温度方法
DS18B20有两种应用方法,一种是一条总线上只挂了一个DS18B20。
另外一种是一条总线上挂有多个DS18B20,两种应用的读取温度的方法大致一样,只有一些指令发送不一样而已,下面给出两种读取方法的步骤:
(1)单点读取法
1复位
2发出“跳过ROM指令”0xcc
3发出“温度转换指令”0x44
4判忙(忙时数据线上为0)
5复位
6发出“跳过ROM指令”0xcc
7发出“读暂存器指令”0xbe
8读取两个字节,分别是温度值的低字节与高字节
9复位,操作结束
(2)多点读取法
10复位
11发出“匹配64位ROM指令”0x55
12发出64位ROM码
13发出“温度转换指令”0x44
14判忙(忙时数据线上为0)
15复位
16发出64位ROM码
17发出“读暂存器指令”0xbe
18读取两个字节,分别是温度值的低字节与高字节
19复位,操作结束
4.3.6DS18B20软件驱动实现
DS18B20在一根I/O线上读写数据,因此,对读写的数据位有着严格的时序要求,只有严格遵守通讯协议才能保证数据传输的正确性和完整性。
所有时