基于51单片机的数字温度传感器DS18B20的设计制作_第1页
基于51单片机的数字温度传感器DS18B20的设计制作_第2页
基于51单片机的数字温度传感器DS18B20的设计制作_第3页
基于51单片机的数字温度传感器DS18B20的设计制作_第4页
基于51单片机的数字温度传感器DS18B20的设计制作_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于51单片机的数字温度传感器DS18B20的设计制作 专业:应用电子技术班级:08应电1班制作人:陈艳黄凤蒋斌 指导老师:邝永明 2009年12月3日引言 随着现代信息技术的飞速发展和传统工业改造的逐步实现,能够独立工作的温度检测和显示系统应用于诸多领域。传统的温度检测以热敏电阻为温度敏感元件。热敏电阻的成本低,但需后续信号处理电路,而且可靠性相对较差,测温准确度低,检测系统也有一定的误差。与传统的温度计相比,这里设计的数字温度计具有读数方便,测温范围广,测温精确,数字显示,适用范围宽等特点。选用AT89C51型单片机作为主控制器件,DS18B20作为测温传感器通过4位共阳极LED数码管串口传送数据,实现温度显示。通过DS18B20直接读取被测温度值,进行数据转换,该器件的物理化学性能稳定,线性度较好,在0100最大线性偏差小于0.1。该器件可直接向单片机传输数字信号,便于单片机处理及控制。另外,该温度计还能直接采用测温器件测量温度,从而简化数据传输与处理过程。DS18B20是一种可组网的高精度数字式温度传感器,由于其具有单总线的独特优点,可以使用户轻松地组建起传感器网络,并可使多点温度测量电路变得简单、可靠。本文结合实际使用经验,介绍了DS18B20数字温度传感器在单片机下的硬件连接及软件编程,并给出了软件流程图。芯片使用了ATMEL公司的AT89S52单片机和DALLAS公司的DS18B20数字温度传感器。上位机部分使用了通用PC。该系统可应用于仓库测温、楼宇空调控制和生产过程监控等领域。第一章1.1系统背景在工、农业生产和日常生活中,对温度的测量及控制占据着极其重要地位。首先让我们了解一下多点温度检测系统在各个方面的应用领域:消防电气的非破坏性温度检测,电力、电讯设备之过热故障预知检测,空调系统的温度检测,各类运输工具之组件的过热检测,保全与监视系统之应用,医疗与健诊的温度测试,化工、机械等设备温度过热检测。温度检测系统应用十分广阔。1.2 系统概述 本设计运用主从分布式思想,由一台上位机(PC微型计算机),下位机(单片机)多点温度数据采集,组成两级分布式多点温度测量的巡回检测系统。该系统采用 RS-232串行通讯标准,通过上位机(PC)控制下位机(单片机)进行现场温度采集。温度值既可以送回主控PC进行数据处理,由显示器显示。也可以由下位机单独工作,实时显示当前各点的温度值,对各点进行控制。下位机采用的是单片机基于数字温度传感器DS18B20的系统。DS18B20利用单总线的特点可以方便的实现多点温度的测量,轻松的组建传感器网络,系统的抗干扰性好、设计灵活、方便,而且适合于在恶劣的环境下进行现场温度测量。本系统可以应用在大型工业及民用常温多点监测场合。如粮食仓储系统、楼宇自动化系统、温控制程生产线之温度影像检测、医疗与健诊的温度测试、空调系统的温度检测、石化、机械等。第二章、方案论证 温度检测系统有则共同的特点:测量点多、环境复杂、布线分散、现场离监控室远等。若采用一般温度传感器采集温度信号,则需要设计信号调理电路、A/D 转换及相应的接口电路,才能把传感器输出的模拟信号转换成数字信号送到计算机去处理。这样,由于各种因素会造成检测系统较大的偏差;又因为检测环境复杂、测量点多、信号传输距离远及各种干扰的影响,会使检测系统的稳定性和可靠性下降 。所以多点温度检测系统的设计的关键在于两部分:温度传感器的选择和主控单元的设计。温度传感器应用范围广泛、使用数量庞大,也高居各类传感器之首。2.1 传感器部分方案一:采用热敏电阻,可满足40摄氏度至90摄氏度测量范围,但热敏电阻精度、重复性、可靠性较差,对于检测1摄氏度的信号是不适用的。而且在温度测量系统中,采用单片温度传感器,比如AD590,LM35等.但这些芯片输出的都是模拟信号,必须经过A/D转换后才能送给计算机,这样就使得测温装置的结构较复杂.另外,这种测温装置的一根线上只能挂一个传感器,不能进行多点测量.即使能实现,也要用到复杂的算法,一定程度上也增加了软件实现的难度。方案二:在多点测温系统中,传统的测温方法是将模拟信号远距离采样进行AD转换,而为了获得较高的测温精度,就必须采用措施解决由长线传输,多点测量切换及放大电路零点漂移等造成的误差补偿问题。采用数字温度芯片DS18B20测量温度,输出信号全数字化。便于单片机处理及控制,省去传统的测温方法的很多外围电路。且该芯片的物理化学性很稳定,它能用做工业测温元件,此元件线形较好。在0100摄氏度时,最大线形偏差小于1摄氏度。DS18B20的最大特点之一采用了单总线的数据传输,由数字温度计DS1820和微控制器AT89C51构成的温度测量装置,它直接输出温度的数字信号,可直接与计算机连接。这样,测温系统的结构就比较简单,体积也不大,且由于AT89S52可以带多个DSB1820,因此可以非常容易实现多点测量.轻松的组建传感器网络。采用温度芯片DS18B20测量温度,可以体现系统芯片化这个趋势。部分功能电路的集成,使总体电路更简洁,搭建电路和焊接电路时更快。而且,集成块的使用,有效地避免外界的干扰,提高测量电路的精确度。所以集成芯片的使用将成为电路发展的一种趋势。本方案应用这一温度芯片,也是顺应这一趋势。2.2主控制部分方案一:此方案采用PC机实现。它可在线编程,可在线仿真的功能,这让调试变得方便。且人机交互友好。但是PC机输出信号不能直接与DS18B20通信。需要通过RS232电平转换兼容,硬件的合成在线调试,较为繁琐,很不简便。而且在一些环境比较恶劣的场合,PC机的体积大,携带安装不方便,性能不稳定,给工程带来很多麻烦!方案二:此方案采用AT89S52单片机实现。单片机软件编程的自由度大,可通过编程实现各种各样的算术算法和逻辑控制。而且体积小,硬件实现简单,安装方便。既可以单独对多DS18B20控制工作,还可以与PC机通信.运用主从分布式思想,由一台上位机(PC微型计算机),下位机(单片机)多点温度数据采集,组成两级分布式多点温度测量的巡回检测系统,实现远程控制。另外AT89S52在工业控制上也有着广泛的应用,编程技术及外围功能电路的配合使用都很成熟。2.3系统方案综上所述,温度传感器以及主控部分都采用第二方案。系统采用针对传统温度测温系统测温点少,系统兼容性及扩展性较差的特点,运用分布式通讯的思想。设计一种可以用于大规模多点温度测量的巡回检测系统。通过下位机(单片机)进行现场的温度采集,温度数据既可以由下位机模块实时显示,也可以送回上位机进行数据处理,具有巡检速度快,扩展性好,成本低的特点。实际采用电路方案如下图:DS18B20是DALLAS公司生产的一线式数字温度传感器,具有3引脚TO92小体积封装形式。测温分辨率可达0.0625,被测温度用符号扩展的16位数字量方式串行输出。其工作电源既可在远端引入,也可采用寄生电源方式产生。CPU只需一根端口线就能与诸多DS18B20通信,占用微处理器的端口较少,可节省大量的引线和逻辑电路。DS18B20支持“一线总线”接口,测量温度范围为 -55C+125C,在-10+85C范围内,精度为0.5C。现场温度直接以“一线总线”的数字方式传输,大大提高了系统的抗干扰性。适合于恶劣环境的现场温度测量,如:环境控制、设备或过程控制、测温类消费电子产品等。DS18B20结构(1) DS18B20的结构如下图所示DS18B20的管脚排列DS18B20如图所示,主要由4部分组成:64位ROM、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器。DS18B20的管脚排列如图2所示,DQ为数字信号输入输出端;GND为电源地;VDD为外接供电电源输入端。 ROM中的64位序列号是出厂前被光刻好的,它可以看作是该DS18B20的地址序列码,每个DS18B20的64位序列号均不相同。64位ROM的排的循环冗余校验码(CRC=X8X5X41)。ROM的作用是使每一个DS18B20都各不相同,这样就可以实现一根总线上挂接多个DS18B20的目的。DS18B20的时序1、1复位时序复位使用DS18B20时,首先需将其复位,然后才能执行其它命令。复位时,主机将数据线拉为低电平并保持480us960us,然后释放数据线,再由上拉电阻将数据线拉高1560us,等待DS18B20发出存在脉冲,存在脉冲有效时间为60240us,这样,就完成了复位操作。12写时序在主机对DS18B20写数据时,先将数据线置为高电平,再变为低电平,该低电平应大于lus。在数据线变为低电平后15us内,根据写“1”或写“0”使数据线变高或继续为低。DS18B20将在数据线变成低电平后15us60US内对数据线进行采样。要求写入DS18B20的数据持续时间应大于6Ous而小于120us,两次写数据之间的时间间隔应大于lus。12读时序读时隙当主机从DS18B20读数据时,主机先将数据线置为高电平,再变为低电平,该低电平应大于lus,然后释放数据线,使其变为高电平。DS18B20在数据线从高电平变为低电平的15us内将数据送到数据线上。主机可在15us后读取数据线。DS18B20中的温度传感器完成对温度的测量,用16位符号扩展的二进制补码读数形式提供,以0.0625/LSB形式表达,其中S为符号位。例如125的数字输出为07D0H,25.0625的数字输出为0191H,25.0625的数字输出为FF6FH,55的数字输出为FC90H。程序设计思路程序名称:DS18B20温度测量#include#include#include#define uchar unsigned char#define tempint DBYTE0x30#define tempdf DBYTE0x31uchar code tab=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x83,0xf8,0x80,0x98;sbit dat=P10;void set_ds18b20(); /初始化DS18B20子程序void get_temperature(); /获得温度子程序void read_ds18b20(); /读DS18B20子程序void write_ds18b20(uchar command);/向DS18B20写1字节子程序void delayms(uchar count); /延时count毫秒子程序void disp_temp(); /显示温度子程序void main() EA=0; /禁止中断 SP=0x60; /设置堆栈指针 while(1) get_temperature(); /获得温度 disp_temp(); /显示温度 void set_ds18b20() while(1) uchar delay,flag; flag=0; dat=0; /数据线置低电平 delay=250; while(-delay); /低电平保持500us dat=1; /数据线置高电平 delay=30; while(-delay); /低电平保持60us while(dat=0) /判断DS18B20是否发出低电平信号 delay=120; /DS18B20响应,延时240us while(-delay); if(dat) /DS18B20发出高电平初始化成功,返回 flag=1; /DS18B20初始化成功标志 break; if(flag) /初始化成功,再延时480us delay=240; while(-delay); break; void get_temperature() /温度转换、获得温度子程序 set_ds18b20(); /初始化DS18B20 write_ds18b20(0xcc); /发跳过ROM匹配命令 write_ds18b20(0x44); /发温度转换命令 disp_temp(); /显示温度,等待转换结束,大于600ms set_ds18b20(); write_ds18b20(0xcc); /发跳过ROM匹配命令 write_ds18b20(0xbe); /发出读温度命令 read_ds18b20(); /将读出的温度数据保存到tempint和tempdf处void read_ds18b20() uchar delay,i,j,temp,temph,templ; j=2; /读2位字节数据 do for(i=8;i0;i-) /一个字节分8位读取 temp=1; /读取1位右移1位 dat=0; /数据线置低电平 _nop_(); _nop_(); dat=1; /数据线置高电平 delay=4; while(-delay); /延时4us if(dat) /读取1位数据 temp|=0x80; delay=10; /读取以为数据后延时20us while(-delay); if(j=2) /读取的第一字节存templ templ=temp; else temph=temp; /读取的第二字节存temph while(-j); tempdf=templ&0x0f; /将读取的数据转换成温度值,整数部分存tempint,小数部分存tempdf templ=4; temph0;i-) /将一字节数据一位一位写入 dat=0; /数据线置低电平 delay=8; /延时16us while(-delay); dat=command&0x01; /将数据放置在数据线上 delay=20; /延时40us while(-delay); command=command1; /准备发送下一位数据 dat=1; /发送完一位数据,数据线置高电平 _nop_(); /延时1us void disp_temp() uchar tempinth,tempintl,tempdfh,tempdfl,cnt; tempinth=tabtempint/10; /整数高半字节 tempintl=tabtempint%10&0x7f;/整数低半字节 tempdfh=tabtempdf/10; /小数高半字节 tempdfl=tabtempdf%10; /小数低半字节 cnt=200; /循环显示200次 while(-cnt) P2=0xfe; P0=tempinth; delayms(1); P2=0xfd; P0=tempintl; delayms(1); P2=0xf7; P0=tempdfh; delayms(1); P2=0xef; P0=tempdfl; delayms(1); / P0=0xff; void delayms(uchar count) uchar i,j; do for(i=5;i0;i-) for(j=98;j0;j-); while(-count);第五章系统调试5.1 分步调试1、测试环境及工具测试温度:0100摄氏度。(模拟多点不同温度值环境)测试仪器及软件:数字万用表,温度计0100摄氏度,串口调试助手。测试方法:目测。2、测试方法使系统运行,观察系统硬件检测是否正常(包括单片机最小系统,键盘电路,显示电路,温度测试电路等)。系统自带测试表格数据,观察显示数据是否相符合即可。采用温度传感器和温度计同时测量多点水温变化情况(取温度值不同的多点),目测显示电路是否正常。并记录各点温度值,与实际温度值比较,得出系统的温度指标。使用串口调试助手与单片机通讯,观察单片机与串口之间传输数据正确否。3、测试结果分析自检正常,各点温度显示正常,串口传输数据正确。因为芯片是塑料封装,所以对温度的感应灵敏度不是相当高,需要一个很短的时间才能达到稳定。5.2 统一调试将硬件及软件结合起来进行系统的统一调试。附:DS18B20使用中的注意事项 DS18B20虽然具有测温系统简单、测温精度高、连接方便、占用口线少等优点,但在实际应用中也应注意以下几方面的问题: (1)DS18B20从测温结束到将温度值转换成数字量需要一定的转换时间,这是必须保证的,不然会出现转换错误的现象,使

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论