基于ARM的振动信号采集及文件存储系统
2021-05-17 来源:eefocus
引言
在机械结构的振动过程中,许多微弱信号包含机械运动的丰富特征信息,如故障特征信息等,有必要提取出来加以分析。在微弱信号提取过程中,有时信号非常微弱,极易受到外界的干扰而淹没于强噪声之中,有时被测信号振幅变化范围又很大,会绐信号采集带来很大困难。放大电路本身的噪声性能和频率特性也将影响信号的提取精度。对振动信号的采集及处理,通常是用普通的数据采集系统去采集,然后用数字信号处理的方法来提取数据的特征信息。但是,一些由于采集系统的不足对信息造成的损失,是后期的数字信号处理无法补偿的。振动信号的检测是机械系统状态检测和早期故障诊断的关键,机械系统早期故障引起的异常振动信号有时很微弱,而且持续时间短、信噪比低,容易淹没于背景噪声中。
1 系统功能结构
针对信息化管理程度,该系统设计成既可作为一个独立系统单独运行,又可作为功能模块无缝整合接入基于ARM的信息管理系统。该系统功能结构如图1所示。
信号调理模块:通过加速度传感器采集微弱振动信号,进而经过信号调理电路(包括程控调节增益)送到LPC1768的A/D转换模块进行采集。
PC机通信模块:通过USB接口与PC机通信,可实现文件数据的增加、删除、新建等功能。
SD卡存储模块:基于FatFs文件系统的存储设计,通过SPI总线与主芯片通信,可完成数据的任何格式(如Wav)的写入,也可对SD卡内的数据进行读取。
语音播报模块:在测试过程中实时语音提醒用户当前的操作状态,语音命令预存储在SD卡内,可通过SPI总线通信进行。
2 硬件电路设计
2.1 信号调理电路设计
信号调理电路主要包括压电式加速度传感器、电荷放大电路、两级程控放大电路、带通滤波电路和电压抬升电路等。
加速度传感器:把振动信号转化为电荷信号,此处采用压电式加速度传感器,灵敏度高达1.294 pC/m·s-2,本实验主要测试频率段为1~10 kHz。
电荷放大电路:把微弱的电荷信号放大成电压信号。运算放大电路选择AD823,是双通道、精密、16 MHz带宽和高增益的放大器;反馈电容C决定了电荷转电压输出的大小以及电荷放大的频率响应特性,电容性能的好坏直接决定着电荷放大器是否稳定,此处反馈电容C设定为100 pF;反馈电阻主要作用是抑制反馈电容引起的零点漂移,由电荷放大器的下线截止频率
可知,在C一定的情况下,要保证下限截止频率,反馈电阻R必须尽可能大,此处设定为100MΩ。
带通滤波电路:设计由低通滤波电路和高通滤波电路组合的带通滤波电路,可根据通带频率计算出电阻电容值,本实验通带频率为1~10 kHz。
电压抬升电路:利用运放将电压抬升到1.5 V,同时增加了电位器的设计,可实现对抬升电位的灵活调节。
2.2 信号放大电路设计
该调理电路最突出的特点是运用数字电位器AD5245来实现对信号的自适应放大,如图2所示。
数字电位器AD5245可实现与机械电位器或可变电阻相同的电子调节功能,具有增强的分辨率、固态可靠性和出色的低温度系数性能,可通过IC兼容型数字接口控制,其调节范围可达256位。在数据采集中,主芯片LPC1768通过预采样值来判断AD5245的调节范围和调节方向,并通过I2C总线对放大倍数进行调节。
由表1可知,AD5245有多种连接方式。针对此实验,本文采用的连接方式如图3所示。
这种接法放大器的放大倍数为Rd/R,可对放大倍数进行256位分辨率的调节。
3 软件及算法设计
3.1 FatFs文件系统
FatFs是一个为小型嵌入式系统设计的通用FAT文件系统模块。FatFs的编写遵循ANSIC,并且完全与磁盘I/O层分开。独立于硬件架构,可以被嵌入到低成本的微控制器中。其结构图如图4所示。
FatFs具有非常清晰的层次结构,应用层为用户提供一系列API函数,如f_open、f_close、f_read、f_write等,用于对文件的读写等;中间层FatFsModule为Fat协议层;最底层是用户在移植过程中需要处理的接口,包括存储媒介读/写接口DiskIO和文件修改时间所需的实时时钟。根据层次式软件设计的思想,将软件工作分为3步:SD卡的通信实现、RTC时钟配置和FatFs的移植。
①SD卡的通信实现。通过SPI总线系统实现SD卡与LPC1768、PC机的通信,可实现采样数据的自动存储与通过PC机对SD卡内数据的新建、删除、修改和查找等功能。主要包括SPI模式的配置、SPI字节的读写实现、SD卡的读写实现和USB接口的配置。
②RTC时钟配置。利用LPC1768内含的RTC设备实现实时时钟功能,主要包括时钟频率的选择SysTick_Config、RTC实时时钟的初始化RTC_Init及设定RTC_SetFullTime,为文件系统提供准确的时间,可实现对每个存储文件的时间标记。
③FatFs的移植。对FatFs接口函数的编写,主要包括:存储介质初始化函数disk_initialize、存储介质状态检测函数disk_status、读扇区函数disk_read、写扇区函数disk _write、存储介质控制函数disk_ioctl等。
3.2 算法设计和软件流程实现
LPC1768微控制器内置一个8通道的12位A/D转换器,而该采集系统仅用到单路信号输入,可以实现较高频率的采样,提高了采集数据的精度。软件设计思想是在系统初始化后首先进行模式的判断,分为采集模式和USB通信模式。在采集模式下,正式数据采集存储前先进行数据预采集,对预采集的信号进行采样处理,计算采集到的信号的幅值差,并与满量程3.3 V进行判断是否需要调节和计算出调节值。通过I2C总线来调节AD5245,预调节完成后进行正式信号采集,把采集到的数据进行数字滤波并存储到数组中,数组中的数据通过SPI总线存储在SD卡中,存储完成后通过功放播放语音信号提示完成。USB模式主要为SD卡中数据与PC机的通信。主流程如图5所示。
3.2.1 信号幅值检测的算法
在程控放大器的设计中,对被测信号振幅的检测至关重要,它是实现程控放大的关键。以往的程控放大器,多数是根据被测信号的幅值来调节程控放大器的放大倍数,此方法比较适合直流信号的检测。交流信号的幅值是变化的,若根据被测信号的幅值调节程控放大器的增益,需要时刻改变程控放大器的增益,这将浪费CPU的很多资源,影响了A/D转换的速度,限制了被测信号的范围。因器件程序的计算和器件的延时也会给测量结果带来很大的误差,不适合做高频信号的采集。
故本设计采用预采集进行幅值判断,具体方法为开辟定长的数组Buffer用来存储预采集信号,同时注意在设定此Buffer长度的时候,一定要满足该长度至少为待采集信号的一个周期,然后对预采集信号进行处理判断,确定调节值及调节方向。
对预采集信号的处理:首先要计算出数组中的最大值和最小值,由于定义的数组可能较大,故给出一种新的算法代码,以大幅提高其效率(n很大时)。具体做法是:每次成对地处理数据,先将一对元素进行比较,然后把较大者与当前最大值比较,较小者与当前最小者比较,因此每两个元素需要比较3次。具体实现时需考虑n的奇偶,n为奇数,3×(n /2)次;n为偶数,3n/2—2次,因此总的比较次数至多为3×(n-2),大大提高了计算的速度。
根据以上算法可得△V=Vmax-Vmin,故需要调节的放大倍数β约为:
这样就计算出了需要调节的AD5245_W的调节值,通过I2C总线通信完成调节,进而进行数据的正式采集。
4 实验结果及分析
通过对系统进行设计和实现,并对系统进行了测试,在采样频率为50 kHz下,对振动信号进行采样分析,预采集信号时间长度为50 ms,正式采集长度为4 00ms,由频带为1~10 kHz的激励源来激振被测物体,同时实验存储数据格式为标准的WAV格式。通过USB接口上传到PC,用上位机频谱分析软件对实验数据原信号和频谱分析进行对比试验,试验现象如图6所示。
通过对普通采样系统和本系统采样的原信号对比,可见在相同振动激励下普通信号采集系统采集出信号的幅值最大值约为1000,并未填满A/D转换采集模块最大的量程4096而本系统通过对信号的自适应放大,可将采集信号幅值最大提高到4 000左右,在一定程度上提高了信号采集的精度。
对普通采样系统和本系统采样信号的频谱分析图进行对比,如图7所示。
可见普通采集系统的信号的频谱分析不仅能量值较小,而且易受到其他频率波的干扰,信噪比较低,影响了对信号特征的有效分析,而本采集系统则能较好地解决此类问题。