电阻炉温度控制系统 微控课设报告Word格式.docx
《电阻炉温度控制系统 微控课设报告Word格式.docx》由会员分享,可在线阅读,更多相关《电阻炉温度控制系统 微控课设报告Word格式.docx(23页珍藏版)》请在冰豆网上搜索。
镍鉻/镍铝热电偶适用于0~1000摄氏度的温度测量范围,相应输出电压为0~41.32mV。
变送器由毫伏变送器和电流/电压变送器组成:
毫伏变送器用于把热电偶输出的0~41.32mV变换成0~10mA范围内的电流;
电流/电压变送器用于把毫伏变送器输出的0~10mA电流变换成0~5V范围内的电压。
为了提高测量精度,变送器可以进行零点迁移。
例如,若温度测量范围为0~300摄氏度,则热电偶输出为0~12.396mV,毫伏变送器零点迁移后输出0~10mA范围的电流。
这样,采用8位A/D转换器就可以量化温度误差达到正负2.34摄氏度以内。
2.2接口电路
8031的接口电路有8155、2732和ADC0809等芯片。
8155用于键盘LED显示器接口,2372可以作为8031的外部ROM存储器,ADC0809为温度测量电路的输入接口。
ADC0809是采样频率为8位的、以逐次逼近原理进行模——数转换的器件。
其内部有一个8通道多路开关,它可以根据地址码锁存译码后的信号,只选通8路模拟输入信号中的一个进行A/D转换。
2.2.1主要特性
1)8路8位A/D转换器,即分辨率8位。
2)具有转换起停控制端。
3)转换时间为100μs
4)单个+5V电源供电
5)模拟输入电压范围0~+5V,不需零点和满刻度校准。
6)工作温度范围为-40~+85摄氏度
7)低功耗,约15mW。
2.2.2内部结构
ADC0809是CMOS单片型逐次逼近式A/D转换器,内部结构如图13.22所示,它由8路模拟开关、地址锁存与译码器、比较器、8位开关树型D/A转换器、逐次逼近。
2.2.3外部特性(引脚功能)
ADC0809芯片有28条引脚,采用双列直插式封装,如图3所示。
下面说明各引脚功能。
IN0~IN7:
8路模拟量输入端。
2-1~2-8:
8位数字量输出端。
ADDA、ADDB、ADDC:
3位地址输入线,用于选通8路模拟输入中的一路
ALE:
地址锁存允许信号,输入,高电平有效。
START:
A/D转换启动信号,输入,高电平有效。
EOC:
A/D转换结束信号,输出,当A/D转换结束时,此端输出一个高电平(转换期间一直为低电平)。
OE:
数据输出允许信号,输入,高电平有效。
当A/D转换结束时,此端输入一个高电平,才能打开输出三态门,输出数字量。
CLK:
时钟脉冲输入端。
要求时钟频率不高于640KHZ。
REF(+)、REF(-):
基准电压。
Vcc:
电源,单一+5V。
GND:
地。
ADC0809的工作过程是:
首先输入3位地址,并使ALE=1,将地址存入地址锁存器中。
此地址经译码选通8路模拟输入之一到比较器。
START上升沿将逐次逼近寄存器复位。
下降沿启动A/D转换,之后EOC输出信号变低,指示转换正在进行。
直到A/D转换完成,EOC变为高电平,指示A/D转换结束,结果数据已存入锁存器,这个信号可用作中断申请。
当OE输入高电平时,输出三态门打开,转换结果的数字量输出到数据总线上。
8155有40条引脚,如图4所示。
下面说明各引脚功能:
AD0~AD7:
三态地址/数据线。
是低8位地址与数据复用线。
地址可以是8155片内RAM单元地址或I/O端口地址。
AD0~AD7上的地址由ALE的下降沿素存到8155片内地址锁存器。
也就是由AIE信号来区别AD0~AD7上出现的地址信息还是数据信息。
地址锁存允许信号。
在ALE信号的下降沿把ADO~AD7上的8位地址信息,CE片选信号及IO/M信号都锁存到8155内部存储器中。
IO/
:
I/O端口和RAM选择信号。
当IO/
=1时,AD0~AD7的地址位8155I/O端口地址,选择I/O端口。
=0时,AD0~AD7的地址位8155片内RAM单元地址,选择RAM存储单元。
CE:
片选信号。
低电平有效。
由ALE信号的下降沿锁存到8155内部存储器。
RD:
读选通信号。
当RD=0,CE=0时开启AD0~AD7的缓冲器,被选中的片内RAM单元或IO口的内容送到AD0~AD7上。
WR:
写选通信号。
低电平有效,当CE,WR都有效时,CPU输出到AD0~AD7上的信息想偶尔到8155片内PAM单元或I/O端口。
PA0~PA7:
A口的I/O线。
PB0~PB7:
B口的I/O线。
PC0~PC5:
C口的I/O线。
TMRIN:
定时器输入。
TMROUT:
定时器输出。
2.3接口电路
8031对温度的控制是通过可控硅调功器电路实现的,如硬件电路图(图2)所示。
双向可控硅管和加热丝串接在交流220V,50Hz交流电回路中。
在给定周期T内,8031只要改变可控硅的接通时间便可改变加热丝的功率,以达到调节温度的目的。
如下图所示,可控硅在给定周期T内具有不同接通时间的情况。
显然,可控硅在给定周期T的100%时间内接通时的功率最大。
可控硅接通时间可以通过可控硅控制极上的触发脉冲控制。
该触发脉冲由8031用软件在P1.3引脚上产生,经过零同步脉冲同步后经光耦管和驱动器输出送到可控硅的控制极上。
可控硅调功器输出功率与通断时间的关系如图5所示。
图5可控硅调功器输出功率与通断时间的关系
\\
\\_
.---('
)
o()_-\_
3软件设计
温度控制程序的设计应考虑如下问题:
1.键盘扫描、键码识别和温度显示;
2.炉温采样,数字滤波;
3.数据处理时把所有数按定点纯小数补码形式转换,然后把8位温度采样值Umin和Umax都变成16位参加运算,运算结果取8位有效值;
4.越限报警和处理;
5.PID计算,温度标度转换。
通常,符合上述功能的温度控制程序由主程序和T0中断服务程序组成。
3.1主程序
主程序应包括8051本身的初始化、8155初始化等。
流程图如6所示。
3.2T0中断服务程序
T0中断服务程序时温度控制系统的主体程序,用于启动A/D转换、读入采样数据、数字滤波、越限温度报警和越限处理、PID计算和输出可控硅的同步触发脉冲等。
P1.3引脚上输出的该同步脉冲宽度由T1计数器的溢出中断控制,8051利用等待T1溢出中断空隙时间完成把本次采样值转换成显示值并放入显示缓冲区和调用温度显示程序。
8051从T1中断服务程序返回后便可恢复现场并返回主程序,以等待下次T0中断。
流程图如图7所示。
3.3子程序
3.3.1采样子程序SAMP
采样子程序流程图如图8所示。
3.3.2数字滤波子程序FILTER
数字滤波子程序用于滤去来自控制现场对采样值的干扰。
流程图如图9所示。
图9数字滤波子程序流程图
3.3.3积分分离PID控制算法的程序设计
PID算法的表达式为:
式中u(t):
调节器的输出信号;
e(t):
偏差信号;
调节器的比例系数;
TI:
调节器的积分时间;
TD:
调节器的微分时间。
在计算机控制中,为实现数字控制,必须对上式进行离散化处理。
用数字形式的差分方程代替连续系统的微分方程。
设系统的采样周期为T,在t=kT时刻进行采样,
式中e(k):
根据本次采样值所得到的偏差;
e(k-1):
由上次采样所得到的偏差。
将上面的三个式子代入,则有
式中,T为采样时间,
项为积分项的开关系数
积分分离PID控制算法程序流程图如图10所示。
图10积分分离PID控制算法程序流程图
4基于MATLAB仿真被控对象
采用simulink仿真,通过simulink模块实现积分分离PID控制算法。
仿真图如图11所示。
图11Simulink仿真
选择合适的Kp,Ki,Kd使系统的仿真效果趋于理想状态。
MATLAB编写程序如下:
clearall;
closeall;
ts=10;
%采样时间10s
sys=tf([1],[30,1],'
inputdelay'
80);
dsys=c2d(sys,ts,'
zoh'
);
%将sys离散化
[num,den]=tfdata(dsys,'
v'
%求sys多项式模型参数
kp=5.2;
Ti=0.005;
Td=0.005;
end
仿真波形如图12所示。
图12Matlab仿真波形图
5结果分析
当Ti,Td一定,即当Ti=Td=0.005时,改变Kp的值观察波形可以知道其对系统超调量的影响。
当Kp增大时,设Kp=5.8,此时的波形如图13。
图13Kp=5.8时的波形图
当Kp减小时,设Kp=4.6,此时的波形如图14。
图14Kp=4.6时的波形图
由图12,图13,图14我们可以观察到当Kp增大时系统超调量增大,当Kp减小时系统超调量减小。
设计小结
通过两周的课程设计对温度控制系统有了初步的了解,在本次课程设计中,通过查阅资料基本完成了硬件的设计,然后根据硬件电路进行软件设计,基本实现了电炉的温度控制。
传统的以普通双向晶闸管(SCR)控制的高温电加热炉采用移相触发电路改变晶闸管导通角的大小来调节输出功率,达到自动控制电加热炉温度的目的。
在老师的指导和同学们的帮助下,我顺利完成了这次课程设计,通过这次课程设计,使我对单片机的应用、微控控制技术、传感器技术等等好多专业知识有了更深的了解,解决了许多在学习过程中不能理解的知识,并且提高了自己理论联系实际的能力,为今后在工作中专业知识的应用积累了宝贵的经验。
通过这次毕业设计,使我对单片机原理有了更新的认识,掌握了常用芯片如AT80C51、ADC0809、8155等器件的功能,懂得了这些器件在实际生产中的最基础的应用,掌握计算机的一些画图、排版等软件的应用,真的是受益非浅。
参考文献
[1]张艳兵,王忠庆,鲜浩编著,计算机控制技术.北京:
国防工业出版社,2006
[2]于海生编著,微型计算机控制技术.北京:
清华大学出版社,1999
[3]杨进才,沈显君,刘蓉编著,C++语言程序设计教程.北京:
清华大学出版社,2006
[4]夏云龙编著,最新VisualC++使用手册.北京:
电子工业出版社,2005
[5]黄迪明,许家珆,胡德昆编著,C语言程序设计.成都:
电子科技大学出版社,2008
[6]颜永军等,Protel99电路设计与应用,国防工业出版社,2001
[7]楼然苗,李光飞,51系列单片机设计实例(第二版),2006
附录
主程序
ORG0400H
DISM0DATA78H
DISM1DATA79H
DISM2DATA7AH
DISM3DATA7BH
DISM4DATA7CH
DISM5DATA7DH
MOVSP,#50H;
50H送SP
CLR5EH;
清本次越限标志
CLR5FH;
清上次越限标志
CLRA;
清累加器A
MOV2FH,A;
MOV30H,A;
MOV3BH,A;
MOV3CH,A;
MOV3DH,A;
清暂存单元
MOV3EH,A;
MOV44H,A;
MOVDISM0,A;
MOVDISM1,A;
MOVDISM2,A;
MOVDISM3,A;
清显示缓冲区
MOVDISM4,A;
MOVDISM5,A;
MOVTMOD,#56H;
设T0为计数器方式2,T1为方式1
MOVTL0,#06H;
MOVTH0,06H;
T0赋初值
CLRPT0;
令T0为低中断优先级
SETBTR0;
启动T0工作
SETBET0;
允许T0中断
SETBEA;
开CPU中断
LOOP:
ACALLDISPLY;
调用显示程序
ACALLSCAN;
调用扫描程序
AJMPLOOP;
等待中断
T0中断服务程序
ORG000BH
AJMPCT0
ORG0100H
CT0:
PUSHACC;
PUSHDPL;
保护现场
PUSHDPH;
SETBD5H;
置标志
ACALLSAMP;
调用采样子程序
ACALLFILTER;
调用数字滤波程序
CJNEA,42H,TPL;
若Ui(k)不等于Umax,则TPL
WL:
MOVC,5EH;
MOV5FH,C;
5EH送5FH
CLR5EH;
清5EH单元
ACALLUPL;
转上限处理程序
POPDPH
POPDPL
POPACC
RETI;
中断返回
TPL:
JNCTPL1;
若Ui(k)大等Umax,则TPL1
CLR5FH;
CJNEA,43H,MTPL;
若Ui(k)不等于Umin,则MTPL
HAT:
SETBP1.1;
若温度不越限则令绿灯亮
ACALLPID;
调用计算PID子程序
MOVA,2FH;
PID值送A
CPLA;
INCA;
对PID值求补,作为TL1值
NM:
SETBP1.3;
令p1.3输出高电平脉冲
MOVTL1,A;
MOVTH1,#0FFH;
T1赋初值
SETBPT1;
T1高优先级中断
SETBTR1;
启动T1
SETBET1;
允许T1中断
ACALLTRAST;
调用标度转换程序
ACALLDISPLY;
显示温度
JBD5H,LOOP;
等待T1中断
POPDPH;
POPDPL;
恢复现场
POPACC;
MTPL:
JNCHAT;
若Ui(k)大于Umin,则HAT
SETBP1.0;
否则越下限声光报警
MOVA,45H;
取PID最大值输出
对PID值求补,作为TL1
AJMPNM;
转NM执行
TPL1:
SETB5EH;
若Ui(k)大于Umax,则5EH单元置位
JNB5FH,WL;
若上次未越限,则转WL
INC44H;
越限计数器加1
MOVA,44H
CLRC
SUBBA,#N;
越限N次?
JNZWL;
越限小于N次,则WL
SETBP1.2;
否则,越上限声光报警
清越限标志
T1中断服务程序
ORG001BH
AJMPCT1
ORG0200H
CT1:
CLRD5H;
清标志
CLRP1.3;
令p1.3变为低电平
RETI;
子程序
采样子程序SAMP:
SAMP:
MOVR0,#2CH;
采样值起始地址送R0
MOVR2,#03H;
采样次数初值送R2
MOVDPTR,#03F8
SAM1:
MOVX@DPTR,A;
启动ADC0809工作
MOVR3,#20H
DLY:
DJNZR3,DLY;
延时
HERE:
JBP3.3,HERE;
等待A\D完成
MOVXA,@DPTR;
采样值送A
MOV@R0,A;
存放采样值
INCR0
DJNZR2,SAM1;
若采样未完,则SAM1
RET;
若已采样完,则返回
数字滤波子程序FILTER:
用于滤去来自控制现场对采样值的干扰
FILTER:
MOVA,2CH;
2CH送A
CJNEA,2DH,CMP1;
若2CH不等于2DH,则CMP1
AJMPCMP2;
否则转CMP2
CMP1JNCCMP2;
若2CH大于2DH,则CMP
XCHA,2D;
2CH与2DH交换
XCHA,2C;
CMP2:
MOVA,2DH;
2DH送A
CJNEA,2EH,CMP3;
若2DH不等于2EH,则CMP3
MOV2AH,A;
否则,2DH送2AH
RET;
返回
CMP3:
JCCMP4;
若2DH小于2EH,则CMP4
CMP4:
MOVA,2EH;
2EH送A
CJNEA,2CH,CMP5;
若2EH不等于2CH,则CMP5
否则,2EH送2AH
返回
CMP5:
JCCMP6;
若2EH小于2CH则CMP6
XCHA,2CH;
否则,2EH与2CH交换
CMP6:
A送2AH