计算机控制技术课程设计Word文档格式.docx
《计算机控制技术课程设计Word文档格式.docx》由会员分享,可在线阅读,更多相关《计算机控制技术课程设计Word文档格式.docx(18页珍藏版)》请在冰豆网上搜索。
选用AD574A模/数转换器实现对温度信号的转换。
AD574A是12位逐次逼近型A/D转换器,转换时间为25μs,转换精度为0.05%。
二、数字控制器的设计
理论分析和实验结果表明,电阻炉是一个具有自平衡能力的对象,可以近似为带有纯滞后的一阶惯性环节。
由被控对象实验得到的飞升曲线,确定出被控对象的纯滞后时间τ=1.2min和被控对象的惯性时间常数TP=1.2min。
当τ/TP≤0.5时,可采用PID算法控制;
当τ/TP>
0.5时,可采用达林算法控制,本系统τ/TTP>
0.5,故采用达林算法控制。
三、硬件的设计和实现
1、温度检测及功率放大电路
本系统采用镍铬-镍硅热电偶检测电阻炉中的温度,热电偶测温是基于物体的热电效应,它由两种不同的金属或合金组成,其优点是结构简单,可将温度信号转换成电压信号,测温范围广、精度高,可实现远距离测量和传送,使用稳定、可靠,因此被广泛应用。
其不足之处是测温精度受冷端温度(即环境温度)的影响,为了提高热电偶测温精度,需要在热电偶冷端进行温度补偿。
温度检测电路及功率放大电路如图所示。
热电偶冷端温度补偿采用的是集成温度传感器AD590,流过AD590的电流Iu=273μA+T0×
1μA/℃,式中,T0为室温。
负载电阻R3上输出电压UOUT=IuR3,选择电阻R3使UOUT在AD590允许输入电压范围内。
本系统选择R3=10kΩ。
这种测量方法冷端温度准确,克服了常规方法补偿误差大和不方便的缺点。
热电偶传感器输出的电压信号较为微弱(只有几毫伏到几十毫伏),因此在进行A/D转换之前必须进行信号变送,由高放大倍数的电路将它放大到A/D转换器通常所要求的电压范围,热电偶的输出热电势为0~56mV。
本系统前级选用自稳态高精度斩波运放ICL7650,输入信号为差动信号,放大倍数为15倍。
后级运放选用较廉价的μA741,放大倍数可调,最大可达100倍,主要完成反相功能。
ICL7650输入端的钳位二极管起保护作用,避免输入线路发生故障时的瞬态尖峰干扰损坏运放,输入电压可直接送入AD574A进行转换。
2、AD574A模/数转换电路
如下图所示,AD574A工作在12位状态,转换值分两次输出,高8位从DB4~DB11输出,低4位从DB0~DB3输出,并直接和单片机的数据线相连,AD574A的片选端接锁存器的Q7端,低电平有效;
CE为片选使能端,高电平有效;
CS和CE共同用于片选控制,只有当两个信号同时有效时,才能选中本芯片工作。
A0端接锁存器74LS373的Q1端。
A0=0时启动A/D转换。
R/接锁存器74LS373的Q0端。
R/=0时,启动A/D转换;
R/=1时,允许读出转换后的数据。
AT89C51的和经“与非”门74LS00与AD574A的CE端相接。
12/8接地表示AT89C51要分两次从AD574A读出A/D转换的12位数字量。
3、执行机构
传统的SSR控制采用移相触发电路,通过改变晶闸管导通角的大小来调节输出功率,从而达到自动控温的目的。
这种移相方式输出一种非正弦波,实践表明这种控制方式产生相当大的中频干扰,并通过电网传输给电力系统造成“公害”。
本系统采用单片机控制的固态继电器控温电路,其波形为完整的正弦波,对电阻炉这样的惯性较大的被控对象,是一种稳定、可靠、较合理的控制方法。
调功原理为:
设电网连续N个完整的周波为一个控制周期TC,则
TC=
式中,f为电网频率。
若在设定的控制周期TC内控制主回路导通n(n≤N)个完整的周波,则负载功率为
P=
式中,U为电网电压有效值;
为负载的有效电阻。
因此,控制在设定周期TC内主回路导通的周波数n的个数,就可调节负载的功率P。
采用交流过零型固态继电器控温时需交流过零检测电路,此电路输出对应于50Hz交流电压过零时刻的脉冲,在交流电压过零时刻导通。
如图11-4所示是一种由两个光电耦合器和一个单稳态电路组成的交流过零检测电路。
其中,GD1、GD2为光电耦合器,具有检零和隔离功能,R10为限流电阻。
在交流正半周,GD1导通,GD2截止,VA为低电平;
在交流负半周,GD1截止,GD2导通,VA仍为低电平。
只有在交流过零点时,GD1和GD2均截止,VA为高电平。
VA再经过74LS123单稳态电路整形,得到一过零脉冲序列VB,VB波形如图11-5所示。
VB脉冲序列再与单片机P1.X输出的触发脉冲信号进行“与非”运算后得到控制信号。
用它来控制固态继电器,从而调节电阻炉温度。
交流过零检测电路
4、报警电路设计:
正常运行时绿灯亮,在保温阶段炉内温度超出系统允差范围,就要进行报警。
报警时报警红灯亮,电笛响,同时发送中断信号至CPU进行处理。
如图2-3
图2-3加热炉报警系统图
5、设计输入输出通道
输入通道:
因为所控的实际温度在50~350℃,即(350-50)=300所以选用8位A/D转换器,其分辨率约为1.5℃/字,再加放大器偏置措施实现。
(通过调整放大器的零点来实现偏置)这里采用一般中速芯片ADC0809。
ADC0809是带有8位A/D转换器,8路多路开关以及微型计算机兼容的控制逻辑的CMOS组件,其转换方法为逐次逼近型。
8路的模拟开关由地址锁存器和译码器控制,可以在8个通道中任意访问一个通道的模拟信号。
这种器件无需进行零位和满量程调整。
由于多路开关的地址输入部分能够进行锁存和译码,而且其三态TTL输出也可以锁存,所以它易于与微型计算机接口。
其具有较高的转换速度和精度,受温度影响较小,能较长时间保证精度,重现性好,功耗较低,故用于过程控制是比较理想的器件。
图2-4ADC0809应用接线图
输出通道:
据其实际情况,D/A转换器的位数可低于A/D转换器的位数,因为一般控制系统对输出通道分辨率的要求比输入通道的低,所以这里采用常用的DAC0832芯片
DAC0832是8位D/A转换器,与微处理器完全兼容。
期间采用先进的CMOS工艺,因此功耗低,输出漏电流误差较小。
它的内部具有两级输入数据缓冲器和一个R-2RT型电阻网络,因DAC0832电流输出型D/A转换芯片,为了取得电压输出,需在电流输出端接运算放大器,Rf为为运算放大器的反馈电阻端。
双极性电压输出的D/A转换电路通常采用偏移二进制码、补码二进制码和符号一数值编码。
只要在单极性电压输出的基础上再加一级电压放大器,并配以相关电阻网络就可以构成双极性电压输出。
在上图中,运算放大器A2的作用是把运算放大器A1的单向输出电压转变为双向输出。
、数字控制器的设计
1、控制算法:
电阻加热炉温度控制系统框图:
.
大林算法的设计目标是设计一个合适的数字控制器,使整个闭环系统的传递函数相当于一个带有纯滞后的一阶惯性环节,即:
通常认为对象与一个零阶保持器相串联。
、软件设计
1、系统程序流程图
系统主程序框图A/D转换子程序流程图
c、LED显示流程图
d、报警程序流程图
e、数字控制算法子程序流程图
2、程序清单
ORG0000H
AJMPMAIN
ORG0003H
AJMPKEYS
ORG000BH
AJMPPIT0
ORG001BH
AJMPPIT1;
中断入口及优先级
MAIN:
MOVSP,#00H
CLR5FH:
清上下限越限标志
MOVA,#00H
MOVR7,#09H
MOVR0,#28H
LP1:
MOV@R0,A
INCR0
DJNZR7,LP1
MOVR7,#06H
MOVR0,#39H
LP2:
INCR0
DJNZR7,LP2
MOVRO,#50H
LP3:
DINZR7,LP3;
清显示缓冲区
MOV33H,#00H
MOV34H,#00H;
赋KP高低字节
MOV35H,#00H
MOV36H,#00H;
赋KI高低字节
MOV37H,#00H
MOV38H,#00H;
赋KD高低字节
MOV42H,#00H
MOV43H,#00H;
赋K高低字节
MOVTMOD,#56H;
T0方式2,T1方式1计数
MOVTLO,#06H
MOVTHO,#06H
MOV25H,#163H;
设定值默认值350
SETBTR0;
键盘高优先级
SETBET0
SETBEX0
SETBEA;
开键盘T0。
T1中断
LOOP:
MOVR0,#56H
MOVR1,#55H
LCALLSCACOV;
标度转化
MOVR0,#53H
LCALLDIR
NOP
LCALLDLY10MS
AJMPLOOP;
等中断
键盘子程序
KEYS:
CLREX0
CLREA
PUSHPSW
PUSHACC;
关中断
LCALLDLY10MS;
消抖
CC:
JBP3.2AA
SETB5DH;
置“显示设定值温度值标志”
MOVA,25H;
取运算位的值
MOVB,#10H;
BCD码转化
DIVAB
MOV52H,A
MOVA,B
MOV51H,A
MOVR0,#50H
LCALLDIR;
显示设定温度
NOP
LCALLDLY10MS
LCALLDLY10MS
JBP1.7,BB
MOVR1,#25H
LCALLDAAD1
LCALLDLY10MS
AJMPCC
BB:
JBP1.6CC
LCALLDEEC1
AJMPCC
AA:
POPACC
POPPSW
SETBEA;
出栈
RETI
显示子程序
DIR:
MOVSCON,#00H;
置串行口移位寄存器状态
SETBP1.4;
开显示
JB5DH,DL1;
DL2:
MOVDPTR,#SEGT
DL0:
MOVA,@R0
MOVCA,@A+DPTR
MOVSBUF,A
LOOP1:
JNBTI,LOOP1
CLRTI
MOVA,@R0
ANLA,#7FH;
使数带小数点
LOOP2:
JNBTI,LOOP2
CLRTI
MOVSBUF,A
LOOP3:
JNBTI,LOOP3
CLRP1.4
CLR5DH
RET
DL1:
MOV50H,#0AH;
小数位黑屏
AJMPDL2
SEGT:
DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0FFH
加一子程序
DAAD1:
MOVA,#00H
ORLA,@R1
ADDA,#01H
CJNEA,#30H,DAAD2;
超过48度了吗?
DAAD3:
MOV@R1,A
DAA:
RET
DAAD2:
JCDAAD3
MOV@R1,#15EH;
超过48则转回到355
AJMPDAA
减一子程序
DEEC1:
MOVA,@R1
DECA
CJNEA,#15EH,DEEC2;
低于355度了吗?
DEEC3:
MOV@R1,A
DEE:
RET
DEEC2:
JNCDEEC3
MOV@R1,#30H;
低于355则转回到48
AJMPDEE
T0中断子程序
PTT0:
CLREA
PUSHACC
PUSHPSW
PUAHDPL
PUSHDPH
SETBEA;
压栈后开中断响应键盘
PPP:
LCALLSMAP;
采样数据
LCALLFILTER;
数字滤波
MOVA,2AH;
取采样值
CJNEA,#07H,AAA;
下限48比较
AJMPBBB
AAA:
JCCCC;
小于48度转
CJNEA,#0FEH,DDD;
上限355比较
AJMPBBB;
转至48~355正常范围处理
DDD:
JCBB
CLRP1.2;
大于355黄灯亮
SETB5EH
CLRP1.1;
置标志启动风扇
AJMPPPP
CCC:
CLRP1.3;
小于48红灯亮
SETB5FH
BBB:
CLRP1.0;
置标志启动电炉
AJMPPPP
SETBP1.0
SETBP1.1
SETBP1.2
SETBP1.3
CLR5EH
CLR5FH;
50~350之间正常
LCALLPID
JNB20H,EEF;
设定温度小于实际值转到风扇
MOVA,29H
LCALLFFF
CLRP1.0
LOOP10:
MOVR0,#56H;
存放相乘结果的首址
MOVR1,#55H;
赋显示缓冲区最高位地址
LCALLSCACOV;
MOVR0,#53H;
;
赋显示首址
CLRDIR
JBD5H,LOOP10;
等待T1中断
POPDPH
POPDPL
POPPSW
SETBEA
POPACC
EEE:
MOVA,28H;
风扇处理
LCALLFFF
CLRP1.1
AJMPLOOP10
FFF:
CRLA;
根据PID结果计算T1初值
INCA
MOVTL1,A
MOVTH1,#0FFH
SETBPI1
SETBTR1
SETBET1
采样子程序
SWAP:
MOVR0,#20H
MOVR1,#03H
SAW1:
MOVDPTR,#7FF8H
MOVX@DPTRA;
A/D转化
MOVR2,#20H
DLY:
DJNZR2,DLY;
延时
HERE:
JBP3.3,HERE
MOVDPTR,#7FF8H
MOVXA,@DPTR;
读转化结果
MOV@R0,A
DJNZR1,SAM1
FILTER:
MOVA,20H
CJNEA,2DHCMP1
AJMPCMP2
CMP1:
JNCCMP2
XCHA,2DH
XCHA,2CH
CMP2:
MOVA,2DH
CJNEA,22EH,CMP3
MOV2AH,A
AJMPRR
CMP3:
JCCMP4
CMP4:
MOVA,2EH
CJNEA,2CH,CMP5
MOV2AH,A
AJMPRR
CMP5:
JCCMP6
CMP6:
MOV2AH,A
RR:
PIT1:
CLR00H
JB20H,GGG
SETBP1.0;
关闭电炉
GG:
CLRPT1
GGG:
SETBP1.1;
关闭风扇
CLR20H
AJMPGG