摘要:温度测量与控制在工业、农业、国防等行业有着广泛的应用。由于利用单片机技术的温度测控可靠性高、价格低廉而被广泛采用。本文对电阻炉的数字控制电路进行了分析和设计。
1 引言
电阻炉在国民经济中有着广泛的应用,而大功率的电阻炉则应用在各种工业生产过程中。然而,大多数电阻炉存在着各种干扰因素,将会给工业生产带来极大的不便。因此,在电阻炉温度控制系统的设计中,应尽量考虑到如何有效地避免各种干扰因素而采用一个较好的控制方案,选择合适的芯片及控制算法是非常有必要的。
一直以来,人们采用了各种方法来进行温度控制度都没有取得很好的控制效果。起先由于电阻炉的发热体为电阻丝,传统方法大多采用仪表测量温度,并通过控制交流接触器的通断时间比例来控制加热功率。由于模拟仪表本身的测量精度差,加上交流接触器的寿命短,通断比例低,故温度控制精度低,且无法实现按程序设定的升温曲线升温和故障自诊断功能,因此要对传统的温度控制方法进行改造。如今,随着以微机为核心的温度控制技术不断发展,用微机取代常规控制已成必然,因为它确保了生产过程的正常进行,提高了产品的数量与质量,减轻了工人的劳动强度以及节约了能源,并且能够使加热对象的温度按照某种指定规律变化。而且微型计算机在智能温度测量和控制电器中的控制作用是一种智能行为,所以,它在能量消耗上是比较少的,和普通仪表温度测量相比,智能温度测量与控制电器是一种节能电器。这不但对用户来说具有很大的意义,而且对整个社会来说都是有重大意义的。
2 电阻炉的数字控制电路设计的总体分析
本课题采用AT89C51单片机对电阻炉的加热过程进行控制[1]。使用热电偶作为温度传感器把热信号转变成电信号,电信号再经过放大,经过模数转换再输入到CPU。控制器采用PID控制算法,温度控制的原理是通过调整晶闸管的导通时间来调节加热主回路的有效电压,从而达到温度控制的目的。系统由AT89C51单片机、温度传感器、A/D转换器、串口通信、晶闸管触发电路等组成的控制器和被控对象电阻炉构成一个闭环控制系统。系统控制程序采用模块化设计结构,主要包括主程序、中断服务子程序。系统采用过零触发等技术,省去了传统的D/A转换元件,简化了电路,并且提高了系统的可靠性,同时,系统可以实时控制电阻炉的实际温度[2]。硬件原理如图1:
3 电阻炉数字控制电路的硬件接口电路设计
在硬件的设计前期,根据框图对电路中可能出现的电路,进行了模拟实验,并根据实验结果对后期的硬件设计进行了合理化的修改完善。在前边已分析了系统并绘制了框图,下面将根据框图分别设计各部分电路[5]。
3.1 单片机系统构成的接口电路设计
本设计中由单片机和一个锁存器74LS373组成,在这里来研究一下在本设计中功能。如图2所示,分别将P0、P1、P2、P3口引出跟本设计的其他部分连接。在P0口连接一个地址锁存器74LS373,就是为了当P0口上片外存储器低八位地址稳定后,单片机在ALE线上发出正脉冲的下降沿,这样就把片外存储器低8位地址锁存在地址锁存器74LS373中[2]。
图2 单片机部分原理图
3.2 数据采集接口电路的设计
根据现场电路特点,对模拟量信号进行低通滤波,滤除各种高次谐波的干扰和信号传输通道感应的干扰,得到反映设备电路实际状态的真实信号;本系统采用了新型的高精度模拟信号隔离放大器,得到安全的模拟量信号输入。同时采用12位高速A/D转换器ADS774把模拟量转换为可由微机进行处理的数字量。ADS774是一种具有采样保持功能的12位A/D转换器,可以方便地和MCS-51、AT89C51等CPU系统连接,模拟量输入范围可以是0~10V、0~20V、±5V或±10V,最大转换时间不超过8.5μs,功耗小于120mV。由于ADS774片内有时钟,故无需外加时钟信号。该电路采用单极性输入方式,可对+5V或+10V模拟信号进行转换。采用查询方式读取ADS774的转换结果,由于ADS774输出12位数码,所以当单片机读取转换结果时,需分两次进行:先高8位,后低4位。由A0=0或A0=1来分别控制读取高8位或低4位[3]。
本设计的ADS774与AT89C51单片机接口电路如图3所示。单片机的P0口接转换器的输出口,采用12向左对齐输出格式。STS接单片机的INT0口,就是把转换器的标志位STS作为单片机的一个外部中断源。那么在本设计中判断AD转换是否完成就需要在单片机中用中断法判断。
图3 ADS774与AT89C51的接口电路
3.3 串行通信接口电路的设计
存储信息的采集器,对信息量的大小有严格的要求,由于采集器的存储量有限和进一步针对性处理,信息需要传入微机内.采集器与微机通过微机的串口实现通信[11]。利用AT89C51单片机的串行口与PC机的串行口COM1或COM2进行串行通信,将单片机采集的数据传送到PC机中,由PC机的高级语言或数据库语言对数据进行整理及统计等复杂处理。PC机串行口给出的信号是一个RS-232信号。它是一个基于3~7V正电压、3~7V负电压的脉冲链。这一信号必须转化为一个0~5V的脉冲链,以便处理器读取。中间转换电路采MAX232芯片来实现。在设计硬件接口电路时,应充分考虑到电路的电气特性,逻辑电平以及驱动能力的匹配问题,若匹配得不好,将会导致通信失败[8]。
本文采用MAX232作为机与单片机的串行通信接口芯片,硬件连接时,可从MAX23中的2路发送器和接收器中任选一路,只要注意发送与接收的引脚对应关系即可,接口电路如图4所示[9]。
图中上半部分电容C1,C2,C3,C4,C5及V+,V-是电源变换电路部分。在实际应用中,器件对电源噪声很敏感,因此VCC必须对地加去耦电容C5。C1,C2,C3,C4取同样数值的胆电解电容1μF/16V。用于提高抗干扰能力,在连接时必须尽量靠近器件。图中下半部分为发送和接收部分。实际应用中,T1 IN,T2 IN 可直接连接TTL/CMOS电平的MCS51的单片机的串行发送端TXD,R1 OUT,R2 OUT可直接连接TTL/CMOS电平的MCS51的单片机的串行接收端RXD/TXD;T1 OUT,T2 OUT可直接连接PC机的RS-232串口的接收RXD/TXD;R1 IN,R2 IN可直接连接PC机的RS2232串口的发送端TXD[4]。
图4 AT89C51单片机与PC机串行通信接口
3.4 热电偶信号处理电路的设计
温度检测元件及变送器的选择要考虑温度控制范围及精度要求。对于0~1000℃的测量范围,采用热电偶,如镍铬热电偶,分度号为EU,其输出信号为0~41.32mV,经毫伏变送器,输出0~10mA,然后再经过电流——电压变换电路转换为0~5V电压信号。为了提高测量精度,可将变送器进行零点迁移,例如温度测量范围改为400~1000℃,热电偶给出16.4~41.32mV时,使变送器输出0~10mV,这样使用8位A/D转换器,能使量化误差达到±2.34℃[7]。
在实践中结合AD595自身特点,此芯片无需任何外围电路,结构简单,输出幅值大,误差小,工作可靠,实用性强,设计了以AD595为核心且结合K型热电偶的测温电路,电路图为图5。
图5 AD595热电偶信号处理
4 电阻炉数字控制电路的软件的实现
4.1 整个软件的功能及说明
我们设计这个软件主要是为了达到AD转换以后的数字信号传送给单片机进行处理和运算,单片机控制AD转换过程,并且实现单片机与PC机之间的通信。下面的程序就是此次设计的完整程序,并且给于程序以注解[6]。
系统控制程序采用三重中断潜套首先使T0定时器产生定时中断,作为本次采样周期,在中断服务程序中启动A/D,读入采样数据,然后输出控制脉冲信号,脉冲宽度则有T1计数器益出中断决定。在等待益出中断时将本次采样数值转换成温度值放入缓冲区,然后起用串口中断,把AD转换的结果分两次传送到PC机中。从从串口中断返回后,再从T0中断返回,并继续往PC机上传温度数据并进行调节。
4.2 程序设计
程序包括AD转换的ADS774 中断和定时器中断还有串行通信中断共三次中断和主程序初始化。图4是系统控制程序流程图。
第一个中断为ADS774的中断int0() interrupt 0,它所实现的是AD转换结束后给单片机INT0口一个中断信号,实现ADS774转换的数据发送到单片机。其流程图为图6[10]。
第二个中断为定时器0的中断time0() interrupt 1,在这里做一个50ms的定时程序。目的是50ms启动一次ADS774。形成转换的循环周期。其流程图为图7。
第三个中断为串行口的中断serial() interrupt 4,在这个中断程序中我们完成单片机与PC机的通信。把AD转换的结果分两次传送到PC机中。12位的转换结果,我们先发送高八位,第二次发送低八位。实现完整的通信。其流程图为图8。
最后是主程序的初始化设置。在这段子程序里我们规定了定时器的定时时间,还设定了单片机的波特率。设定了中断程序的中断开始设置。其流程图为图9。
通过上面的软件功能的介绍,根据各部分的流程图来完成电阻炉温度控制核心部分单片机主程序的编写。
主程序清单:
#include <at89x51.h>
unsignedcharcon1;
unsignedcharontime;
unsignedcharcon2;
//串行中断次数
unsigned int settemp;
unsignedcharsettemp1[3];
unsignedchartemp1[2];
unsigned int temp;
unsignedchartempH;
unsignedchartempL;
unsigned int tempD;
// AD转换得到的数字温度值
float tempA;
// tempA为AD595的输出电压(V)
unsignedcharxdata tempLL _at_ 0x7FFF;
//tempLL中存AD转换结果的低四位
unsignedcharxdata ADS774 _at_ 0x7FFE;
//ADS774中存AD转换结果的高八位
unsignedcharontime1;
int0() interrupt 0//ads774中断
{
tempH=ADS774;
tempL=tempLL;
tempL=tempL>>4;
tempD=tempH*16+tempL;
tempA=tempD*10/4096.0;
Kvoltage=(tempA*1000000/247.3-11)/1000;
temp=tempA*100;
//粗略值,精确值需查表得到
temp1[0]=temp/256;
temp1[1]=temp-tempH*256;
}
time0() interrupt 1//定时器0中断
{
TH0=0x3c;
TL0=0xb0;
if(!ontime)
{
P1_0=0;
ontime=20;
}
ontime?
if(梒on1==0)
{
con1=20;
P1_0=1;
ADS774=0xFF; //启动A/D转换
ontime=ontime1;
}
}
serial() interrupt 4//串口中断
{
if(RI==1)
{
RI=0;
switch(con2)
{
case 1,2:
settemp1[0]=SBUF;
break;
case 1:
settemp1[0]=SBUF;
break;
case 2:
settemp1[1]=SBUF;
ES=0;
for(con2=0;con2<=1;con2++)
{
SBUF=temp1[con2];
while(TI==0);
TI=0;
}
con2=0;
break;
}
con2++;
}
ES=1;
}
main()//初始化
{
unsigned int i;
con1=20;
con2=1;
ontime=ontime1=0;
TMOD=0x21;
TH0=0x3c;
TL0=0xb0; //T0定时时间为50ms
ET0=1;
TR0=1;
TH1=0XFD; // 波特率9600
TL1=0XFD;
TR1=1;
SCON=0x50;
ES=1;
IT0=1;
//下降沿触发
EX0=1;
//T0中断允许
EA=1;
P1_0=0;
while(1);
}
5 结束语
论文中设计的数字控制电路实用性强,结构较为简单,成本低,外接元件少。在实际应用中工作性能稳定,测量温度准确,精度较高。系统在硬件设计上充分考虑到了可扩展性,经过一定的添加或改造,很容易增加功能,如从单片机主芯片串行口连接RS232转换芯片MAX232与PC机相连,完成温度实时数据的传递和其他控制工作。适用范围广泛,大多数工业控制中,本电路可以作为智能控制系统的一部分,与其它设备协同工作。系统移植性强,只需改变前端测量用的传感器类型,可在此基础上修改为其他非电量参数的测量系统。
参考文献:
[1] 孙涵芳,徐爱卿.MCS-51系列单片机及其应用系统设计[M].北京:北京航空航天大学出版社,1988.
[2] 赵文忠,程启明.微机控制技术[M].北京:机械工业出版社,1993.
[3] 李朝青.单片机原理及接口技术[M].北京:北京航空航天大学出版社,1994:105-110.
[4] 胡汉才.单片机原理及其接口技术[M].北京:清华大学出版社,1996:211-250.
[5] 沈德金,陈粤初.接口电路与应用程序实例[M].北京:北京航空航天大学出版社,1990:140-227.
[6] 成继勋,周少武等.微型计算机控制技术[M].徐州:中国矿业大学出版社,2001:22-55.
[7] 黄泽铣.热电偶原理及其检定[M].北京:中国计量出版社,1993:85-95.
[8] 邹逢兴.微型计算机接口原理与技术[M].长沙:国防科技大学出版社,1993:131-145.
[9] 李泓.MCS-51系列单片机与IBM-PC微机通信技术[J].电子技术应用,1996:7-10.
[10] 黄泽铣.热电偶原理及其检定[M].北京:中国计量出版社,1993:85-95.
[11] RS-232转RS-485/422智能转换器电路图.http://www.cndzz.com/index.htm
[12] WU Hongxin,Intelligent control based on intelligent characteristic model and its application,Science in China (Series E),2003,46(3).