基于DS18B20实现的温度传感器论文.docx
《基于DS18B20实现的温度传感器论文.docx》由会员分享,可在线阅读,更多相关《基于DS18B20实现的温度传感器论文.docx(22页珍藏版)》请在冰豆网上搜索。
基于DS18B20实现的温度传感器论文
目录------------------------------------------------------------------------------1
摘要------------------------------------------------------------------------------2
一、传感器概诉-------------------------------------------------------------3
1、传感器及温度传感器发展现状-------------------------------------3
2、主要元器件介绍-------------------------------------------------------3
二、课程设计主要内容----------------------------------------------------6
1、课程设计名称----------------------------------------------------------6
2、设计要求、目的及意义----------------------------------------------6
三、设计达到的指标-------------------------------------------------------7
四、传感器设计原理-------------------------------------------------------7
1、三个重要组成部分----------------------------------------------------7
2、DS1802工作原理------------------------------------------------------7
3、DS1802内部结构图---------------------------------------------------8
4、程序流程图--------------------------------------------------------------9
5、proteus仿真原理图----------------------------------------------------9
五、实验过程-----------------------------------------------------------------10
1、前期准备-----------------------------------------------------------------10
2、课程设计过程-----------------------------------------------------------10
3、个人主要工作及遇到问题--------------------------------------------11
六、数据分析与结论--------------------------------------------------------11
七、课程设计总结、思考与致谢-----------------------------------------12
八、参考文献-----------------------------------------------------------------14
九、附录-----------------------------------------------------------------------15
摘要:
温度的检测与控制是工业生产过程中比较典型的应用之一,随着传感器在生产和生活中的更加广泛的应用,利用新型单总线式数字温度传感器实现对温度的测试与控制得到更快的开发,随着时代的进步和发展,单片机技术已经普及到我们生活,工作,科研,各个领域。
一种数字式温度计以数字温度传感器作感温元件,它以单总线的连接方式,使电路大大的简化。
传统的温度检测大多以热敏电阻为传感器,这类传感器可靠性差,测量温度准确率低且电路复杂。
因此,本温度计摆脱了传统的温度测量方法,利用单片机对传感器进行控制。
这样易于智能化控制。
文中给出了系统实现的硬件原理图及软件流程图。
经实验测试表明,该系统测量精度高、抗干扰能力强,具有一定的参考价值。
该系统设计和布线简单,结构紧凑,体积小,重量轻,抗干扰能力强,性价比高,扩展方便,在大型仓库,工厂,智能化建筑等领域的多点温度检测中有广阔的应用前景。
关键词:
数字测温;温度传感器DS18B20;单片机STC89C52;LCD1602显示器。
一、传感器的概诉
1、传感器及温度传感器的发展现状
国家标准GB7665-87对传感器下的定义是:
“能感受规定的被测量并按照一定的规律转换成可用信号的器件或装置,通常由敏感元件和转换元件组成”。
传感器是能感受规定的被测量并按照一定的规律转换成可用输出信号的器件和装置。
传感器技术渗透带了各个领域,但他们的共性是利用物理定律和物质的物理、化学和生物特性,将非电量转换为电量。
由此可见,传感器技术在发展经济、推动社会进步方面的重要作用。
传感器从功能上可分为雷达传感器、电阻式传感器、电阻应变式传感器、压阻式传感器、热电阻传感器、温度传感器、光敏传感器、湿度传感器、生物传感器、位移传感器、压力传感器、超声波测距离传感器等,本文所研究的是温度传感器。
温度传感器是最早开发,应用最广泛的一类传感器。
温度传感器是利用物质各种物理性质随温度变化的规律把温度转换为电量的传感器。
这些呈现规律性变化的物理性质主要有半导体。
温度传感器是温度测量仪表的核心部分,品种繁多。
随着科学技术的发展,测温系统已经被广泛应用于社会生产、生活的各个领域,在工业、环境监测、医疗、家庭多方面均有应用。
从而使得现代温度传感器的发展。
微型化、集成化、数字化正成为发展的一个重要方向。
2、主要应用元器件及基本要求
该设计是以单片机STC89C52为控制核心,通过温度传感器DS18B20感受温度,实现温度测量功能并显示在LCD1602上。
2.1、STC89C52单片机简介
STC89C52是一种带8K字节闪烁可编程可檫除只读存储器(FPEROM-FlashProgramableandErasableReadOnlyMemory)的低电压,高性能COMOS8的微处理器,俗称单片机。
该器件采用ATMEL搞密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。
单片机总控制电路如下图1:
图4—1单片机总控制电路
(图1)
其性能指标为:
工作电压:
5.5v~3.3v(5v单片机)/3.8v~2.0v(3v单片机)
工作频率范围:
0~40MHZ,相当于8051的0~80MHZ,实际工作频率可大48MHZ。
用户应用程序空间为8K字节
片上集成512字节RAM
通用I/O口(32个),复位后为:
P1/P2/P3/P4是准双向口/弱上拉,P0是漏极开路输出,作为总线扩展用时,不用加上拉电阻,作为I/O口使用时,需加上拉电阻。
具有EEPROM功能与看门狗功能
具有3个16位的定时器/计数器。
及定时器T0.T1.T2。
2.2、DS18B20简介
DS18B20是DALLAS公司生产的一线式数字温度传感器,具有3引脚TO-92小体积封装形式;温度测量范围为-55℃~+125℃,可编程为9位~12位A/D转换精度,测温分辨率可达0.0625℃,被测温度用符号扩展的16位数字量方式串行输出;其工作电源既可在远端引入,也可采用寄生电源方式产生;多个DS18B20可以并联到3根或2根线上,CPU只需一根端口线就能与诸多DS18B20通信,占用微处理器的端口较少,可节省大量的引线和逻辑电路。
以上特点使DS18B20非常适用于远距离多点温度检测系统。
DS1820单线数字温度计特性
•独特的单线接口仅需一个端口引脚进行通讯
•简单的多点分布应用
•无需外部器件
•可通过数据线供电
•零待机功耗
•测温范围-55~+125℃,以0.5℃递增
•温度以9位数字量读出
•温度数字量转换时间200ms(典型值)
•用户可定义的非易失性温度报警设置
•报警搜索命令识别并标志超过程序限定温度(温度报警条件)的器件
•应用包括温度控制、工业系统、消费品、温度计或任何热感测系统
DS1820温度传感器外观图(a)和引脚图(b)
①引脚1接地
②引脚2数字信号输入/输出
③引脚3接高电平5V高电平
(a)(b)
2.3、LCD1602简介
液晶显示屏LCD1602(如图3)以其微功耗、体积小、显示内容丰富、超薄轻巧的诸多优点在袖珍式仪表和低功耗应用系统中得到越来越来广泛的应用。
这里介绍的是字符型液晶模块是一种5*7点阵图形来显示字符的液晶显示器,根据显示内容可分为1行16个字、2行16个字、2行20个字等等,本设计用的是常用的2行16个字的1602液晶模块。
(图2)
二、课程设计主要内容
课题名称:
基于DS18B20温度传感器的智能测温仪
设计要求:
该设计是以单片机STC89C52为控制核心,通过温度传感器DS18B20感受温度,实现温度测量功能。
目的及意义:
随着时代的进步和发展,单片机技术已经普及到我们生活,工作,科研,各个领域,一种数字式温度计以数字温度传感器作感温元件,它以单总线的连接方式,使电路大大的简化;传统的温度检测大多以热敏电阻为传感器,这类传感器可靠性差,测量温度准确率低且电路复杂。
因此,本温度计摆脱了传统的温度测量方法,利用单片机对传感器进行控制。
这样易于智能化控制。
进而考虑到用温度传感器,在单片机电路设计中,大多都是使用传感器,所以这是非常容易想到的,所以可以采用一只温度传感器DS18B20,此传感器,可以很容易直接读取被测温度值,进行转换,就可以满足设计要求。
三、设计达到的指标
1、测量精度:
DS18B20在-10—+85摄氏度范围内精度为±0.5摄氏度。
2、分辨率:
DS18B20的分辨率由12位(包括1位符号位)数据在线编程决定。
3、温度转换时间:
DS18B20的转换时间与设定的分辨率有关,当设定为9位时,最大转换时间为93.75ms;10位时,为187.5ms,11位时,为375ms;12位时,为750ms。
4、电源电压范围:
在保证温度转换精度为±0.5摄氏度,电源电压可为+3.5—+5.5v。
四、传感器设计原理
1、三个重要组成部分:
温度检测模块:
温度检测模块主要使用的是DS18B20为传感器。
该芯片性价比很高,可达到精度11位的精度,即最小分辨率可达0.0625摄氏度,测温范围为(-55,125)。
MCU与其通信只需要一个线,使用很方便,电路连接上也是非常简单。
信号控制模块:
STC89C52RC单片机,是整个系统的核心文件,用来存储和控制输出温度信号。
液晶显示模块:
显示模块主要用来显示是测得的当前的温度值,选用1602,该模块还配有3个按键,可设置温度控制值。
见图3
(图3)
2、DS18B20工作原理:
DS18B20的工作原理如图4所示,是用一个高温度系数的振荡器确定一个门周期,内部计数器在这个门周期内对一个低温度系数的振荡器的脉冲进行计数来得到温度值。
计数器被预置到对应于-55℃的一个值。
如果计数器在门周期结束前到达0,则温度寄存器(同样被预置到-55℃)的值增加,表明所测温度大于-55℃。
同时,计数器被复位到一个值,这个值由斜坡式累加器电路确定,斜坡式累加器电路用来补偿感温振荡器的抛物线特性。
然后计数器又开始计数直到0,如果门周期仍未结束,将重复这一过程。
斜坡式累加器用来补偿感温振荡器的非线性,以期在测温时获得比较高的分辨力。
这是通过改变计数器对温度每增加一度所需计数的的值来实现的。
因此,要想获得所需的分辨力,必须同时知道在给定温度下计数器的值和每一度的计数值。
3、DS18B20内部结构图:
4、程序流程图:
(图6)
5、proteus仿真原理图:
仿真过程:
DS18B20的DQ端与STC89C52单片机的外部中断1相连接,另外的VCC与GND端分别接电源的输出端与地端。
液晶显示屏的D0~D7端口分别与单片机的P0~P7口相连接,仿真图上未予显示的BLA和BLK端分别接地与电源,而显示屏的第三个接口可以悬空,也可以外接电阻调试显示屏的背光与亮度。
在单片机的18脚与19脚端用22PF的电容接上12MHZ的晶振,持续给单片机提供振荡周期。
单片机的EA接口外接高电平。
整体的电路在PROTUES上仿真如下图,因为在仿真库中没有STC89C52RC这一元件,所以用AT89C51予以替代。
原理图如图7。
(图7)
五、实验过程
1、前期准备:
在课程设计前期,人员分组完成后,小组成员便着手查阅资料、调研,通过查阅有关书籍、论文,最终确定课题为基于DS18B20的温度传感器测温仪。
2、课程设计过程
设计电路图,并根据所设计电路图和传感器的工作原理,为实现测温目的,进行编写程序。
经反复调试和修改,最终编译通过,proteus仿真成功,LCD显示器能根据温度传感器的测得温度显示数据。
将所编程序置入单片机内,并按照所设计电路图在面包板上连线。
经反复连线、检查元件、检查线路、检验程序,最终终于演示通过。
按照电路图,将各元器件焊接在电路板上,再经检验是否有空焊、短路等情况,进一步处理。
显示器正常显示所测温度,早中晚温度各不相同,且用手触碰温度传感器,显示器显示温度也随之上升。
课程设计完成。
3、个人主要工作及遇到问题
在本次课程设计中我主要负责硬件的布线、焊接与调试工作。
过程中遇到了各种问题,在面包板上几次调试都不成功,显示器亮的却不显示数字。
曾怀疑线路连错、元器件有损坏、背光没有调好等问题,后经一一排除。
接着就用万用表测每条线路是否正常,终于发现有些应该是高电平却不是,经过分析讨论,认为可能是有接触不良。
后借了其他组的面包板尝试,几经波折,终于演示成功。
焊接过程也是很容易出错。
焊好后接通电源,显示屏不亮,经检查,发现有一处短路。
稍作处理后,我们努力了一个星期的数字测温仪就成功了。
六、数据分析与结论
课程设计成功后,测得一天内温度数据如下:
时间
9点
10点
15点
16点
温度
31.9℃
32.5℃
35.3℃
34.7℃
相关数据符合一定的指标,实验成功。
实验成品如图所示:
(精确的温度显示)
(焊接工艺与排线布局)
七、课程设计总结思考与致谢
我们进行了为期一周的课程设计成功结束了,时间虽短,但收获颇多。
这次的课程设计,是一个崭新的体验,是一个学习的平台,是一次兴趣的启迪,是尝试着自己动手实践的开始,是现实与需求之间差距的体现,也是一个认识与改变的过程。
安排课程设计的基本目的,是在于通过理论与实际的结合、人与人的沟通,进一步提高思想觉悟和领悟力。
尤其是观察、分析和解决问题的实际工作能力。
作为整个学习体系的有机组成部分,课程设计虽然安排在两周进行,但并不具有绝对独立的意义。
它的一个重要功能,在于运用学习成果,检验学习成果。
运用学习成果,把课堂上学到的系统化的理论知识,尝试性地应用于实际设计工作,并从理论的高度对设计工作的现代化提出一些有针对性的建议和设想。
检验学习成果,看一看课堂学习与实际工作到底有多大距离,并通过综合分析,找出学习中存在的不足,以便为完善学习计划,改变学习内容与方法提供实践依据。
对于我们理工类的本科生来说,实践能力如何是至关重要的。
而这种能力在课堂上是学习不到的,必须从书本走向实践。
无论课本上的原理如何经典,课文中的描述如何生动,我们都只能理解,只能想象。
可是这次的课程设计让我们拥有了一个全新的体验,与课堂完全不同,是一种耳目一新的感觉。
许多人见看那些小小的元器件会说出:
“原来这就是电容啊”“原来电阻这么小”“这个三个引脚的小东西就可以感受温度的变化么?
”有人说兴趣是最好的老师。
那么我想,在那一刻,许多人的兴趣都被激发出来了。
课程设计过程中,我们也遇到了各种各样问题,在面包板上几次调试都不成功,显示器亮的却不显示数字。
曾怀疑线路连错、元器件有损坏、背光没有调好等问题,后经一一排除。
接着用万用表测每条线路是否正常,终于发现有些应该是高电平却不是,有些该有电压差却没有,经过分析讨论,认为可能是有接触不良。
后借了其他组的面包板尝试,几经波折,终于演示成功。
在设计中我主要负责的是硬件布线、焊接工作。
无论是布线还是焊接都是精细的活,且他们的重要性是相当的。
布线布的好,焊接起来不但整体布局美观,同时能省时省力,而且减少空焊、落焊的几率。
焊接确实要精中有细。
在其他的组中都是男生在焊接,因为也许他们认为拿着烙铁焊东西不适合女生做,我却不这么认为。
男生粗手粗脚,不细心,这样的活交给他们很可能会焊成一片,在我的自告奋勇下,带着组员的信任,我把事先布好的导线与引脚一个一个的焊好。
不只要细,还要精、稳,每次焊接结束时抬手要果断迅速。
我觉得只要心细、手稳,焊接一点都不难。
焊好后接电源,起初不亮,经检查有一处短路,稍作处理,我的温度就可以正常显示了。
成功的心情自然愉快,我焊好的板子在班级里几乎是最漂亮、问题最少的,为此我也窃喜了一下。
课程设计达到了专业学习的预期目的。
在一个星期的课程设计之后,我们普遍感到不仅实际动手能力有所提高,更重要的是通过设计流程的了解,进一步激发了我们对专业知识的兴趣,并能够结合实际存在的问题在专业领域内进行更深入的学习。
通过这次课程设计,我们也看到了自身状况与现实需要的差距,有了这样的认识,便于我们在今后的学习中及时补充和调整。
我相信这次课程设计会对我以后的工作会有很大程度的益处,在此还要感谢学院为我们提供这次机会,感谢杨穗老师的用心指导!
八、参考文献
[1]施昆松.多个数字温度传感器DS1820地址的自动搜寻[J]国外电子元器件,1997,(01)
[2]赵旦峰,刘昕.集成温度传感器在多点温度测量中的应用[J]传感器技术,1997,(01).
[3]张西.基于MCS-51单片机的测温系统[J]电子工程师,2002,(06).
[4]杨恢先:
黄辉先.单片机原理及应用.北京.中国邮电出版社.2010.
[5]刘迎春等.传感器原理设计与应用.长沙.国防科学技术大学出版社.2004.
[6]李海玲、王航宇等.基于AT89C51&DSl8B20的数字温度计设计[J].新特器件应用.
[7]张天鹏,魏蔚.“一线式”数字温度计DS18B20原理与应用[J].办公自动化(综合版),2009
(2):
24-26
附录1:
(程序)
#include
#include
#defineuintunsignedint
#defineucharunsignedchar
#definedelayNOP(){_nop_();_nop_();_nop_();_nop_();}
sbitDQ=P3^3;
sbitLCD_RS=P2^0;
sbitLCD_RW=P2^1;
sbitLCD_EN=P2^2;
ucharcodeTemp_Disp_Title[]={"CurrentTemp:
"};
ucharCurrent_Temp_Display_Buffer[]={"TEMP:
"};
ucharcodeTemperature_Char[8]=
{
0x0c,0x12,0x12,0x0c,0x00,0x00,0x00,0x00
};
ucharcodedf_Table[]=
{
0,1,1,2,3,3,4,4,5,6,6,7,8,8,9,9
};
ucharCurrentT=0;
ucharTemp_Value[]={0x00,0x00};
ucharDisplay_Digit[]={0,0,0,0};
bitDS18B20_IS_OK=1;
voidDelayXus(uintx)
{
uchari;
while(x--)
{
for(i=0;i<200;i++);
}
}
bitLCD_Busy_Check()
{
bitresult;
LCD_RS=0;
LCD_RW=1;
LCD_EN=1;
delayNOP();
result=(bit)(P0&0x80);
LCD_EN=0;
returnresult;
}
voidWrite_LCD_Command(ucharcmd)
{
while(LCD_Busy_Check());
LCD_RS=0;
LCD_RW=0;
LCD_EN=0;
_nop_();
_nop_();
P0=cmd;
delayNOP();
LCD_EN=1;
delayNOP();
LCD_EN=0;
}
voidWrite_LCD_Data(uchardat)
{
while(LCD_Busy_Check());
LCD_RS=1;
LCD_RW=0;
LCD_EN=0;
P0=dat;
delayNOP();
LCD_EN=1;
delayNOP();
LCD_EN=0;
}
voidLCD_Initialise()
{
Write_LCD_Command(0x01);
DelayXus(5);
Write_LCD_Command(0x38);
DelayXus(5);
Write_LCD_Command(0x0c);
DelayXus(5);
Write_LCD_Command(0x06);
DelayXus(5);
}
voidSet_LCD_POS(ucharpos)
{
Write_LCD_Command(pos|0x80);
}
voidDelay(uintx)
{
while(--x);
}
ucharInit_DS18B20()
{
ucharstatus;
DQ=1;
Delay(8);
DQ=0;
Delay(90);
DQ=1;
Delay(8);
DQ=1;
returnstatus;
}
ucharReadOneByte()
{
uchari,dat=0;
DQ=1;
_nop_();
for(i=0;i<8;i++)
{
DQ=0;
dat>>=1;
DQ=1;
_nop_();
_nop_();
if(DQ)
dat|=0X80;
Delay(30);
DQ=1;
}
returndat;
}
voidWriteOneByte(uchardat)
{
uchari;
for(i=0;i<8;i++)
{
DQ=0