《基于AT89S52的电烤箱温度控制系统.ppt》由会员分享,可在线阅读,更多相关《基于AT89S52的电烤箱温度控制系统.ppt(48页珍藏版)》请在三一办公上搜索。
1、9.2 应用系统设计实例单片机温度控制系统,9.2.1 技术指标 烘干箱的具体指标如下:(1)烘干箱由2 kW电炉加热,最高温度为500。(2)烘干箱温度可预置,烘干过程恒温控制,温度控制误差2。(3)预置时显示设定温度,烘干时显示实时温度,显示精确到1。(4)温度超出预置温度5时发声报警。(5)对升降温过程的线性没有要求。,9.2.2 控制方案 产品的工艺不同,控制温度的精度也不同,因而所采用的控制算法也不同。就温度控制系统的动态特性来讲,基本上都是具有纯滞后的一阶环节,当系统精度及温控的线性性能要求较高时,多采用PID算法或达林顿算法来实现温度控制。本系统是一个典型的闭环控制系统。从技术指
2、标可以看出,系统对控制精度的要求不高,对升降温过程的线性也没有要求,因此,系统采用最简单的通断控制方式,即当烘干箱温度达到设定值时断开加热电炉,当温度降到低于某值时接通电炉开始加热,从而保持恒温控制。,9.2.3 硬件设计 系统的硬件电路包括主机、温度检测、温度控制、人机对话(键盘/显示/报警)4个主要部分。图9.10为系统的结构框图,图9.11为系统的硬件电路原理图。下面对各部分电路分述如下。1)主机 由于系统控制方案简单,数据量也不大,因此选用8031作为控制系统的核心,外扩EPROM2764作为程序存储器。也可视具体情况换用8051、8052、8751、8752、80C51、89C51、
3、89C52等。其中,8051、8052、8751、8752的各个引脚输入/输出电平只与TTL电平兼容;89C51、89C52、80C51各引脚输入/输出电平既与TTL电平兼容,也与CMOS电平兼容。,图9.10 电烤箱控制系统结构框,图9.11 电烤箱控制系统硬件电路原理图,8031的晶振频率为6 MHz。2)温度检测 这部分包括温度传感器、变送器和A/D转换三部分。温度传感器和变送器的类型选择与被控温度的范围及精度等级有关。型号为WZB003,分度号为BA2的铂热电阻适用于0500的温度测量范围,可以满足本系统的要求。变送器将电阻信号转换成与温度成正比的电压,当温度在0500时变送器输出04
4、.9 V左右的电压。,A/D转换器件的选择主要取决于温度的控制精度。本系统要求温度控制误差2,采用8位A/D转换器,其最大量化误差为=,完全能够满足精度要求。这里我们采用ADC0809作为A/D转换器。电路设计好后,调整变送器的输出,使 0500的温度变化对应于04.9 V的输出,则A/D转换对应的数字量为00HFAH,即0250,则转换结果乘以2正好是温度值。用这种方法一方面可以减少标度转换的工作量,另一方面还可以避免标度转换带来的计算误差。,3)温度控制 电炉控制采用可控硅来实现,双向可控硅和电炉电阻丝串接在交流220 V市电回路中。单片机的P1.7口通过光电隔离器和驱动电路送到可控硅的控
5、制端,由P1.7口的高低电平来控制可控硅的导通与断开,从而控制电阻丝的通电加热时间。4)人机对话 这部分包括键盘、显示和报警三部分电路。本系统设有3位LED数码显示器,停止加热时显示设定温度,启动加热时显示当前烤箱温度。采用串行口扩展的静态显示电路作为显示接口电路。,为使系统简单紧凑,键盘只设置4个功能键,分别是启动、“百位+”、“十位+”和“个位+”键,由P1口低4位作为键盘接口。利用+1按键可以分别对预置温度的百位、十位和个位进行加1设置,并在LED上显示当前设置值。连续按动相应位的加1键即可实现0500的温度设置。报警功能由蜂鸣器实现。当由于意外因素导致烤箱温度高于设置温度时,P1.6口
6、送出的低电平经反向器驱动蜂鸣器鸣叫报警。5)其它可扩展电路 对于要求更高的系统,在现有电路的基础上,读者还可以视需要自行扩展以下接口电路:,(1)实时时钟电路:连接实时时钟芯片DS12887可以获得长的采样周期,显示年、月、日、时、分、秒,而其片内带有的114 B非易失性RAM,可用来存入需长期保存但有时也需变更的数据。如采样周期、PID控制算法的系数KP、KI、KD等。(2)“看门狗”电路:连接集成监控芯片MAX705可实现对主电源VCC的监控,提高系统的可靠性。由于本书附带的实验板已将P1口用排针引出,因此,读者可以方便地用实验板来实现上述系统。可在P1.6口外接蜂鸣器电路,在P1.7口外
7、接电炉驱动控制电路,P1.0P1.3口外接4个功能按键(启动、+100、+10、+1)。,9.2.4 软件设计 1.工作流程 烤箱在上电复位后先处于停止加热状态,这时可以用“+1”键设定预置温度,显示器显示预定温度;温度设定好后就可以按启动键启动系统工作了。温度检测系统不断定时检测当前温度,并送往显示器显示,达到预定值后停止加热并显示当前温度;当温度下降到下限(比预定值低2)时再启动加热。这样不断重复上述过程,使温度保持在预定温度范围之内。启动后不能再修改预置温度,必须按复位/停止键回到停止加热状态再重新设定预置温度。,2.功能模块 根据上面对工作流程的分析,系统软件可以分为以下几个功能模块:
8、(1)键盘管理:监测键盘输入,接收温度预置,启动系统工作。(2)显示:显示设置温度及当前温度。(3)温度检测及温度值变换:完成A/D转换及数字滤波。(4)温度控制:根据检测到的温度控制电炉工作。(5)报警:当预置温度或当前炉温越限时报警。,3.资源分配 为了便于阅读程序,首先给出单片机资源分配情况。数据存储器的分配与定义见表9.2。表9.2 温度控制软件数据存储器分配表,程序存储器:EPROM2764的地址范围为0000H1FFFH I/O口:P1.0P1.3键盘输入;P1.6、P1.7报警控制和电炉控制。A/D转换器0809:通道0通道7的地址为7FF8H7FFFH,使用通道0。4.功能软件
9、设计 1)键盘管理模块 上电或复位后系统处于键盘管理状态,其功能是监测键盘输入,接收温度预置和启动键。程序设有预置温度合法检测报警,当预置温度超过500时会报警并将温度设定在500。键盘管理子程序流程图如图9.12所示。,图9.12 键盘管理子程序流程图,键盘管理子程序KIN:KIN:ACAL CHK;预置温度合法性检测 MOV BT1,ST1 MOVBT0,ST0;预置温度送显示缓冲区 LCALLDISP;显示预置温度KIN0:ACALLKEY;读键值 JZKIN0;无键闭合和重新检测 ACALL DISP,ACALLDISP;二次调用显示子程序延时去抖 ACALLKEY;再检测有无键按下
10、JZKIN0;无键按下重新检测 JBACC.1,S10 MOVA,#100;百位键按下 AJMP SUMS10:JB ACC.2,S1 MOVA,#10;十位键按下 AJMPSUM,S1:JBACC.3,S0MOVA,#01;个位键按下 SUM:ADDA,ST0;预置温度按键+1MOVST0,AMOVA,#00H ADDCA,ST1MOVST1,AKIN1:ACALL KEY;判断闭合键释放 JNZKIN1;未释放继续判断 AJMPKIN;闭合键释放继续扫描键盘,S0:JNB ACC.0,KIN;无键按下重新扫描键盘 RET;启动键按下返回 KEY:MOVA,P1;读键值子程序 CPLA AN
11、LA,#0FH RET 预置温度合法性检测子程序CHK(用双字节减法比较预置温度是否大于500(01F4H):,CHK:MOVA,#0F4H;预置温度上限低8位送ACLRCSUBBA,ST0;低8位减,借位送CYMOVA,#01H;预置温度上限高8位送ASUBBA,ST1;高8位带借位减JC OUTA;预置温度越界,转报警MOVA,#00H;预置温度合法标志RET,OUTA:MOVST1,#01H;将500写入预置温度数据区MOVST0,#0F4HCLRP1.6;发报警信号0.6 sACALLD0.6s SETBP1.6;停止报警RET,2)显示模块 显示子程序的功能是将显示缓冲区57H和58
12、H的二进制数据先转换成三个BCD码,分别存入百位、十位和个位显示缓冲区(54H、55H和56H单元),然后通过串口送出显示。显示子程序DISP:DISP:ACALL HTB;将显示数据转换为BCD码 MOV SCON,#00H;置串行口为方式0 MOV R2,#03H;显示位数送R2 MOV R0,#T100;显示缓冲区首地址送R0,LD:MOV DPTR,#TAB;指向字型码表首地址 MOV A,R0;取显示数据 MOVC A,A+DPTR;查表 MOVSBUF,A;字型码送串行口WAIT:JBC TI,NEXT;发送结束转下一个数据并清中断标志 SJMP WAIT;发送未完等待NEXT:I
13、NCR0;修改显示缓冲区指针 DJNZR2,LD;判3位显示完否,未完继续RET,TAB:;字型码表(略)BCD码转换子程序HTB:HTB:MOVA,BT0;取二进制显示数据低8位MOVB,#100;除100,确定百位数DIVABMOVT100,A;百位数送54H单元MOVA,#10;除10,确定十位,XCH A,B DIV A,B MOV T10,A;十位数送55H单元 MOVT,B;个位数送56H单元 MOVA,BT1;取二进制显示数据高8位 JNZ LH1;高位不为0转LH1继续高8位转换 RET;高位为0结束,返回LH1:MOVA,#06H;高位不为0,低位转换结果加256(因为温度数
14、据不会;大于500,所以高8位最多为01H,即256),ADDA,T DAA;个位加6(十进制加)MOVT,A;结果送回个位 MOVA,#05H ADDCA,T10 DAA;十位加5(十进制加),MOVT10,A;结果送回十位 MOVA,#02H ADDCA,T100 DA A;百位加2(十进制加)MOVT100,A;结果送回百位RET,3)温度检测模块 A/D转换采用查询方式。为提高数据采样的可靠性,对采样温度进行数字滤波。数字滤波的算法很多,这里采用4次采样取平均值的方法。如前所述,本系统A/D转换结果乘2正好是温度值,因此,4次采样的数字量之和除以2就是检测的当前温度。检测结果高位存入5
15、0H,低位存入51H。温度检测子程序流程图如图9.13所示。温度检测子程序TIN:,图9.13 温度检测子程序流程图,温度检测子程序TIN:TIN:MOV TEMP1,#00H;清检测温度缓冲区 MOV TEMP0,#00H MOV R2,#04H;取样次数送R2 MOV DPTR,#7FF8H;指向A/D转换器0通道 LTIN1:MOVX DPTR,A;启动转换HERE:JNB IE1,HERE;等待转换结束 MOVX A,DPTR;读转换结果,ADDA,TEMP0;累加(双字节加法)MOVTEMP0,AMOVA,#00HADDCA,TEMP1MOVTEMP1,ADJNZR2,LTIN1;4
16、次采样完否,未完继续CLR C;累加结果除2(双字节除法)MOVA,TEMP1,RRCAMOVTEMP1,AMOVA,TEMP0 RRCAMOVTEMP0,ARET,4)温度控制模块 将当前温度与预置温度比较,当前温度小于预置温度时,继电器闭合,接通电阻丝加热;当前温度大于预置温度时,继电器断开,停止加热;当二者相等时电炉保持原来状态;当前温度降低到比预置温度低2时,再重新启动加热;当前温度超出报警上下限时将启动报警,并停止加热。由于电炉开始加热时,当前温度可能低于报警下限,为了防止误报,在未达到预置温度时,不允许报警,为此设置了报警允许标志F0。模块流程见图9.14。,图9.14 温度控制流
17、程图,温度控制子程序CONT:CONT:MOVA,TEMP0;当前温度-预置温度(双字节减)CLRCSUBBA,ST0MOVB,A;低8位相减的差值暂存BMOVA,TEMP1SUBBA,ST1,JNCLOFF;无借位,表示当前温度预置温度,转LOFF JNBF0,LON;当前温度预置温度,判是否达到过预置温度 MOVA,B;若达到过预置温度,判二者差值是否大于2 CLRC SUBBA,#02H JNC ACC.7,LOFF;差值不大于2,转LOFFLON:CLR P1.7;开电炉 SJMPEXIT;返回,LOFF:SETBF0;设置允许报警标志SETBP1.7;关电炉EXIT:RET 在此,读
18、者也可自行加入PID算法程序来实现PID控制。5)温度越限报警模块 报警上限温度值为预置温度+5,即当前温度上升到高于预置温度+5时报警,并停止加热;报警下限温度值为预置温度-5,即在当前温度下降到低于预置温度-5,且报警允许时报警,这是为了防止开始从较低温度加温时误报警。报警的同时也关闭电炉。图9.15为报警子程序流程图。,图9.15 报警子程序流程图,报警子程序ALARMALARM:MOVA,TEMP0;当前温度低字节ACLRCSUBBA,ST0;(当前温度低字节-预置温度低字节)AMOVB,A;低字节相减结果送B暂存MOVA,TEMP1;当前温度高字节ASUBBA,ST1;(当前温度高字
19、节-预置温度高字节)A,JC LA0;有借位,当前温度小于预置温度转LA0 SETB F0;当前温度预置温度,允许报警 AJMP LA1LA0:MOV A,ST0;预置温度低字节A CLR CSUBB A,TEMP0;(预置温度低字节-当前温度低字节)A MOV B,A;低字节相减结果送B暂存 MOV A,ST1;预置温度高字节A SUBB A,TEMP1;(预置温度高字节-当前温度高字节)A,LA1:XCH A,B;高低字节互换,判断相减结果是否大于5 CLRC SUBBA,#05H;(低字节差-5)A XCHA,B;(低字节差-5)B,高字节差A SUBBA,#00H;(高字节差-0)A(
20、因为5的高字节为0)JCLA2;相减结果小于5,不报警返回 JNBF0,LA2;相减结果5,判是否允许报警,不允许则返回,CLRP1.6;启动报警SETBP1.7;关电炉LCALLD0.6s;报警延时0.6 sSETBP1.6;关报警LA2:RETD0.6s:(略);延时0.6 s子程序,6)主程序和中断服务子程序 主程序采用中断嵌套方式设计,各功能模块可直接调用。主程序完成系统的初始化,温度预置及其合法性检测,预置温度的显示及定时器0设置。定时器0中断服务子程序是温度控制体系的主体,用于温度检测、控制和报警(包括启动A/D转换、读入采样数据、数字滤波、越限温度报警和越限处理、输出可控硅的控制
21、脉冲等)。中断由定时器0产生,根据需要每隔15 s中断一次,即每15 s采样控制一次。但系统采用6 MHz晶振,最大定时为130 ms,为实现15 s定时,这里另行设了一个软件计数器。主程序和中断服务子程序的流程图如图9.16所示。,图9.16 系统程序总体结构框图,主程序MAIN:(数据缓冲区的定义和初始化部分从略)ORG0000H AJMPMAIN ORG000BH AJMPPT0 ORG0030H MAIN:MOVSP,#59H;设定堆栈指针 MOV TMOD,#01H;定时器0初始化,MOVTL0,#0B0H;定时器定时时间100 ms MOVTH0,#3CH MOVR7,#150;置15 s软计数器初值ACALLKIN;调键盘管理子程序SETBET0;允许定时器0中断SETBEA;开中断SETBTR0;启动定时器0SJMP$,定时器0中断服务子程序PT0:PT0:MOVTL0,#0B0HMOVTH0,#3CH;重置定时器0初值DJNZR7,BACK;15 s到否,不到返回MOVR7,#150;重置软计数器初值ACALLTIN;温度检测,MOVBT1,TEMP1;当前温度送显示缓冲区MOVBT0,TEMP0 ACALL DISP;显示当前温度ACALL CONT;温度控制LCALL ALARM;温度越限报警 BACK:RETI,
链接地址:https://www.31ppt.com/p-6262190.html