电加热锅炉的自动控制解析.docx
《电加热锅炉的自动控制解析.docx》由会员分享,可在线阅读,更多相关《电加热锅炉的自动控制解析.docx(24页珍藏版)》请在冰豆网上搜索。
电加热锅炉的自动控制解析
电加热锅炉的自动控制
姓名:
学号:
B11040120
日期:
2014.5.20
目录
摘要1
第1章绪论2
第2章控制要求3
2.1设计要求3
第3章系统总体设计方案4
3.1总体设计方案4
3.2器件的选取4
3.2.1控制器的选取4
3.2.2电源选取6
3.2.3温度传感器选取6
第4章硬件设计7
4.1时钟电路7
4.2复位电路7
4.3键盘电路8
4.4显示电路8
4.5温度检测电路9
4.6加热电路10
第5章软件设计12
5.1系统主函数设计流程图12
5.2系统中断处理函数设计流程图13
第6章系统调试与分析14
6.1硬件调试14
6.2软件调试14
6.2.1软件电路故障及解决方法14
6.2.2软件调试方法15
参考文献17
附录1程序18
摘要
近年来随着计算机在社会领域的渗透,单片机的应用正在不断地走向深,同时带动传统控制检测日新月益更新。
在实时检测和自动控制的单片机应用系统中,单片机往往是作为一个核心部件来使用,仅单片机方面知识是不够的,还应根据具体硬件结构,以及具体应用对象特点的软件结合,以作完善。
本文从硬件和软件两方面来讲述电加热锅炉自动控制过程,在控制过程中主要应用AT89C51、ADC0809、LED显示器,而主要是通过DS18B20温度传感器采集环境温度,以单片机为核心控制部件,并通过数码管显示实时温度的一种数字温度计。
软件方面采用汇编语言来进行程序设计,使指令的执行速度快,节省存储空间。
为了便于扩展和更改,软件的设计采用模块化结构,使程序设计的逻辑关系更加简洁明了,使硬件在软件的控制下协调运作。
而系统的过程则是:
首先,通过设置按键,设定恒温运行时的温度值,并且用数码管显示这个温度值.然后,在运行过程中将采样的温度模拟量送入A/D转换器中进行模拟/数字转换,再将转换后的数字量用数码管进行显示,最后用单片机来控制加热器,进行加热或停止加热,直到能在规定的温度下恒温加热。
关键词:
单片机系统;传感器;模数转换器
第1章绪论
选题背景及意义
二十一世纪是科技高速发展的信息时代,电子技术、微型单片机技术的应用更是空前广泛,伴随着科学技术和生产的不断发展,需要对各种参数进行温度测量。
因此温度一词在生产生活之中出现的频率日益增多,与之相对应的,温度控制和测量也成为了生活生产中频繁使用的词语,同时它们在各行各业中也发挥着重要的作用。
如在日趋发达的工业之中,利用测量与控制温度来保证生产的正常运行。
在农业中,用于保证蔬菜大棚的恒温保产等。
温度是表征物体冷热程度的物理量,温度测量则是工农业生产过程中一个很重要而普遍的参数。
温度的测量及控制对保证产品质量、提高生产效率、节约能源、生产安全、促进国民经济的发展起到非常重要的作用。
由于温度测量的普遍性,温度传感器的数量在各种传感器中居首位。
而且随着科学技术和生产的不断发展,温度传感器的种类还是在不断增加丰富来满足生产生活中的需要。
在单片机温度测量系统中的关键是测量温度、控制温度和保持温度,温度测量是工业对象中主要的被控参数之一。
因此,单片机温度测量则是对温度进行有效的测量,并且能够在工业生产中得到了广泛的应用,尤其在电力工程、化工生产、机械制造、冶金工业等重要工业领域中,担负着重要的测量任务。
在日常生活中,也可广泛实用于地热、空调器、电加热器等各种家庭室温测量及工业设备温度测量场合。
但温度是一个模拟量,如果采用适当的技术和元件,将模拟的温度量转化为数字量虽不困难,但电路较复杂,成本较高。
我国的电加热锅炉在10多年前问世,由于受到当时电力因素的制约,发展非常缓慢,只有几个非锅炉行业的厂家在生产。
1998年以来,特别是2000年,电热锅炉市场迅速发展。
行业内许多厂家都已经或者正在准备生产电热锅炉。
由于起步晚、规模小,电加热锅炉的控制水准很低,甚至很原始。
电加热锅炉的控制与燃油(气)锅炉的控制有很大的不同:
1)电流巨大,属大电流或超大电流控制;
2)没有现成的燃烧器及其程控器,锅炉的加热过程和控制品质完全由自己决定;
3)比燃油(气)锅炉的自动化程度和蓄热要求更高,外观要求也更现代、更美观。
因此,电热锅炉控制存在较大难度。
1998年我们抓住了市场机遇,再次把工业控制技术应用于电加热锅炉控制领域,把大型电力负荷控制的成功经验移植到电加热锅炉的大电流控制上来,率先提出了电加热锅炉的循环投切和分段模糊控制的控制模式,较好地解决了电加热锅炉控制的理论和实际问题。
国内电加热炉的加热形式主要有以下两个:
1电阻加热式
国内绝大多数厂家采用该方式,并选用电阻式管状电热元件。
电阻加热方式的电气特点是锅水不带电,但在电加热元件漏水或爆裂时会使锅水带电或称漏电。
另外,受电热元件绝缘导热层的绝缘程度的影响,电热管存在一定的泄漏电流。
泄漏电流的国家标准是<0.5mA。
该方式在结构上易于叠加组合,控制灵活,更换方便。
2电磁感应加热式
该方式的加热原理是:
当电流通过加热线圈时,就会形成电磁场,把金属锅壳置于电磁场之中,就会使锅壳产生涡流,并导致其发热,从而完成对锅水加热的目的。
其电流愈大,发热量愈大。
电磁感应加热方式在工业上的应用较早,典型的应用就是中频加热炉。
但是把它应用到锅炉上,确属首次,很有创意值得关注。
目前国内只有一家厂家生产这种电热锅炉。
该方式的优点是,与水和锅炉是非接触式加热,因此绝无漏电的可能性;另一个优点是该方式须用可控硅做驱动输出,因此具有无触点开关的独特优势;机械噪声小,可多级或无级调节,使用寿命长。
该方式的缺点是热效率比电阻加热方式要稍低,约96%。
这是因为后者是直接与锅水接触加热,而前者是间接加热,况且作为功率驱动元件的可控硅元件,其本身也要消耗一定功率。
第2章控制要求
2.1设计要求
电加热炉随着科学技术的发展和工业生产水平的提高已经在冶金、化工、机械等各类工业控制中得到了广泛应用并且在国民经济中占有举足轻重的地位。
对于这样一个具有非线性、大滞后、大惯性、时变性、升温单向性等特点的控制对象很难用数学方法建立精确的数学模型因此用传统的控制理论和方法很难达到好的控制效果。
单片机以其高可靠性、高性能价格比、控制方便简单和灵活性大等优点在工业控制系统、智能化仪器仪表等诸多领域得到广泛应用。
采用单片机进行炉温控制可以提高控制质量和自动化水平。
在本控制对象电阻加热炉功率为800W,由220V交流电供电,采用双向可控硅进行控制。
本设计针对一个温度区进行温度控制,要求控制温度范围50~150C保温阶段温度控制精度为正负1度。
选择合适的传感器,计算机输出信号经转换后通过双向可控硅控制器控制加热电阻两端的电压。
其对象问温控数学模型为
G(s)=
其中,时间常数Td=350秒,放大系数Kd=50,滞后时间=10秒。
第3章系统总体设计方案
3.1总体设计方案
电加热炉温度控制系统原理图如图2-1所示。
图2-1主要由时钟电路、复位电路、显示电路、温度检测电路、报警电路、加热电路及按键电路等组成。
图3-1温度控制系统原理图
3.2器件的选取
3.2.1控制器的选取
控制器选择AT89C51单片机。
AT89C51提供以下标准功能:
4k字节Flash闪速存储器,128字节内部RAM,32个I/O口线,两个16位定时/计数器,一个5向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路。
同时,AT89C51可降至0Hz的静态逻辑操作,并支持两种软件可选的节电工作模式。
空闲方式停止CPU的工作,但允许RAM,定时/计数器,串行通信口及中断系统继续工作。
掉电方式保存RAM中的内容,但振荡器停止工作并禁止其它所有部件工作直到下一个硬件复位。
引脚图如图3-2
图3-2AT89C51单片机引脚图
3.2.2电源选取
本系统所需电源有220V交流电、直流5V电源和低压交流电,故需要变压器、整流装置和稳压芯片等组成电源电路。
电源变压器是将交流电网220V的电压变为所需要的电压值,然后通过整流电路将交流电压变为脉动的直流电压。
由于此脉动的直流电压还含有较大的纹波,必须通过滤波电路加以滤除,从而得到平滑的直流电压。
但这样的电压还随电网电压波动(一般有+-10%左右的波动)、负载和温度的变化而变化。
因而在整流、滤波电路之后,还需要接稳压电路。
稳压电路的作用是当电网电压波动、负载和温度变化时,维持输出直流电压稳定。
整流装置采用二极管桥式整流,稳压芯片采用7805,配合电容将电压稳定在5V,供控制电路、测量电路和动执行电路中弱电部分使用。
除此之外,220V交流电还是加热电阻两端的电压,通过控制双向可控硅的导通与截止来控制加热电阻的功率。
低压交流电即变压器二次侧的电压,通过过零检测电路检测交流电的过零点,入单片机后,控制每个采样周期内双向可控硅导通正弦波个数的方法来调节加温功率。
3.2.3温度传感器选取
温度检测元件选用温度传感器DS18B20其,工作性能如下:
1)1-Wire数据通信;
2)可用数据线供电,电业范围3~5.5V;
3)最高12位分辨率;
4)12位分辨率时的最大工作周期为750ms;
5)可选择寄生工作方式;
6)检测温度范围为-55℃~+125℃;
7)被测温度在-10℃~+85℃时,精度为±0.5℃;
8)内置E²PROM,限温报警功能;
9)64位光刻ROM,内置产品序列号,方便多机挂接;
10)封装形式多样;
11)负压特性。
电源极性接反时,芯片不会烧毁。
第4章硬件设计
4.1时钟电路
图4-1时钟电路
89C51芯片内部有一个高增益反相放大器,用于构成振荡器。
反相放大器的输入端为XTAL1,输出端为XTAL2,两端跨接石英晶体及两个电容可以构成稳定的自激振荡器。
电容器C1和C2通常选取30pF左右,可稳定频率并对振荡频率有微调作用。
振荡脉冲频率范围为0~24MHz。
本设计采用12MHz的晶振。
4.2复位电路
图4-2复位电路
复位操作有上电自动复位和按键手动复位两种方式。
本设计采用两种复位方式。
4.3键盘电路
图4-3键盘电路图
这里键盘的设计用3个按键,其中KEY1用来调整整个功能的设定,KEY2用来增加设定值,KEY3用来减少设定值。
将其三个端口分别与P1.5、P1.6、P1.7相互连接。
4.4显示电路
本次设计选用LCDLM016L液晶显示屏作为系统的显示器件,如图4-4所示CDLM016L采用标准的16脚接口,仿真时隐藏了背光正极和背光负极两个引脚。
它通过D0-D8位数据端来与单片机进行数据和指令传输,这里我们将它与单片机的P0口连接。
在显示屏上显示的内容是设定的温度值。
图4-4显示部分电路图
4.5温度检测电路
温度传感器与单片机的连接情况如下图4-5所示。
温度传感器DS18B20将检测到的环境实时温度进行A/D转换和放大,然后串行送入单片机P1.7口,便于单片机将此数值与设定的温度值进行比较,然后先做出相应反应。
在仿真时,我们只能通过按18B20上的加减按钮来调节实时温度,是一个模拟的过程。
图4-5温度检测电路图
4.6加热电路
加热电路图如图3-6所示,图中R5为加热电阻,RL1为继电器,继电器的一段与单片机P2.7口相连;首先设定一个温度值,当温度小于给定值时,由P2.7口控制使继电器闭合,加热电阻R5电路接通,开始加热;当所加温度超过给定温度时,报警器发出声音报警,此时再有单片机发出命令使继电器断开,这时加热电阻R5电路断开,停止加热,使用自然冷却的方法;当温度小于给定值时,再进行加热,依次循环。
图4-6加热电路图
第5章软件设计
软件的设计主要包括系统主函数设计流程图和系统中断处理函数设计流程图。
5.1系统主函数设计流程图
图5-1系统主函数设计流程图
5.2系统中断处理函数设计流程图
Y
N
Y
N
N
Y
图5-2系统中断处理函数设计流程图
第6章系统调试与分析
单片机应用系统样机组装好以后,便可进入系统的在线(联仿真器)调试,其主要任务是排除样机硬件故障,并完善其硬件结构,试运行所设计的程序,排除程序错误,优化程序结构,使系统达到期望的功能,进而固化软件,使其产品化。
6.1硬件调试
单片机应用系统的硬件和软件调试是交叉进行的,但通常是先排除样机中明显的硬件故障,尤其是电源故障,才能安全地和仿真器相连,进行综合调试。
硬件电路故障及解决方法
1)错线、开路、短路:
由于设计错误和加工过程中的工艺性错误所造成的错线、开路、短路等故障。
解决方法:
在画原理图时仔细检查、校正即可解决。
2)元器件损坏:
由于对元器件使用要求的不熟悉及制作调试过程中操作不当致使器件损坏。
解决方法:
在设计过程中要明确各元器件的工作条件,严格按照制作要求进行操作,损坏的元器件要及时更换,以免损坏其他元件或影响电路功能
的实现。
3)电源故障:
设计中存在电源故障,即上电后将造成元器件损坏、无法正常供电,电路不能正常工作。
电源的故障包括:
电压值不符和设计要求,电源引出线和插座不对应,各档电源之间的短路,变压器功率不足,内阻大,负载能力差等。
解决方法:
电源必须单独调试好以后才能加到系统的各个部件中。
本设计中就出现电源故障经过一个稳压电路才使其正常工作。
6.2软件调试
6.2.1软件电路故障及解决方法
设计软件部分出现这种错误的现象:
1)当以断点或连续方式运行时,目标系统没有按规定的功能进行操作或什么结果也没有,这是由于程序转移到意外之处或在某处死循环所造成的。
解决方法:
这类错误的原因是程序中转移地址计算错误、堆栈溢出、工作寄存器冲突等。
在采用实时多任务操作系统时,错误可能在操作系统中,没有完成正确的任务调度操作,也可能在高优先级任务程序中,该任务不
释放处理器,使CPU在该任务中死循环。
通过对错误程序的修改使其实现预期的功能。
2)不响应中断
CPU不响应中断或不响应某一个中断这种错误的现象是连续运行时不执行中断任务程序的规定操作,当断点设在中断入口或中断服务程序中时碰不到断点。
错误的原因有:
中断控制寄存器(IE,IP)的初值设置不正确,使CPU没有开放中断或不许某个中断源请求;或者对片内的定时器、串行口等特殊功能寄存器和扩展的I/O口编程有错误,造成中断没有被激活;或者某一中断服务程序不是以RETI指令作为返回主程序的指令,CPU虽已返回到主程序但内部中断状态寄存器没有被清除,从而不响应中断;或由于外部中断源的硬件故障使外部中断请求无效。
解决方法:
修改中断控制寄存器(IE,IP)的初值设置。
3)结果不正确
目标系统基本上已能正常操作,但控制有误动作或者输出的结果不正确。
这类错误大多是由于计算程序中的错误引起的。
错误原因没有查明,没有解决。
6.2.2软件调试方法
软件调试所使用的方法有:
计算程序的调试方法、综合调试法等。
1)计算程序的调试方法
计算程序的错误是一种静态的固定的错误,因此主要用单拍或断点运行方式来调试。
根据计算程序的功能,事先准备好一组测试数据。
调试时,用防真器的写命令,将数据写入计算程序的参数缓冲单元,然后从计算程序开始运行到结束,运行的结果和正确数据比较,如果对有的测试数据进行测试,都没有发生错误,则该计算程序调试成功;如果发现结果不正确,改用单步运行方式,即可检查出错误所在。
计算程序的修改视错误性质而定。
若是算法错误,那是根本性错误,应重新设计该程序;若是局部的指令有错,修改即可。
如果用于测试的数据没有全部覆盖实际计算的原始数据的类型,调试没有发现错误可能在系统运行过程中暴露出来。
2)综合调试
在完成了各个模块程序(或各个任务程序)的调试工作以后,便可进行系统的综合调试。
综合调试一般采用全速断点运行方式,这个阶段的主要工作社排除系统中遗留的错误以提高系统的动态性能和精度。
在综合调试的最后阶段,应在目标系统的晶振频率工作,使系统全速运行目标程序,
实现了预定功能技术指标后,便可将软件固化,然后在运行固化的目标程序,成功后目标系统便可脱机运行。
一般情况下,这样一个应用系统就算研制成功了。
本设计KeilC51对单片机多点温度测量系统进行了软件编写。
在编写过程中,必须严格按照DS18B20的工作时序严格编写,否则温度无法准确测量。
硬件电路的设计与仿真是通过Proteus软件来设计。
参考文献
[1]刘国荣.计算机控制技术与应用[M].北京:
机械工业出版社,2012
[2]王树青.先进控制技术及其应用[M],科学出版社,2001
[3]王卫兵.计算机控制系统通信[M].北京:
机械工业出版社,2009.
[4]吴勤勤.控制仪表及装置[M].北京:
化学工业出版社,2004.
[5]孙洪程.过程控制工程设计[M].北京:
化学工业出版社,2001.
[6]孙洪程等编,计算机控制工程设计[M],化学工业出版社,2001
[7]刘美俊.传感器应用技术[M].福州:
福建科学技术出版社出版,2004.
[8]王树.计算机系统设计与应用[M].北京:
机械工业出版社,2005.
[9]何超.微机控制技术[M].北京:
北京航空航天大学出版社,2005.
[10]张斗章.计算机控制讲述与系统应用[M].北京:
机械工业出版社,2005.
附录1程序
#include
#defineucharunsignedchar
#defineuintunsignedint
ucharcodetable[]={
0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
sbitwei1=P2^0;
sbitwei2=P2^1;
sbitwei3=P2^2;
sbitwei4=P2^3;
sbitled=P2^5;
sbitdq=P2^6;
sbitdeal=P2^7;
sbitkey1=P1^5;
sbitkey2=P1^6;
sbitkey3=P1^7;
uintflag;
uinttemp;//存整形数温度
floatf_temp;//存浮点型温度
voiddelayms(uintz)
{//延时
uintx,y;
for(x=0;xfor(y=0;y<110;y++);
}
voiddqreset()//18b20初始化
{
uinti;
dq=1;
dq=0;
i=103;while(i>0)i--;
dq=1;
i=4;while(i>0)i--;
dq=1;
}
bittempreadbit()//读1位数据
{
uinti;
bitdat;
dq=0;
i++;i++;
dq=1;
i++;
dat=dq;
i=8;while(i>0)i--;
return(dat);
}
uchartempreadbyte()//读1字节
{
uchari,j,dat;
dat=0;
for(i=0;i<8;i++)
{j=tempreadbit();
dat=(j<<7)|(dat>>1);
}
return(dat);
}
voidtempwritebyte(uchardat)//写1字节
{
uinti,k;
bittestb;
for(i=0;i<8;i++)
{testb=dat&0x01;
dat=dat>>1;
if(testb)//写1
{dq=0;
k++;k++;
dq=1;
k++;k++;
k=8;while(k>0)k--;
}
else{dq=0;//写0
k=8;while(k>0)k--;
dq=1;
k++;k++;
}
}
}
voidtempchange()//18b20获取温度
{//while(flag==0)
dqreset();
delayms
(1);
tempwritebyte(0xcc);//跳过ROM
tempwritebyte(0x44);//获取温度
}
uintgettemp()//读取温度
{
uinta,b;
dqreset();
delayms
(1);
tempwritebyte(0xcc);
tempwritebyte(0xbe);
a=tempreadbyte();
b=tempreadbyte();
temp=b;
temp<<=8;
temp=temp|a;
f_temp=temp*0.0625;
temp=f_temp*100+0.5;//小数点后四舍五入取两位
return(temp);
}
voiddisplay(z)
{
uintshi,ge,baifen,qianfen;
shi=z/1000;
ge=z%1000/100;
baifen=z%100%10;
qianfen=z%10;
P0=table[shi];
wei1=0;
delayms(5);
wei1=1;
P0=table[ge];
wei2=0;
delayms(5);
//P0=0X8F;
//delayms(3);
wei2=1;
P0=table[baifen];
wei3=0;
delayms(5);
wei3=1;
P0=table[qianfen];
wei4=0;
delayms(5);
wei4=1;
}
voidmain()
{
flag=20;
while
(1)
{
tempchange();
gettemp();
display(temp);
if(temp>2200)
{
led=~led;
deal=0;
}
else
{if(temp<1800)
{
led=~led;
deal=1;
}
else
{
led=1;
deal=0;
}
}
}
}