计算机温度控制课程设计 - 图文

更新时间:2024-01-29 13:34:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

目 录

1 实验目的................................................................. 1 1.1 选题背景.......................................................... 1 1.2 设计任务.......................................................... 1 2 电路设计................................................................. 2 2.1 设计思路.......................................................... 2 2.2 设计思路.......................................................... 2 2.3 系统方案确定...................................................... 3 2.4 原理框图.......................................................... 3 3 硬件设计................................................................. 4 3.1 单片机连接电路.................................................... 4 3.2 温度检测电路...................................................... 3 3.3 A/D转换电路 ...................................................... 4 3.4 LED温度显示电路 .................................................. 5 3.5 电路图............................................................ 5 4 软件设计................................................................. 5 5 课程设计内容及过程........................................................ 6 5.1 18B20的安装 ...................................................... 6 5.2 电路板焊接与调试过程.............................................. 6 6 程序调试过程.............................................................. 7 6.1 程序清单.......................................................... 8 7 总结及体会............................................................... 11 参考文献................................................................... 12

1

计算机控制系统设计

1.实验目的:

1.1 选题背景

温度是工业对象中一种重要的参数,特别在冶金、化工、机械各类行业里,广泛使用各种加热炉、热护理炉和反应炉等。由于炉子的种类不同,因此采用的加热方法及燃料也不同,如煤气、天然气、油和电等。但是就其控制系统本身的动态特性来说,基本上都属于一阶滞后环节,因其在控制算法上亦基本相同,实践证明,用微型计算机对加热炉进行控制,无论在提高产品质量和数量,节约能源,还是在改善劳动条件等方面都显示出无比的优越性。 1.2 设计任务

在仿真软件Protues中设计必要的电路,并进行调试,用Keil C51完成程序设计,在课程设计报告中详细叙述设计思路和过程总结,画出系统的总体硬件框图,电路图与程序清单附在报告最后。

能够任意设定温度;能够显示当前温度;超调量小于5%,测量温度和设定温度之差小于0.5摄氏度。

1

2.电路设计

2.1 设计思路

该控制系统使用单片机为处理器,连接温度传感器,温度控制电路,并附

加LED显示部分及键盘部分,可以实时显示温度,实现对温度控制还可以键盘对PID参数进行设置。

该系统使用热电阻测出电阻炉温度并转换成电压信号,此电压信号经过温度传感器检测电路转换成数字信号送人单片机,而单片机经过数据处理后,控制显示部分显示温度。此外,将温度与设定值比较,根据设定计算出控制控制量,通过控制电阻丝两端交流电压的通断时间比例来实现电阻丝发热量的控制。 2.2 设计原理

该控制系统使用单片机作为微处理器,连接温度传感器、A/D转换、温

度控制电路,并且附加LED显示部分及键盘部分。他可以实时的显示温度,实现对温度的自动控制,还可以通过键盘对PID参数进行设置。

该控制系统使用热电阻测出电阻炉实际温度并转换成电压信号。此电压信号经过温度检测电路A/D转换电路转换成与炉温相对应的数字信号送入单片机,而单片机经过数据处理后,控制显示部分显示温度。此外,将温度与设定值比较,根据设定计算出控制量,通过控制电阻丝两端交流电压的通断时间比例来实现电阻丝发热量的控制。

该系统的主要控制算法为经典控制理论中所介绍的PID控制算法,积分的作用是消除残差,比例的作用是使温度快速跟踪设定值而变化,而微分的作用是抑制扰动,提前作用,提高稳定性。由于整个水温调节过程比较漫长,所以输出采用电力电子技术中所介绍的调功法,通过改变一个周期内晶闸管导通的波头数来调整加热功率,改变温度变化的速率,最终达到保持温度稳定在设定值上的目的。由于这是一个典型的闭环系统,自然少不了反馈通路,该温度传感器就是反馈通路不可或缺的部分。它可以较准确地测得加热杯内当前水温,单片机接受温度传感器测得的数据,经过内部程序的处理,将该数据转换为实际温度。程序中有一设定加热温度值的变量(设定值),此变量通过按键赋值,这样增加了程序的灵活性和方便性,可以直接修改加热温度,而不用修改程序本身。将设定温度值与当前温度值相减,产生偏差值,该值经过PID算法,得到一个控制参数,即每个周期内晶闸管的导通波头数,通过该值控制晶闸管的导通与关断,调节加热功率,最终保持温度恒定。偏差越小,加热的功率越小。当然PID的形式是多种多样的,可以是经典的PID,也可以是模糊PID,积分分离PID。 2.3 系统方案的确定

单片机温度控制系统是以51单片机为控制核心,辅以温度采样反馈电路,驱动电路,晶闸管主电路对电热炉炉温进行控制的微机控制系统。其控制原理图见图一,其基本控制原理为:用键盘将温度的设定值送入单片机,启动运行后,通过信号采集电路将温度信号采集到后,送到A/D转换电路将信号转换成数字量送入单片机系统进行PID控制运算,将控制量输出,控制电阻炉的加热。

2

2.4 原理框图

下面为框图:

图一、系统结构图

3

3. 硬件设计

控制系统的硬件设计是系统设计的基础,具有重要意义。主要设计内容包括

温度测量、A/D转换、单片机系统、键盘操作系统、温度显示系统、D/A转换等部分。下面分步介绍硬件电路设计方法。 3.1 单片机连接电路

本设计选用了89C51单片机,内部集成了微处理器、储存器、I/O接口、定

时、计数器、中断系统、串行接口等基本元件,完全能满足要求。 3.2 温度检测电路

温度传感器采用热电阻及其放大电路组成

3.3 A/D转换电路

A/D转换十八从温度传感器送来模拟量转换成温度数字量输送到单片机,以

便可以用单片机进行控制AD574再由单片机的控制下,可以在初始化程序中将B.C端置为高电平,DR端的状态有芯片内部决定,其初始化也是高电平,刺客输出总线处于高阻态状态。当B.C端输入低电平信号时,AD754便开始转换。此时,DR端技术处状态不变,经25微秒后转换结束,DR端变低延时0.5微秒后,数据线上出现转换后的数据。当单片机取完数据后转换命令可以撤销,B/C端置高电平。在B/C变化后的1.5微秒,DR线随之自动变高,同时数据线呈现高阻态,一次转换完成。

A/D转换结束后,A/D输出芯片会输出转换结束信号,通过单片机读取转换数据。 3.4 LED温度显示电路

为了使操作人员能随时掌握每个炉子的温度的变化情况,设计了4位LED显示。

3.5 电路图

4

图二、电路图

5

4 软件设计

在该温度控制系统中,温度信号要经过周期采样、数字滤波、PID运算、输

出等过程 周期采样程序

在计算机内部,执行算法时,需要将外部信号经行离散化处理,需要对外部模拟信号进行周期采样。从理论上讲,采样频率越高,失真频率越小,但从控制器本身而言,大都依靠偏差信号E(K)进行调节器计算。当采样周期T太小时,偏差信号也会过小,此时计算机将会失去调节作用,而采用周期过长又会引起误差,因此采样周期必须综合考虑,一般而言采样周期根据外部信号变化快慢而定,如在该温度控制系统中,水箱温度变化比较缓慢,因此采样时间应该适应大一些。 PID程序

PID调节由比例、积分调节、微分调节三者组成,是技术最成熟、应用最广泛的一种调节方式。PID调节的实质就是根据输入的偏差值,按比例、积分、微分的函数关系进行运算,运算结果用于控制输出。在实际应用中,根据被控对象的特征和控制要求,可灵活的改变PID的结构,取其中一部分环节构成控制规律,如比例调节、比例积分调节、比例积分微分调节等。

6

5 课程设计内容及过程:

5.1 18B20安装过程:

这个安装比较重要,因为这个正反极安反后果就是立马烧掉,不注意的话在后面烧水刚开始时很可能就烧掉了这个元件。并且要讲引脚全部都用胶带缠上,因为安装18B20的管子不是严格密封的,所以必须保证它进水之后不短路。安装这个还是要小心的。

5.2 电路板焊接与调试过程:

这个考验人的焊接技术与信心程度,因为一个点焊错了,电路板都不可能工作。而且要看各个元器件的引脚是否正确。我在焊接电路板的时候犯了一个严重的错误,就是把7805和BAT06两个器件搞混了,自然焊出来没效果,这是在上电之前就发现的。这个拆的过程很辛苦,没有吸锡器,而且拆下来的时候很容易把焊盘弄掉。我就吃了这个亏,所以,做什么事还是要用心,三思而后行。特别是不能嬉笑着去工作(这个错误就是和旁边的同学一边聊天一边焊接出现的),这给我们同以后工作提个醒,否则出了什么生产事故可是要负责的。当然这个焊接下来还是没什么问题的。但是在调试板子的时候就出现问题了。首先是上电之后指示灯不亮。仔细分析下电源电路后发现7805那部分有问题,用万用表测完发现电就没供上来。所以肯定是引脚那里有问题。后来发现是虚焊了第一脚。接上之后,指示灯算是亮了。下来调试LCD液晶显示。调了变阻器后竟然没显示,以为测试程序没少进去,再次烧了一边后还是没显示,还以为是液晶坏了,拔下来插另外板子上能亮。没办法,再查下其他器件引脚电平情况,+5v与接地(开始之前已经查了一边,正常),还是在别人的帮助下找到问题。根源还是在7805----另外一个引脚也虚焊。这个还是浪费了很长时间,在这之后,板子基本正常工作了。但由于7805那里经常出问题,所以每次烧水的时候都是把板子垫起来的。

7

6 程序调试过程:

首先,对测试程序进行了测试,由于是纯比例控制,所以超调很大,震荡很剧烈,印证了所学的知识。刚开始都是一个熟悉调试的过程。一个好的温度控制系统应该和加的水的多少没有关系,但是毕竟对自己几斤几两还是有那么一点认识的,所以自己弄得肯定和加水的多少有关系,因此就刚开始加少量水,再加多量水比较,发现关掉加热后,靠热惯性水的温度还是会上升,并且水少水多温度上升大概是7到10度。而且占空比0.25是可以保证温度缓速增长的,在温度高于设定值的时候,为了不至于温度降得太快,可以用0.05的占空比保持一下。这些值都是在经过很多次试验后得到的比较理想的值。而且其动态的性还是基本满足要求的。当然这只是试验,毕竟是要控制算法的。

在这过程中,查过很多资料,比如积分分离PID,串级PID史密斯预估器,专家控制,模糊控制等,书到用时方恨少啊,发现自己知识还真是匮乏。当然课本上也有这方面的知识,比如过程控制书,是很好的参考资料。当然也有经典的PID,形式如下:

当然由于此次为温度采样,必须进行离散化,积分写成和的形式,微分写成差分形式。虽然经典PID现在在很多领域都有很大用处,但参数也不是那么好调,所以大家选择更好效果的积分分离PID:

积分分离即是在高于某个设定值时才加入积分,之前用常规PID,这样做的好处是上升时间快,稳态误差小等。并且从工程控制书上得知,在加入积分的时刻,适当的减小比例作用,会得到较好的结果。

而由于我之前大量烧水总结的经验,并且自己开始用的也不是经典PID,所以,就分了两个模式,水多和水少,因为热惯性使其上升温度不一样,所以分水多水少模式,通过占空比的改变就可以基本上控制。当前值与设定值差值在10度以外全速加热,十度以内改变占空比,水少的时候占空比0.25就可以保证其上升到设定值,水多的时候把十度又分文两个阶段,误差2到10度,占空比0.55,误差0到2度,占空比5,这样可以保证水温一定能上升上去。超过设定值占空比改为0.05保持。这些占空比的改变都是建立在多次的试验上面的。 6.1 程序清单 控制程序如下:

int PIDCalc1(int NextPoint) { int i; Error = SetPoint - NextPoint; if(Error>100) i=1; else if(Error<0) i=2;

8

else if(20

// 偏差 switch(i)

{

case 1: return 20; break; case 2: return 1; break; case 3: return 11; break; case 4: return 5; break; } }

int PIDCalc2(int NextPoint) { int i; Error = SetPoint - NextPoint; if(Error>100) i=1; else if(Error<0) i=2;

else if(0

{

case 1: return 20; break; case 2: return 1; break; case 3: return 5; break; } }

这样上电后通过键盘来切换模式: while(1) {

num=keyscan(); fl=num;

if(fl>0) break; }

按下相应的键,切换成相应的模式烧水。效果基本满足要求。这是第一个。

第二个是个积分分离的程序: int PIDCalc(int NextPoint)

9

{

Error = SetPoint - NextPoint;

if(Error>=30) SumError=0; dError = Error - LastError; PrevError = LastError;

LastError = Error;

if(Error>=100) return(20);

else if(Error<110&&Error>30) return(Proportion*Error+ Derivative * dError);

else if(Error>0&&Error<=30) {

SumError += Error;

return(0.85*Proportion*Error+ Integral * SumError+ Derivative * dError+1); }

else if(Error<=0) return(1);

}

加入积分后比例变为原来的0.85,这个是为了保证引入积分后系统的稳定性不发生变化。

测试结果: 上升时间 超调量 稳态误差 加水后温降 恢复时间 7min 1.1度 0.3 11.9度 5min (表一)测量结果

10

7. 总结及体会:

此次设计为计算机温度控制系统设计,我努力将微型计算机控制技术及单片机技术的理论知识付诸实践,独立完成了一个基于C51单片机的小型自动控制系统的设计。

整个系统设计分为四部分:测量检测模块,控制调节,驱动执行,按键等等。软件采用了PID算法控制。

在整个紧张而又充实的设计过程中,我认识到:他不单纯只是一个题目,而是要求我对大学三年来所学的知识都要弄懂,并且能够把他们熟练的运用出来,当我完成这份设计的时候,仿佛觉得自己又把大学重新过了一遍,其中的乐趣与收获是很难用语言表达的。同时我也意识到,在大学生涯结束以前,我不禁要掌握书中的基本知识,还要灵活思考,善于变换,这样才能够在今后的运用过程中达到事半功倍的效果。毋庸置疑,只有不断的学习,实践,再学习,再实践,才能使自己不被社会淘汰。

11

参考文献

【1】 张荣标 《微型计算机原理与接口技术》(第二版) 机械工业出版社,

2009.2

【2】 谢维成 杨加国 《单片机原理与应用及C51程序设计》清华大学出版社,

2009.7

【3】 王兆安 《电力电子技术》(第五版) 机械工业出版社,

2009,5

【4】 李晓莹 《传感器与测量技术》 高等教育出版社,

2002

【5】 付家才《单片机实验与实践》 高等教育出版社,

2004

【6】 潘新民 王艳芳 《微型计算机控制技术》第2版 电子工业出版社,

2011

12

本文来源:https://www.bwwdw.com/article/f6ew.html

Top