温度控制器张婷.docx

上传人:b****3 文档编号:26466814 上传时间:2023-06-19 格式:DOCX 页数:38 大小:507.68KB
下载 相关 举报
温度控制器张婷.docx_第1页
第1页 / 共38页
温度控制器张婷.docx_第2页
第2页 / 共38页
温度控制器张婷.docx_第3页
第3页 / 共38页
温度控制器张婷.docx_第4页
第4页 / 共38页
温度控制器张婷.docx_第5页
第5页 / 共38页
点击查看更多>>
下载资源
资源描述

温度控制器张婷.docx

《温度控制器张婷.docx》由会员分享,可在线阅读,更多相关《温度控制器张婷.docx(38页珍藏版)》请在冰豆网上搜索。

温度控制器张婷.docx

温度控制器张婷

滁州职业技术学院信息工程系

——2015届应用电子技术专业毕业论文

 

姓名:

张婷

班级:

12级应用电子

(1)班

设计课题:

温度控制器

指导教师:

姚聪

 

2014年11月28日

目录

目录i

摘要3

第一章概述1

1.1系统功能要求1

1.2系统设计方案1

1.2.1电阻加热模块2

1.2.2显示模块2

1.2.3主控模块2

1.2.4电源模块2

1.2.5键盘输入模块2

第二章硬件设计3

2.1功率电阻加热模块3

2.1.1设计方案3

2.1.2功率电阻器介绍3

2.1.3功率电阻加热原理3

2.2显示模块4

2.2.1设计方案4

2.2.21602液晶显示器介绍[1]4

2.2.31602液晶显示器原理5

2.3主控模块5

2.3.1设计方案5

2.3.2STC89C52单片机介绍[2]6

2.3.3STC89C52RC单片机原理6

2.4总体硬件设计7

2.4.1总体设计方案7

2.4.2完整硬件电路图8

第三章软件设计9

3.11602液晶屏显示驱动模块9

3.1.1软件设计方案9

3.1.2软件流程9

3.1.3软件代码9

3.2DS18B20测温模块12

3.2.1软件设计方案12

3.2.2软件流程图12

3.2.3软件代码[3]13

3.3功率电阻加热模块16

3.3.1软件设计方案16

3.3.2软件流程图17

3.3.3软件代码18

3.4软件整体流程27

3.4.1软件整体设计方案27

3.4.2主函数程序结构27

第四章系统结果29

5.1温度控制器性能介绍29

5.2温度控制器结果分析29

致谢31

参考文献32

摘要

随着社会的发展和科技的进步以及测温仪器在各个领域的应用,智能化是现代温控系统发展的主流方向;特别是近年来,温度控制系统已应用到生活的各个方面,所以说温度控制一直是一个热门领域,是与人们息息相关的。

温度是科学技术中一个基本物理量,在工业生产等许多领域,温度常常是表征对象和过度状态的重要物理量。

各个工程应用领域对温度的要求越来越高。

在众多的生产过程中,对温度的控制效果直接影响到了产品的质量以及成本等问题。

因此及时、准确的得到温度信息并进行可靠、准确、快速的控制,同时兼顾到系统灵活性、方便性是一个非常重要的环节。

本组设计的温度控制器通过温度传感器DS18B20对电阻加热器的温度进行检测,其中以8051内核的STC89C52单片机为核心部件,外加温度采集电路、液晶显示电路、加热控制电路等,以较容易控制的功率电阻作为加热器件并以PWM波控制加热程度。

本作品既可以对当前温度进行实时显示又可以对温度进行控制,以使达到用户需要的温度,并使其恒定在这一温度。

通过优良算法和温度补偿,在不减少功能的前提下有效降低了硬件成本,系统操控简便、灵活。

 

关键词:

温度,单片机,PWM波

 

第一章概述

当电流通过电阻时,电流做功而消耗电能,产生了热量,这种现象叫做电流的热效应。

实践证明,电流通过导体所产生的热量和电流的平方,导体本身的电阻值以及电流通过的时间成正比。

这是英国科学家焦耳和俄国科学家楞次得出的结论,被人称作焦耳定律、楞次定律。

本组设计的温度控制器最基本的原理就是基于焦耳定律而实现的,通过单片机对流过电阻的电流进行控制,来控制电阻加热的温度,这就是温度控制器的含义。

1.1系统功能要求

(1)使用功率电阻作为加热装置;

(2)使用DS18B20测量温度;

(3)通过单片机的控制使其加热装置控制在某一恒定温度;

(4)可以显示实时温度和设定的温度。

1.2系统设计方案

根据系统要求,本次设计的思路是将系统分为电源模块、主控模块、加热模块、显示模块和输入控制模块5个部分(如图1-1所示)进行分步设计。

图1-1系统模块框图

温度控制器,核心内容就是温度和控制两个部分。

我们用单片机做为主控芯片,功率电阻为加热器件,实现温度的恒定控制。

在实际生活领域,温度控制的应用还是比较宽泛的,小到恒温的电烙铁,大到电饭锅,无一不是主控器件对加热器件的温度控制,使加热装置能够很稳定的保持在某一温度上面,基本不变。

而功率电阻能够发热,是因为电流的热效应,我们知道,任何材料都有其阻值,那么电流流过这个材料的时候,就会发热,这就是电流的热效应。

我们通过控制流过功率电阻的电流大小,便可以控制电阻的温度。

说到控制,这个是由单片机来完成的,通过算法,我们可以改变单片机的输出信号,也就是PWM波,利用PWM波来控制电阻两端的电压,间接的控制了电阻上面流过的电流,也就是控制了电阻上面的温度,这就是我们本次设计的基本思想。

1.2.1电阻加热模块

加热模块用于实现本系统核心功能,是本次设计首先考虑的内容,加热模块的性能,直接决定了产品的总体性能。

1.2.2显示模块

显示模块是人际交换的重要平台之一,显示模块的好坏直接决定了用户的体验,所以选择什么样的显示器件也是很重要的。

1.2.3主控模块

主控模块是本次设计的核心器件,所以选择什么样的单片机更加实惠,性能也能胜任,也是硬件设计中所需要考虑的方面。

1.2.4电源模块

电源模块是温度控制器的“心脏”部分,选择什么样的电源模块在整体上影响了产品的性能,温度控制器温度加热的速度和电源有直接关系,只有功率足够大,才能快速准确的达到设置的温度。

1.2.5键盘输入模块

在一件完整的产品中,键盘输入模块是必不可少,产品本身怎样才能知道用户想要什么,必然需要输入模块,输入模块和显示模块是人机交换和用户体验的两个方面,只有满足用户不断变化的需求,才能进一步提高用户体验,只有用户体验好,这个产品才会受到消费者的欢迎。

而温度控制器关系到消费者生活的体验,必须添加输入控制模块。

第二章硬件设计

2.1功率电阻加热模块

2.1.1设计方案

功率电阻加热模块用于实现本系统核心功能,是本次设计首先考虑的内容。

方案一:

使用市场上的线绕式陶瓷电阻,这个方案有很明显的优点,就是温度采样非常准确,因为是线绕式电阻,可以把温度传感器放在电阻器里面,这样测出来的温度近似等于电阻的实际温度,温度漂移和温度误差会很低,这样方便温度的控制。

惟一的缺点就是在市场上不好买到。

方案二:

使用淘宝上的5R,25W的功率电阻。

这个电阻比较大,外表的是金属外壳,在放置DS18B20的时候,也比较容易和电阻相贴近,这样测出来的温度也是比较准确的,但惟一的缺点也很明显,就是温度漂移大,误差大。

经过比较,方案一的优点最好,但是买不到,所以只能退而求次,选择了方案二。

2.1.2功率电阻器介绍

功率电阻器,一般人第一次听到后觉得很陌生,其实意思不难理解的。

首先电阻是所有电子元件的一个特性,决定电子元件对电流阻碍作用的大小。

对电流具有特定阻力值的电子元件称为电阻器;电阻器是由陶瓷体上镀上电阻层和缠绕电阻丝制成。

回到我们的功率电阻器,任何电阻都有其功率,在设计电路中选择电阻的时候,就需要考虑到用什么样的电阻,这里就必须考虑到电阻的功率,其实在设计电路时,不仅仅电阻需要考虑功率,基本上所有元器件都需要考虑功率大小,功率电阻也是电阻,只是电阻的功率被大大提升了而已。

常用电阻的功率在0.25W左右,本组设计的温度控制器的加热模块用到的电阻功率是25W,可以加热到很高的温度而不损坏电阻器,阻值是5R,既不大也不小,加热速度也容易控制。

2.1.3功率电阻加热原理

(1)电阻加热就是利用电流的热效应,也就是焦耳定律来实现的。

通过改变流过电阻上面的电流,进而能够准确的控制电阻的加热温度。

电流的控制是由PWM波来实现的,单片机输出PWM波控制达林顿晶体管的导通和截止,这样就能控制电阻两端的电压,单片机输出的5V-PWM波可以直接通过晶体管的电平转换成12V-PWM波,电阻两端的电压被控制了,那么通过欧姆定律可知,功率电阻的阻值基本不变,通过改变电压,那么就可以间接的改变流过电阻的电流,即可以控制电阻的温度。

(2)原理图:

图2-1是功率电阻和单片机连接的原理图。

图2-1功率电阻原理图

2.2显示模块

2.2.1设计方案

在显示模块的设计方案中,选择什么型号的显示器件,关乎到用户体验,本组认为数码管不利于控制,且视觉效果不好,所以选取了1602液晶屏作为显示器件,相对于数码管,液晶屏的显示信息数量更多,而且数据更清晰,这样用户使用时能更清楚、直观的明白两种温度数据的差异。

2.2.21602液晶显示器介绍[1]

1602液晶也叫1602字符型液晶,它是一种专门用来显示字母、数字、符号等的点阵型液晶模块。

它由若干个5X7或者5X11等点阵字符位组成,每个点阵字符位都可以显示一个字符,每位之间有一个点距的间隔,每行之间也有间隔,起到了字符间距和行间距的作用。

1602LCD是指显示的内容为16X2,即可以显示两行,每行16个字符液晶模块(显示字符和数字)。

目前市面上字符液晶绝大多数是基于HD44780液晶芯片的,控制原理是完全相同的,因此基于HD44780写的控制程序可以很方便地应用于市面上大部分的字符型液晶。

1602采用标准的16脚接口,其中:

第1脚:

VSS为电源地

第2脚:

VCC接5V电源正极

第3脚:

V0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高(对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度)。

第4脚:

RS为寄存器选择,高电平1时选择数据寄存器、低电平0时选择指令寄存器。

第5脚:

RW为读写信号线,高电平

(1)时进行读操作,低电平(0)时进行写操作。

第6脚:

E(或EN)端为使能(enable)端,高电平

(1)时读取信息,负跳变时执行指令。

第7~14脚:

D0~D7为8位双向数据端。

第15~16脚:

空脚或背灯电源。

15脚背光正极,16脚背光负极。

2.2.31602液晶显示器原理

(1)1602液晶显示器工作原理:

1602液晶显示器的数据接口连接到单片机STC89C52RC的P0口上,控制端口连接在P2口上面,我们通过1602的读写时序,对RS、RW、E三个端口进行操作,便可以对1602进行读操作,写操作;数据也可以和1602进行交换,我们可以先写命令,也可以写地址,然后直接发送数据,这样1602就能识别了。

详细的程序会在软件中介绍。

(2)原理图:

图2-2是1602液晶显示器与单片机连接原理图;图2-3是1602液晶显示器的实物图。

图2-21602液晶屏原理图

图2-31602液晶屏实物图

2.3主控模块

2.3.1设计方案

方案一:

使用STC89C52RC单片机作为主控芯片,优点是价格便宜,而且性能满足本次设计要求。

方案二:

使用STC12C5A60S2单片机作为主控芯片,优点是性能比52单片机要高很多,但是价格也比52要贵。

经过比较,第二种单片机虽然性能很好,程序也不复杂,但是考虑到普通的52单片机对于本次设计已经完全够用了,所以没必要去使用12系列的单片机,对于较为复杂的电路设计是可以选择12单片机的。

我们组最终选择了经典的52单片机作为本次设计的主控器件。

2.3.2STC89C52单片机介绍[2]

STC89C52RC单片机是宏晶科技推出的新一代高速/低功耗/超强抗干扰的单片机,指令代码完全兼容传统8051单片机,12时钟/机器周期和6时钟/机器周期可以任意选择。

主要特性如下:

(1)增强型8051单片机,6时钟/机器周期和12时钟/机器周期可以任意选择,指令代码完全兼容传统8051。

(2)工作电压:

5.5V~3.3V(5V单片机)/3.8V~2.0V(3V单片机)。

(3)工作频率范围:

0~40MHz,相当于普通8051的0~80MHz,实际工作频率可达48MHz。

(4)用户应用程序空间为8K字节。

(5)片上集成512字节RAM。

(6)通用I/O口(32个),复位后为:

P1/P2/P3/P4是准双向口/弱上拉,P0口是漏极开路输出,作为总线扩展用时,不用加上拉电阻,作为I/O口用时,需加上拉电阻。

(7)ISP(在系统可编程)/IAP(在应用可编程),无需专用编程器,无需专用仿真器,可通过串口(RxD/P3.0,TxD/P3.1)直接下载用户程序,数秒即可完成一片。

(8)具有EEPROM功能。

(9)具有看门狗功能。

(10)共3个16位定时器/计数器。

即定时器T0、T1、T2。

(11)外部中断4路,下降沿中断或低电平触发电路,PowerDown模式可由外部中断低电平触发中断方式唤醒。

(12)通用异步串行口(UART),还可用定时器软件实现多个UART。

(13)工作温度范围:

-40~+85℃(工业级)/0~75℃(商业级)

2.3.3STC89C52RC单片机原理

(1)STC89C52RC单片机控制原理:

在本次设计中采用了单片机芯片,单片机采用的是STC89C52RC,使用11.0592MHz高精度的晶振,方便以后单片机和上位机通讯。

单片机在本次设计中的主要作用就是控制。

温度控制器,两大要点之一的控制就是由单片机来完成的。

单片机通过温度传感器对电阻温度进行温度检测而得到温度值,通过实时温度和设定温度的比较,输出控制信号,这个控制信号就是这次设计最大难点也是要点所在。

合理的使用PWM波,合理的输出多大占空比的PWM波,是设计者所需要解决的难点所在。

单片机其他的作用也有如:

驱动液晶显示,驱动按键输入等。

(2)原理图:

图2-4是STC89C52RC单片机原理图。

图2-4STC89C52RC单片机引脚图

2.4总体硬件设计

2.4.1总体设计方案

通过上面的介绍,我们已经知道了,硬件电路是根据系统要求而设计的,本组设计的温度控制器总体硬件设计思路如下:

当接通电源后,我们的电源模块会对输入进来的12V电压进行稳压得到5V的电压输出送给我们的单片机和显示电路等,且12V电压还给加热电路直接供电。

单片机上电后,会直接采集加热电阻上面的温度,在采集完成后,会和默认设置加热的温度进行比较,如果当前电阻温度低于设置温度,那么单片机输出恒为1,使加热电路的控制三极管导通,这样10V左右的电压会加在功率电阻两端,电阻开始全速加热,当加热到一定的时间后,单片机首先输出为0停止加热,在等待2倍的加热时间后,再次检测电阻上面的当前温度,如果当前温度仍然低于设置温度的话,单片机根据温度差值,输出一定占空比的PWM波,然后再次判断,再次检测,得到的效果就是加热电阻上面的温度会在设置温度上面保持基本不变。

且1602显示屏也实时显示当前温度值和设定温度值。

如果用户想修改设定温度的话,那么我们可以按下弹性按钮,直接对设定温度修改,然后单片机再次会对当前温度和设定温度判断,最后再输出1或者0或者是PWM波。

这就是我们温度控制器硬件电路设计的思路,当然了也有一点软件的思路在里面,通过这种思路的分析,我们就可以设计和做出温度控制器的硬件成品。

2.4.2完整硬件电路图

通过上面的设计方案和设计要求,本组设计出了完整的电路图,如图2-5所示。

图2-5温度控制器硬件电路总图

第三章软件设计

3.11602液晶屏显示驱动模块

3.1.1软件设计方案

根据1602液晶屏的资料,我们可以知道1602液晶屏有16个引脚,数据脚有8个,与操作相关的引脚有3个,分别是RS数据/命令选择端、R/W读写选择端、E使能信号。

知道这些引脚功能,并且知道了操作1602的时序后,就可以编写出1602液晶屏的操作读写代码。

通过这些读写代码,我们单片机就可以与1602液晶屏进行通讯,也就可以让1602液晶屏显示出我们想显示的内容了。

3.1.2软件流程

我们查询资料可以得到1602液晶屏的基本操作时序,如:

写命令:

RS=0.RW=0,D0-D7=指令码,E=高脉冲。

写数据:

RS=1,RW=0,D0-D7=数据,E=高脉冲。

具体的写时序图如下所示:

图3-1是写指令时序图;图3-2是写数据时序图。

图3-11602液晶屏写指令时序图图3-21602液晶屏写数据时序图

3.1.3软件代码

#include

#defineuintunsignedint

#defineucharunsignedchar

sfrWDT_CONTR=0xe1;

sbitrs=P3^5;

sbite=P3^4;

sbitDQ=P3^6;

sbitflag_sudu=P1^4;

sbityj=P3^7;

sbitkg1=P3^0;

sbitkg2=P3^1;

sbitkg3=P3^2;

sbitkg4=P3^3;

bitflag=0;

bitaa=0,cc=0,ee=0,gg=0;

bitflag_wendu=0;

intbb=0;

uinttemp=0,wd=500;//温度整型数据,用于数码管显示

uchartemh=0,teml=0,flag_wd=0,time=0,ff=0,xs=0,bs=0,dd=0;//温度高字节,温度低字节变量

floatf_temp=0;

uchari=0,time1=0,time2=0,time3=0;

ucharshuju[8]="d-wendu:

";

ucharshuju1[6]="Error!

";

ucharshuju2[13]="s-wendu:

.";

voidyanshi(uinti)//延时1ms函数

{

ucharj;

while(i--)

for(j=110;j>0;j--);

}

voidxie_com(ucharcom)//1602写命令和地址函数

{

rs=0;

P0=com;

yanshi(5);

e=1;

yanshi(5);

e=0;

}

voidxie_data(uchardate)//1602写数据函数

{

rs=1;

P0=date;

yanshi(5);

e=1;

yanshi(5);

e=0;

}

voidinit()//1602初始化程序

{

e=0;

xie_com(0x38);

xie_com(0x0c);

xie_com(0x06);

xie_com(0x01);

xie_com(0x80+0x40+2);

for(i=0;i<13;i++)//初始化显示

{

xie_data(shuju2[i]);

}

xie_com(0x80+0x40+10);

xie_data((wd/100)+0x30);

xie_data((wd%100/10)+0x30);

xie_com(0x80+0x40+13);

xie_data((wd%10)+0x30);

xie_data('');

}

3.2DS18B20测温模块

3.2.1软件设计方案

温度控制器,故名思议,我们要对温度进行控制,那么我们首先应该知道温度值,才能对温度值进行控制。

在检测温度上面,本组使用了DS18B20温度传感器作为加热电阻的测温元件,DS18B20是数字型温度传感器,这个模块和加热模块是在一起的,它和外界进行通讯时使用的是单总线协议,本组使用的52单片机在硬件上面不具备单总线接口,而且我还没见过什么器件在硬件上支持单总线协议呢,所以单片机要模拟单总线协议和DS18B20进行通讯,这样才能让DS18B20工作,检测出加热电阻的温度,然后单片机读取这个温度数据,只有这样才能继续执行接下来的任务。

所以我们在软件中只要对单片机进行单总线协议的时序模拟就可以了,只要模拟时序的通讯协议可以和DS18B20进行通讯,说明模拟时序的程序就是正确的,这样我们单片机得到了温度数据,就可以对温度值进行控制。

在DS18B20测温模块的软件设计上面,模拟单总线通讯时序的程序是最重要的,其次重要的是读取到DS18B20传过来的数据后解码成真正的温度数据的算法,完成了上面所说的内容后,DS18B20测温模块的软件设计也就完成了。

3.2.2软件流程图

DS18B20测温流程如图3-3所示:

图3-3DS18B20采集温度流程图

3.2.3软件代码[3]

bitds18b20_fuwei()//DS18B20复位和存在检测函数

{

uchari;

bitflag1;//定义一个位变量,用于判断DS18B20是不是正常工作,在实际应用时,这一位需要判断

DQ=0;//单片机拉低总线

for(i=240;i>0;i--);//延时480us

DQ=1;//单片机释放总线

for(i=40;i>0;i--);//延时80us

flag1=DQ;//如果DS18B20正常工作,那么将拉低总线,flag=0,表示DS18B20正常工作

for(i=200;i>0;i--);//延时等待400us,等待总线恢复

returnflag1;//返回这个标志位

}

voidds18b20_xie(ucharflag2)//DS18B20写函数,写一个字节

{

uchari,j;//i,j两个变量,注意一定要是两个变量,不然后面会使i不断为0,程序会进入死循环

for(i=0;i<8;i++)//8次一个字节

{

//temp=temp&0x01;

DQ=0;//单片机拉低总线,产生写信号

for(j=2;j>0;j--);//延时4us

DQ=flag2&0x01;//将传递过来的数据,与0x01按位与,也就是取最低位,DS18B20发送数据和接收数据都是低位先发,高位在后面

for(j=30;j>0;j--);//延时60us,写时序最起码需要60us

DQ=1;//释放总线,等待总线恢复

flag2=flag2>>1;//需要发送的数据,右移一位,因为最低位的数据已经发送了,现在需要发送的是次低位的数据

}

}

uchards18b20_du()//DS18B20读函数,读一个字节

{

uchari,j,temp1=0x00;//i,j也是两个变量!

temp1是接收数据的临时变量,需要返回

for(i=0;i<8;i++)

{

temp1=temp1>>1;//先右移一次,因为先接收到的是最低位的温度数据,所以要先移一次,如果在后面,会多移一次,数据会错误的

DQ=0;//拉低总线,产生读信号

for(j=3;j>0;j--);//延时6us

DQ=1;//释放总线,准备读数据

for(j=3;j>0;j--);//延时6us

if(DQ==1)//判断DQ的值是不是1,也就是判断DS18B20输出的值是不是1,和下面的语句配合使用

{

temp1=temp1|0x80;//如果DQ==1,表示接受到的温度数据时1,因为最先接收到的是最低位,所以先和0x80按位或,再右移即可

}//像串口接收数据,最低位先接收,还有其他的方法,不知这一种方法,不过这种方法是最普遍的了

for(j=30;j>0;j--);//

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 党团工作 > 思想汇报心得体会

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1