基于单片机的温度控制系统.docx
《基于单片机的温度控制系统.docx》由会员分享,可在线阅读,更多相关《基于单片机的温度控制系统.docx(12页珍藏版)》请在冰豆网上搜索。
基于单片机的温度控制系统
北京化工大学课程设计说明书
************************************************************
班级:
机械1207
学号:
**********
专业:
机械工程及自动化
题目:
基于单片机的化学反应罐的温度控制系统设计
*****************************************
2015年1月13日
第一章绪论
1.1题目背景
不论是对于工业生产还是对于人们的日常生活,温度的变化都会对其产生一定程度的影响,所以,适时和恰当的温度控制对生产生活具有非常重要的作用。
在过去,对温度的控制总是采用常规的模拟调节器,然而,这种调节器存在的缺点是控制精度低,具有滞后、非线性等特点。
本文将采用微电子技术来控制温度变化,这类电路设计简单,控制效果好,具有很强的实用性。
1.2题目简介
课题名称:
基于单片机的化学反应罐的温度控制系统设计。
主要任务:
1)化学反应罐标准温度为150℃,精度要求为±1℃。
2)使用温度传感器在反应罐上测得三个点的温度值,取平均值。
若低于149℃,亮灯报警并启动加热装置;若高于151℃,亮灯报警并启动冷却装置。
3)实时显示当前实际温度,显示精确为1℃。
开发环境:
本设计系统的软件部分是通过KeiluVision4进行编译,并由Proteus进行仿真测试。
技术指标:
1)以AT89C51系列单片机为核心部件。
2)以模拟电路为硬件基础。
3)以C语言为软件实现语言。
功能概述:
在该温度控制系统中,单片机为核心部件进行检测控制。
在该环境温度控制系统中,采用扫描程序不间断地进行温度检测采用PT100温度传感器将实时温度传送至AD转换器ADC0808,转换完成后送入单片机,并加以显示的过程。
再通过按键设定标准温度。
并将测得温度平均值与标准值进行比较,若实际温度低于149℃,则进行升温过程;若实际温度高于151℃,则进行降温过程,实现温度控制和报警的目的。
第二章系统总体设计及方案
2.1单片机的介绍
随着大规模集成电路的出现及其发展,将计算机的CPU、RAM、ROM、定时/计数器和多种I/O接口集成在一片芯片上,形成芯片级的计算机,因此单片机早期的含义称为单片微型计算机,直译为单片机。
单片机具有以下特点:
1.具有优异的性能价格比。
2.集成度高、体积小、可靠性高。
3.控制功能强。
4.低电压、低功耗。
2.2系统功能的确定
一个控制系统是否能被大众所接受,在于该控制系统是否拥有人性化的操作功能。
为了使本次设计的环境温度控制系统具有操作简单、灵活及高可靠性等特点,确定了该系统功能:
1.独立按键输入温度。
2.使用温度传感器PT100进行温度采集。
3.使用ADC0808进行温度模数转换.
4.温度显示。
5.温度控制,温度若超上下限进行相应处理并亮灯报警。
6.PT100温度测量范围-50℃~200℃,反应罐温度有效范围为149℃~151℃,允许误差为±1℃。
2.3温度传感器PT100的介绍
PT100是铂热电阻,它的阻值会随着温度的变化而改变。
PT后的100即表示它在0℃时阻值为100欧姆,在100℃时它的阻值约为138.5欧姆。
PT100/PT1000铂电阻RT曲线图表
2.4人机交互与串口通讯
该化学反应罐温度控制系统由温度采集、独立键盘输入、温度显示、温度控制执行等四大模块组成。
1.温度采集:
由温度传感器PT100完成,并通过ADC0808转换后与单片机进行数据传输。
2.独立按键输入:
将键盘扫描程序设置在主函数中while循环函数的第一条语句,不断刷新获得设定温度,按下确定键后执行温度比较和温度控制。
3.温度显示:
通过8个7段LED数码显示管显示当前温度值,及时反应当前温度的变化与设置温度的关系。
4.温度控制执行:
系统根据当前温度与设置的温度自动进行相应的升温或降温的操作,在系统自动进行升温或降温处理的同时显示相应的指示灯。
5.超限报警:
在任务书要求中,当温度超出设置温度±1℃时发出超限报警。
第三章系统设计
3.1系统结构框图
传感器模块
A/D转换模块
按键模块
AT89C51
报警模块
该系统由核心部件AT89C51来处理从键盘输入电路和温度采集电路送入的数据,并通过温度显示电路进行温度显示,由温度控制电路来进行相应的升温或降温的操作,如果超出温度限制则激发报警模块。
Proteus电路图主要由以下几部分构成:
1)C51主机。
2)ADC0808。
3)晶振复位电路。
4)PT100温度采集电路
5)LED显示屏。
6)加热冷却电路。
7)按键输入电路。
系统整体proteus电路图如下:
3.2系统各部分电路设计
在该系统中,人机交互技术主要应用在恒定温度的设置,以及当前温度的显示;串口通讯技术应用在温度的采集。
3.2.1键盘输入温度模块
在本系统中,键盘输入主要采用三个独立按键来实现温度的设定。
如图所示:
当点触“设置”键时,显示屏就进入标准温度设定界面,此时通过按“加”键或者“减”键来控制标准温度高低。
再次点触“设置”键,返回到实际温度显示。
3.2.2温度传感器模块
为了使得测得的温度更精确,在本系统中采用了温度传感器PT100来获取当前温度,如图所示:
还有两个与图中电路一模一样的电路,目的是提供三个测量温度值,并送入ADC0808单元进行AD转化。
3.2.3A/D转换模块
PT100测得的温度分别送入INO,IN1,IN2口,通过程序控制ADC0808中ADDA和ADDB口的电平来选择接受哪路温度值。
3.2.4LED七段数码动态显示电路
在本系统中采用了LED七段数码动态显示电路来显示实际温度值,显示范围在-50~200℃之间。
该电路有显示、位选锁存器、段选锁存器三部分组成。
显示部分:
由两个四位的LED七段共阴极数码管构成,用来显示当前温度值。
如下图所示:
位选和段选部分:
如下图所示:
3.2.5温度调节及亮灯报警回路
该电路的主要任务是完成单片机所发出的的升温或降温操作,来控制化学反应罐的升温或降温。
在本设计中使用红色发光二极管代替。
在程序中,先将HEAT和COLD端置1,当需要接通此加热或冷却电路时,HEAT或COLD端置0,同时,发光二极管亮,报警。
电路如下:
第四章软件设计
4.1设计思路、程序代码
根据所学知识,实现本系统的软件部分将使用C语言编程,要配合硬件部分实现输入一个温度标准值,与从温度传感器获得并经过AD转化的实际温度值进行比较,并向温度控制回路发出加热或降温以及亮灯报警的命令。
在这一过程中将随时显示当前温度值。
其主要实现的部分包括:
键盘输入、温度测量、AD数据转换、动态显示、温度比较、温度控制、超限报警等。
程序如下:
#include
#include
#defineuintunsignedint
#defineucharunsignedchar
codeucharseg[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,};//显示段码
sbitST=P3^0;//AD0808引脚
sbitEOC=P3^1;
sbitADA=P3^5;
sbitADB=P3^6;
sbitS1=P2^0;//数码管位选
sbitS2=P2^1;
sbitS3=P2^2;
sbitK1=P2^5;//按键
sbitK2=P2^6;
sbitK3=P2^7;
sbitK4=P3^2;
sbitK5=P3^3;
sbitHEAT=P2^3;//加热
sbitCOLD=P2^4;//制冷
bitintercode;
uintTEM0,TEM1,TEM2;
uintwd;
uintbz=150;
voiddelay(uintz)//延时
{
uintx,y;
for(x=0;xfor(y=0;y<110;y++);
}
voidLed(intdate)//显示函数
{
/*****************数据转换*****************************/
uintb,s,g;
b=date/100;//求百位
s=date%100/10;//求十位
g=date%10;//求个位
S1=0;S2=1;S3=1;
P0=seg[b];
delay(10);
S1=1;S2=0;S3=1;
P0=seg[s];
delay(10);
S1=1;S2=1;S3=0;
P0=seg[g];
delay(10);
S1=1;S2=1;S3=1;
delay(10);
}
/********************************************************************
主函数
*********************************************************************/
voidmain(void)
{
while
(1)
{
ADA=0;
ADB=0;
ST=0;
ST=1;
ST=0;
TEM0=P1;//采集OUT1
delay(5);
ADA=1;
ADB=0;
ST=0;
ST=1;
ST=0;
TEM1=P1;//采集OUT2
delay(5);
ADA=0;
ADB=1;
ST=0;
ST=1;
ST=0;
TEM2=P1;//采集OUT3
delay(5);
wd=(TEM0+TEM1+TEM2)/3;//求平均温度
if(intercode==0)
{
Led(wd);
if(wd==bz){HEAT=1;COLD=1;}//判断,若低于149℃,即启动加热装置;若高于151℃,即启动冷却装置。
if(wd>bz){HEAT=1;COLD=0;}
if(wd}
else
{
Led(bz);
if(K2==0){if(bz<999)bz++;}//通过按钮设置标准温度
if(K3==0){if(bz>0)bz--;}
if(K4==0){if(bz<999)bz=bz+10;}
if(K5==0){if(bz>0)bz=bz-10;}
}
if(K1==0)//通过按钮设置显示标准温度或平均值
{delay(5);
while(K1==0)
{if(intercode==0)Led(wd);
elseLed(bz);
}
intercode=~intercode;
}
}
}