摘要:温度是工业生产中常见的工艺参数之一,任何物理变化和化学反应过程都与温度密切相关,因此温度控制是生产自动化的重要任务。对于不同生产情况和工艺要求下的温度控制,所采用的加热方式,燃料,控制方案也有所不同。随着集成电路技术的发展,单片微型计算机的功能也不断增强,许多高性能的新型机种不断涌现出来。
本文主要介绍了利用8051为主控制电路实现的炉温调节控制系统,详细阐述了系统的功能,硬件组成以及软件设计,利用热电偶采集温度信号经A/D转换器转化后与给定信号送入微机系统,系统分析控制算法,信号再经D/A转换后控制调节可控硅控制器来改变炉内的温度。
关键字:8051;可控硅;热电偶;转换器
设计要求
一进行化学纤维加热的炉体,温度要求800°C左右,加热方式是把电阻丝绕炉体周边,通220V市电加热。功率大约为5000W。试按下列要求设计其控制系统。
(1)温度要求不大于1%,设计单回路控制系统
选择控制计算机及仪表;选用可控硅控制;设计控制算法;画出原理框图
(2)如果要求温度不大于0.5%,怎样设计控制系统
说明解决方案;画出原理框图
(3)预算一下两种情况工程成本,说明在保证可靠情况下如何降低成本
1设计方案
温度控制系统的硬件设计框图如图1所示.用热电偶来检测炉的温度,将炉温转变成毫伏级的电压信号,经温度变送器放大并转换成电流信号。由电阻网络讲电流信号变成电压信号,送入A/D转换器,通过采样和模数转换,所检测到的电压信号和炉温给定值的电压信号都转换成数质量送入单片机进行比较,其差值即为实际炉温和给定炉温的偏差,以单片机为核心的数字PID控制器对偏差按照给定的方法运算,运算结果送DAC0832转换成模拟电压,经功率放大器放大后送入晶闸管调压器,触发晶闸管并改变其导通角的大小,从而控制电阻炉的加温电压,起到炉温调节的作用。
图1 温度控制原理框图
2方案所采用的仪器
(1)测温电路采用K型热电偶。K型也即镍铬-镍硅热电偶,它是一种能测量较高温度的廉价热偶。由于这种合金具有较好的高温抗氧化性,可适用于氧化性或中性介质中。它可长期测量1000度的高温,短期可测到1200度。它比S型热偶要便宜很多,它的重复性很好,产生的热电势大,因而灵敏度很高,而且它的线性很好。
(2)放大电路采用LTC2053放大仪器。作为热电偶放大器必须满足一些特殊要求,通常采用的K型热电偶的灵敏度为40.6μ℃,而电路的输出一般要求为10mV/℃,因此,要选用额定增益为246的精密放大器。另外,热电偶一般容易受到工业环境中电子噪声的影晌,因此,仪用放大器允许输入不同的电压有助于消除由于共模噪声引起的误差。为了避免出故障,采取的保护措施是不能让热电偶无意识地接触到瞬变电源或高电压,但保护措施不能兼顾到精度。LTC2053有满足这些要求的补偿特性,它在任何引脚上都可以承受10mA的故障电流。
图2放大电路
电路中LTC1025对热电偶进行温度补偿,确保在各种环境条件下温度的测量精度,并要靠近热电偶的节点安装,以便对温度进行最佳的跟踪。LTC1025对不同的环境温度输出相应的电压,输出灵敏度为10mV/℃,因此,0℃时输出电压为10mV,室温(25℃)时输出250mV。测量探头温度相应的电压是补偿电压和被放大的热电偶电压之和,补偿电路的输出端与LTC2053的REF(5脚)输入端连接的所有这一切都要加上这两种电压。对于这种电路结构,考虑的仅是校正的电压必需能供出或吸收反馈电阻中电流。由于,LTC1025只供出电流,因此,可采用缓冲器LTC2050驱动REF,LTC2050是一种零漂移的运算放大器。采用单电源的缺点是,对于有效的输出探头和放大器单元的温度都必须超过0℃。若需要对负温度进行调节的话,可采用简单的充电泵变换器,例如LTC1046构成负电源。
(3)采用三相桥式全控整流如下图
图3三相桥式全控整流
(4)转换器采用ADC0809、DAC0832芯片。
A/D转换器是将模拟电压或电流转换成数字量的期间或装置,它是一种模拟系统和计算机之间的接口,它在数据采集和控制系统中,得到了广泛的应用,常用的A/D转换器有ADC0809. 它是一种带有8通道模拟开关的8位逐次逼近式A/D转换器,转换时间为100us左右,线性误差为±1/2LSB,采用28脚双立直插式封装,ADC0809由8通道模拟开关、通道选择逻辑、8位A/D转换器及三态输出锁存缓冲器组成。
图4 ADC0809引脚图
D/A转换器的功能是把二进制数字量电信号转换为与其数值成正比的模拟量电信号。常用D/A转换器为DAC0832芯片。DAC0832工作在单缓冲寄存器方式,即当信号来时,~数据线送来的数据直通进行D/A转换,当变高时,则此数据便被锁存在寄存器中,因此D/A转换的输出也保持不变。DAC0832讲输入的数字量转换成差动的电流输出(和),为了将其编程电压输出,必须经过运算放大器,使其输出0~+5V(为-5V)或0~+10V(为-10V),若要形成负电压输出,则需接正的基准电压。
DAC0832是双列直插式8位D/A转换器。能完成数字量输入到模拟量(电流)输出的转换。图5为DAC0832的引脚图。其主要参数如下:分辨率为8位,转换时间为1μs,满量程误差为±1LSB,参考电压为(+10?/span>-10)V,供电电源为(+5~+15)V,逻辑电平输入与TTL兼容。在DAC0832中有两级锁存器,第一级锁存器称为输入寄存器,它的允许锁存信号为ILE,第二级锁存器称为DAC寄存器,它的锁存信号也称为通道控制信号 /XFER。
图5 DAC0832引脚图
(5)键盘电路采用8279接口芯片。接收来自键盘的输入数据并作预处理;完成数据显示的管理和数据显示器的控制。单片机应用系统采用8279管理键盘和显示器,软件编程极为简单,显示稳定,且减少了主机的负担。
(6)温度显示电路采用四位数码管。显示器普遍地用于直观地显示数字系统的运行状态和工作数据,按照材料及生产工艺,单片机应用系统中常用的显示器有:发光二极管LED显示器、液晶LCD显示器、CRT显示器等。LED显示器是现在最常用的显示器之一。
图6
图6中的译码器74LS138与共阴极LED数码管驱动器CD4511是由单片机的P1口控制的,其中,P1.0、P1.1、P1.2 与译码器的输入相接,C为高位,A为地位。对四个共阴极数码管实现位选。在一个单片机系统中,对共阴极LED显示器的控制采用“接地方式”,即通过控制LED的“GND”引脚的电平高低来达到选通的目的,该引脚即通常所说的位选线。例如:我们想要让第三位数码管工作,那么需要使L3的位选线接低电平来达到目的,也就是使译码器的输出中的Y3为0,其他为1。本系统中,我们采用动态显示方式,因此,需要不断的片选,而共阴极LED显示器的发光二极管负极接地,当发光二极管的正极为高电平时,发光二极管被点亮。这就由CD4511来驱动,例如:要显示0字形时,需要LED显示器的8个发光二极管“a,b,c,d,e,f,g”七个字段中的a,b,c,d,e,f亮,那么,就需要CD4511输出中的A、B、C、D、E、F为高电平。这是CD4511芯片内部已设定好的,表2为CD4511芯片内部的二进制与输入与输出的对应关系列表。
表1 CD4511输入输出逻辑对应关系
| D C B A | dp G F E D C B A |
| 0 0 0 0 | 0 0 1 1 1 1 1 1 |
| 0 0 0 1 | 0 0 0 0 0 1 1 0 |
| 0 0 1 0 | 0 1 0 1 1 0 1 1 |
| 0 0 1 1 | 0 1 0 0 1 1 1 1 |
| 0 1 0 0 | 0 1 1 0 0 1 1 0 |
| 0 1 0 1 | 0 1 1 0 1 1 0 1 |
| 0 1 1 0 | 0 1 1 1 1 1 0 0 |
| 0 1 1 1 | 0 0 0 0 0 1 1 1 |
| 1 0 0 0 | 0 1 1 1 1 1 1 1 |
| 1 0 0 1 | 0 1 1 0 0 1 1 1 |
在一个单片机系统中,对共阴极LED显示器的控制采用“接地方式”,即通过控制LED的“GND”引脚的电平高低来达到选通的目的,该引脚即通常所说的位选线。共阳极LED显示器控制方式则相反。两种控制方式中,共阴极LED控制方式受系统器件功耗,只能用在小尺寸的LED显示器中。对于大尺寸LED显示器的控制(如大屏幕计时器)一般使用共阳极方式。
LED的显示和接口方式:LED数码管的显示有静态和动态两种方式。从接口上分又有并行和串行两种,这要视接口和驱动芯片而定。常用的并行LED接口芯片有8155、8255 以及键盘和显示专用芯片8279等。与并行方式相比,串行方式仅占用CPU 少数几根I/O 口线便可实现LED显示功能,以前的51 单片机系统经常通过串口通信线TXO 、RXD( P3.0.、P3.1 )加移位寄存器74LS1实现LED显示功能。近年来国内外各大厂商纷纷推出了基于串行总线方式的LED显示器接口芯片,如MAXIN公司的MAX7219 、力源的PS7219 以及周立功的ZLG72 等等。这些芯片与单片机的接口一般采用SPI 总线方式,具有占用I/O 口线少,与单片机接口程序易于实现的特点,使用起来十分方便。
LED显示器按照接口不同有静态和动态两种方式。静态显示方式中,多个LED显示器中的每一个段代码都与一个的8位并行口连接,公共端则根据LED的种类(共阴或共阳)连接到“地”或“VCC ”上。四位静态LED显示电路中,每个LED的段代码都由的并行8位I/O口线控制,可以在同一时间内显示不同的字符。静态LED显示方式的优点是编程容易,但功耗大,占用CPU I/O 口线较多,成本较高。因此在单片机应用系统中较多使用的还是动态显示方式。所谓动态显示,实质上就是各个不同的LED显示器按照一定的顺序轮流显示。它利用了人眼的“视觉暂留现象”,只要多个LED显示器的选通扫描速率足够快,人眼就觉察不到数码管的闪烁现象。动态扫描方式的所有LED段选线并联在一起,只由一个8位的I/O 口控制,而各个LED的位选线则由另外一组I/O 口控制。动态LED显示方式的优点是功耗较低,占用CPU I/O 线少,外围接口简单,本系统便是采用了动态LED显示方式。
动态扫描从左到右进行,显示缓冲区首地址为79H。因此各位显示器都扫过一遍之后,就返回监控程序。经过一段时间间隔后,再调用显示扫描程序。通过这种反复调用来实现LED显示器的动态扫描。
3系统硬件设计
用热电偶来检测炉的温度,将炉温转变成毫伏级的电压信号,经温度变送器放大并转换成电流信号。由电阻网络讲电流信号变成电压信号,送入A/D转换器,通过采样和模数转换,所检测到的电压信号和炉温给定值的电压信号都转换成数质量送入单片机进行比较,其差值即为实际炉温和给定炉温的偏差,以单片机为核心的数字PID控制器对偏差按照给定的方法运算,运算结果送DAC0832转换成模拟电压,经功率放大器放大后送入晶闸管调压器,触发晶闸管并改变其导通角的大小,从而控制电阻炉的加温电压,起到炉温调节的作用。
图7 硬件设计图
4 控制算法
由以上分析,本次设计采用的是积分分离PID控制算法,PID调节时连续系统中技术中最成熟的,应用广泛的一种调节控制方式。在模拟控制系统中,PID算法的表达为:
u:调节器的输出信号;
e:偏差信号;
K:调节器的比例系数;
TI:调节器的积分时间;
TD:调节器的微分时间。
在计算机控制中,为实现数字控制,必须对式上式进行离散化处理。用数字形式的差分方程代替连续系统的微分方程。设系统的采样周期为T,在t=kT时刻进行采样,
式中e(k):根据本次采样值所得到的偏差;
e(k-1):由上次采样所得到的偏差。
由以上可得:
式中,T为采样时间,项为积分项的开关系数
积分积分分离PID控制算法程序框图如图8所示:
图8 积分分离PID控制算法程序框图
5 系统改进
炉温控制是一个大滞后,非线性的控制。简单的单回路可能无法满足工艺的要求。因此再次基础上,将系统改进。采用增加副回路构成串级控制系统。副控制器的给定为单片机的输出,副控制器的输入是电流的检测。
(1)串级控制系统的组成
这种系统具有2个调节器、2个闭合回路和两个执行对象。2个调节器分别设置在主、副回路中,设在主回路的调节器称主调节器,设在副回路的调节器称为副调节器。两个调节器串联连接,主调节器的输出作为副回路的给定量,副调节器的输出去控制执行元件。主对象的输出为系统的被控制量中下水箱液位,副对象的输出是一个辅助控制变量。
(2)串级系统的抗干扰能力
串级系统由于增加了副回路,对于进入副环内的干扰具有很强的抑制作用,因此作用于副环的干扰对主被控量的影响就比较小。系统的主回路是定值控制,而副回环是一个随动控制。在设计串级控制系统时,要求系统副对象的时间常数要远小于主对象。此外,为了指示系统的控制精度,一般主调节器设计成PI或PID调节器,而副调节器一般设计为比例P控制,以提高副回路的快速响应。在搭实验线路时,要注意到两个调节器的极性(目的是保证主、副回路都是负反馈控制)。
(3)串级控制系统与单回路的控制系统相比
串级控制系统由于副回路的存在,改善了对象的特性,使等效对象的时间常数减小,系统的工作频率提高,改善了系统的动态性能,使系统的响应加快,控制及时。同时,由于串级系统具有主副两只控制器,总放大倍数增大,系统的扰干扰能力增强。因此,它的控制质量要比单回路控制系统高。
图9 串级控制原理框图
6 预算成本
串级控制成本接近单回路控制成本的两倍。
附录
ADZH:MOV IE,#00H ;A/D转换子程序
MOV DPTR,#88FFH
CLR P0.0
CLR P0.1
MOVX @DPTR,A ;启动A/D
NOP
NOP
NOP
NOP
NOP
NOP
LOOP:JB P0.3,LOOP
SETB P0.0
MOVX A,@DPTR ;读转换结果8位
MOVX ADH,A ;存转换结果高8位
NOP
NOP
NOP
NOP
NOP
SETB P0.1
MOVX A,@DPTR
MOV ADL,A
MOV IE,#81H
RET
AJMP KEY1
KS1: MOV A,#0FFH
MOV P1,A
MOV A,P1 ;读P1口键值
CPL A ;A取反,无键按下则全“0”
ANL A,0FH ;屏蔽A高半字节
RET
KEY1: ACALL KS1 ;检查是否有键闭合
JNZ LK1 ;A非“0”则转移
ACALL DISP ;显示一次(延时10 ms)
AJMP KEY1
LK1: ACALL DISP ;有键闭合二次消抖延时20 ms
ACALL DISP
ACALL KS1 ;再检查有键闭合否
JNZ LK2 ;有键闭合,转LK2
ACALL DISP
AJMP KEY1 ;经去抖动确认无键闭合,延时10 ms后转K EY1
LK2:MOV R2,#0EH ;扫描初值进R2
MOV R4,#00H ;扫描列号送R4
LK4: MOV P1,A ;扫描初值送P1口
MOV A,P1 ;读P1口
JB ACC.0,LONE ;ACC.0=1,第0行无键闭合,转LONE
MOV A,#00H ;装第0行行值
AJMP LKP
LONE: JB ACC.1,LTWO ;ACC.1=1,第1行无键闭合,转LTWO
MOV A,#04H ;装第1行行值
AJMP LKP
LTWO:JB ACC.2,LTHR ;ACC.2=1,第2行无键闭合,转LTHR
MOV A, #08H ;装第2行行值
AJMP LKP
LTHR: JB ACC.3,NEXT ;ACC.3=1,第3行无键闭合则转NEXT
MOV A,#0CH ;装第3行行值
LKP: ADD A,R4 ;计算键值
PUSH ACC ;保护键值,将键值入栈
LK3: ACALL DISP ;延时10ms消抖
ACALL KS1 ;查键是否继续闭合,若闭合再延时
JNZ LK3
POP ACC ;若键起,则键码送A
RET
NEXT: INC R4 ;扫描列号加1
MOV A,R2
JNB ACC.3,KND ;笫3位为“0”,已扫完最高列则转KEND
RLA A ;循环左移一位
MOV R2,A
AJMP LK4 ;进行下一列扫描
KEND: AJMP KEY1 ;扫描完毕,开始新的一轮
KEY: MOV R2,#0FFH ;计算键值子程序,初始化键值寄存单元
MOV DPTR,#KEYTABLE ;向DPTR加载键码表
CHAZ: INC R2 ;键值加1
MOV A,R2 ;键值送给A
MOVC A,@A+DPTR ;查出对比键码
CJNE A,#0FFH,CHA ;搜索对比键码结束? 否,跳到CHA
RET ;是,最终没找出有效键值,直接返回
CHA: CJNE A,R4,CHAZ ;对比键码与当前扫描结果(键码)一致?
;否,跳到CHAZ再搜索
LCALL SHOW ;是,显示出来
RET ;返回
KEYTABLE: ;键码表
DB 07EH,07DH,07BH,077H
DB 0BEH,0BDH,0BBH,0B7H
DB 0DEH,0DDH,0DBH,0D7H
DB 0EEH,0EDH,0EBH,0E7H
DB 0FFH
初始化子程序:
DISPP:MOV P1,73H
LCALL DELAYTIME
RET
显示键值子程序:
SHOW: MOV A,R2
MOV B,#10
DIV AB
SHOWX: MOV DPTR,#LEDTABLE
XCH A,B
MOVC A,@A+DPTR
MOV SBUF,A
CLR TI
JNB TI,$
XCH A,B
MOVC A,@A+DPTR
MOV SBUF,A
CLR TI
JNB TI,$
RET
DELAYTIME: ;50mS延时子程序
MOV TMOD,#01H
HH: MOV TH0,#4CH
MOV TL0,#00H
SETB TR0
CLR TF0
NB TF0,$
CLR TR0
RET
LEDTABLE:DB 0FCH,060H,0DAH,0F2H,066H,0B6H;LED字型码表
DB 0BEH,0E0H,0FEH,0E6H,02H
END下载本文