基于单片机的锅炉温度水位控制系统设计_第1页
基于单片机的锅炉温度水位控制系统设计_第2页
基于单片机的锅炉温度水位控制系统设计_第3页
基于单片机的锅炉温度水位控制系统设计_第4页
基于单片机的锅炉温度水位控制系统设计_第5页
已阅读5页,还剩54页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、目 录中文摘要1英文摘要21 绪论31.1 电热锅炉的应用背景及其控制理论的发展31.2 本文的设计指标42 硬件电路设计52.1 系统方案概述52.2温度检测元件DS18B2062.3 显示模块设计82.4 键盘模块设计92.4.1 键盘工作原理92.4.2 键盘识别方法102.4.3 键盘工作方式102.5 指示及报警电路112.6 功率驱动电路122.6.1 固态继电器简介122.6.2 功率驱动电路设计132.7 水位检测及控制电路132.7.1 水位检测电路132.7.2 水位控制电路142.8电源电路152.9 单片机选型及简介153 软件的设计193.1 系统软件总体概述193.

2、2 主程序193.3 T0中断服务子程序213.3.1 中断系统简介213.3.2 T0中断服务程序的编写233.4 键盘中断服务子程序243.5 PID运算设计253.6 其他子程序介绍273.6.1 显示子程序273.6.2 DS18B20相关子程序283.6.3 PID输出转换程序294 系统的仿真304.1 PID参数整定方法304.2 系统仿真结果315 结论33致谢34参考文献35附录136附录237电热锅炉温度水位控制系统设计摘要:在冶金、化工、机械等各类工业控制中,电热锅炉都得到了广泛应用。它具有环保、高效、体积小等优点。因此对电热锅炉控制系统的研究就显得十分有必要。本文介绍了

3、以AT89S51单片机为核心的温度和液位控制系统的工作原理和设计方法。温度信号由温度芯片DS18B20采集,以数字信号的形式传送给单片机;水位信号由电接点水位计采集,以开关量形式传送给单片机。文中介绍了该控制系统的硬件部分,包括:温度检测电路、温度控制电路、水位检测电路,水位控制电路和其他一些单片机接口电路。文中还介绍了软件设计部分,在这里采用模块化结构编程。软件主要分三个部分:主程序、键盘中断及按键处理程序、T0中断程序。其他的一些子程序包括:温度信号处理程序、数码管显示程序、PID处理程序等。最后利用MATLAB和电热锅炉的近似数学模型,对温度控制进行了仿真。关键词:电热锅炉;AT89S5

4、1;温度控制;水位控制;PID控制The design of temperature and water-level control system of electric boilerAbstract:Electric water boiler has been widely used in every kinds of industrial control,such as metallurgy, chemical industry, machinery etc. So it is very necessary to study the control system of electric w

5、ater boiler. the form digital signalelectric contactsensor,switch forms. Keywords: Electric Water Boiler, AT89S51 MCU, DS18B20 Temperature Chip, Temperature Control, Water-level Control, PID Control.1 绪论1.1 电热锅炉的应用背景及其控制理论的发展 根据国内实际情况和环保上的考虑和要求,燃煤锅炉由于污染并且效率不高,已经逐渐被淘汰;燃油和燃气锅炉也存在着燃料供应部方便和安全性等问题。因此在人口密

6、集的居民区、旅馆、医院和学校,电加热锅炉完全能替代燃煤、燃油、燃气锅炉。 电加热锅炉采用全新加热方式,无污染,完全可以称为绿色环保锅炉。电加热锅炉具有许多优点,使其比其他形式的锅炉更具吸引力,其具体优点如下1:(1) 无污染。由于采用电加热方式,电能直接转换为热能,不需要采用燃烧的方式将化学能转换为热能,因此就不会排放出有害气体及飞灰,不会产生灰渣,完全符合环保方面的要求,更适合安放在人口密集的生活区和办公区。(2) 能量转化效率高。电加热锅炉采用加热元件直接与水接触,加热时转换效率很高,能量转化率也很高,一般可达到95%,而最新最好的锅炉更是能达到98%以上。(3) 锅炉本体结构简单,安全性

7、好。电加热锅炉本体结构非常简单,不需要布置管路,没有燃烧室,没有烟道,故而不会出现燃煤、燃气、燃油锅炉存在的爆炸和泄漏的危险。(4) 体积小,重量轻,占地面积小。由于本体结构简单,使得电热锅炉体积可以做的很小,简单的结构更加便于布置,占地面积也就减小。(5) 锅炉启动、停止速度快,运行负荷调节范围大,调节速度快,操作简单。由于加入元件工作由外部电气开关控制,所以锅炉启停速度快,通过控制各加热元件的开关,可以在很大范围内调节运行负荷,调节操作迅速、简单。与燃煤、燃油、燃气锅炉相比,操作运行更加方便、简单。(6) 可采用计算机监控,完全实现自动化。电热锅炉的温度和水位的控制都能通过计算机完成,使电

8、热锅炉的运行完全实现自动化,最大程度的将计算机技术应用于传统的锅炉行业。由于电加热锅炉是一个具有非线性、大滞后、大惯性、时变性、升温单向性等特点的控制对象3,很难用数学方法建立精确的数学模型,因此用传统的控制理论和方法很难达到很好的控制效果。而这正符合PID控制使用的条件,因而PID控制被广泛用于电热锅炉的控制中,用来取代传统的控制方法6,并获得良好的控制效果。1.2 本文的设计指标本设计要求设计一个以单片机为核心的温度闭环控制系统以及水位控制系统,具体的技术指标如下:a. 恒温温度控制在0-100之间,连续可调,误差在±1之内;b. LED实时显示系统温度,用键盘输入设定的温度;c

9、. 水位控制保持在50cm左右,过高或过低时报警提示。本文需要完成以下工作:详细分析课题任务,设计电源电路,键盘电路,单片机系统,显示电路,执行器电路,报警电路等系统。然后根据课题任务的要求设计出实现控制任务的硬件原理图和软件,并进行仿真调试。2 硬件电路设计2.1 系统方案概述AT89S51DS18B20水位电极SSR加热电阻电磁阀显示电路键盘电路报警电路继电器系统的框图如图2.1所示:图2.1 系统框图如框图所示,系统总体上分为两部分,即温度控制单元和液位控制单元。下面将分别对这两个部分进行说明。从图上能看出,温度控制单元采用DS18B20作为温度采集元件,该元件的输出为数字信号,所以能直

10、接送入单片机,而不需要A/D转换模块。温度信号送入单片机,经过处理后,对固态继电器进行控制,通过I/O口控制固态继电器的通断,从而实现对加热电阻的控制。键盘电路则用来输入设定值,显示电路对系统采集到的温度实时显示。水位控制单元通过水位电极将水位信号送入单片机,由于水位信号设计为开关信号,所以不需要A/D转换模块。单片机根据水位信号,通过I/O口对电磁阀进行控制,从而实现对水位的控制。很显然,该方案较其它相比无论在经济上和实现容易程度上都要好。在进行数据采集时,使用了合适的传感器,这样就不需要使用A/D转换电路。在实现温度控制时不像其它采用D/A转换后再控制调节阀的方法,而是直接外接一个固态继电

11、器,通过内部改变定时器的中断时间来调节一个周期内电子开关的导通和断开时间。同样,在实现液位控制时,也没有使用D/A,而是直接外接继电器,通过控制继电器的吸合控制电磁阀的通断。这样既节省了材料也可以很大程度上减少硬件电路的结构。2.2温度检测元件DS18B204DS18B20温度传感器是美国DALLAS半导体公司推出的一种改进型温度传感器,与传统的热敏电阻等温度元件相比,它能直接读出被测温度,而且可根据实际要求通过简单的编程实现9-12位的数字值读数方式。DS18B20的性能特点如下:l 独特的单线接口仅需要一个端口引脚进行通信;l 多个DS18B20可以并联在唯一的三线上,实现多点组网功能;l

12、 无须外部器件;l 可通过数据线供电,电压范围3.0-5.5V;l 零待机功耗;l 温度以9或12位数字读出;l 用户可以定义报警设置;l 报警搜索命令识别并标志超过程序限定温度(温度报警条件)的器件;VDDVDDDQ64位ROM和一线端口供电方式选择存储和控制逻辑高速缓冲器8位CRC生成器温度传感器高温触发器TH低温触发器TL配置寄存器l 负电压特性,电源极性接反时,温度计不会因发热而烧毁,只是不能正常工作而已。图2.2 DS18B20的内部结构框图正因为DS18B20有如上的优点,在本系统中采用温度芯片DS18B20测量温度。该芯片的物理化学性很稳定,它能用做工业测温元件,且此元件线形较好

13、。在0100摄氏度时,最大线形偏差小于1摄氏度。该芯片直接向单片机传输数字信号,便于单片机处理及控制。DS18B20采用3脚PR-35封装或8脚SOIC封装,其内部结构框图如图2.2所示。64位ROM的结构开始8位是产品类型的编号,接着是每个器件的唯一序号,共48位,最后8位是前面56位的CRC校验码,这也是多个DS18B20可以采用一线进行通信的原因。温度报警触发器TH和TL,可通过软件写入用户报警上下限。温度LSB温度MSBTH用户字节1TL用户字节2配置寄存器保留保留保留CRCTMR1R011111DS18B20温度传感器的内部存储器还包括一个高速暂存RAM和一个非易失性的可电擦除的EE

14、RAM。高速暂存RAM的结构为8字节的存储器,其结构如图2.3示。图2.3 DS18B20字节定义图中,前2个字节包含测得的温度信息,第3和第4字节是TH和TL的拷贝,是易失的每次上电复位时被刷新。第5个字节,为配置寄存器,它的内容用于确定温度值的数字转换分辨率。DS18B20工作时寄存器中的分辨率转换为相应精度的温度数值。该字节各位的定义如图2.3所示。低5位一直为1,TM是工作模式位,用于设置DS18B20在工作模式还是在测试模式,DS18B20出厂时该位被设置为0,用户要去改动,R1和R0决定温度转换的精度位数,来设置分辨率。DS18B20完成温度转换后,就把测得的温度值与RAM中的TH

15、、TL字节内容作比较。若T>TH或T<TL,则将该器件内的报警标志位置位,并对主机发出报警搜索命令作出响应。DS18B20的测温原理描述如下。器件中低温度系数晶振的振荡频率受温度的影响很小,用于产生固定频率的脉冲信号送给减法计数器1;高温度系数晶振随温度变化其振荡频率明显改变,所产生的信号作为减法计数器2的脉冲输出。器件中还有一个计数门,当计数门打开时,DS18B20就对低温度系数振荡器产生的时钟脉冲进行计数进而完成温度测量。计数门开启时间由高温度系数振荡器来决定,每次测量前,首先将-55所对应的一个基数分别置入减法计数器1、温度寄存器中,计数器1和温度寄存器被预置在-55所对应的

16、一个基数值。减法计数器1对低温度系数晶振产生的脉冲信号进行减法计算,当减法计数器1的预置数减到0时,温度寄存器的值加1,减法计数器1的预置将重新被装入,减法计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到减法计数器计数到0时,停止温度寄存器的累加,此时温度寄存器中的是数值就是所测温度值。其输出用于修正减法计数器的预置值,只要计时器门仍未关闭就重复上述过程,直到温度寄存器值大致为被测温度值。图2.4 DS18B20的接线图如图2.4所示,DS18B20温度传感器的1脚接地,2脚作为信号线,与AT89S51的P3.7管脚相接,3脚接电源,3脚与2脚间连接一个4.7K的电阻,用以

17、抬高2脚的电位。2.3 显示模块设计5在一般情况下,单片机使用并行驱动的方式进行LED的显示。但采用并行驱动方式需要占用单片机大量I/O口,使用不太方便。利用串入并出技术,使用74LHC164芯片就可以很容易解决I/O口的问题。采用51单片机的串行方式0,只要两根线(数据与时钟)就能完成显示功能,而且串行口还可以跟其它芯片共用。利用该方法设计的显示系统具有硬件结构简单,软件编程方便,价格低廉的特点。本显示电路共设了四位,分别用于显示温度的百、十、个、小数位。所以显示的温度可以精确到小数点后一位,即0.1。其具体电路如图2.5所示。图2.5 串入并出显示电路2.4 键盘模块设计键盘是计算机不可缺

18、少的输入设备,是实现人机对话的纽带,借助键盘可以向计算机系统输入程序、置数、送操作命令、控制程序的执行走向等,所以应用极为广泛7。 键盘工作原理行列式键盘又称矩阵式键盘。用I/O口线组成行、列结构,按键设置在行列的交点上。因此,在按键数量较多时,可以节省I/O口线。本设计中要应用16位按键,故采用此方法。行线电平状态将由与此行线相连的列电平决定。列线电平如果为低,则行线电平为低;列线电平如果为高,则行线电平亦为高。这是识别矩阵键盘是否被按下的关键。矩阵键盘中行、列线为多线共用,各按键均影响该键所在行和列的电平。按键设置在行、列交点上,行、列线分别连接到按键开关,列线通过上拉电阻接到+5V上。平

19、时无按键动作时,列线处于高电平状态,而当有键按下时,各按键将彼此相互发生影响,所以必须将行、列线信号配合起来作适当的处理,才能确定闭合键的位置。 键盘识别方法按键设置在行、列交点上,行列线分别连接到按键开关的两端。当列线通过上拉电阻接+5V时,被定位在高电平状态。键盘中有无按键按下是由行线送入全扫描字、用行线读行线状态来判断的。其方法是:让所有行线均置为低电平,检查各列线电平是否有变化,如果有变化,则说明有键被按下;如果没有变化,则说明无键被按下。实际编程时应考虑按键抖动的影响,通常采用软件延时(如20ms)的方法进行抖动消除处理。识别具体按键的方法(扫描法)是:逐行置低电平,其余各行置高电平

20、,检查各列线电平的变化,如果某列电平由高电平变为低电平,则可以确定此行此列的交叉点处的按键被按下。 键盘工作方式单片机系统中, CPU既要忙于处理好各项工作任务,又要保证及时响应对键盘的操作,同时还要节省CPU的时间,所以选择一个好的键盘工作方式,可以提高一个单片机系统的工作效率。键盘共有三种扫描方式,即编程扫描工作方式、定时扫描工作方式和中断扫描工作方式。1) 编程扫描工作方式:编程扫描工作方式是利用CPU在完成其他工作的空余,调用键盘扫描子程序来响应键输入要求。在执行键功能程序时,CPU不再响应键输入的要求。2) 定时扫描工作方式:定时扫描工作方式是利用单片机内部定时器产生的定时中断(例如

21、10ms),CPU响应中断后对键盘进行扫描,并在有键按下时转入键功能处理程序,则可以实现定时扫描。3) 中断扫描工作方式:为了进一步提高CPU的工作效率,可以采用中断扫描工作方式,即只有在键盘上有键按下时,发出中断请求,CPU响应中断请求后,转中断服务程序,进行键盘扫描,识别键码。本系统利用P1口对键盘进行控制,采用中断扫描方式的键盘。电路图如图2.6所示,。键盘的键名和对应功能如表2.1所示。图2.6 键盘电路表2.1 键盘设置与功能设定键 名功 能UP在设定温度时,增加设定值,每按一次加1DOWN在设定温度时,减小设定值,每按一次减1ENTER进入键盘输入状态,确定输入的数据停机使其停止加

22、热,停机时停止显示,停止测量2.5 指示及报警电路为使系统的人机交互界面更好,设置了两个指示灯和一个蜂鸣报警器。当水位达到超高报警水位时,蜂鸣器报警,且红灯点亮,告诉工作人员应断开电磁阀,避免了水位溢出引起的危险;当水位达到超低报警水位时,蜂鸣器报警,且绿灯点亮,告诉工作人员应打开电磁阀,避免干烧的危险。具体的电路如图2.7所示。图2.7 指示及报警电路2.6 功率驱动电路 固态继电器简介 功率驱动电路设计图2.8 功率驱动电路本系统功率驱动部分采用单片机控制的固态继电器控温电路,其波形为完整的正弦波,对热惯性较大的被控对象,是一种稳定、可靠、较合理的控制方法,因而本系统采用过零触发方法8。固

23、态继电器控温电路如图2.8所示。固态继电器选用欧姆龙公司的G3NB-240B型。它带有过零触发功能,所以能实现过零触发交流调功。其输出电流在带有散热器的情况下,最大能达到40A;输入电流为7mA,所以单片机的输出信号需要经74LS06,再驱动固态继电器。系统采用SSR,通过过零触发方式,在一个控制周期Tc内,由AT89S51的P2.1口控制SSR的通断率。当P2.1口输出高电平时,SSR才能够过零触发导通。控制P2.1口输出高电平的时间Tx也就控制了Tc内导通周波数n,从而控制输入炉子平均功率的大小,实现控制温度的目的。2.7 水位检测及控制电路 水位检测电路9水位检测电路的目的是产生有效的输

24、入信号。主要原理是利用水的弱导电性。因此通过水面的上升与下降来控制电信号的接通与断开:当水位上升到电极位置时接通电信号;水位低于电极位置时断开电信号。根据电极输出的电信号就能确定水位的位置,将电极输出的电信号当作输入信号经处理后送入单片机。根据这个原理,我们选用五个水位电极,其中四个作为水位检测点,即高水位、低水位、超高水位报警、超低水位报警,另外一个接地作为公共电极。由于水的导电性十分微弱,因此电极送出的电信号十分微弱,不能直接送入单片机,因此需要对该信号进行处理,这里我们选用PNP三极管开关电路。电路接法如图2.9所示。图2.9 水位检测电路当水位没有到达水位电极时,水位电极和公共电极没有

25、导通,三极管截止,射极电压为高电平;当水位到达水位电极时,水位电极与公共电极导通,三极管饱和导通,射极电压为低电平。之所以在水位没到达时输出高电平,是考虑到单片机复位时,各管脚都置高电位,这样就不会在刚复位时产生错误信号。2.7.2 水位控制电路图2.10 水位控制电路本系统使用直流电磁阀控制水位,这里选用ZCW-2型电磁阀,其额定电压为DC12V,功率小于15W,介质温度最高为125,为常闭型。由于单片机输出的控制信号无法直接控制电磁阀的通断,所以使用一个继电器对电磁阀进行控制。另外再使用一只光耦,隔离单片机5V和电磁阀24V电源。具体电路如图2.10所示。当单片机输出低电平时,光耦导通,继

26、电器吸合,电磁阀得电开通,向水箱内注水。2.8电源电路图2.11 电源电路控制系统主控制部分电源需要用5V直流电源供电,电磁阀也需要24V直流电。所以本系统采用如图2.11所示的电源电路,把频率为50Hz、有效值为220V的单相交流电压转换为幅值稳定的5V和24V直流电压。其主要原理是把单相交流电经过电源变压器、整流电路、滤波电路、稳压电路转换成稳定的直流电压。由于输入电压为电网电压,一般情况下所需直流电压的数值和电网电压的有效值相差较大,因而电源变压器的作用显现出来起到降压作用。降压后还是交流电压,所以需要整流电路把交流电压转换成直流电压。由于经整流电路整流后的电压含有较大的交流分量,会影响

27、到负载电路的正常工作。需通过低通滤波电路滤波,使输出电压平滑。稳压电路的功能是使输出直流电压基本不受电网电压波动和负载电阻变化的影响,从而获得稳定性足够高的直流电压。本电路使用集成稳压芯片7805和7812解决了电源稳压问题。2.9 单片机选型及简介由于系统控制方案简单 ,数据量也不大 ,考虑到电路的简单和成本等因素 ,因此在本设计中选用 ATMEL 公司的 AT89S51单片机作为主控芯片。主控模块采用单片机最小系统是由于 AT89S51芯片内含有4 kB的 E2PROM ,无需外扩存储器 ,电路简单可靠 ,其时钟频率为 024 MHz ,并且价格低廉。AT89S51是美国ATMEL公司生产

28、的低功耗,高性能CMOS 8位单片机,片内含4k byte的可系统编程的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准8051指令系统及引脚。它集Flash程序存储器既可在线编程(ISP)也可用传统方法进行编程及通用8位微处理器于单片芯片中。AT89S51提供以下标准功能:40个引脚,4k Bytes Flash片内程序存储器,128 bytes的随机存取数据存储器(RAM),32个外部双向输入/输出(I/O)口,5个中断优先级2层中断嵌套中断,2个16位可编程定时计数器,2个全双工串行通信口,看门狗(WDT)电路,片内时钟振荡器及时钟电路。同时AT8

29、9S51可降至0Hz的静态逻辑操作,并支持两种软件可选的节电工作模式。空闲方式停止CPU的工作,但允许RAM,定时/计时器,串行通信口及中断系统继续工作。掉电方式保存RAM中的内容,但振荡器停止工作并禁止其他所有部件工作直到下一个硬件复位。AT89S51引脚说明:Vcc:电源电压GND:接地P0口:P0口试一组8位漏极开路型双向I/O口,也即地址/总线复用口。作为输出口时,每位能驱动8个TTL逻辑门电路,对端口写“1”可以作为高阻抗输入端用。在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低8位)和数据总线复用,在访问期间激活内部上拉电阻。在Flash编程时,P0口接受指令字节,而在

30、程序校验时,输出指令字节,校验时,要求外接上拉电阻。P1口:P1口时一个带内部上拉电阻的8位双向I/O口,P1的输出缓冲级可驱动(吸收或输出)4个TTL逻辑门电路。对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可做输入口。作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。Flash编程和程序校验期间,P1接受低8位地址。P2口:P2是一个带有内部上拉电阻的8位双向I/O口,P2的输出缓冲级可驱动(吸收或输出)4个TTL逻辑门电路。对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可做输入口。作输入口使用时,因为内部存在上拉电阻,某个引脚被外

31、部信号拉低时会输出一个电流(IIL)。在访问外程序存储器或16位地址的外部数据存储器时,P2口送出高8位地址数据。在访问8位地址的外部数据存储器时,P2口线上的内容(即特殊功能寄存器SFR区中P2寄存器的内容),在整个访问期间不改变。Flash编程或校验时,P2亦接受高位地址和其他控制信号。P3口:P3口是一组带有内部上拉电阻的8位双向I/O口。P3口输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对P3口写入“1”时,它们被内部上拉电阻拉高并可作为输入端口。作输入端口时,被外部拉低的P3口将用上拉电阻输出电流I。P3口除了作为一般的I/O口线外,更重要的用途是它的第二功能,P3口的第

32、二功能如下表2.2所示。表2.2 P3口的第二功能端口功能第二功能端口引脚第二功能RXD(P3.0)串行输入口T0(P3.4)定时/计数器0外部输入TXD(P3.1)串行输出口T1(P3.5)定时/计数器1外部输入INT0(P3.2)外中断0WR(P3.6)外部数据存储器写选通INT1(P3.3)外中断1RD(P3.7)外部数据存储器读选通RST:复位输入。当振荡工作时,RST引脚出现两个机器周期以上高电平将使单片机复位。WDT溢出将使该引脚输出高电平,设置SFR AUXR 的 DISRTO 位(地址8EH)可打开或关闭该功能。DISRTO 位缺省为RESET输出高电平打开状态。复位电路如图2

33、.12(1)所示。ALE/PROG:当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8位字节。即使不访问外部存储器,ALE仍以时钟振荡频率的1/6输出固定的正脉冲信号,因此它可对外输出时钟或用于定时目的,要注意的是:第当访问外部数据存储器时将跳过一个ALE脉冲。如有必要,可通过对特殊功能寄存器(SFR)区中的8EH单元的D0位置位,可禁止ALE操作。该位禁位后,只有一条MOVX 和MOVC指令ALE才会被激活。此外,该引脚伎被微弱拉高,单片机执行外部程序时,应设置ALE无效。(1)(2)图2.12 复位电路和晶振电路:程序储存允许()输出是外部程序存储器的读选

34、通信号,当AT89S51由外部程序存储器取指令(或数据)时,每个机器周期两次PSEN有效,即输出两个脉冲。当访问外部数据存储器,没有两次有效的PSEN信号。EA/VPP:外部访问允许。欲使CPU公访问外部程序存储器(地址0000HFFFFH),EA端必须保持低电平(接地)。需注意的是:如果加密位LB1被编程,复位时内部会锁存EA端状态。如EA端为高电平(接Vcc端),CPU则执行内部程序存储器中的指令。Flash存储器编程时,该引脚加上12V的编程电压Vpp。XTAL1:振荡器反相放大器及内部时钟发生器的输入端。XTAL2:振荡器反相放大器的输出端。晶振电路如图2.12(2)所示。3 软件的设

35、计3.1 系统软件总体概述根据控制系统硬件设计的软件程序,实际上就是对系统的管理程序和控制程序进行设计。由于整个系统软件比较大,为了便于编写、调试、修改和增删,系统软件的编制采用模块化的结构,即整个控制软件由许多独立的小模块组成,它们之间通过软件接口连接,主控制程序主要包括条件判断和子程序调用等关键部分。因此本系统的软件大体可分为三个部分:主程序,键盘中断服务程序,T0中断服务程序。主程序主要对内存单元进行分配,将一些量值赋初值,对中断系统进行初始化操作;同时由于水位控制程序相对简单,因此将其放入主程序中循环执行。键盘中断服务程序对键盘中断进行响应,然后扫描键盘,转入对应的键值程序。T0中断子

36、程序用来进行采样、数据转换、PID运算和控制输出。3.2 主程序图3.1 主程序流程图主程序首先对内存单元进行分配和初始化,后面程序中将使用的中断系统和定时系统的初始化也在主程序中完成。水位控制是对电接点水位电极送入单片机的开关信号进行判断,当为低电平的时候作出相应动作。由于水位控制的程序相对简单,所以主程序中循环执行。这样的处理使主程序起到了分散功能的作用,即主程序会变得很容易编写,而具体的功能都由相对应的功能子程序完成。主程序的流程图如图3.1所示。具体程序如下(内存单元的分配见附录):ORG0000H;LJMP MAIN;ORG1000H; MAIN:;主程序开始MOVSP,#60H;初

37、始化堆栈MOV KEY_BUF_G,#00H ;由于KEY_BUF是由用户输入的,所以先赋值初始化MOV KEY_BUF_S,#00HMOV KEY_BUF_B,#00HMOV UK,#00H; PID中一些数值初始化MOV UK1,#00H;MOV ERR0,#00H;MOV ERR1,#00H;MOV ERR2,#00H;MOV KP,#00H;MOV KI,#00H;MOV KD,#00H;MOV TMOD,#11H;定时器0、1都为16位定时器MOV TH0,#3CH;定时器0的定时时间为0.05S,所以算出定时初值为3CB0HMOV TL0,#0B0H;SETB EA;开中断SETB

38、 EX0;开外部中断,键盘使用CLR IT0;外部中断为低电平触发SETB ET0;开T0中断SETB ET1;开T1中断SETB TR0;T0开始运行MOV 58H,#50H;采样周期4SSHUIWEI:JNB P2.3,L1;水位过高,跳转SETB P1.0;SETB P1.2;JNB P2.2,L2;高水位,跳转JNB P2.5L3;水位过低,跳转SETB P1.0;SETB P1.1;JNB P2.4L4;低水位,跳转SJMP SHUIWEI;L1:LCALL SOUND;CLR P1.2;红灯亮,告知为过高水位报警L2:SETB P2.0;电磁阀关断,停止加水SJMP SHUIWEI

39、;L3:LCALL SOUND;CLR P1.1;绿灯亮,告知为过低水位报警L4:CLR P2.0;电磁阀开通,加水SJMP SHUIWEI;3.3 T0中断服务子程序 中断系统简介AT89S51单片机的中断系统的基本特点是:有5个固定的可屏蔽中断源,3个在片内,2个在片外,它们在程序存储器中各有固定的中断入口地址,由此进入中断服务程序;5个中断源有两级中断优先级,可形成中断嵌套;2个特殊功能寄存器用于中断控制和条件设置的编程5。5个中断源的符号、名称及产生的条件如下:INT0:外部中断0,由P3.2端口线引入,低电平或下跳沿引起。INT1:外部中断1,由P3.3端口线引入,低电平或下跳沿引起

40、。T0:定时器/计数器0中断,由T0的溢出引起。T1:定时器/计数器1中断,由T1的溢出引起。TI/RI:串行I/O中断,串行端口完成一帧字符发送/接受后引起。中断系统有两个控制寄存器IE和IP,它们分别用来设定各个中断源的打开/关闭和中断优先级。此外,在TCON中另有4位用于选择引起外部中断的条件并作为标志位。1) 中断允许寄存器-IEIE在特殊功能寄存器中,字节地址为A8H,位地址(由低位到高位)分别是A8H-AFH。IE用来打开或关断各中断源的中断请求,基本格式如下:(A8H)IEEAESET1EX1ET0EX0EA:CPU中断总允许位。EA=1,CPU开放中断,每个中断源是被允许还是被

41、禁止,分别由各自的允许位确定;EA=0,CPU屏蔽所有的中断请求,称为关中断。ES:串行口中断允许位。ES=1允许串行口中断;ES=0,禁止串行口中断。ET1:T1中断允许位。ET1=1,允许T1中断;ET1=0,禁止T1中断。EX1:外部中断1允许位。EX1=1,允许外部中断1中断;EX1=0,禁止外部中断1中断。ET0:T0中断允许位。ET0=1,允许T0中断;ET0=0,禁止T0中断。EX0:外部中断0允许位。EX0=1,允许外部中断0中断;EX0=0,禁止外部中断0中断。2) 中断优先级寄存器-IPIP在特殊功能寄存器中,字节地址为B8,位地址(由低位到高位)分别为B8H-BFH,IP

42、用来设定各个中断源属于两级中断的哪一级,IP的基本格式如下所示:(B8H)IPPSPT1PX1PT0PX0PS:串行口中断优先级控制位。PS=1,设定串行口为高优先级中断;PS=0,为低优先级。PT1:T1中断优先级控制位。PT1=1,设定定时器T1为高优先级中断;PT1=0,为低优先级。PX1:外部中断1中断优先级控制位。PX1=0,设定外部中断1为高优先级中断;PX1=0,为低优先级。PT0:T0中断优先级控制位。PT0=1,设定定时器T0为高优先级中断;PT0=0,为低优先级。PX0:外部中断0中断优先级控制位。PX0=0,设定外部中断1为高优先级中断;PX0=0,为低优先级。在AT89

43、S51单片机系统中,高级中断能够打断低级中断以形成中断嵌套;同级中断之间,或低级对高级中断则不能形成中断嵌套。若几个同级中断同时向CPU请求中断响应,则CPU按如下顺序确定响应的先后顺序:INT0>T0>INT1>T1>RI/TI。 T0中断服务程序的编写图3.2 T0中断子程序流程图定时器0的中断子程序主要用来完成数据采集及显示、数据处理、PID运算和输出控制。定时器0选择工作方式1,即16位计数器。定时初值为TH0=3CH,TL0=B0H,即X=15536,这样可得到定时时间为,由于采样周期为4s,所以需要对溢出进行计数,当溢出80次时才执行一次中断服务程序,这样就

44、实现了采样周期为4s。T0中断服务子程序流程图如图3.2所示。具体程序见附录2。3.4 键盘中断服务子程序当ENTER被按下时,进入键盘输入状态,然后进行键盘扫描,当有键位按下时,转入响应的键位子程序,当ENTER再被按下时,退出中断服务子程序,键盘输入完成。键盘中断服务子程序流程图如图3.3所示。程序如下:KEY_SCAN:PUSH PSW;保护现场LCALL K_DELAY;软件去抖JB P3.2,EXIT;JB P1.5,EXIT ;如果有Enter键入,则开始键盘输入JB P1.7,EXIT;CLR ENTER_FLAG ;每次进来都赋值输入标志,设置为0MOV KEY_BUF_G,D

45、IS_BUF_G ;将当前的温度赋值给KEY_BUF,也就是说是以当前;温度为基准,进行加减的MOV KEY_BUF_S,DIS_BUF_SMOV KEY_BUF_B,DIS_BUF_BJB ENTER_FLAG,EXIT ;如果输入完成,ENTER_FLAG则为1,退出键盘程序CLR P1.4;JNB P1.6,KEY_UP;JNB P1.7,KEY_DOWN;CLR P1.5;JNB P1.6,KEY_SHUTDOWN;JNB P1.7,KEY_ENTER;LCALL DISPLAY;EXIT:POP PSW;RETI;图3.3 键盘中断子程序的流程图3.5 PID运算设计在模拟控制系统中

46、,其过程是将被测参数,如温度、压力、流量、成分、液位等,由传感器变换成统一的标准信号后输入调节器,在调节器中与给定值进行比较,再把比较出来的差值经PID运算后送到执行机构,改变进给量,以达到自动调节的目的。这种系统多用电动或电气单元组合仪表DDZ或QDZ来完成。而在数字控制系统中,则使用数字调节器来代替模拟调节器。其调节过程是首先采集过程参数的信号并通过模拟量输入通道将模拟量变成数字量,这些数字量通过计算机按一定控制算法进行运算处理,运算结果经D/A转换成模拟量后由模拟量输出通道输出,并通过调节机构去控制进给量,以达到给定值。根据偏差的比例(P)、积分(I)、微分(D)进行控制的调节器(简称P

47、ID调节器),是连续系统中技术成熟、应用最为广泛的一种调节器。它的结构简单,参数易于调整,在长期应用中已积累了丰富的经验。特别是在工业过程控制中由于控制对象的精确数学模型难以建立,系统的参数又经常发生变化,运用现代控制理论分析综合要耗费很大代价进行模型辨识。模型辨识,是通过对系统输入/输出数据的测量与处理,从而建立系统的数学模型。当用模型辨识代替系统辨识,往往不能得到预期的效果,所以人们常采用PID调节器,并根据经验进行在线整定。整定即实验和分析的方法来确定PID调节器的参数。随着计算机特别是微型计算机技术的发展,PID数字控制算法已能用微机和单片机简单实现。下面介绍一下PID控制中三个环节的

48、作用:1) 比例控制能迅速反应误差,但比例控制不能消除稳态误差,Kp的加大,会引起系统的不稳定。2) 积分控制的作用是,只要系统存在误差,积分控制作用就不断的积累,控制输出量以消除误差,因而,只要有足够的时间,积分控制将能完全消除误差,积分作用太强会使系统超调加大,甚至使系统出现振荡。3) 微分控制可以减小超调量,克服振荡,使系统的稳定性提高,同时加快系统的动态响应速度,减小调整时间,从而改善系统的动态性能。PID调节之所以不衰,而且在数字化计算机时代仍能得到广泛应用,主要有以下几方面的有点:1) 技术成熟。PID控制是连续控制系统中技术最成熟,且应用最广泛的一种控制方法。它的结构灵活,不仅可

49、以用常规的PID调节,而且可以根据系统的要求,采用各种PID的变种,如PI、PD控制,不完全微分控制,积分分离式PID控制,带死区的PID控制,变速积分PID控制,比例PID控制等等。在PID控制系统中,系统参数整定方便,而且在大多数工业生产过程中效果良好。2) 易被人们熟悉和掌握。生产技术人员及操作人员都比较熟悉它,并在实践中积累了丰富的经验,特别是一些在工作时间比较长的工程技术人员更是如此。到目前为止,仍有许多工业对象得不到或很难得到精确的数学模型,因此,应用直接数字控制方法比较困难甚至根本不可能,所以必须应用PID算法。3) 控制效果好。虽然计算机控制是离散的,但对于时间常数比较大的系统

50、来说,其近似于连续变化。因此,用数字PID完全可以代替模拟调节器,而且可以得到比较满意的效果。所以,用数字方式模拟PID调节器仍是目前应用比较广泛的方法之一。综上,由于软件系统的灵活性,PID算法可以得到修正而更加完善。本系统选用整型变量来实现PID算法,由于是用整型变量来做,所以不是很精确,但对于本系统所要求的电热锅炉来说,这个精度足够了。数字PID控制算法的实现方式有位置型算法和增量型算法。由于位置型算法控制算式不够方便,需要累加偏差,不仅要占用较多的存储单元,而且不便于编写程序,为此,我们选用增量型算法。增量型算法的算式如下9: (3.5.1) (3.5.2)其中 (3.5.3)根据式(

51、3.5.1)和式(3.5.2)编写的程序见附录2。3.6 其他子程序介绍 显示子程序由于采用单片机的串口外接串入并出移位寄存器驱动显示,越早写入串口的数据移到离单片机越远的显示器。这样显示码的存储顺序和显示器的顺序刚好相反11。显示时,将显示缓存35H-38H中的显示码依次取出,写入单片机的串口中即可。程序清单如下:DISPLAY:MOV SCON,#00H ;串口方式0MOV R1,#04H;显示四位MOV R2,#0;用于判断是否应加入小数位MOV DPTR,NUMDATA;数字字型码地址MOV R0, DIS_BUF_X;移入显示数据的地址LOOPDIS:MOV A,R0;移入AMOVC

52、 A,A+DPTR;取值MOV 24H,A;加入一寄存器用于缓冲MOV A,R2;CJNE A,#2,NOT2;MOV A,24H;SETB ACC.7;判断是否为个位,如是则点亮小数点AJMP DD;NOT2:MOV A,24H;DD:MOV SBUF ,A;发送WAITDIS:JNB TI,WAITDIS;等待发送CLR TIINC R0;地址增1DJNZ R1,LOOPDIS;发送完毕否?OUTDIS: RET;NUMDATA DB C0H,F9H,D8H,B0H,99H,92H,82H F8H,80H,98H;09的字形码 DS18B20相关子程序由于DS18B20是在一根I/O线上读

53、写数据,因此,对读写的数据位有着严格的时序要求。DS18B20有严格的通信协议来保证各位数据传输的正确性和完整性。该协议定义了几种信号的时序:初始化时序、读时序、写时序。所有时序都是将主机作为主设备,单总线器件作为从设备。而每一次命令和数据的传输都是从主机主动启动写时序开始,如果要求单总线器件回送数据,在进行写命令后,主机需启动读时序完成数据接收。数据和命令的传输都是低位在先。因此需要编写DS18B20的复位子程序、读DS18B20子程序、写DS18B20子程序。相应的程序见附录的程序清单。由于DS18B20转换后的代码并不是实际的温度值,所以要进行计算转换。温度高字节(MS Byte)高5位

54、是用来保存温度的正负(标志为S的bit11bit15),高字节(MS Byte)低3位和低字节来保存温度值(bit0 bit10)。其中低字节(LS Byte)的低4位来保存温度的小数位(bit0 bit 3)。由于本程序采用的是0.0625的精度,小数部分的值,可以用后四位代表的实际数值乘以0.0625,得到真正的数值,数值可能带几个小数位,所以采取小数舍入,保留一位小数即可。也就说,本系统的温度精确到了0.1度。整数部分的值经过移位,存入相应的内存单元,用于后面数据处理,进行PID运算;同时将其转换为BCD码,用于显示。具体的数据转换程序请查阅附录2。 PID输出转换程序本系统采用过零触发

55、方式,即在正弦波过零的时刻通过令单片机的I/O口低电平使电路导通,这样通过控制I/O口低电平有效的时间实现对正弦波导通周波数的控制,进而对加热功率进行控制。简单的说,就是假设最大功率加热时导通100个周期的正弦波,那导通50个周期正弦波时加热功率就变为50%,以此类推。PID运算的输出是一个0-255的值,这里我们假设每个单位输出对应半个周期正弦波的导通,即10对应5个周期正弦波,那么255就对应127.5个正弦波,而每个正弦波的周期为20ms。通过这样的关系我们就能建立起PID的输出u(k)与导通时间的关系: ()而导通时间与定时器T1的初值关系为: ()通过以上两式可编写将PID输出u(k)转换为定时器T1定时初值的子程序U(K)_TO_T1。具体程序见附录2。4 系统的仿真要对系统进行仿真,就需要知道系统的数学模型,而电热锅炉是一个具有非线性、大滞后、大惯性、时变性、升温单向性等特点的控制对象,其精确的数学模型比较难测得,因此在仿真的时候选取一个近似模型作为电热锅炉的数学模型。一般情况下,电热锅炉的近似数学模型可以描述为一个一阶的、无振荡、纯时间滞后的惯性环节。在查阅相关资料后,这里我们取电热锅炉的近似数学模型12为:我们将用这个模型进行仿真。4.1 PID参数整定方法对本系统的仿真,就是对PID控制的三个参数(即Kp、Ki、K

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论