摘要:本文详细介绍了基于单片机AT89C52的温度测量系统,对系统中信号输入通道、信号处理、数据显示等从硬件和软件两方面进行了阐述,并做了相应的理论分折,系统可以实现多点温度巡回采集处理与变送的功能。
关键词:传感器;单片机;变送器。
[b]一、概述
[/b] 石灰炉烧制石灰时炉内各处的温度可能不一样,生产工艺要求得出炉内四点的平均温度,了解各点的温度值,对平均值及各测量点的温度进行报警处理;若某处的信号不正常(传感器损坏或断线)能及时报警并排除在数据处理之外。本系统可完成以上功能,检测处理石灰炉的温度,并以4-20mA形式变送远传温度平均值或最高一点的温度。该产品的工作示意图如下图1所示,在该石灰炉内有四个点分别放四个热电偶,这四个热电偶就是该系统的四路输入信号来源。利用该系统测出如图1所示的四点的温度(T1,T2,T3,T4)并把每一点的温度值送到面板显示。
注:T1、T2、T3、T4是石灰炉内四个检测点,
即是文中所提到的信号路数。
图一
[b]二、系统硬件设计
[/b]1、系统结构框图及人机界面
系统的结构框图见图二。系统硬件部分主要由前端输入电路,A/D及D/A电路,人机界面电路,CPU及外围电路组成。系统达到的主要功能是充许四路信号输入,用户可以通过参数设定选择输入热电偶类型,平时显示温度平均值,若操作者需要可以按动面板上的按键查看任一路信号的温度。四路信号是独立的,有一路短路或断线故障,不影响其它几路信号的工作。仪表具有超限报警功能及热电偶断线提示功能。温度平均值或温度最高的一路信号的变送为4-20mA电流信号输出。系统具有掉电保护功能,当掉电时,设定数据可以保存。
功能原理图(图2)
图3、控制面板
系统设计有良好的人机界面,操作显示面扳见图3,在控制显示面板上有两排数码管和四个按键,进行系统工作的显示和参数的修改。系统工作方式分为两个状态分别为编程和运行。利用一号键K1(状态切换键)可以在两种状态间切换。在编程状态时,上一排数码管显示参数代号,下排数码管分别显示对应参数。在这种状态下,利用二号键K2(移位键)可以顺序变换不同的参数代号及参数。利用三号键K3(加键)和四号键K4(减键)可以对参数进行修改。
在运行状态时,上一排数码管显示各个信号回路顺序号(1""5),下排数码管分别显示对应温度。其中1"4路分别显示四路回路号及其温度,5路显示四路中温度平均值。这五路自动循环显示,利用四号键K4(定位键)可以使显示内容停在当前回路上。在编程或运行状态下,无论何时按下K1,都可使状态变换到另一种状态的初始阶段。
电路设计中没有扩展总线及程序存储器及I/O口,CPU的四个并行口全作为普通I/O口使用,CPU及外围电路都是标准用法,在此重点介绍有设计特色的A/D及D/A电路和人机界面电路及电源电路。
2、数据采集电路与放大电路
数据采集部分电路如图4所示,限流电阻R1和稳压管TL431产生2.5V标准电压。系统共有7路模拟输入信号,4路热电偶信号输入(EXT1----EXT4),1路冷端补偿信号,一路基准信号,一路地信号(EXT5)。2.5V电压加在10K电阻和外接二极管串联支路上,构成热电偶的冷端补偿电路,它是利用二极管正向工作的电压-温度特性测量冷端温度,基准信号利用2.5V电压和分压电阻产生。因此采用了8选1多路模拟开关CD4051,由单片机的P2.0、P2.1、P2.2三个引脚高低电平控制模拟通道的选择。由于输入热电偶分度号由用户设定,不同分度号信号大小不一,故设计了由OP07和4051(U2)组成的程控放大器,输入信号经放大后进入A/D,经采集处理后得出各路信号值。程控放大是利用单片机对4051的控制,选择不同的通道,同时也就选择了不同的放大倍数。4051外接的电阻是:R25=20K,R26=47K,R27=2.4K,R28=3.9K,R29=1.9K,共有4个不同的放大倍数,分别为放大倍数1=(20+47+2.4+3.9+1.6)/(47+2.4+3.9+1.6)≈1.3倍、放大倍数2=(20+47+2.4+3.9+1.6)/(2.4+3.9+1.6)≈10倍、放大倍数3=(20+47+2.4+3.9+1.6)/(3.9+1.6)≈14倍、放大倍数4=(20+47+2.4+3.9+1.6)/1.6≈46倍。1.3倍的放大倍数主要用于冷端补偿二极管信号的采集,电路中四个22M上拉电阻完成热电偶断线捡测功能。
图4、数据采集电路
石灰炉内4点放四只热电偶,作为系统的四路mV信号输入端。热电偶信号被选通输入后进入程控放大电路,信号分度号不同则mV值的高低也不同,通过软件选择不同的放大倍数,使这些放大后的信号最大值接近A/D的最大充许值;以充分利用A/D资源,保证测量精度。设放大倍数为A,则从程控放大出来的信号即为AX。各种信号的放大倍数的确定和后面A/D器件的模拟输入有关,本电路的A/D选择7135(五位半),基准电压为0.5V,7135的模拟输入的范围为0~1V电压。例如B、S标准热电偶,放大倍数应选择46,K、E、标准热电偶放大倍数应选择14。冷补二极管信号为0.65V左右,采用1.3倍放大倍数,现以一路信号的转换计算为例说明,测量某路热电偶输入时依次采集外接热电偶输入毫伏值、冷端补偿二极管电压降、基准电压及模拟地。从4051的X2端输入V基是己知电压,并固化于程序中,D基、D零、Dx分别是基准、零点及输入热电偶信号的实时A/D采集值,通过下式可以完成零点满度的自校正,计算出VX值。由于V基、Vx及地三个信号经过同样的硬件输入通道,硬件的离散性误差及零点满度漂移对三者的影响相同,通过下面公式可以校正零点、放大倍数及A/D各环节的误差,在用一般器件的情况下可保证系统的测量精度。
D基-D零/Dx-D零=Vx/V基
由于热电偶mV温度间关系是非线性的,我们采用了折线法进行非线性校正,VX通过分段非线性数据处理,可以算出对应温度CX,加上通过测量冷端补偿二极管电压得出的冷端补偿温度C0,就得到该路的实际测量温度C,即C=CX+C0。
同时由于热电偶的原因,在测量端的电压值会被抵消了一部分。这种情况造成的误差影响较大。必须对它进行冷端补偿。因为二极管在温度变化时,其正向导通电压变化稳定,为-2mV/℃,因此我们采用二极管测冷端湿度进行补偿,具体做法如下:
第一步,我们冷端补偿输入端输入一标准电压0.7V得到一个AD采样值D0,然后我们再输入一标准电压0.6V再得到一个AD采样值D1。两者相减得到一个值ΔD,根据二极管的特性,每1℃电压变化2mV,我们输入的第1个标准信号和第2个标准信号相差为100mV,相当于二极管正向电压变化100mV,对应冷端温度变化50℃,就可以求出冷端温度每变化1℃时其对应AD值变化多少的系数K=ΔD/50,由于冷端温度变化范围小(0-50℃),相对精度要求不高,因此设计产品批量生产时把该系数直接固化于程序中。当把冷补二极管1N4148接入输入端后,据上面所述,可以根据该系数及冷端AD采集值变化量的大小推算出冷端温度变化的大小。
第二步:我们在仪表设置状态输入当前环境温度Ta,并及时测得二极管1N4148所在端电压经放大AD转换后的值Da,并将Ta、Da其存储到EEPROM里面,以后仪表处于工作状态时我们实时地测出二极管AD转换后的值Db,再把两者相减得ΔDab=Da-Db,ΔDab除以K(代表每一个1℃的AD采样值的大小)得到一个温度值差Y。然后Y加上设置环境温度初值Ta得到实际冷端温度C0=Y+Ta。这种冷端补偿有一定误差,当环境温度变化时,所测的实际冷端温度C0将会跟随变化,在一定时期内环境温度的变化不大,因此它引起的误差和热电偶相比十分的小,可以忽略。但当环境变化较大时,比如从冬天到夏天的变化,其变化为几十℃,如果冷补误差大于1度,我们可以重新输入基准Ta校正。
3、A/D电路
A/D电路主要由74LS157、ICL7135芯片组成,7135采用0.5V基准信号,模拟电压输入范围为0-1V。ICL7135采用动态扫描BCD码输出方式,即万、千、百、十、个各字位BCD码轮流出现在B8,B4,B2,B1端上出现,并在D5-D1各端同步出现字位选通脉冲。采集到的微弱信号经程控放大后,经过AD转换变成数字信号。使用了74LS157四2选1选择器,使"万"位数据输出和其它的三个标志信号(超量程、欠量程、极性输出)与BCD码数据输出的B8、B4、B2、B1共用C52的P0.0-P0.3四条I/O口线,分时传送是通过D5控制74LS157的选择端SEL实现。SEL输入低电平时选择1A-4A输出,输入高电平时选择1B-3B输出。因为"万"位数据只能输出0或1,是个半位。所以,正好和OR(过量程)、UR(欠量程)和POL(正负极性)三位构成四位数据输出,供单片机读取。与C52的硬件接口方式是查询方式,软件上利用对D5、D4、D3、D2、D1查询来实现"万"、"千"、"百"、"十"、"个"上的数据输出。
4、控制面板电路
该部分电路包括两部分:按键控制电路和显示电路。具体电路见图5。电路采用ZLG7289作为核心芯片,通过三个引脚与单片机连接,单片可完成动态显示扫描及按键查询,节约了单片机I/O口硬件资源及时间资源。实际电路中Zlg7289的选片/CS接地时钟线CLK接P2.7口数据线DIO接P2.6口键信号线KEY接P2.5口。
图5、控制面板的电路的原理图
zlg7289具有SPI串行接口功能的可同时驱动8位共阴极数码管(或64只独立LED)的智能显示驱动芯片,无须外围元件可直接驱动八位LED数码管并可同时连接多达64键盘的键盘矩阵,单片即可完成LED显示及按键的扩展。zlg7289内部含有译码器,可直接接受BCD码或16进制码,并同时具有2种译码方式,此外,还具有多种控制指令,如消隐、闪烁、左移、右移、段寻址等。本系统用了两排4位数码管,数码管用的是动态显示的。根据zlg7289的要求,数码管选用共阴极的,Zlg7289的18脚"25脚接数码管的位驱动端,10脚"17脚接数码管的段驱动端,通过数据线和时钟线可以把要显示内容送入7289。本电路只设计了四个按键,当有键按下时,KEY引脚电平发生变化通知CPU通过数据线和时钟线读取键值。
5、报警电路及信号输出电路
报警有两种:上限报警和下限报警,两个报警继电器分别通过PNP驱动三极管接在单片机的P0.5和P0.7,低电平有效。软件设计当四路信号及平均值超过各自所定的上限时,继电器就发出报警,同时在控制面板的上排数码管的最后一位显示H字样;同样,当四路信号及平均值低于设定的下限时,继电器也报警,并在同一个位置显示L字样。
模拟输出部分的电路图如图6所示。单片机根据设定参数选择把温度平均值或温度最高那一测量点信号送到十位D/A芯片7520,配合LM741放大器得到电压输出;最后经再经过一个LM741构成的V/I转换电路,得到模拟电流4-20mA及1-5V电压形式输出。
图6输出电路原理图
6、开关电源电路
本变送器采用DDZ-Ⅲ型的电动单元组合仪表24V直流电源,这种供电方式的优点是各单元省掉了电源电压器,没有工频电源进入单元仪表,既解决了仪表发热问题,也为仪表的防爆提供了有利条件。由于内部需要%26;#177;5V,所以该系统采用了DC/DC开关电源,生成5V和-5V电压。电源部分电路如图7。
图7、电源电路图
电源电路采用的MC34063是一种集成了DC-DC变换主要功能电路的芯片,它能被设计完成升(降)压和极性变换的功能,而且所需外接元件少。外输入24V电压,经过MC34063电压可以转换为+5V,而后,该电压又经过ICL7660变成-5V电压。24V电压可以同时供内部4-20mA输出电路使用。电路工作时5V最大电流0.4安培,-5v最大电流0.02安培。
[b]
三.软件设计及调试[/b]
软件设计主要有主程序,ICL7135A/D转换程序,BCD码转换程序,运算比较程序,读写24C02子程序,查表程序,功能键子程序等功能模块。主程序流程图如图8所示。
主程序主要包括两大分支,一个是编程状态,一个是运行状态。
单片机首先进行初始化,程序的初始状态设置为运行状态,除刚通电进入运行状态外,以后程序须判断状态标志位,根据判断结果程序进入编程或运行状态。在运行状态下无法对各参数进行编辑,只能从24C02读出各种运行工作参数,巡回测量输入信号,最后通过零点满度自校正处理,冷端补偿计算,查表处理得出各测量点温度值。在该状态下可通过←键选择显示测量、报警、故障信息等各种运行参数。在编辑参数的状态下系统不进行测量,刚进入编程状态时要求输入编程充许密码,在输入密码正确的前提下,可以通过←键选择各设定各参数,并可通过↑↓按键修改,存入
24C02中,停止按键操作5分钟后不管是否按状态键均自动转入运行状态。
单片机在运行状态时,上面四位数码管显示回路号(最合二位显示报警及故障信息),下面四位数码管分别显示对应数据,可通过K4键来切换显示不同的回路及其参数。其中回路号1-4表示不同的四路信号,平均值在第五路显示。比较后其中最大的一路及四路平均值可以通过参数的设定选择以4-20mA形式变送输出。软件确定4051与AT89C52相连四路信号选择电平,选择的模入信号经程控4051和运放放大后,进入ICL7135进行A/D转换,由电压信号转化为BCD码(由万位到个位,五位地址输出)。利用转换子程序把BCD码转换为十六进制数,最后进行各种数据处理得出温度值,求出最大值及平均值,并进行报警及信号故障判别处理。
参考文献
[1].高海生杨文焕主编.单片机及应用技术大全[M].成都:西南交通大学出版社,1996
[2]王福瑞.单片微机测控设计大全[M].北京:北京航空航天大学出版社,1999
[3]沙占友.新型单片机开关电源的设计与应用[M].北京:电子工业出版社,2001
[4]候自林.过程控制与自动化仪表[M].北京:机械工业出版社,2000
作者简介:
引用地址:温度测量处理变送器设计
上一篇:基于FPGA的误码率测试仪的设计与实现
下一篇:一种实用的集成芯片测试仪的设计
- 热门资源推荐
- 热门放大器推荐