开源FFT频谱分析仪。

简介

使用Python编写的程序,使用库、NUMPY、Scipy、Matplotlib和PyStAY的计算机是FFT频谱分析仪。采用AdUINO Nano作为ADXL335加速度计读取加速度数据采集系统。

概述

机械振动通常是总体机械状态的最佳指标。用于预防性和矫正性维修。

它可以使用位移和速度传感器和加速度计来测量。你可以得到一个指示振动最大值的整体读数,但是最有用的信息是用一个时间周期读数的FFT频谱分析获得的。

机械振动分析仪通常昂贵且复杂,许多中小型工业都负担不起这种仪器,特别是在我国(玻利维亚)。

开源硬件和软件工具现在非常容易访问,并且使用这些工具可以很容易地构建一个简单、廉价和开源的FFT频谱分析仪。

描述

本项目采用ARDUINO Nano作为数据采集系统,包括USB到串行转换器和ADC通道。一个通用的加速度计,ADXL335被用作振动测量的换能器,计算机是使用Python和NoMy、Scipy和MatPultLB库的FFT分析器。

系统图如下所示。

ARDUINO Nano监听来自计算机的输入命令,命令它启动或停止发送ADC读数。ADC在给定的采样频率(5000赫兹)上读取加速度计振动通道,由一个微控制器定时器控制。这些读数以0.5 Mbps的速度在串行端口上发送。

阿杜诺纳米计划ADXL335O01.c)用AVRGCC编译,并使用AVRDUD和安装在ATMEGA328微控制器中的ARDUNO Nootloader编程。不使用ARDUIO库和IDE。

ADXL335是一种小型、薄、低功耗、完整的三轴加速度计,具有信号调节电压输出。为应用选择最大带宽,X和Y轴的范围为1600赫兹。Z轴的最大范围是550Hz,并且由于有限的范围而不使用,但是在将来使用时,它被连接到微控制器。

接下来显示电路图。

计算机控制数据采集发送命令以启动或停止采样的传输。程序计算所接收的数据量和所需的数据量(样本大小)。当需要数据量时,停止命令发送给微控制器。pySym是用于控制串行通信的Python库。

串行通信是二进制的,需要一种标记包结束的机制。为此,使用PPP类型字节填充算法。在PPP帧边界中用保留字节值0x7e标记。该保留值不允许发生在任何帧边框以外的地方。在保留值应该发生在数据包中的情况下,使用转义序列将0x7e转换成0x7d、0x5e的字节序列。字节值0x7d意味着可能的逃逸发生,并称为控制转义值。此外,控制转义本身需要转义,并成为0x7d、0x5d的字节序列。

该PPP成帧算法在ARDUINO Nano和Python程序中用于计算机。

有两个Python程序,一个用于从串口获取数据并保存该数据,另一个用于文件打开、数据绘图和FFT频谱计算和绘图。

程序SerialaAVR001.Py将命令发送到ARDUINO并从串行端口读取数据。一旦获得了所需的数据量,它被保存在文件中,作为文本,由科马斯分隔,并由标记分隔。

程序AcSeriFiel-PultT002.Py等待控制台上引入的文件名,打开文件并绘制来自加速度计的信号。它显示在下一张照片上。

然后,计算并绘制FFT频谱。在下一张照片中可以看到。

这个

用于构建这个项目的所有硬件和软件都是开源的,并且很容易获得。组件可以在易趣网上购买(其中非常常见),并且可以从相应的网页下载软件。该软件也是多平台的,可以在Windows、Linux和MAC上运行。

快速傅立叶变换频谱分析仪 github地址

github.com/ariquezada/FFT-spectrum-analyzer


相关文章