烤箱温度控制设计.docx
- 文档编号:14876011
- 上传时间:2023-06-28
- 格式:DOCX
- 页数:31
- 大小:108.09KB
烤箱温度控制设计.docx
《烤箱温度控制设计.docx》由会员分享,可在线阅读,更多相关《烤箱温度控制设计.docx(31页珍藏版)》请在冰点文库上搜索。
烤箱温度控制设计
烤箱温度控制系统的设计
(计算机控制技术基础课程设计)
专业:
自动化
组员:
吴传林唐思黄定肖骁
重庆大学自动化学院
2013年9月
摘要
本文是对烤箱温度控制系统进行设计,在烤箱温度控制系统中,利用计算机对烤箱的继电器发出不同的信号,来控制继电器的开断,从而能够实现控制烤箱加热与否的控制。
本系统采用了反馈控制,是经典控制理论在实际中成功应用的典型实例。
本次采用的信号输出芯片是8255。
而温度采集则是用了PT100感温电阻,将电信号送至A/D574中,利用A/D574的模数转换功能,将采集的温度模拟信号转换成计算机可以识别的电信号,进而在计算机内对这些电信号进行处理,经过反馈控制算法来输出控制烤箱的电信号。
关键词:
反馈控制算法,A/D574模数转换,计算机控制
序言
温度控制技术广泛应用于社会生活的各个领域,如家电、汽车、材料、电力电子等,传统的温度控制技术中最常见的是继电器调温,但由于继电器动作频繁,温度控制范围小,精度不高,可能会因触点不良而影响正常工作。
最近几年快速发展的有PID温控、模糊控制、神经网络以及遗传算法在温度控制中的应用。
烤箱是热处理生产中应用最广的加热设备,它电流通过电热元件产生热量,借助辐射和对流的传递方式,将热量传递给所要加热的物品,使其加热到所要求的温度。
本文设计的烤箱温度控制系统,是利用计算机对其温度进行控制,采用反馈控制算法,以实现对烤箱温度控制,达到控制性能要求的指标。
1.设计内容
1.1已知参数和设计要求
1.某烤箱的温度控制要求为:
控制烤箱温度从室温上升到目标温度并一直保持在该目标温度,要求控制的精度达±3%,调节时间≤20秒。
2.目标温度应可以通过键盘任意修改。
3.完成温度检测、温度变松,温度显示(LED和CRT曲线)、温度控制、通过键盘设定上、下限温度报警值,温度超限报警(声、光)等功能。
1.2实现方法
采用PD-32E实验装置实现(限≤5人选做)
2.组员分工
姓名
职务
负责的部分
吴传林
组长
键盘扫描、判断控制、显示模块程序编写,程序的编译和调试
唐思
组员
AD574转换,标度变换,控制算法,PWM波生成,程序的编译和调试
肖骁
组员
报警程序、读入温度值拆分、键盘输入值合并,报告撰写
黄定
组员
3.硬件部分组成
3.1硬件连接
1)8255部分(第5片)连线:
8255(5)的CS结CS2300H,PA0~PA3接键盘P0~P3,PB0~PB3接键盘Q0~Q3,PC0接烤箱的PWM控制信号接收端。
2)AD574连线:
AD574的CS接地址输入端CS7,AD574的12/8接VCC;AD574的A0接GND,AD574的10VIN接其上方的±5V,10VIN接PT100模块的PT_OUT。
3)蜂鸣器接8255的PC1口。
3.2硬件介绍
3.2.1AD574
AD574A是单片高速12位逐次比较型A/D转换器,内置双极性电路构成的混合集成转换芯片,具有外接元件少,功耗低,精度高等特点,并且具有自动校零和自动极性转换功能,只需外接少量的阻容件即可构成一个完整的A/D转换器,其主要功能特性如下:
在CE=1、CS=0同时满足时,AD574A才会正常工作,在AD574处于工作状态时,当R/C=0时A/D转换,当R/C=1是进行数据读出。
和A0端用来控制启动转换的方式和数据输出格式。
A0=0时,启动的是按完整12位数据方式进行的。
当A0=1时,按8位A/D转换方式进行。
当R/C=1,也即当AD574A处于数据状态时,A0和R/C控制数据输出状态的格式。
当R/C=1时,数据以12位并行输出,当R/C=0时,数据以8位分两次输出。
而当A0=0时,输出转换数据的高8位,A0=1时输出A/D转换数据的低4位,这四位占一个字节的高半字节,低半字节补零。
如果需AD574A工作于单一模式,只需将CE、端接至+5V电源端,和A0接至0V,仅用端来控制A/D转换的启动和数据输出。
当=0时,启动A/D转换器,经25us后STS=1,表明A/D转换结束,此时将置1,即可从数据端读取数据。
3.2.2PT100
pt100是铂热电阻,它的阻值会随着温度的变化而改变。
PT后的100即表示它在0℃时阻值为100欧姆,在100℃时它的阻值约为138.5欧姆。
它的工作原理:
当PT100在0摄氏度的时候他的阻值为100欧姆,它的阻值会随着温度上升而成近似匀速的增长。
但他们之间的关系并不是简单的正比的关系,而更应该趋近于一条抛物线。
常见的pt100感温元件有陶瓷元件,玻璃元件,云母元件,它们是由铂丝分别绕在陶瓷骨架,玻璃骨架,云母骨架上再经过复杂的工艺加工而成。
PT100/PT1000铂电阻RT曲线图表:
图3.1
3.2.3芯片8255
8255是Intel公司生产的可编程并行I/O接口芯片,有3个8位并行I/O口。
具有3个通道3种工作方式的可编程并行接口芯片(40引脚)。
其各口功能可由软件选择,使用灵活,通用性强。
8255可作为单片机与多种外设连接时的中间接口电路。
8255作为主机与外设的连接芯片,必须提供与主机相连的3个总线接口,即数据线、地址线、控制线接口。
同时必须具有与外设连接的接口A、B、C口。
由于8255可编程,所以必须具有逻辑控制部分,因而8255内部结构分为3个部分:
与CPU连接部分、与外设连接部分、控制部分。
图3.2
4.操作说明
键盘上的A键为启动键,B键为复位键,D为设置温度上限,E为设置温度下限,0
-9数字键输入温度值。
5.设计总体思路
框图如图所示:
我们采用的是传统的反馈控制策略,其具体过程如下:
一开始,给定一个输入信号,即期望温度,此时,控制程序还没有起作用,此信号通过变送器送至继电器,继电器导通,使烤箱处于工作状态。
这时,温度传感器就把烤箱内的温度转变成电信号送至计算机中。
计算机则将此电信号与输入的期望温度进行比较,通过控制器,根据不同的设定及差值,选择不同的控制算法。
由于计算机内的电信号都是脉冲信号,因此,可以调节脉冲信号的占空比来调节继电器的断开与导通的时间。
期望值与测量值的差距大,就增大占空比,使一个周期内的加热时间增长,反之,则减小占空比。
采用上述的控制策略,即可以实现温度调节,达到控制指标的要求。
5.1设计步骤
首先确定主程序所要实现的目标,即:
预设显示输出,输入温度上限、温度下限,输入设定温度值,显示预设温度,实时刷新当前温度并显示,比较实时温度与设定温度差值并进行反馈控制,控制温度达到性能指标要求。
然后,确定了主程序所要实现的功能以后,在相应的编写各个子程序模块。
同时,要考虑在整个系统实现的过程中,所要运用到的芯片,好进行芯片的初始化。
如8255,AD574等
温度设定子程序,即,从键盘上输入3个数字,将其存放在指定的空间区域内。
即AD574的使用过程。
首先,先将AD574初始化,启动转换,转换结果屏蔽高4位后,将所得到的结果存放在指定单元中,为当前温度。
将前一步骤采集到的当前温度进行标度变换,比较设定值的大小与当前温度和设定值之差,然后做出相应的标记,然后根据不同的标记跳到相应的加热子程序中。
其基本原则就是:
实际温度和期望温度差距越大,加热子程序中,每个周期的高电平占空比就越大,若设定值比较大,则直接采用满程输出。
5.1.5报警子程序
烤箱工作时,当烤箱温度超过设置温度上限和低于温度下限时,调用子程序,否则跳出子程序;其中接蜂鸣器的控制信号为第五片8255A的PC1口输出信号,输出0时,蜂鸣器发出警报,输出为1时,声音停止。
5.2原理分析
制烤箱温度的系统,我们采用反馈控制算法。
利用计算机控制中的A/D转换器,将采集到的模拟信号转换成数字信号,然后送入计算机进行处理。
在计算机中,我们编写了控制算法,将送入的电信号经过该算法,输出一个控制继电器开关的脉冲信号,我们可以通过调节脉冲高电平的占空比,来控制一个信号周期内加热时间的长短。
从而实现控制。
又由于这个占空比是实时变化的,所以,这是一个变比例系数的P控制器。
利用这个控制器,我们可以使烤箱内的温度保持在我们所设定的期望值。
6.实验结果
实验结果如下表所示:
实验次数
初始温度
设定温度
调节时间
超调量
误差
1
35
100
4℃
1.3%
2
40
140
2℃
1.2%
3
60
160
2℃
1.5%
4
50
220
1℃
2%
本次设计总体上还是比较成功,基本上实现了任务要求。
只有调节时间的,可能是冗长的程序,或者是电烤箱的功率问题,又或者是自己反馈补偿参数设计不够完善,总之,不能达到要求的20秒以内,此为设计的瑕疵。
7.原程序清单
见附录4
8.设计感想
8.1吴传林感想
作为我们团队的组长,需要确定合适的电路,对电路进行调试,将变送器调至最合适的范围。
同时还要确定与硬件相关的软件主体思想。
一个项目的成败,与组长的整体协调能力关系很大。
这次的时间比较紧张,而且之前没怎么做过过程控制类的题目,所以可以说是时间短、任务重。
热敏电阻PT100之前接触过,但是没有和计算机连起来使用,也是一个新的挑战。
这次设计我吸取的上次计算机硬件课程设计的教训,学会多利用子程序,而不是要把所有的问题都用一个主程序解决,却很少使用子程序。
这样,不但别人读不懂自己的程序,就连自己有时候都读不懂自己的程序。
这次课程设计感觉比以前进步的一点就是程序的模块化思想更加深刻。
之前总也用程序段的方式插入的主程序中,而这次则是尽量减少主程序的内容,将所有的处理部分都写成子程序,设计好入口参数,就可以是整个程序思路清晰,一目了然。
一个好的程序编写者并不是会把所有的模块都自己写出来,而是可以将自己搜索到的各种模块与自己的项目结合,设计好接口参数,达到事半功倍的效果。
这次的程序就用了之前做过的一些设计的模块,如实时显示刷新模块,延时程序,报警子程序等。
这些之前积累下来的宝贵资料大大加快了本次课程设计的速度。
通过了这次课程设计,虽然很累,但过得很充实,收获也很多,我们将学到的知识又重新的复习了一遍,在原来的基础上巩固了对理论知识的理解并且提升了自己的实践能力。
对汇编语言的使用有了进一步的提高,对一个大系统进行模块化分析是以前没有尝试过的,分工合作也让我们学会团结互助,让我们对团队合作精神理解得更透彻,对于我们以后的学习或者工作中都有深远的意义。
8.2唐思感想
这次的课程设计我们小组总算是顺利地完成了。
虽然只有短短一个星期,但让我真正见识到了什么是团队的力量。
从接到此次课程设计任务开始,大家就分配好了各自的任务,并且经常聚在一起各抒己见地讨论各个方案的可行性,气氛那是十分的热烈。
在我们小组中也许有的同学能力强些,有些同学能力没那么强,分工时能力强的同学可能任务就重些,但是大家都没有任何的怨言,全力地专注于自己的那一部分任务,所以团结协作是我们小组能顺利完成此次课程设计的一项非常重要的保证,而这次设计也正好锻炼我们这一点,这也是非常宝贵的。
我们这次是设计对烤箱温度控制系统,对于温度的控制系统,我们需要完成温度的采集,温度的控制,能通过键盘,显示接口实现恒温时间设置,系统初始参数设置,报警设置等功能。
我们一起讨论,一起研究,经过几番努力,初步编出的程序,问题很多,也总找不到原因,然后参考书上的例题程序,修改了很多,有些问题是子程序与主程序的连接没弄好,还是很多问题,然后仔细复习书上所学过的知识,对我们的程序再次发现问题,修改问题,后来经过多次的修改最终完成了初步的可行性程序,也算一个进步。
在调试过程中又遇到了烤箱失灵等各种客观问题,但最终在同学的协作以及我们自身的努力下,都将这些困难一一克服并得到了比较理想的结果。
在这次设计中,我主要负责的是烤箱控制算法及输出部分,刚开始的时候还是出现很多问题,在同学的帮助以及参考其他组的一些程序后,初步完成了这段程序,然后经过自己的多次修改,完成了这部分的编写,设计了一个符合烤箱实际情况的合理算法。
在温度较还远未达到设定值时,采用满程的输出,在接近时,采用PWM波,并且在设定值不同区间时采用不同脉宽的PWM波,当设定值过高时,采用满程输出。
当实际温度超过设定值,立即关机,待温度降到设定值以下再次输出。
经过这个部分的编写,让自己明白了很多,课堂上学的东西远远不够,还是需要自己课后的更多的付出和复习,才能让自己所学的东西学以致用,才能让书上的知识变成自己的,也才能让自己变得更加充实,学得更多。
最后顺利地完成了课程设计,大家心情都很喜悦,虽然过程有点累,但是看到努力后的成果,还是很欣慰。
总的来说,通过历时一个星期的课程设计,发现了自己的很多不足,以及自己知识的很多漏洞,看到了自己的实践经验还是比较缺乏,理论联系实际的能力还急需提高。
经过这个课程设计,同时也证明一个团队的力量比一个人的力量大得多,完成一个复杂的问题效率也会高很多,我自己也从此次课程设计中学到了很多东西,实在是令我受益匪浅。
8.3肖骁感想
这次课程设计让我体会到了团队的温暖。
由于我将要参加研究生入学考试,所以精力大都放到复习考研上面去了。
但是我的团队给了最大的包容和理解,让我负责了较为轻松的报警程序、将实际温度转化为字型码和将输入的三个数合成一个数的子程序编写。
这已经不是我第一次团队合作做课程设计了,但是这次让我最为记忆犹新。
本次课程设计我们小组做的是烤箱,我的主要工作是报警子程序的编写。
通过此次课程设计,总的来说收获还是挺大的。
我的工作是参与了部分子程序的编写,主要有用报警子程序,字型码转化等。
这次的课程设计我们小组总算是顺利地完成了。
虽然只有短短一个星期,但让我真正见识到了什么是团队的力量。
从接到此次课程设计任务开始,大家就分配好了各自的任务,并且经常聚在一起各抒己见地讨论各个方案的可行性。
在我们小组中也许有的同学能力强些,有些同学能力没那么强,分工时能力强的同学可能任务就重些,但是大家都没有任何的怨言,全力地专注于自己的那一部分任务,所以团结协作是我们小组能顺利完成此次课程设计的一项非常重要的保证,而这次设计也正好锻炼我们这一点,这也是非常宝贵的。
我们这次是设计对烤箱温度控制系统,对于温度的控制系统,我们需要完成温度的采集,温度的控制,能通过键盘对温度的显示,初始参数设置,报警设置等功能。
我们一起讨论,一起研究,经过几番努力,初步编出的程序,问题很多,也总找不到原因,然后参考书上的例题程序,修改了很多,有些问题是硬件连线问题,我们的烤箱是低电平有效的,我们还将它接到了地。
还有很多问题,然后仔细复习书上所学过的知识,对我们的程序再次发现问题,修改问题,后来经过多次的修改最终完成了初步的可行性程序,也算一个进步。
在调试过程中又遇到了烤箱温度达不到等各种客观问题,但最终在同学的协作以及我们自身的努力下,都将这些困难一一克服并得到了比较理想的结果。
最后顺利地完成了课程设计,大家心情都很喜悦,虽然过程有点累,但是看到努力后的成果,还是很欣慰。
总的来说,通过历时一个星期的课程设计,发现了自己的很多不足,以及自己知识的很多漏洞,看到了自己的实践经验还是比较缺乏,理论联系实际的能力还急需提高。
经过这个课程设计,同时也证明一个团队的力量比一个人的力量大得多,完成一个复杂的问题效率也会高很多,我自己也从此次课程设计中学到了很多东西。
在一个星期的时间里,我们完成了此次课程设计,虽然付出了很多,但是也收获了很多。
这也让我明白了一个道理,大家需要团结在一起才能更大的发挥自己的能力,效率才会更高。
附录
系统框图
程序代码:
.486
CODESEGMENTUSE16
ASSUMECS:
CODE
ORG2000H
BEG:
JMPSTART
XISHU1DW5;补偿算法系数1
XISHU2DW3;补偿算法系数2
AJZDB?
;记录按键的数值
AJCSDB0;记录按下键的次数
WDSXDW300;上限温度值
WDXXDW0;下限温度值
YSWDDW?
;预设温度值
SJWDDW?
;实际温度值
ZCWDDW?
;温度暂存
YSXSDB?
?
?
;预设温度显示
SWXSDB?
?
?
;实际温度显示
SRXSDB?
?
?
;输入温度的三位数值
ADJGDW0;存放AD转换的结果
BDBHJGDW0;存放标度变换的结果
ZKBDW0;占空比
LEDDB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H;三色LED字型码
KEYDB0EEH,0EDH,0EBH,0E7H,0DEH,0DDH,0DBH,0D7H,0BEH,0BDH,0BBH,0B7H,7EH,7DH,7BH,77H;键特征值
START:
CALLCSH;调用初始化子程序
LL0:
CALLJPSM;调用键盘扫描子程序
CALLADZH;进行AD转换
CALLBDBH;进行标度变换
CALLXSSW;显示实际温度值
MOVAL,AJCS
CMPAL,4;比较AJCS是否为4,为4的话说明是在温度控制执行状态
JNZLL0;不等于4,向上跳转
CALLKZSF;调用控制算法子程序,处理获得的温度差
CALLPWM;调用产生PWM波形子程序
CALLBJQ;调用报警器子程序
JMPLL0
;---------------------显示初始化--------------------
CSHPROC
MOVDX,30CH;第5片8255初始化
MOVAL,90H
OUTDX,AL
MOVDX,20CH
MOVEAX,80808080H;1~4片8255初始化
OUTDX,EAX
MOVDX,208H;将LED全熄灭
MOVEAX,0F0F0F0FH
OUTDX,EAX
MOVDX,30CH
MOVAL,00000011B;为第五片8255的PC1、PC0赋值1
OUTDX,AL
RET
CSHENDP
;-----------------------------------键盘扫描---------------------------
JPSMPROC
PUSHA
MOVBL,0F7H;从Q3列开始扫描
SM:
MOVAL,BL
MOVDX,304H
OUTDX,AL;送出列信号
MOVDX,300H
INAL,DX;读入行信号
ANDAL,0FH
CMPAL,0FH
JNZLL1;有键按下,跳转
RORBL,1;调整列信号
JCSM
JMPJPSM3;无键按下,跳出程序
LL1:
;以列信号为高四位,行信号为低四位,形成键特征值
SHLBL,4
ORBL,AL
CALLDLY_L;延时去抖动
DDSF:
MOVAL,0;等待释放
MOVDX,304H
OUTDX,AL
MOVDX,300H
INAL,DX
ANDAL,0FH
CMPAL,0FH
JNZDDSF
LEASI,KEY;键特征值的首地址
MOVAJZ,0;用AJZ记录下按下键的数值
JPSM1:
MOVAL,AJZ
MOVAH,0
MOVBP,AX
CMPBL,[SI+BP];按下的键从零开始的比较
JZJPSM2
INCAJZ
JMPJPSM1
JPSM2:
CALLPANDUAN;判断输入值
JPSM3:
POPA
RET
JPSMENDP
;---------------------------去抖动延时-----------------------
DLY_LPROC
PUSHCX
MOVCX,0FFFFH
DLYL_AGN:
NOP
LOOPDLYL_AGN
POPCX
RET
DLY_LENDP
;--------------------------判断输入值------------------------
PANDUANPROC
PUSHA
MOVBL,AJZ;按下的键值
MOVBH,AJCS;按键次数
CMPBL,9
JAPAN1;大于9跳转
CMPBH,2
JAPAN7;大于2跳转
INCAJCS;次数加一
CALLYSZXS;调用预设值显示子程序
JMPPAN7
PAN1:
CMPBL,0BH
JZPAN4;等于B跳转
CMPBL,0CH
JZPAN5;等于C跳转
CMPBL,0FH
JZPAN7;等于F跳转
CMPBH,3;判断次数AJCS是否等于3
JNZPAN7;不等于3跳转
CALLZUHE;将输入的三个数组合
MOVCX,ZCWD;将组合好的数存放在CX
CMPBL,0AH
JNZPAN2;不等于A跳转
CMPCX,WDSX;与上限温度比较
JAPAN7;大于上限温度跳转
CMPCX,WDXX;与下限温度比较
JBPAN7;小于下限温度跳转
INCAJCS;次数加1,变为4
MOVYSWD,CX;得到预设温度
JMPPAN7
PAN2:
CMPBL,0DH
JNZPAN3;等于D跳转
MOVWDSX,CX;得到上限温度
JMPPAN6
PAN3:
MOVWDXX,CX;得到下限温度
JMPPAN6
PAN4:
CMPBH,3
JAPAN7;大于3跳转
JMPPAN6
PAN5:
CMPBH,4
JNZPAN7;不等于4跳转
PAN6:
MOVAJCS,0;次数清零
MOVDX,20AH;8255(3)C口地址
MOVAX,0F0FH;预设温度显示关闭
OUTDX,AX
PAN7:
POPA
RET
PANDUANENDP
;------------------------预设值显示--------------------
YSZXSPROC
PUSHA
MOVCL,AJCS
LEABX,LED;将存放三色LED字型码地址给BX
MOVAL,AJZ;将按下键的数值给AL,以待查表转换
LEADI,SRXS;将存放输入温度数值的地址给DI
LEASI,YSXS;将存放显示温度字型码的地址给SI
MOVDX,20AH;8255(3)C口地址
CMPCL,1
JZSH1;等于1跳转
CMPCL,2
JZSH2;等于2跳转
CMPCL,3
JZSH3;等于3跳转
JMPSH5
SH1:
MOV[DI],AL;将最高位存放
XLAT;查表转换
MOV[SI],AL;将最高位的字型码存放
MOVAX,0F0EH;LED只显示最高位,绿色
JMPSH4
SH
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 烤箱 温度 控制 设计