基于单片机温度控制论文.docx

上传人:b****2 文档编号:17667466 上传时间:2023-07-27 格式:DOCX 页数:44 大小:558.48KB
下载 相关 举报
基于单片机温度控制论文.docx_第1页
第1页 / 共44页
基于单片机温度控制论文.docx_第2页
第2页 / 共44页
基于单片机温度控制论文.docx_第3页
第3页 / 共44页
基于单片机温度控制论文.docx_第4页
第4页 / 共44页
基于单片机温度控制论文.docx_第5页
第5页 / 共44页
基于单片机温度控制论文.docx_第6页
第6页 / 共44页
基于单片机温度控制论文.docx_第7页
第7页 / 共44页
基于单片机温度控制论文.docx_第8页
第8页 / 共44页
基于单片机温度控制论文.docx_第9页
第9页 / 共44页
基于单片机温度控制论文.docx_第10页
第10页 / 共44页
基于单片机温度控制论文.docx_第11页
第11页 / 共44页
基于单片机温度控制论文.docx_第12页
第12页 / 共44页
基于单片机温度控制论文.docx_第13页
第13页 / 共44页
基于单片机温度控制论文.docx_第14页
第14页 / 共44页
基于单片机温度控制论文.docx_第15页
第15页 / 共44页
基于单片机温度控制论文.docx_第16页
第16页 / 共44页
基于单片机温度控制论文.docx_第17页
第17页 / 共44页
基于单片机温度控制论文.docx_第18页
第18页 / 共44页
基于单片机温度控制论文.docx_第19页
第19页 / 共44页
基于单片机温度控制论文.docx_第20页
第20页 / 共44页
亲,该文档总共44页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

基于单片机温度控制论文.docx

《基于单片机温度控制论文.docx》由会员分享,可在线阅读,更多相关《基于单片机温度控制论文.docx(44页珍藏版)》请在冰点文库上搜索。

基于单片机温度控制论文.docx

基于单片机温度控制论文

指导教师评定成绩:

 

审定成绩:

 

重庆邮电大学

自动化学院

计算机控制技术课程设计报告

基于单片机的温度控制系统设计

 

单位(二级学院):

学生姓名:

专业:

班级:

0810901

学号:

指导教师:

 

设计时间:

2012年6月

重庆邮电大学自动化学院制

 

设计题目

基于单片机的温度控制系统设计

1、设计目标及技术要求:

(1)设计出了相应的电子电路和控制软件流程及源代码;

(2)控制算法采用PID控制算法。

2、设计过程要求:

(1)确定总体方案;

(2)软、硬件设计;

(3)其他:

稳压电源设计、转速到脉冲信号的转化用光电传感器或霍尔传感器来实现,信号采集、计数、数码显示、报警等功能用单片机8051来控制并实现。

 

摘要

本课程设计主要是讲述基于单片机温度控制系统设计。

主要组成部分:

单片机(89C52)、温度传感器(DS18B20)、LCD1602显示、继电器,SET-300温度测量控制仪。

本系统可以实时的显示实时温度和设定温度,实现对温度的PID控制。

经过实践表明,本设计对温度的控制有方便、简单的特点,工作在50-100℃时,误差范围在2-3%,基本可以实现精确控制,达到了相关的技术指标。

温度信号由温度芯片DS18B20采集,并以数字信号的方式传送给单片机,单片机再将实时得到的数据进行PID计算,得到了PWM的宽度,再输送给继电器,从而实现对SET-300的控制。

关键词:

温度控制系统,单片机,DS18B20,PID算法

目录

第一章系统总体设计2

1、系统设计任务与要求2

(1)、系统设计任务与要求2

(2)、重点内容2

(3)、实现途径及方法2

2、系统总体方案设计3

(1)、方案选择3

(2)、总体设计方案4

第二章系统的硬件设计5

1、主控模块的设计5

(1)、STC89C52单片机简介5

(2)、温度传感器的选择6

(3)、复位和时钟电路的设计8

(4)、温度采集电路9

(5)、继电器驱动电路9

2、人机交互设计10

(1)、按键的设计10

(2)、显示电路的设计10

第三章系统软件设计12

1、主程序模块12

2、温度采集和显示模块13

3、输入模块18

第四章PID控制算法和参数整定19

1、PID调节器控制原理19

2、PID参数的整定19

(1)、采样周期选择的原则20

(2)、实验确定法整定PID参数20

3、数字PID21

第五章心得体会24

参考文献25

附录一硬件连线图26

附录二源程序27

第一章系统总体设计

1、系统设计任务与要求

(1)、系统设计任务与要求

本温度控制系统采用89C52单片机为控制芯片,传感器采用智能温度传感器DS18B20,实现对温度的检测和控制。

技术参数:

可以实现精确的控制温度范围为50-100℃。

该温度控制系统系统由温度信号采集电路,独立按键及LCD1602显示电路,继电器电路等构成,并运用PID算法进行温度控制和调整。

根据设计任务,详细分析了温度控制系统的设计需求,本小组对软硬件进行总体设计。

由键盘电路输入设定温度信号给单片机,温度信号由DS18B20将采集的温度信号直接转换成数字量输给单片机,单片机根据输入与反馈信号的偏差进行PID计算,输出控制量,再由控制量计算出PWM的占空比,从而输出PWM波形给继电器,由继电器去控制SET-300,实现升温。

LCD1602则显示实时温度和设定的温度值。

本设计需要设计出具体实物。

(2)、重点内容

本设计包括硬件设计和软件设计。

硬件设计主要包括温度信号采样电路,键盘及显示电路,继电器控制电路等,其中硬件设计重点是温度显示电路和继电器控制电路。

软件设计主要完成DS18B20子程序设计,键盘处理子程序、LCD1602显示子程序、PID算法子程序,PWM调制子程序等工作。

(3)、实现途径及方法

本系统主要通过资料查找、系统需求分析、系统总体设计,软硬件总体设计、详细的软件与硬件设计、系统仿真与调试、资料整理等步骤来完成。

本系统最终要利用单片机的最小系统来做一个实物,利用KeilC51软件完成系统控制软件的编译调试工作,并且在自己做的实物上进行调试。

2、系统总体方案设计

(1)、方案选择

方案一:

图1方案一的图

此方案是传统的一位式模拟控制方案,选用模拟电路,用电位器设定值,反馈的温度值和设定值比较后,决定加热或不加热。

其特点是电路简单,易于实现,但是系统所得结果的精度不高并且调节动作频繁,系统静态差大、不稳定。

系统受环境影响大,不能实现复杂的控制算法,不能用LCD1602显示,不能用键盘设定。

方案二:

 

图2方案二的图

此方案采用STC89C52单片机系统来实现。

单片机软件编程灵活、自由度大,可用软件编程来实现PID控制算法。

单片机系统可以用LCD1602来显示实时温度值,能用键盘输入设定值。

最终结论:

方案一是传统的模拟控制方式,而模拟控制系统难以实现复杂的控制规律,控制方案的修改也较为繁琐。

而方案二是采用以单片机为控制核心的控制系统,尤其对温度控制,可达到模拟控制所达不到的效果,并且实现显示和键盘设定功能,大大提高了系统的智能化。

也使得系统所测得结果的精度大大提高。

所以,经过对两种方案的比较,本小组最终采纳了方案二。

(2)、总体设计方案

在控制芯片上,我们采用STC89C52单片机。

在温度传感器的选择上我们采用温度芯片DS18B20测量温度。

该芯片的物理化学性很稳定,它能用做工业测温元件,且此元件线形较好。

在0—1000C时,最大线形偏差小于10C。

该芯片直接向单片机传输数字信号,便于单片机处理及控制。

本制作的最大特点之一就是直接采用温度芯片对温度进行测量,使数据传输和处理简单化。

对于温度的调节系统,我们采用的只是简单的升温方法,当温度低于我们设定的温度值时,则单片机系统由PID算法产生PWM来控制继电器,继电器控制SET-300来提高温度。

在这个过程中,我们通过单片机将传感器所测量出来的温度通过LCD1602可以显示出来。

这样就能实时显示温度情况。

本设计采用了PID控制。

在工程实际中,PID控制器以其结构简单、稳定性好、工作可靠、调整方便而成为工业控制的主要技术之一。

当被控对象的结构和参数不能完全掌握,或得不到精确的数学模型,控制理论的其他技术也难以采用,系统控制器的结构和参数必须依靠经验和现场调试来确定时,应用PID控制技术最为方便。

   PID控制器的参数整定是控制系统设计的核心内容。

它是根据被控过程的特性确定PID控制器的比例系数、积分时问和微分时间的大小。

PID控制器参数整定的方法概括起来有两大类:

一是理论计算整定法。

它主要是依据系统的数学模型,经过理论计算确定控制器参数。

这种方法所得到的计算数据未必可以直接用,还必须通过工程实际进行调整和修改。

二是工程整定方法,它主要依赖工程经验,直接在控制系统的试验中进行,且方法简单、易于掌握,在工程实际中被广泛采用。

第二章系统的硬件设计

1、主控模块的设计

(1)、STC89C52单片机简介

STC89C52是一种低功耗、高性能CMOS8位微控制器,具有8K在系可编程Flash存储器。

片上Flash允许程序存储器在系统可编程,亦适于常规编程器。

在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使STC89C52为众多嵌入式控制应用系统提供高灵活、有效的解决方案。

STC89C52具有以下标准功能:

8k字节Flash,256字节RAM,32位I/O口线,看门狗定时器,2个数据指针,三个16位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。

另外,AT89C52可降至0Hz静态逻辑操作,支持2种软件可选择节电模式。

空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。

掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。

STC89C52的广泛使用使得市面价格较8155、8255、8279要低,所以说用它是比较经济的。

该芯片具有如下功能:

①有1个专用的键盘/显示接口;②有1个全双工异步串行通信接口;③有2个16位定时/计数器。

这样,1个STC89C52,承担了3个专用接口芯片的工作;不仅使成本大大下降,而且优化了硬件结构和软件设计,给用户带来许多方便。

STC89C52有40个引脚,有32个输入端口(I/O),有2个读写口线,可以反复插除。

所以可以降低成本。

其主要工作特性为:

●内含8KB的Flash存储器,擦写次数达1000次;

●内含128字节的RAM;

●具有32根可编程I/O线;

●具有2个16位可编程定时器;

●具有6个中断源、5个中断矢量、2级优先权的中断结构;

●具有1个全双工的可编程串行通信接口;

●具有1个数据指针DPTR;

●两种低功耗工作模式,即空闲模式和掉电模式;

●具有可编程的3级程序锁定位;

●工作电源电压为5±1.2V,典型值为5V;

●最高工作频率为24MHz。

●引脚排列如图3所示。

图3STC89C52引脚排列

(2)、温度传感器的选择

DS18B20原理与特性:

本系统采用了DS18B20单总线可编程温度传感器,来实现对温度的采集和转换,大大简化了电路的复杂度,以及算法的要求。

首先来介绍一下DS18B20这块传感器的特性及其功能:

DSl8B20的管脚及特点DS18B20可编程温度传感器有3个管脚。

内部结构主要由四部分组成:

64位光刻ROM、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器。

DS18B20的外形及

管脚排列如图4所示

GND为接地线,DQ为数据输入输出接口,通过一个较弱的上拉电阻与单片机相连。

VDD为电源接口,既可由数据线提供电源,又可由外部提供电源,范围3.O~5.5V。

主要特点有:

①用户可自设定报警上下限温度值。

②不需要外部组件,能测量-55~+125℃范围内的温度。

③-10℃~+85℃范围内的测温准确度为±0.5℃。

图4DS18B20的外形及管脚图

④通过编程可实现9~l2位的数字读数方式,可以分别在93.75ms和750ms内完成9位和12位的数字量,测温分辨率可达0.0625℃。

⑤独特的单总线接口方式,与微处理器连接时仅需要一条线即可实现与微处理器双向通讯。

⑥测量结果直接输出数字温度信号,以"一线总线"串行传送给CPU,同时可传送CRC校验码,具有极强的抗干扰纠错能力。

⑦负压特性:

电源极性接反时,芯片不会因发热而烧毁,但不能正常工作。

⑧DS18B20支持多点组网的功能,多个DS18B20可以并联在唯一的三线上,实现组网多点测温。

DS18B20的工作过程如下:

初始化—ROM操作命令—存储器操作命令—数据处理。

本次设计要用到的ROM操作命令有:

跳过ROM(0xCC),因为只是单线操作,所以无需读取ROM编码。

要用到的存储器操作命令有:

温度变换命令(0x44),读暂存存储器(0xBE)。

温度转换命令发布后,经转换得到的温度值以二进制补码形式放在高速暂存存储器的第0和第1个字节。

单片机可通过单口读取该数据,读取时,低位在前,高位在后。

读到的二进制码中,前5位是符号位,后四位是小数位,中间是整数位。

只要将得到的数值乘以0.0625即可以得到实际温度。

表1DS18B20温度数据表

温度/℃

二进制补码表示

十六进制表示

符号位(5位)

数据位(11位)

+125

00000

1

1

1

1

1

0

1

0

0

0

0

07D0H

+25.0625

00000

0

0

1

1

0

0

1

0

0

0

1

0191H

+10.125

00000

0

0

0

1

0

1

0

0

0

1

0

00A2H

+0.5

00000

0

0

0

0

0

0

0

1

0

0

0

0008H

0

00000

0

0

0

0

0

0

0

0

0

0

0

0000H

-0.5

11111

1

1

1

1

1

1

1

1

0

0

0

FFF8H

-10.125

11111

1

1

1

0

1

0

1

1

1

1

0

FF5EH

-25.625

11111

1

1

0

0

1

1

0

1

1

1

1

FE6FH

-55

11111

1

0

0

1

0

0

1

0

0

0

0

FC90H

(3)、复位和时钟电路的设计

本系统中采用手动按键复位方式。

本系统电路采用的晶体振荡器频率为11.0592MHz。

采用这种频率的晶体振荡器的原因是可以方便的获得标准的波特率。

复位电路和时钟电路如图5所示。

按钮复位采用电平复位方式,按下复位电钮时,电源对外接电容充电,使RST/VPD端为高电平,复位按钮松开后,电容通过内部下拉电阻放电,逐渐使RST/VPD端恢复低电平。

图5复位电路和时钟电路

(4)、温度采集电路

数据采集电路如图6所示,1脚接地,2脚即为单总线数据口,3脚接电源。

温度传感器DS18B20采集被控对象的实时温度,提供给STC89C52的P2.1口作为数据输入。

图6数据采集电路

(5)、继电器驱动电路

通过PID算法计算得出的PWM波形最终将输送给继电器,由继电器去控制开关来选择是否加热。

本次设计使用的继电器型号是HK4100F-DC5V-SHG,由单片机自带的ULN2003芯片来驱动继电器,继电器的输入接口是P2.4,而且还接有一个发光二极管,当继电器导通的时候,该发光二极管会亮,PWM输出波形的效果增加明显。

图7为继电器的接线图。

图7继电器电路图

2、人机交互设计

(1)、按键的设计

在本设计只需要两个按键,由于I/O口被占用,本设计将矩阵键盘改成两个独立的按键,按键的分布如图8所示。

K1键为设定温度值的加一键,K2为设定温度值的减一键。

图8独立按键

(2)、显示电路的设计

本设计的显示采用LCD1602。

图9为LCD1602的引脚图。

图9LCD1602引脚图

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

第1脚:

VSS为地电源

第2脚:

VDD接5V正电源

第3脚:

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

第4脚:

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

第5脚:

RW为读写信号线,高电平时进行读操作,低电平时进行写操作。

当RS和RW共同为低电平时可以写入指令或者显示地址,当RS为低电平RW为高电平时可以读信号,当RS为高电平RW为低电平时可以写入数据。

第6脚:

E端为使能端,当E端由高电平跳变成低电平,液晶模块执行命令。

第7~14脚:

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

第15~16脚:

空脚

在本设计中LCD1602与单片机的连接如图10所示。

单片机的P0口为数据输出口,接到LCD1602的DB0—DB7口,P3.4-P3.6为控制端,分别接使能端E,寄存器选择RS和读写信号线R/W,共同控制LCD1602读写操作。

图10LCD1602显示电路图

 

第三章系统软件设计

系统的软件主要由主程序模块、温度采集模块、显示模块,PID算法模块等组成。

主模块的功能是为其余几个模块构建初始化工作;温度采集模块的作用是获取温度转换后的数字量;显示模块则是将采集到的温度和设定温度一并输出。

PID算法模块完成PID运算并给出控制量。

1、主程序模块

主程序模块要做的主要工作是上电后对系统初始化,包括对单片机的初始化、DS18B20的初始化,LCD1602初始化等。

若系统运行,则依次调用各个相关模块,循环控制直到系统停止运行。

主程序模块的程序流程图如11所示。

图11主程序流程图

2、温度采集和显示模块

温度采集模块的任务是负责温度信号的采集以及将采集到的数字量提供给单片机。

STC89C52通过控制DS18B20读取实时温度,然后,通过P0口送到LCD1602进行显示。

温度数据采集模块程序流程图如图12所示,显示程序设计框图如图13所示。

图12温度采集和处理流程图

图13温度显示流程图

/************以下是LCD1602驱动程序******************/

voidlcd_delay(ucharms)//LCD1602延时

{

ucharj;

while(ms--){

for(j=0;j<250;j++)

{;}

}

}

voidlcd_busy_wait()//LCD1602忙等待

{

lcd_rs_port=0;

lcd_rw_port=1;

lcd_en_port=1;

lcd_data_port=0xff;

while(lcd_data_port&0x80);

lcd_en_port=0;

}

voidlcd_command_write(ucharcommand)//LCD1602命令字写入

{

lcd_busy_wait();

lcd_rs_port=0;

lcd_rw_port=0;

lcd_en_port=0;

lcd_data_port=command;

lcd_en_port=1;

lcd_en_port=0;

}

voidlcd_system_reset()//LCD1602初始化

{

lcd_delay(20);

lcd_command_write(0x38);

lcd_delay(100);

lcd_command_write(0x38);

lcd_delay(50);

lcd_command_write(0x38);

lcd_delay(10);

lcd_command_write(0x08);

lcd_command_write(0x01);

lcd_command_write(0x06);

lcd_command_write(0x0c);

}

voidlcd_char_write(ucharx_pos,y_pos,lcd_dat)//LCD1602字符写入

{

x_pos&=0x0f;//X位置范围0~15

y_pos&=0x01;//Y位置范围0~1

if(y_pos==1)x_pos+=0x40;

x_pos+=0x80;

lcd_command_write(x_pos);

lcd_busy_wait();

lcd_rs_port=1;

lcd_rw_port=0;

lcd_en_port=0;

lcd_data_port=lcd_dat;

lcd_en_port=1;

lcd_en_port=0;

}

voidlcd_bad_check()//LCD1602坏点检查

{

chari,j;

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

{

for(j=0;j<16;j++)

{

lcd_char_write(j,i,0xff);

}

}

lcd_delay(200);

lcd_delay(200);

lcd_delay(200);

lcd_delay(100);

lcd_delay(200);

lcd_command_write(0x01);//清楚LCD显示

}

/************以上是LCD1602驱动程序******************/

/************以下是DS18B20驱动程序******************/

voiddelay(unsignedinti)//延时函数

{

while(i--);

}

Init_DS18B20(void)//初始化函数

{

unsignedcharx=0;

DQ=1;//DQ复位

delay(8);//稍做延时

DQ=0;//单片机将DQ拉低

delay(80);//精确延时大于480us

DQ=1;//拉高总线

delay(14);

x=DQ;//稍做延时后如果x=0则初始化成功x=1则初始化失败

delay(20);

}

ReadOneChar(void)//读一个字节

{

unsignedchari=0;

unsignedchardat=0;

for(i=8;i>0;i--)

{

DQ=0;//给脉冲信号

dat>>=1;

DQ=1;//给脉冲信号

if(DQ)dat|=0x80;

delay(4);

}

return(dat);

}

WriteOneChar(unsignedchardat)//写一个字节

{

unsignedchari=0;

for(i=8;i>0;i--)

{

DQ=0;

DQ=dat&0x01;

delay(5);

DQ=1;

dat>>=1;

}

}

voidReadTemper(void)

{

unsignedchara,b;

TR0=0;

Init_DS18B20();

WriteOneChar(0xCC);//跳过读序号列号的操作

WriteOneChar(0x44);//启动温度转换

delay(50);//这个延时很重要

Init_DS18B20();

WriteOneChar(0xCC);//跳过读序号列号的操作

WriteOneChar(0xBE);//读取温度寄存器等前两个就是温度

delay(50);

a=ReadOneChar();//读取温度值低位

b=ReadOneChar();//读取温度值高位

b=b&0x07;

temper=(a>>4)|(b<<4);

c=a&0x0f;

c=c*10/16;

TR0=1;

}

/************以上是DS18B20驱动程序******************/

3、输入模块

键盘输入采用扫描方式工作,。

键盘处理子程序流程图如图14所示:

图14键盘程序设计框图

voidscan()//键盘扫描函数

{

jiedi=0;

if(plus==0)//加一键

{

delay_1ms(5);

if(plus==0)

{temp_set++;}

while(plus==0);

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

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2