基于单片机的平转电容温度检测方案
梁戈 王志海 李金彤
(国家新闻出版广电总局七二三台)
摘要:本方案以51单片机和MAX197芯片为核心,设计了AD转换系统和串口通讯系统,对平转电容的温度进行实时在线测量,将测量结果通过串口送至电脑终端,供值班人员监视。关键字:单片机 AD转换 温度检测1引言在我台的DF100A型短波发射机中,使用平转为高末级功放和300欧的平衡馈线之间提供阻抗匹配。它是由一个转换器和相应的调整元件组成的U形管状传输线,其中包括2只真空可变电容。通过调整这2个电容容值,改变平转的阻抗,使输入阻抗与谐波滤波器的输出阻抗匹配,减少发射机的反射功率,获得最高的效率。然而,这2个电容由于长时间使用,其真空度会出现下降的情况,这会造成两极间绝缘电阻减小,漏电流增大,电容器温度增高,影响到使用寿命。为此,本文提出基于单片机的温度检测方案,对平转电容的温度进行在线测量,当其超过某一设定值后,可推断出该电容存在漏电流且很大,提醒当班者和机房主任早作防范。本方案中,一个单片机负责3台发射机的平转,即6个真空电容的温度检测。2测温系统原理本方案采用IRTP-300L型红外测温探头,测温点选择为靠近电容帽的轴套处,该探头将温度信号转化成模拟电信号。这个模拟量首先送到差动运算电路的输入端,进行滤波和放大,再达到MAX197芯片进行模数转换,这个芯片的工作情况是由单片机控制。转换后的12位数字信号通过并行形式输入给单片机,单片机再对此信号进行处理,将电信号转回成温度信号,以此判断漏电流是否很大。并且把这些信息由串口发送给PC机检测终端,方便值班员监视。具体流程图见下图1。图1 方案流程图
3硬件设计本方案的控制器选择STC89C52RC单片机,它要达到的功能有:第一,控制MAX197模数转换芯片,单片机与该芯片搭建接口电路,使得从前级送来的模拟信号可以进行AD转换,本方案中,一个单片机检测6路温度信号,而MAX197芯片有8路模拟输入接口,最大能够介入8个模拟量,所以能够胜任本方案的要求,且转换后的数字信号由芯片送到单片机。第二,对送来的数字信号进行处理,将电信号转回成温度信号,用串口送到PC终端,以此判断漏电流是否很大,提醒当班者。3.1 IRTP-300L型红外测温探头IRTP-300L型红外测温探头是一种集信号处理电路以及环境温度补偿电路的多用途经济型红外测温探头,完全由工厂进行校准。这使它成为多用途,紧凑型,高精度红外测温头。在本方案中,该探头将0-50度的温度信号转变成0-5伏的电信号,其响应时间是300ms,距离系数是8:1,不锈钢封装。有4条接线:红线是电源正,黑线是电源负,白线是信号正,蓝线是信号负。3.2 模拟差分放大电路从传感器送来的信号是模拟差动信号,即2根线,一根是范围从0到5伏的信号线,另一根是0伏信号线。这2根线绞成双绞线,受外部相同的环境影响,当测量平转处的真空电容时,主要干扰来自高电压和电磁波。经过差分电路处理,消去相同的外部干扰信号。差分电路共有2级,前级差动放大器用来消除干扰信号,后级增益放大器用来对信号进行放大。传感器送来的信号范围是0-5伏,经过本电路处理后输出信号范围是0-5伏。图2 差分放大电路
根据虚断和虚短原理,U4=U3,同时可以看到,根据此公式,可以取Ria3= Ria2= Ria1= Ria0可以得到U5+ U1=2U3,U4=0.5U2,另一方面U3=U4,则U1+U5= U2,即U5=U2-U1。而Ria11和Ria12是可调电阻,Ria11负责调整电路的放大倍数,Ria12负责电路使用前的调零操作。由公式,可以知道信号U7被送入MAX197的模拟量输入端。3.3 AD转换因为本方案要监测6个温度节点,所以后续电路中AD芯片要对着6个信号分别进行模数转换,本方案选择MAX197芯片,省去了多路模拟量选择芯片。MAX197是Maxim公司推出的具有12位测量精度的高速A/D转换芯片,只需单一电源供电,且转换时间很短(6us),具有8路输入通道,还提供了标准的并行接口——8位三态数据I/O口,可以和大部分单片机直接接口,使用十分方便。MAX197无需外接元器件就可独立完成A/D转换功能。它可分为内部采样模式和外部采样模式,采样模式由控制寄存器的D5位决定。在内部采样控制模式(D5位为0)中,由写脉冲启动采样间隔,经过瞬间的采样间隔(芯片时钟为2MHz时,为3us),即开始A/D转换。每写入一次控制字,就会开启一次模数转换。当一次转换结束后,MAX197相应的INT引脚置低电平,通知处理器可以读取转换结果,在第一个读周期或者写一个新的控制字时,INT返回高电平。MAX197与单片机的接口电路如图3所示。图3 MAX197与单片机的接口电路
如图所示,MAX197使用内部参考电压源,芯片内的2.5伏基准源经过放大后向REF脚提供4.096伏参考电压,这时候应该在REF引脚和AGND引脚之间接入一个4.7uf的电容,在REFADJ和AGND引脚间接入一个0.01uf电容,CLK引脚接地表示采用内部转换模式;片选信号,写信号,读信号,高地位输出选择信号,中断信号分别于单片机的P2相关引脚相连;从第7引脚到17引脚是MAX197的数据信号线,和单片机的P0口相连,用于写入控制字以及读出转换结果;从16到23引脚是模拟量输入端,可接从差分电路输出的信号。本方案中,待测发射机有6部,这6部都要使用串口和电脑传输数据,因此要使用多串口卡,保证每一时刻只有一个单片机与电脑通讯。电脑上的终端软件使用VC软件编写,实现人机界面。4 软件设计本方案中的软件设计主要包括以下几部分: AD转换程序;温度数据处理程序;串口通讯程序;电脑人机界面设计,电脑终端的人机界面使用VC编写。以下是软件流程图:图4 软件流程图
4.1MAX197驱动程序:以下程序是MAX197的读写和初始化程序,在主函数中作为子函数被调用。#include<reg52.h>#include<intrins.h>sbit AD_CS=P3^2;//设P32脚为片选信号sbit AD_WR=P3^3;//设P33脚为写信号sbit AD_RD=P3^4;//设P34脚为读信号sbit AD_HBEN=P3^5;//设P35为高低位选择信号sbit AD_INT=P3^6;//设P36为转换结束后的中断信号unit MAX197_Write(char temp){//向MAX197写控制字,通过形式参数tempAD_CS=1;//片选信号设为高电平AD_WR=1;//写信号设为高电平delay(10);//延时AD_CS=0;//片选信号设为低电平AD_WR=0; //写信号设为低电平delay(30); //延时P0=temp;//将控制字发射给MAX197AD_WR=1; //写信号设为高电平AD_CS=1;} //片选信号设为高电平folat MAX197_Read(){//从MAX197读取转换结果float premp;unit temph,templ;while(AD_INT);//当AD_INT为1时,表示模数转换正在进行,该循环一直不停,当AD_INT=0AD_HBEN=0;//时,模数转换结束,程序可以跳出盖循环向下运行。HBEN=0,读取低8位delay(10);AD_CS=0; //片选信号设为低电平AD_RD=0; //读信号设为低电平delay(10);templ=P0;//将低8位转换结果传送给templ变量delay(30);AD_HBEN=1;// HBEN=1,读取高4位temph=P0; //将高4位转换结果传送给temph变量temph=temph&0x0f;//通过位运算去除temph的高4位,只要其低4位AD_RD=1; //读信号设为高电平AD_CS=1; //片选信号设为高电平premp=temph*256+templ;//将两个变量相加,最终得到12位数字信号return permp;}//函数返回premp参量Void Init_MAX197(){P0=0xff;MAX197_Write(0x40);//写控制字:模拟量通道选择第1通道,输入信号大小是0到5伏,P0=0xff;}// 内部控制模式,正常工作状态,内部时钟模式4.2 串口初始化程序下面的程序对串口进行初始化设置,该程序配合后面4.3的程序,可以把温度数据由单片机送到电脑终端,提供给值班员监视。void Uart_Ini( void){EA=1;//使能总中断ES=1;//使能UART中断TMOD=0x20;//设置定时器1,其定时方式是第2种SCON=0x50;//设置串口工作方式1,允许串口接收TL1=0xfd;//定时器的初值低8位设置,这个程序中波特率设为9600TH1=0xfd;//定时器的初值高8位设置TR1=1;//定时器启动}4.3串口数据输出程序该程序把数据从单片机的串口数据缓冲器发送出去,在main函数里面被调用。void Com_Out_Char(char Out_Data){//定义形式参数OutDataSBUF=Out_Data;//将参数Out_Data的值送给串口数据缓冲寄存器while(!TI);//空语句判断字符是否发送完毕,当发送完毕后,结束while循环TI=0;}//TI清零4.4主程序define Add P1//宏定义将P1口用宏Add代替main( ){char j,a[3];//定义变量j,a[3]float m,temp;//定义浮点类变量n,tUart_Ini();//串口初始化while(1){for(j=0;j<6;j++){Init_MAX197();MAX197_Write(0x40+j);delay(10);n=MAX197_Read();temp=(180×n)/4095;//将电压信号通过计算还原成电容的温度信号a[0]=(char)(t/100);//这3条指令将浮点数转化成字符类型以便进行串口发送a[1]=(char)((t-a[0]×100));a[2]=(char)((t-a[0]×100-a[1]×10));while(*a!=’\0’){//判断是否到了数组a[]的尾部Com_Out_Char(*a);*a++;}//把数据通过串口发送,发送完一次a的地址后移一位*a=0;}}}5结语实践应用表明,该方案能够较准确的测量电容温度。由于选择差分信号,电路可以消除周围环境中存在的大量温度电磁波干扰,保证从传感器送来的模拟量的精度;模数转换芯片的质量完全满足使用需求,即达到实时要求和精度要求;51单片机作为总控制器,协调控制各个硬件的工作,将电信号转回成温度信号。当温度过高产生报警,提醒当班者早做预防,一方面防止机器掉高压造成停播,另一方面加强对电容的维护,延长其使用寿命。6 参考文献[1] 谢嘉奎,电子线路.北京:高等教育出版社,1999[2] 张著等,数字设计.北京:北京理工大学出版社,2002[3] 魏瑞发,数字化调幅发射机.北京:国家广电总局无线电台管理局[4] 李广弟等,单片机基础[M].北京:北京航空航天出版社,2001.7:69-97[5] 楼然苗等,51系列单片机设计实例[M].北京:北京航空航天出版社, 2003.3:35-46 编辑:中国新闻技术工作者联合会
评论 点击评论