加热炉温度监控系统的设计.docx
- 文档编号:30524318
- 上传时间:2023-08-16
- 格式:DOCX
- 页数:37
- 大小:295.42KB
加热炉温度监控系统的设计.docx
《加热炉温度监控系统的设计.docx》由会员分享,可在线阅读,更多相关《加热炉温度监控系统的设计.docx(37页珍藏版)》请在冰豆网上搜索。
加热炉温度监控系统的设计
摘要
在工业控制领域,温度控制的应用非常广泛,控制精度的高低直接影响到产品的质量及使用寿命,研究和设计高性能的温度控制系统具有非常重要的意义。
随着计算机技术、控制理论和控制技术的发展,电加热炉的温度控制技术日趋成熟,已经成为工业生产中的一个重要部分。
目前控制算法的多样化也为温度控制提供了便利条件,应用较为普遍的有比例积分微分(PID)控制、模糊控制等。
本设计根据加热炉的的控制要求设计了一种以单片机为核心的监控系统。
系统采用热电偶温度传感器测温,实现了温度的实时监测、超限报警、显示与控制等功能。
系统分为温度测量、A/D转换、单片机系统、键盘操作系统、温度显示电路、报警电路等若干个功能模块。
该系统具有硬件成本低,控温精度较高,可靠性好,抗干扰能力强等特点。
关键词:
电加热炉;单片机;温度控制;固态继电器
目录
1.绪论1
1.1研究的背景和意义1
1.2本课题的主要研究目标及内容1
1.2.1设计目标1
1.2.2设计内容1
2.方案设计与比较1
2.1方案一1
2.2方案二2
2.3总体设计2
3.系统的硬件设计3
3.1主要硬件介绍3
3.1.1单片机3
3.1.2Pt100型铂电阻温度传感器4
3.1.3放大器AD5224
3.1.4模数转换器AD5745
3.1.5液晶显示屏6
3.1.6开关器件6
3.2温度检测电路设计6
3.3A/D转换电路设计7
3.4显示电路设计8
3.5电气开关及工作电路8
4系统软件设计9
4.1程序设计9
4.2主流程图10
4.3主程序10
附录25
总原理图25
结论26
参考文献27
加热炉温度监控系统的设计
1.绪论
1.1研究的背景和意义
在现实生活当中,很多场合需要对温度进行智能控制,日常生活中最常见的要算空调和冰箱了,他们都能根据环境实时情况,结合人为的设定,对温度进行智能控制。
工业生产中的电加热炉温度监控系统和培养基的温度监控系统都是计算机控制系统的典型应用。
通过这次课程设计,我们将自己动手设计一个小型的由单片机控制的加热炉温度控制系统,目的在于将理论结合实践以加深我们对课本知识的理解。
1.2本课题的主要研究目标及内容
1.2.1设计目标
实现加热炉的温度自动监测,并对其温度进行控制。
1.2.2设计内容
利用所学过的知识设计一个温度控制系统。
功能要求如下:
(1)能够利用温度传感器检测环境中的实时温度;
(2)能对所要求的温度进行设定;
(3)将传感器检测到得实时温度与设定值相比较,当环境中的温度高于或低于所设定的温度时,系统会自动做出相应的动作来改变这一状况,使系统温度始终保持在设定的温度值。
2.方案设计与比较
2.1方案一
要想达到技术要求的内容,少不了以下几种器件:
单片机、温度传感器、LCD显示屏、直流电动机等。
其中单片机用作主控制器,控制其他器件的工作和处理数据;温度传感器用来检测环境中的实时温度,并将检测值送到单片机中进行数值对比;LCD显示屏用来显示温度、时间的数字值;直流电动机用来表示电加热炉的工作情况,转动表示电加热炉通电加热,停止转动表示电加热炉断电停止加热。
2.2方案二
系统由8051单片机、温度检测电路、模数转换电路、温度控制电路、8279键盘显示器等组成。
炉内温度由热电阻测温元件和电阻元件构成的桥式电路测量并转换成电压信号送给放大器的输入端,使信号变成0-5V电压信号,再经多路转换开关CD4051将信号送入A/D转换器,将此数字量经过数字滤波,标度转换后,一方面通过LED将炉温显示出来;另一方面,将该温度值与被测温度值比较,根据其偏差值的大小,采用比例微分控制(PID控制),通过固态继电器控温电路控制电炉丝的加热功率大小,从而控制电炉的温度,使其逐渐趋于给定值且达到平衡。
2.3总体设计
综合方案一与方案二,总的设计思想是通过温、湿度传感器将温度、湿度值转换为电量输出,由A/D转换器对模拟信号进行数字化,被数字化的信号经过单片机处理后,送显示器及执行机构,完成温、湿度声光报警的功能,总体设计框图如图1所示。
图1
整体思路是这样的:
首先我们通过按键设定所需要的温度值,然后利用温度传感器检测电加热炉的实时加热温度,并送至单片机与设定值进行比较。
若检测值小于设定值,则无任何动作,电加热炉继续导通加热;若检测值大于设定值,则单片机控制光电耦合器导通,继电器动作,电加热炉断电停止加热。
一旦炉温低于设定值,单片机又控制光电耦合器断开,继电器开关分离,电加热炉开始导通加热。
这个过程中所设定的温度值和传感器检测到得温度值都要在LCD显示屏上显示出来,以方便操作人员观察。
另外,还可以加上时钟模块,以方便计时。
这个设计思路相对比较简单,利用所学过的知识容易实现,加上光电耦合器用于隔离强电和弱电,比较安全。
3.系统的硬件设计
3.1主要硬件介绍
3.1.1单片机
8051有40条引脚。
其中有2条主电源引脚,2条外接晶体引脚,4条控制或其它电源复用的引脚,32条I/O引脚。
MCS-51是标准的40引脚双列直插式集成电路芯片,引脚分布,请参照图2:
P0.0~P0.7P0口8位双向口线(在引脚的39~32号端子)
P1.0~P1.7P1口8位双向口线(在引脚的1~8号端子)
P2.0~P2.7P2口8位双向口线(在引脚的21~28号端子)
P3.0~P3.7P3口8位双向口线(在引脚的10~17号端子)
这4个I/O口具有不完全相同的功能。
图2
3.1.2Pt100型铂电阻温度传感器
图3图4
概述:
热电阻是利用物质在温度变化时本身电阻也随着发生变化的特性来测量温度的.当被测介体中有温度剃度存在时,所测的
温度是感温元件所在范围介质中的平均温度.
尽管各种热电阻的外形差异很大,但是它们的基本结构却大致相似,一般有感温元件,绝缘套管,保护管,和接线盒等主要部。
特点:
1)压簧式感温元件,抗振性能好;
2)测温精度高;
3)机械强度高,耐压性能好;
4)进口薄膜电阻元件,性能可靠稳定。
工作原理:
热电阻是利用物质在温度变化时,其电阻也随着发生变化的特征来测量温度的。
当阻值变化时,工作仪表便显示出
阻值所对应的温度值。
3.1.3放大器AD522
AD522是AD公司推出的高精度数据采集放大器,利用它可在恶劣的环境下获得高精度的数据。
它的线性好,具有较高的共模抑制比、低电压漂移和低噪声的优点。
图5
AD522采用14脚DIP封装,图1.2给出了AD522的引脚排列,表1给出了各引脚的功能说明。
表1:
AD522引脚说明
引脚
名称
功能
1
+INPUT
正输入端
2
RGAIN
增益补偿端
3
-INPUT
输入端
4
NULL
空端
5
V-
负电源端
6
NULL
空端
7
OUTPUT
输出端
8
V+
正电源端
9
GND
地参考端
10
NC
不接
11
REF
参考端
12
SENSE
补偿端
13
DATAGUARD
数据保护端
14
RGAIN
增益补偿端
3.1.4模数转换器AD574
模拟量输入接口的功能是把工业生产控制现场送来的模拟信号转换成能接收的数字信号。
本次设计选用的A/D转换器为AD574。
AD574是AD公司生产的12位逐次逼近型A/D转换芯片,它将A/D转换电路、基准电压、时钟、比较器、逐次逼近寄存器以及输出缓冲存储器等集成在一块芯片上,并具有三态输出。
在一般情况下,无需加任何外部电路,只要接上+5V及-15V电源,加上模拟输入,给出启动转换信号,即可实现12位A/D转换。
图6
AD574的主要特性指标如下:
(1)分辨率12位;
(2)转换时间25µs;
(3)转换精度±2LSB;
(4)输入信号单极性或双极性;
(5)电源+5V及-15V;
AD574可由+5V及-15V供电,输入模拟电压可以是单极性0至+10V,或者是双极性+5V至-5V。
输入电压极性可由BIPOFF引脚的连接方式而定。
单极性输入时BIPOFF接地,双极性输入时应悬空或接+5V电源。
3.1.5液晶显示屏
这里我选用LCDLM016L液晶显示屏作为系统的显示器件,如图所示,LCDLM016L采用标准的16脚接口,仿真时隐藏了背光正极和背光负极两个引脚。
它通过D0-D78位数据端来与单片机进行数据和指令传输。
3.1.6开关器件
由于单片机与电动机之间需要用开关器件连接,并且前者用弱电控制,后者由强电控制,这就尤其需要注意安全问题。
于是我想到了在课本中学过的高性能安全开关器件光电耦合器。
光电耦合器是由一个发光器件和和一个光电转换器件组成,这里所用的光电耦合器OPTOCOUPLER-NPN是由一个发光二极管和一个光敏晶体管所组成。
当发光二极管发光,就会使得光敏晶体管导通,继电器通电动作,将开关吸合,电动机回路断开。
3.2温度检测电路设计
测量电路由测温元件和电阻元件构成的,如图1.3所示,此电路为典型的桥式测量电路,可在低电压、高阻抗、大噪声的环境中获得最佳性能。
图7
该桥式电路能够把温度变化所引起的热电阻阻值的变化转换成电压信号送给放大器的输入端,由于铂电阻安装在内,通过长导线接入控制台,为了减少引线电阻的影响采用三线制接法。
AD522是高精度集成放大器,AD522的第1引脚和第3引脚为信号差动输入端;第2、14引脚外接电阻RG用于调整放大倍数;第4、6引脚为条零端;第13引脚为数据屏蔽端;第12脚为测量端;第11脚为参考端;这两端的电压差即为加到负载上的电压信号。
使用时,测量端与OUT输出端(第7脚)在外部相连接,输出放大后的信号。
将信号地与放大器的电源地(第9脚)相连接为放大器的偏置电流提供通路。
3.3A/D转换电路设计
在AD574由微处理器控制的情况下,可在初始化程序中将BC端置为高电平,DR端的状态由芯片内部决定,其初始状态也是高电平,此时输出总线处于高阻状态。
当B/C端输入低电平信号后,AD574便开始转换。
此时,DR端及输出端状态不变,经25µs后转换结束,DR端变低,延时500ns后,数据线上出现转换后的数据。
当微处理器取完数据后转换命令可撤去,B/C置高电平。
在B/C变化后的1.5µs,DR线随之自动变高,同时数据线呈现高阻,一次转换即完成。
注意上次B/C命令撤除与下一次给出新的转换命令之间的时间间隔不得小于2µs,如果在转换进行期间B/C线变高,那么这次转换就停止,而且DR与数据线状态不变。
A/D转换结束时,A/D转换芯片会输出转换结束信号,通过CPU读取转换数据。
图8
3.4显示电路设计
这里我既然用LCDLM016L液晶显示屏作为系统的显示器件,那么这里我们将它与单片机的P2.0-P2.7、P0.0-P0.3口连接。
在显示屏上显示的内容包括单片机设定的温度值、传感器检测到的环境温度以及时钟,这个时钟是可以调整的,这样方便工作人员在对系统进行操作时有一个时间概念。
图9
3.5电气开关及工作电路
电器开关及工作电路如下图所示。
图10
如图所示,光电耦合器1脚接电源,2脚接单片机P3.2脚。
工作过程用以下三个阶段来描述:
1)单片机将温度传感器送入的值与设定值进行比较,若送入值小于设定值,则P3.2脚保持高电平,这样发光二极管不发光,光敏晶体管保持高阻态,继电器也不会工作,电动机和灯泡维持导通,相当于电炉继续加热,指示灯亮;
2)一旦送入值比设定值大,单片机将会控制P3.2脚变为低电平,发光二极管导通发光,光敏晶体管受光照影响导通,继而继电器工作,电磁铁将单刀双掷开关吸向左端,使电动机和灯泡同时停止工作,这就相当于电炉断电,停止加热;
3)电炉短路一段时间后,必然导致炉温降低,而温度传感器在不间断地检测炉温,当检测值低于设定值后,单片机又控制P3.2脚恢复高电平,光电耦合器恢复高阻态,继电器断电,单刀双掷开关被弹回右端,电动机和灯泡又开始工作,这相当于电炉从新开始加热。
4系统软件设计
4.1程序设计
由于整个程序工程量比较大,我采用模块化设计方法来设计这个程序。
首先定义在后面将会用到的变量,不可能一次定义准确,所以边定义边补充。
然后编写子函数,包括LCM初始化子函数、显示指定坐标的一个字符子函数、AD574初始化函数、AD574延迟子函数、读取AD574当前温度子函数、液晶显示子函数、设定工作模式子函数、定时器t0中断子函数等子程序,最后是主函。
设定加热炉温度初值函数、比较函数等等。
4.2主流程图
图11
4.3主程序
#include
#include
#include
#defineucharunsignedchar
#defineuintunsignedint
#defineBUSY0x80//lcd忙检测标志
#defineDATAPORTP0//定义P0口为LCD通讯端口
#definePLAYE_ADDRXBYTE[0XBFFF]//语音报警地址
sbitRED_ALARM=P1^0;//红色指示灯
sbitWRITE_ALARM=P1^1;//白色指示灯
sbitGREEN_ALARM=P1^2;//绿色指示灯
sbitBLUE_ALARM=P1^3;
sbitP1_4=P1^4;//时钟调整
sbitP1_5=P1^5;//时钟加
sbitP1_6=P1^6;//时钟减
sbitDQ=P1^7;//定义ds18b20通信端口
sbitLCM_RS=P2^0;//数据/命令端
sbitLCM_RW=P2^1;//读/写选择端
sbitLCM_EN=P2^2;
sbitsda=P2^3;//IO口定义
sbitscl=P2^4;//LCD使能信号
sbitad_busy=P3^2;//adc中断方式接口
sbitRECLED_EOC=P3^5;//ISD1420放音结束查询标志
sbitOUT=P3^7;
ucharad_data;//ad采样值存储
ucharseconde;//定义并初始化时钟变量
ucharminite;
ucharhour;
ucharmstcnt=0;
uchartemp1,temp2,temp;//温度显示变量
uchart,set;
ucharK;
bitON_OFF=0;
bitoutflag;
bitwrite=0;
ucharcodestr0[]={"---:
:
---"};
ucharcodestr1[]={"SET:
CSA:
.C"};
voiddelay_LCM(uint);//LCD延时子程序
voidinitLCM(void);//LCD初始化子程序
voidlcd_wait(void);//LCD检测忙子程序
voidWriteCommandLCM(ucharWCLCM,ucharBusyC);//写指令到ICM子函数
voidWriteDataLCM(ucharWDLCM);//写数据到LCM子函数
voidDisplayOneChar(ucharX,ucharY,ucharDData)//显示指定坐标的一个字符子函数
voidDisplayListChar(ucharX,ucharY,ucharcode*DData);//显示指定坐标的一串字符子函数
voidinit_timer0(void);//定时器初始化
voiddisplayfun1(void);
voiddisplayfun2(void);
voiddisplayfun3(void);
voiddisplayfun4(void);
voidkeyscan(void);//键盘扫描子程序
voidset_adj(void);
voidinc_key(void);
voiddec_key(void);
voiddelay_18B20(unsignedinti);
voidInit_DS18B20(void);
ucharReadOneChar(void);
voidWriteOneChar(unsignedchardat);
voidReadTemperature(void);
voidad0809(void);
voidplayalarm(void);
/*********延时K*1ms,12.000mhz**********/
voiddelay_LCM(uintk)
{
uinti,j;
for(i=0;i { for(j=0;j<60;j++) {;} } } /**********写指令到LCM子函数************/ voidWriteCommandLCM(ucharWCLCM,ucharBusyC) { if(BusyC)lcd_wait(); DATAPORT=WCLCM; LCM_RS=0;//选中指令寄存器 LCM_RW=0;//写模式 LCM_EN=1; _nop_(); _nop_(); _nop_(); LCM_EN=0; } /**********写数据到LCM子函数************/ voidWriteDataLCM(ucharWDLCM) { lcd_wait();//检测忙信号 DATAPORT=WDLCM; LCM_RS=1;//选中数据寄存器 LCM_RW=0;//写模式 LCM_EN=1; _nop_(); _nop_(); _nop_(); LCM_EN=0; } /***********lcm内部等待函数*************/ voidlcd_wait(void) { DATAPORT=0xff; LCM_EN=1; LCM_RS=0; LCM_RW=1; _nop_(); while(DATAPORT&BUSY) {LCM_EN=0; _nop_(); _nop_(); LCM_EN=1; _nop_(); _nop_(); } LCM_EN=0; } /**********LCM初始化子函数***********/ voidinitLCM() { DATAPORT=0; delay_LCM(15); WriteCommandLCM(0x38,0);//三次显示模式设置,不检测忙信号 delay_LCM(5); WriteCommandLCM(0x38,0); delay_LCM(5); WriteCommandLCM(0x38,0); delay_LCM(5); WriteCommandLCM(0x38,1);//8bit数据传送,2行显示,5*7字型,检测忙信号 WriteCommandLCM(0x08,1);//关闭显示,检测忙信号 WriteCommandLCM(0x01,1);//清屏,检测忙信号 WriteCommandLCM(0x06,1);//显示光标右移设置,检测忙信号 WriteCommandLCM(0x0c,1);//显示屏打开,光标不显示,不闪烁,检测忙信号 } /****************显示指定坐标的一个字符子函数*************/ voidDisplayOneChar(ucharX,ucharY,ucharDData) { Y&=1; X&=15; if(Y)X|=0x40;//若y为1(显示第二行),地址码+0X40 X|=0x80;//指令码为地址码+0X80 WriteCommandLCM(X,0); WriteDataLCM(DData); } /***********显示指定坐标的一串字符子函数***********/ voidDisplayListChar(ucharX,ucharY,ucharcode*DData) { ucharListLength=0; Y&=0x01; X&=0x0f; while(X<16) { DisplayOneChar(X,Y,DData[ListLength]); ListLength++; X++; } } /***********ds18b20延迟子函数(晶振12MHz)*******/ voiddelay_18B20(unsignedinti) { while(i--); } /**********ds18b20初始化函数**********************/ voidInit_DS18B20(void) { unsignedcharx=0; DQ=1;//DQ复位 delay_18B20(8);//稍做延时 DQ=0;//单片机将DQ拉低 delay_18B20(80);//精确延时大于480us DQ=1;//拉高总线 delay_18B20(14); x=DQ;//稍做延时后如果x=0则初始化成功x=1则初始化失败 delay_18B20(20); } /***********ds18b20读一个字节**************/ unsignedcharReadOneChar(void) { uchari=0; uchardat=0; for(i=8;i>0;i--) { DQ=0;//给脉冲信号 dat>>=1; DQ=1;//给脉冲信号 if(DQ) dat|=0x80; delay_18B20(4); } return(dat); } /*************ds18b20写一个字节****************/ voidWriteOneChar(uchardat) { unsignedchari=0; for(i=8;i>0;i--) { DQ=0; DQ=dat&0x01; delay_18B20(5); DQ=1; dat>>=1; } } /**************读取ds18b20当前温度************/ voidReadTemperature(void) { unsignedchara=0; unsignedcharb=0; unsignedchart=0; Init_DS18B20(); WriteOneChar(0xCC);/
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 加热炉 温度 监控 系统 设计