基于单片机的风机轴承温度检测方案
杨玉平 梁戈
(国家广电总局723台)
摘要 本方案以51单片机和MAX187芯片为核心,设计了AD转换系统和串口通讯系统,对风机轴承的温度进行实时在线测量,将测量结果通过串口送至电脑终端,供值班人员监视。
关键字 单片机 AD转换 串口通讯 温度检测
1引言
近年来,以单片机为核心的控制系统在生产生活领域运用得越来越多,在提高自动化程度,节省人力资源的同时更加改善了生产生活质量。无线局各个基层台站都在努力创新研发,深化台区自动化水平,提高播音质量,力争早日实现有人留守无人值班的目标。在我台的DF100A型短波机维护中,对风机水泵在播音中出现轴承抱死现象很头疼。水泵出现这种情况可以自倒备份水泵,而风机出现这种情况就没有那么幸运。只能倒代播机或是造成停播事故,给广播事业带来很大损失。通过多年来对所维护的风机的经验,我们得知其设备的正常维护运行温度在摄氏40度左右,如果风机的轴承有问题,那么它在高速运转情况下会升温很快。一旦温度达到150度时轴承就会出现抱死现象,发射机停止运行造成停播事故。有时即使不会在播音过程中造成抱死,如果在停机前温度已经很高,停机3个小时候温度下降,开机时同样会出现抱死现象,播音前发现问题更换设备有时候时间是不够的,同样会造成停播事故。我们设计这套方案能够有效地提前知道风机轴承的温度变化情况,及时发现问题,处理问题,减少不必要的停播事故。具体目的是对温度进行实时检测,当设备达到预警温度,通过声光发出警报,提醒值班员以及维修员提前采取措施更换设备。
2测温系统原理
本方案采用IRTP-300L型红外测温探头,将探头固定在风机的轴承支架上,测温点选择为靠近马达的轴套处,该探头将温度信号转化成模拟电信号。此模拟信号送予差分放大电路,这个电路实现对信号的滤波放大,再传送给AD转换芯片MAX187。MAX187芯片在单片机的控制下对模拟信号进行采样,量化,保持,编码,将其变成数字信号。再将此信号送给单片机,单片机对这个信号进行计算,得出数字式温度信号,并通过串口发送给电脑,以实现实时监测,具体流程图见下图1。
3硬件设计
本方案使用51系单片机中的经典芯片STC89C52RC型作为主控制芯片。该芯片成本低,技术成熟,从经济角度和可靠性考虑都是最佳选择。单片机所要实现的功能有:第一,控制多通路模拟信号选择芯片CD4051,通过地址编码实现对7路信号的循环选择。第二,控制AD转换芯片MAX187,单片机与MAX187组成接口电路,单片机向MAX187提供控制信号,从MAX187接收数据信号等,保证数模转换顺利进行。第三,对送来的数字信号进行计算,得到风机轴承的数字式温度信号,并将该信号通过串口发送给电脑,提供给值班员监视。
3.1 IRTP-300L型红外测温探头 IRTP-300L型红外测温探头是一种集信号处理电路以及环境温度补偿电路的多用途经济型红外测温探头,完全由工厂进行校准。这使它成为多用途,紧凑型,高精度红外测温头。它是一种高效的不受环境影响的电器测温头,例如污染,潮湿以及电磁干扰等环境。多用于工业非接触温度测量,如金属,玻璃,塑料,造纸等,轴承温度测量;电缆接头,开关柜,变压器和电气面板的故障监测等。在本方案中,该探头将0-150度的温度信号转变成0-5伏的电信号,其响应时间是300ms,距离系数是8:1,不锈钢封装。有4条接线:红线是电源正,黑线是电源负,白线是信号正,蓝线是信号负。
3.2 模拟差分放大电路 从探头送来的电信号是一组差分信号,其2条信号线容易受到机器元件,气压,周围温度的影响。由于这些影响对2条信号线的影响是相同的,所以可以使用差分电路将干扰信号一并删除。此电路分2级,第一级是差动放大器,第二是增益放大器。来自探头的电信号是0-5伏,经本电路处理后,输出的模拟信号即图2中IOUTX信号的范围是0-5伏。本方案要监测发射机上的7个温度节点,因此需要7路模拟差分放大电路。 3.3 多通路模拟信号选择芯片CD4051 因为本方案要监测发射机上的7个温度节点,所以后续电路中AD芯片要对着7个信号分别进行模数转换,那么就要对这7路信号分别进行差分滤波处理。本方案选择多通路模拟信号选择芯片CD4051,对7路模拟信号进行循环选取,这样就保证了每个节点的信号都可以被检测到,而且每一时刻仅有一路被选中。CD4051与单片机的接口电路如图3所示。 CD4051芯片相当于一个单刀八掷开关,开关接通哪一通道,由输入的地址码ABC来决定。INH是禁止端,当INH=0时各路通道都接通,INH=1时各路通道都不接通。VDD是+5伏电源信号,VSS是地信号, VEE是另一个电源端,作为电平移位时使用。比如VDD=+5伏,VSS=0伏,VEE=0伏时,芯片输入信号的范围可以使0到5伏;VDD=+5伏,VSS=0伏,VEE=-13伏时,芯片输入信号的范围可以使-13到5伏。本方案中,由于本方案中模拟信号的范围是0到5伏,所以设置VSS=0伏,VEE=0伏即可。使用16进制代码就可以对CD4051进行操作,比如当P1=0X07,这样芯片就选择的是7通道(二进制111)了。引脚1,2,4,5,12,13,14,15是8个输入端,接收来自图2的模拟输出IOUTX信号,本方案中只用前7路,所以引脚4悬空;引脚9,10,11连接单片机的P10,P11,P12引脚,对8个通道进行选择;引脚6,7,8接地;引脚3是输出端,将8路信号中的一路输出到MAX187的输入端。
3.4 AD转换 信号由差分电路送到MAX187芯片,进行AD转换,将模拟量变成数字量。MAX187芯片在单片机的控制下工作。MAX187是串行12位模数转换器可以在5伏电压下工作,接收0~5伏的模拟输入。它是逐次逼近式ADC,快速采样保持(1.5US),片内时钟,高速3线串行接口。MAX187的转换速度是75Ksps,通过一个外部时钟从内部读取数据,并且可以省却外部硬件而与绝大多数信号处理器通讯。MAX187与单片机的接口电路如上图3所示。 MAX187的引脚1接5伏电压,同时通过一个电解电容和陶瓷电容接地,引脚2连接CD4051的输出脚,引脚3接地保证芯片正常工作,引脚4是电压参考端通过一个电解电容接地,当接通电源20ms后电解电容充电完毕,可以进行正常的模数转换,引脚5接地,引脚6是MAX187的输出端,与单片机的P34脚相连,引脚7是片选信号与单片机的P32脚相连,引脚8是时钟信号与单片机的P33脚相连。本方案中,待测发射机有6部,这6部都要使用串口和电脑传输数据,因此要使用多串口卡,保证每一时刻只有一个单片机与电脑通讯。电脑上的终端软件使用VC软件编写,实现人机界面。
4 软件设计
本方案中的软件设计主要包括以下几部分:对CD4051芯片的控制,即对该芯片的地址编码;AD转换程序;温度数据处理程序;串口通讯程序;电脑人机界面设计,电脑终端的人机界面使用VC编写。以下是软件流程图:
4.1 MAX187驱动程序 此程序是MAX187的驱动程序,在主函数中作为子函数被调用,每调用一回就进行一次AD转换。 #include<reg52.h> #include<intrins.h> sbit AD_CS=P3^2;//设P32脚为片选信号 sbit AD_CLK=P3^3;//设P33脚为时钟信号 sbit AD_OUT=P3^4;//设P34脚为数字输出信号 unit Adc(void)//模数转换子函数,定义为无类型 {unchar i,temp;//定义局部变量 AD_CS=1; AD_CS=0; //片选信号产生下降沿启动I2C总线 AD_CLK=0;//时钟信号低电平开始模数转换 while(AD_OUT==0);//正在转换,当转换完成后AD_OUT不为0 AD_CLK=1; AD_CLK=0;//时钟信号产生一个下降沿表示后面开始传输数据 temp=temp^AD_OUT;//将MAX187转换的以为数字量赋给temp for(i=0;i<11;i++)//MAX187是12位芯片,所以进行12次转换 {AD_CLK=1; AD_CLK=0;// 时钟信号产生一个下降沿表示后面开始传输数据 temp=temp<<1;//位操作,temp的数据左移一位 temp=temp^AD_OUT;}// 将MAX187转换的以为数字量赋给temp AD_CLK=1; AD_CLK=0;// 时钟信号产生一个下降沿表示后面开始传输数据 AD_CS=1;//表示关闭I2C总线,结束模数转换 return temp;}//将temp的值返回给主函数
4.2 串口初始化程序 此程序将串口进行初始化设置,配合4.3中的程序,将温度数据通过串口从单片机传输到电脑上,供值班员监视。 void Uart_Init( void){ EA=1;//允许总中断 ES=1;//允许UART的串口中断 TMOD=0x20;//定时器1定时方式是2 SCON=0x50;//串口工作方式1,允许串口接收 TH1=0xfd;//定时器初值高8位设置 TL1=0xfd;//定时器初值低8位设置,本程序的设置使波特率为9600 TR1=1;//定时器启动}
4.3 串口数据输出程序 该程序实现串口输出数据的功能,在主函数中被调用,每调用一次就使一个字符数据通过串口被输出。 void ComOutChar(unsigned char OutData){//定义形式参数OutData SBUF=OutData;//将参数OutData的值赋给串口数据缓冲寄存器 while(!TI);//空语句判断字符是否发送完毕 TI=0;}//TI清零
4.4主程序 define add P1//宏定义将P1口用宏add代替 main( ){ unsigned char i,r[3];//定义变量i,r[3] float m,temp;//定义浮点类变量m,temp Uart_Init();//串口初始化 while(1){for(i=0;i<7;i++) {add=i;//控制CD4051选择7路模拟信号中的一路进入MAX187进行模数转换 m=Adc();//模数转换并将结果赋给浮点类变量m temp=(180×m)/4095;//将电压信号通过计算还原成轴承的温度信号 r[0]=(char)(temp/100);//这3条指令将浮点数转化成字符类型以便进行串口发送 r[1]=(char)((temp-r[0] ×100)); r[2]=(char)((temp-r[0] ×100-r[1] ×10)); while(*r!=’\0’){//判断是否到了数组r[]的尾部 ComOutChar(*r);*r++;}//把数据通过串口发送,发送完一次r的地址后移一位 *r=0;}}}
5结语
经过实践,该方案能够可靠地实现对风机轴承的温度监测,当温度过高时产生报警信号,提醒值班员及时进行操作,防止机器突然停播,解决了多年来无法处理的问题,消除了技术上的死角;同时保护轴承部分不会温度过高而损坏,延长其使用寿命,节省经济开支。
6 参考文献 [1] 王绍纯.自动检测技术[M].北京:冶金工业出版社,2001:25-27
[2] 王远.模拟电子技术[M].北京:机械工业出版社,1994:62-63
[3] 席德勋.现代电子技术[M].北京:高等教育出版社,1999:125-129
[4] 李广弟等. 单片机基础[M].北京:北京航空航天出版社,2001.7:38-41
[5] 楼然苗等.51系列单片机设计实例[M].北京:北京航空航天出版社, 2003.3:45-48
评论 点击评论