基于单片机的振动数据实时采集系统
2018-03-21黄应强温洪昌
黄应强, 温洪昌
(四川宜宾职业技术学院,四川宜宾,644003)
0 引言
旋转机械振动故障通常表现为转子不平衡,转子不对中,油膜涡动和油膜振荡,地脚螺钉连接松动等,这些故障特征频率都与转子的转速有关,等于转子的回转频率及其倍频或分频,通过对故障特征频率的分析,就能够找到故障的原因[1]。对设备的振动数据进行采集,然后经过FFT变换就能得到机器振动的频谱分布,然后与各种振动故障的特征频谱分布进行比对,从而明确故障原因,定位故障所在。目前商业化的数据采集与分析系统,如dSPACE等,价格昂贵,具有特定需求时,大多是在此基础上进行二次开发[2][3];MATLAB具有强大的数字信号处理、运算、分析等功能,并且编程方便,在振动信号的分析处理中得到了广泛的应用[4][5],文中利用MATLAB编制了对单片机传来的振动数据实时保存、动态图形显示和频谱分析的程序,设计制作了单片机对现场振动信号进行实时获取的软硬件系统,实现了振动数据的采集、保存、时域波形显示和频谱分析功能。
1 系统组成及软硬件设计
传感器输出的微弱信号通过程控放大、滤波等电路后接入A/D转换器,单片机控制A/D转换器进行数据采集,然后将数据传给计算机,计算机对采集的数据进行保存,显示和分析。系统总体结构如图1所示。
1.1 系统主要硬件设计
传感器选择了B180振动加速度传感器,其温度瞬变灵敏度极低,频响范围: 2~5000Hz,工作温度:-40 ~ +100℃,灵敏度:10 mV/(m/s2),最大加速度2000 (m/s2)。
图1 系统总体结构图
传感器输出的信号非常微弱,根据振动输出的信号幅值大小,设计了程控放大电路。由于振动数据的频率范围非常广泛、根据实际需要,设计了高通、低通滤波电路;本设计由于硬件条件限制,初步设计测量频率分为10~500 Hz, 10~2KHz,两个频段。传感器信号处理的方案如图2所示。
图2 传感器信号处理流程
图3 传感器信号处理电路
从图2中可以看出,传感器出来的交流信号,通过放大器后进行高通滤波,一路通过低通滤波进入多路开关,得到一定频率范围内的加速度信号;另一路通过低通滤波后一方面进入多路开关,得到较低频段的加速度信号,根据测量需要由控制端选择测量参数。硬件电路设计如图3所示。
1.1.1 程控放大电路
程控放大电路由CD4052(U3)模拟开关电路和27M7(U1A)运算放大器构成,根据被测对象的实际情况,可以直接进入后面的滤波电路或者进行2、4、8倍的放大,具体选择由控制器的P2.0和P2.1控制。
1.1.2 滤波电路
集成电路U1B及电容C6、C7和电阻R5、R14等元件构成高通滤波电路[6],中心频率约4 Hz,其输出一路通过由U2A构成的射极跟随器,R1、C1构成的无源低通滤波后进入模拟开关电路U4的X0,无源低通滤波的中心频率约500 Hz;另一路通过U2B及C2、C4和电阻R3、R4等元件构成的低通滤波电路,中心频率约2.5KHz,进入模拟开关电路U4的X1路等待模数转换;以上进入模拟开关电路U4的信号,根据测量要求,由控制器的P2.2,P2.3选择其中的一路进行模数转换。
1.1.3 控制器与模数转换器
图4 单片机与A/D转换器接口电路
控制器采用与MCS51兼容的STC89C52,内部具有8K字节的在系统可编程Flash存储器,内含512字节的RAM,32个可编程I/O口线,每个口线都具有位寻址功能,3个16位的定时/计数器等特点;模数转换器采用ADC0809,它是8通道,8位逐次逼近式A/D转换器,其价格低廉,与微机连接方便,应用十分广泛。控制器与模数转换器的连接如图4所示,模数转换器的控制信号由单片机的P1.1-P1.4控制,时钟信号由单片机的P1.0提供,当单片机的晶振为12M Hz时,P1.0引脚设置为T2模式,编程设置成输出1M Hz的脉冲信号方式,提供给模数转换器作为时钟信号;模数转换器的数据输出口具有三态锁存功能,直接与单片机的P0口连接,8路输入通道的选择通过单片机的P0.0,P0.1和P0.2选择,在严格的时序控制下,P0口分时复用,不会影响数据的传输。系统中模数转换器的8路输入通道地址分别为00H-07H。
当系统采用单电源+5V供电时,模数转换器的输出结果可用下式表示:
上式中参考电压VREF+=5V、VREF-=0V,V为输入信号电压,完成一次A/D转换需要的时间与A/D转换器特性、采样程序等密切相关,通过实际测试,系统的采样周期约330uS,采样频率约3KHz。
1.1.4 通信电路
单片机与计算机之间的通讯采用 PL2303实现,PL2303是一种高集成度的USB - RS232双向接口转换器,该器件一方面从主机接收USB 数据并将其转换为RS232信息流格式发送给外设,另一方面从RS232 外设接收数据转换为USB数据格式传送回主机。这些工作全部由器件自动完成。
PL2303在WindowsXP操作系统上模拟传统COM端口,单片机的P3.0和P3.1分别接到PL2303的TXD和RXD,USB口通过排线与计算机的USB口连接,要使二者能正确通讯,必须在计算机上安装prol i fic的USB-Serial Comm Por t驱动程序,该程序网上可下载,安装完成后,右击桌面上我的电脑图标,打开属性项,从设备管理器的端口项里面就能够找到具体连接的是哪个USB口,从而确定程序设计时的串口号。PL2303外部电路如图5所示。
图5 PL2303外部电路
1.2 系统软件设计
系统软件包括下位机和上位机两部分,下位机程序是单片机里面的运行程序,主要包括系统初始化程序,串口中断设置程序和数据采集及发送程序,以下是采集一个端口的C语言程序,单片机晶振频率为12MHz:
#include<REG52.h>
#def ine uchar unsigned char
void delay(unsigned int z);
sbit CLK=P1^0; // 1000hz
sbit OE=P1^1;
sbit ALE=P1^2;
sbit EOC=P1^3;
sbit START=P1^4;
void Main( void )
{ uchar a,j,i; //定义3个临时字符变量
uchar b[100];
TR2=0x0; //停止T2定时器
TR0=0x0; //停止T0定时器
T2MOD=0x02; //0010(B) 设置T2为P1.0口输出方波模式
C_T2=0; //用内部时钟计数
TL2=0xfd; //输出方波频率为1MHz
TH2=0xf f;
RCAP2L=0xfd;
RCAP2H=0xf f;
TR2 = 1;
SCON = 0x50;//REN=1允许串行接受状态,串口工作模式2
TMOD|= 0x21;//定时器工作方式2,
PCON|= 0x80; //波特率提高一倍
TH1 = 0xF3; // 波特率4800、数据位8、停止位1。效验位无 (12M)
TL1 = 0xF3;
TR1 = 1; //开启定时器1
ES = 1; //开串口中断
EA = 1; // 开总中断
whi le(1)
{ i=0;
whi le(i<300) //设置一次连续采样的数据个数
{ P2=0;
j=P0;
j=j&0xf8; //选择A/D转换的0通道
P0=j;
ALE =0;
START =0;
for(a=0;a<50;a++);
ALE =1;
for(a=0;a<50;a++);
START =1;
for(a=0;a<50;a++);
START =0;
whi le(EOC==0);
OE=1;
P0=0xf f;
b[i++]=P0; }
for(i=0;i<300;i++)//将一次采样数据发送上位机
{ SBUF=b[i]; whi le(TI==0); TI=0;
delay(2); } } }
上位机程序采用MATLAB编写,以下是采集数据并以波形显示的程序片段:
s = serial(‘COM3’);% 声明串口
set(s,’BaudRate’,4800, ‘StopBits’,1);%设置串口参数
fopen(s); %打开串口
j=0;
set(gcf,‘DoubleBuf fer’,‘on’);
whi le (j<10) %数据接收循环设置
t ry
data = f read(s,300,’uchar’); %一次接收300个数据
data1=data/51; %将采样数据转换为电压值
f id = fopen(‘01.txt’, ‘r+’); %打开存盘数据文件fseek(f id, 0,‘eof’); %定位到文件尾
fprint f(f id, ‘%d ‘,data); %将采样的数据存储到原数据文件的末端
fclose(fid); %关闭文件
i=0:1:299 %将采样的数据以图形的形式进行显示
plot(i,data1,’EraseMode’,’xor’);
drawnow;
j=j+1;
end
end
fclose(s) %关闭串口
delete(s)
clear s
2 实验研究
完整的程序运行后,在上位机上进行COM口选择、Baude选择,打开串口等操作后,单片机采集的数据就以时域波形的形式从左向右依次显现。图6采集的一通道振动信号的时域波形,点击频谱分析后,系统将存储在文件中的数据全部做FFT变换,显示出频谱图。图7是对一地脚螺栓松动设备采集的振动数据画出的波形图及其频谱分析图,该机器设备的基频为25HZ,频谱峰值出现在3倍频处,与旋转机械振动故障诊断理论的结论是一致的。
3 结论
频谱分析法是旋转机械的状态监测与故障诊断的重要方法之一。本文设计制作了单片机对现场振动信号进行实时获取的软硬件系统,利用MATLAB编制了对单片机传来的振动数据实时保存、图形显示和频谱分析的程序,对机械设备的振动状态监测与故障诊断、指导相关课程的教学实践具有一定的意义。
图6 采集数据的时域波形及对应的频谱图
图7 故障设备振动数据的时域波形及对应的频谱图
但也有一些局限:(1)由于硬件限制,只能采集较低频率的信号;信号频率在10~1.5KHz范围内效果较好。(2)采用的模数转换器位数只有8位,转换速度较低,单片机性能也不高,致采集的数据精度受到影响。采用高速、高精度的模数转换器件,控制器采用DSP等效果会更好。(3)该系统能够实现对振动加速度数据的采集、保存、时域波形显示和频谱分析等功能,能够满足一般机械的状态监测与故障诊断要求;对振动速度、位移等参量没有涉及,可以从这方面进行完善。
[1]张碧波,丛文龙.设备状态监测与故障诊断[M].化学工业出版社.2004,2.
[2]桂勇,骆清国,张更云等.基于dSPACE的发动机信号实时采集系统开发[J].装甲兵工程学院学报.2010,(6):32-34.
[3]胡宝全,赵荣珍,马再超.基于LabVIEW的数据采集与反馈控制通讯系统[J].仪表技术与传感器.2011,(12):32-34.
[4]唐世振.基于MATLAB的振动信号采集与分析系统的研究[D].中国海洋大学硕士学位论文,2007.
[5]姜衍猛.基于MATLAB的数据采集与分析系统的研究及设计[D].山东大学硕士学位论文.2012.
[6]张国雄.测控电路[M].机械工业出版社.2008.
[7]STC89C51RC/RD+系列单片机器件手册[M/OL].宏晶科技 .[2006-04-23].http://www.m cu-memory.com.