4. 数据采集实战:用加速度传感器采集齿轮箱振动数据

各位同学,大家好。今天咱们进入一个非常实战的环节——数据采集。说实话,很多搞故障诊断的朋友,算法玩得飞起,但一到现场接传感器就懵了。我当年第一次去车间采集数据,拿着加速度传感器愣是不知道往哪儿贴,还被老师傅笑话了半天。嗯,今天咱们就把这块补上。

4.1 加速度传感器怎么选?

齿轮箱振动信号,说白了就是测加速度。市面上主流的是压电式加速度传感器,也有MEMS型的。我个人习惯用压电式的,抗干扰能力强,频率响应也宽。

选型时你主要看三个参数:

  • 灵敏度:一般选100 mV/g左右的,太灵敏容易饱和,太迟钝小信号抓不到
  • 频率范围:齿轮箱振动通常在0.5 Hz~10 kHz,选0.5 Hz~15 kHz的够用
  • 量程:普通齿轮箱选±50 g,重载工况选±100 g
我的小经验: 现场安装时,千万别用手按着传感器测。我见过有人图省事,结果数据全是手抖的噪声。一定要用磁座或者胶粘,实在不行用蜂蜡。

4.2 数据格式解析:.csv 和 .mat

采集完数据,你拿到的无非两种格式:CSV或者MAT。咱们一个一个说。

4.2.1 CSV格式

CSV就是逗号分隔的文本文件。打开一看,第一行通常是时间戳,后面是加速度值。举个例子:

时间(s),加速度(m/s²)
0.000,0.0123
0.001,0.0456
0.002,-0.0234
...

这种格式最友好,Excel能直接打开。但要注意,采样率信息通常不写在CSV里,你得单独记着。我曾经吃过这个亏,拿了一堆CSV回来,忘了采样率,等于白采。

4.2.2 MAT格式

MAT是MATLAB的二进制格式。里面可以存变量名、采样率、单位等信息。比如:

data.mat 中包含:
  - fs: 51200 (采样率)
  - acc: [1×102400 double] (加速度数据)
  - time: [1×102400 double] (时间轴)

我个人更推荐MAT格式,因为信息完整。但如果你团队里有人不用MATLAB,那就得转成CSV。

4.3 数据导入Python

好了,数据到手了,怎么弄进Python?我直接上代码,你们跟着敲就行。

4.3.1 导入CSV

import pandas as pd
import numpy as np

# 读取CSV
df = pd.read_csv('vibration_data.csv')
time = df['时间(s)'].values
acc = df['加速度(m/s²)'].values

# 手动指定采样率(假设已知)
fs = 51200
dt = 1 / fs

print(f"数据长度: {len(acc)} 点")
print(f"采样时长: {len(acc) * dt:.2f} 秒")
注意: CSV里如果第一行是中文列名,pandas默认能识别。但有些老设备导出的CSV编码是GBK,你得加个参数 encoding='gbk'。

4.3.2 导入MAT

import scipy.io as sio

# 读取MAT文件
mat_data = sio.loadmat('vibration_data.mat')

# 查看里面有哪些变量
print(mat_data.keys())

# 提取数据
fs = mat_data['fs'][0][0]  # 采样率
acc = mat_data['acc'][0]   # 加速度数据
time = mat_data['time'][0] # 时间轴

print(f"采样率: {fs} Hz")
print(f"数据点数: {len(acc)}")
避坑指南: 我曾经遇到一个MAT文件,里面变量名是中文的,scipy直接报错。解决办法是让采集软件导出时用英文变量名,或者在MATLAB里先转一下。

4.4 数据快速检查

数据导进来之后,别急着分析。先看一眼波形,确认没有异常。我一般这样做:

import matplotlib.pyplot as plt

plt.figure(figsize=(12, 4))
plt.plot(time[:5000], acc[:5000])  # 只看前5000点
plt.xlabel('时间 (s)')
plt.ylabel('加速度 (m/s²)')
plt.title('原始振动信号预览')
plt.grid(True)
plt.show()

如果看到波形有突然的尖峰或者平顶,那可能是传感器松了或者数据采集卡饱和了。这种数据直接扔掉,别心疼。

4.5 本章知识体系

下面这张图,是我自己总结的数据采集到导入的完整流程,你们可以保存下来当个参考:

数据采集与导入流程 1. 传感器选型 灵敏度·频率·量程 2. 现场安装 磁座/胶粘/蜂蜡 3. 数据采集 设置采样率·时长 4. 导出格式 CSV / MAT 5. Python导入 pandas / scipy 6. 数据检查 波形预览·异常排查 每个环节都踩过坑,按这个流程走,至少能保证数据质量

4.6 常见问题与避坑

问题 原因 解决办法
数据全是0 传感器没接好或线断了 检查BNC接头,用万用表测通断
波形有毛刺 电源干扰或接地不良 加屏蔽线,检查接地
MAT文件打不开 版本不兼容或变量名含中文 用MATLAB v7.3以下版本保存
CSV乱码 编码问题 用 encoding='gbk' 或 'utf-8' 试

最后说一句: 数据采集是整个故障诊断的根基。你算法再牛,数据是脏的,结果全是扯淡。我见过太多人花80%时间调算法,却不愿意花20%时间把数据采好。嗯,你自己品。

专注资料整理