1. 课程导入

工业设备在运行过程中,振动信号是设备健康状态的“晴雨表”。轴承磨损、齿轮断裂、转子不平衡、不对中等机械故障,都会在振动频谱中留下独特的“指纹”。传统振动分析依赖人工查看频谱图,不仅效率低下,而且对工程师的经验要求极高。随着边缘计算与嵌入式机器学习(TinyML)的成熟,我们可以在STM32、ESP32等低成本MCU上直接运行振动故障分类模型,实现毫秒级实时诊断。本课程将带领你从零开始,使用Edge Impulse平台完成“数据采集→特征工程→模型训练→部署验证”的完整闭环,最终在真实硬件上跑通一个振动故障分类器。

振动故障分类模型训练课程 · 知识框架与工程链路 课程学习目标 掌握EI平台全流程 课程结构 30章 · 5大模块 应用价值 预测性维护 · 降本增效 Edge Impulse 振动故障分类模型训练主流程 ① 数据采集 加速度计/ADC采样 ② 数据清洗 去噪/切片/标注 ③ 特征工程 FFT/时域统计 ④ 模型训练 DSP+分类器 ⑤ 部署 MCU/手机 迭代优化:若准确率不足,返回调整特征或模型参数 关键工具 Edge Impulse Studio / Python SDK 目标硬件 STM32 / ESP32 / Nordic / 手机 评价指标 准确率 / 混淆矩阵 / 延迟 / RAM

1.1 学习目标:从“看懂频谱”到“训练模型”

本课程不是单纯讲解机器学习理论,而是以“振动故障分类”这一具体工业场景为切入点,让你掌握一套可复用的端到端工作流。完成本课程后,你将具备以下核心能力:

  • 数据层面:能够使用加速度传感器(如ADXL345、MPU6050)或工业振动采集卡获取原始振动数据,理解采样率、分辨率、量程对故障特征的影响,并完成数据切片、去噪、标注等预处理操作。
  • 特征层面:掌握时域特征(峰值、均方根、峭度、波形因子)与频域特征(FFT频谱、功率谱密度、包络谱)的提取方法,理解为什么峭度对轴承早期故障敏感,为什么频谱峰值能区分不平衡与不对中。
  • 模型层面:熟练使用Edge Impulse的DSP(数字信号处理)模块自动提取特征,并训练分类器(如随机森林、XGBoost、神经网络)。理解模型大小、推理延迟与准确率之间的权衡。
  • 部署层面:能够将训练好的模型导出为C++库或Arduino库,部署到STM32F407、ESP32等MCU上,实现实时推理。掌握模型量化(int8)与内存优化的基本方法。
  • 工程层面:建立“数据-特征-模型-部署”的迭代思维,能够诊断模型准确率低下的原因(数据不平衡?特征选择不当?过拟合?),并制定改进策略。
课程定位:本课程适合具备基础编程能力(Python或C++)、了解基本信号处理概念(采样定理、FFT)的工程师或学生。如果你对机器学习完全陌生,也不必担心——Edge Impulse平台将大部分复杂算法封装为可视化模块,你只需理解每个模块的输入输出与参数含义即可。

1.2 课程结构:30章五阶段递进式学习

课程按照工业项目落地的自然顺序,划分为五个阶段,每个阶段包含若干章节,形成“理论→实践→优化→部署”的完整闭环。

阶段 章节范围 核心内容 实战产出
第一阶段:基础与准备 第1-5章 振动故障机理、传感器选型、Edge Impulse平台操作、数据采集实验 完成一组轴承正常/故障数据的采集与上传
第二阶段:特征工程 第6-12章 时域/频域特征、FFT窗口选择、频谱分析、特征生成器配置 在EI中配置DSP模块,生成可视化特征图
第三阶段:模型训练 第13-20章 分类器选择、训练参数调优、过拟合抑制、混淆矩阵分析 训练出准确率≥95%的故障分类模型
第四阶段:部署与优化 第21-26章 模型量化、C++代码生成、MCU部署、实时推理测试 在STM32上运行模型,实现LED指示故障类型
第五阶段:综合实战 第27-30章 多传感器融合、边缘端持续学习、项目答辩与复盘 完成一个完整的工业振动监测原型系统

每个章节内部遵循统一的教学节奏:先讲解核心原理,再给出操作步骤或判断方法,接着通过案例拆解加深理解,最后总结常见误区。这种结构设计是为了让你既能“知其然”,也能“知其所以然”。例如在第7章讲解FFT时,我们不仅会告诉你“在EI中选择4096点FFT”,还会解释为什么选择4096点而不是1024点——因为频率分辨率与采样率、窗口长度直接相关,错误的选择会导致频谱泄漏或无法区分相邻故障频率。

1.3 振动故障分类的应用价值:从“定期检修”到“预测性维护”

在工业领域,设备停机造成的损失往往是灾难性的。以一条汽车生产线为例,关键工位的减速机若发生轴承故障,可能导致整条产线停线,每小时损失可达数十万元。传统的维护策略有两种:事后维修(故障发生后再处理,停机损失最大)和定期检修(按固定周期更换零件,容易造成“过度维修”或“维修不足”)。而基于振动分析的预测性维护(PdM),通过持续监测设备振动状态,在故障早期(如轴承出现微小剥落)就发出预警,从而安排计划内停机,将非计划停机时间降低50%以上。

振动故障分类模型的价值体现在三个层面:

  1. 早期发现:振动信号对机械故障的响应非常灵敏。例如,轴承内圈故障的特征频率通常在几百赫兹到几千赫兹之间,通过包络谱分析可以在故障发展初期(故障特征频率幅值仅比正常状态高2-3倍时)就捕捉到异常,而此时设备表面温度、噪声等指标可能完全正常。
  2. 故障类型识别:不同故障在频谱上具有不同的“签名”。不平衡故障表现为1倍转频(1X)幅值突出;不对中故障表现为2倍转频(2X)幅值增大;轴承外圈故障则会在特征频率(BPFO)处出现峰值。机器学习模型能够自动学习这些模式,替代人工查频谱的繁琐工作。
  3. 边缘端实时决策:传统方案将振动数据上传到云端分析,存在网络延迟和带宽成本。而Edge Impulse训练的模型可以直接部署在传感器旁边的MCU上,实现“数据不出厂区”的本地实时诊断。对于高速旋转设备(如离心机转速30000rpm),故障可能在几秒内恶化,边缘计算的优势尤为明显。
实际案例:某化工厂的循环水泵轴承温度一直正常,但振动传感器采集到的加速度信号中,包络谱在BPFO频率处出现了明显的峰值增长(从0.02g增长到0.08g)。工程师利用Edge Impulse训练的分类模型,在故障发生前3周就发出了“轴承外圈磨损”预警。利用计划内检修窗口更换轴承后,拆解发现外圈滚道已出现宽度约2mm的剥落坑。如果继续运行,预计2周内就会导致轴承卡死,引发泵体损坏和化工原料泄漏事故。

1.4 Edge Impulse平台简介:为什么选择它?

Edge Impulse(简称EI)是目前最成熟的边缘机器学习平台之一,专为资源受限的嵌入式设备设计。它解决了传统ML开发流程中的三大痛点:数据管理混乱(不同设备、不同格式的数据难以统一)、特征工程门槛高(需要手动编写FFT、滤波等代码)、部署链路长(从训练到嵌入式部署需要大量移植工作)。

EI的核心优势可以概括为以下几点:

  • 全流程可视化:从数据上传、标注、特征生成、模型训练到部署,所有步骤都在浏览器中完成,无需配置本地Python环境。对于硬件工程师而言,这大大降低了入门门槛。
  • 自动特征工程:内置的DSP模块(如Spectral Features、Flatten)可以自动从原始振动信号中提取频域特征。你只需要设置FFT长度、窗口类型、特征列表等参数,平台会生成特征向量并可视化。
  • 模型压缩与量化:训练好的模型可以一键转换为int8量化版本,RAM占用和Flash占用大幅减少。例如,一个随机森林模型从float32量化到int8后,RAM占用可减少75%,推理速度提升2-3倍,而准确率损失通常小于1%。
  • 多平台部署支持:支持导出为Arduino库、C++源码、CubeMX项目、TFLite微控制器包等,覆盖STM32、ESP32、Nordic nRF52、Raspberry Pi Pico等主流硬件。
  • 设备端学习(可选):EI还支持在设备端进行增量学习(EON Tuner),允许模型在部署后继续适应新的工况,但本课程将重点放在离线训练流程上。

EI的工作流程与传统的“Python+TensorFlow”流程有显著区别。传统流程中,你需要自己编写数据加载器、特征提取函数、模型定义和训练脚本,而EI将这些步骤封装为“Impulse Design”中的三个模块:Input Block(定义输入数据格式)、Processing Block(特征提取)、Learning Block(分类器)。这种模块化设计让整个流程更加清晰,也便于调试——你可以单独查看每个模块的输出,判断问题出在数据、特征还是模型。

注意事项:Edge Impulse的免费版(Developer Plan)有数据上传限制(约10分钟数据)和训练时长限制(每次训练不超过20分钟)。对于本课程的实验数据量(通常每个类别采集30-60秒振动数据),免费版完全够用。但如果你需要处理大量数据或使用更复杂的模型,可能需要考虑企业版或本地部署EI Enterprise。另外,EI的DSP模块虽然方便,但有时自动提取的特征并不一定最优,后续章节我们会教你如何手动调整特征参数来提升准确率。

1.5 课程实战环境准备

在开始第2章之前,建议你提前准备以下硬件和软件环境,以便后续章节的实操练习能够顺利进行。

类别 推荐型号/版本 用途说明
开发板 STM32F407G-DISC1 或 ESP32-DevKitC STM32性能更强,适合复杂模型;ESP32自带WiFi,便于数据无线传输
振动传感器 ADXL345(I2C接口)或 MPU6050(含陀螺仪) ADXL345量程±16g,适合工业振动;MPU6050性价比高,适合入门
数据采集工具 Edge Impulse Data Forwarder 或串口助手 将传感器数据实时传输到EI云端
软件环境 Edge Impulse账号(免费版)、Arduino IDE 2.x、STM32CubeProgrammer 用于固件烧录与调试
辅助工具 小型直流电机(带偏心轮模拟不平衡)、备用轴承(人为制造故障) 用于生成不同故障类型的振动数据

如果你暂时没有硬件,也可以使用EI提供的公开数据集(如轴承故障数据集)完成课程练习。但强烈建议至少准备一块开发板和传感器,因为“亲手采集数据→训练→部署”的完整体验是理解边缘ML工作流的关键。

1.6 常见误区与学习建议

根据过往教学经验,初学者在学习振动故障分类时容易陷入以下几个误区,这里提前指出,帮助你在后续学习中少走弯路。

误区一:盲目追求高准确率。在训练阶段,准确率超过98%可能意味着过拟合——模型记住了训练数据中的噪声,而不是真正的故障特征。正确的做法是同时关注验证集准确率、混淆矩阵以及模型在真实硬件上的表现。例如,一个在实验室数据上准确率99%的模型,部署到现场后可能因为环境振动干扰而准确率骤降到80%。因此,本课程会反复强调“数据多样性”和“鲁棒性验证”。
误区二:忽略采样率与频率范围的关系。根据奈奎斯特定理,采样率必须大于信号最高频率的2倍。如果你要分析轴承故障特征频率(通常在2kHz-10kHz),采样率至少需要20kHz。很多初学者使用MPU6050的默认1kHz采样率,导致高频故障特征完全丢失。在第3章我们会详细讲解如何根据设备转速和故障类型确定采样率。
误区三:将EI当作“黑盒”。虽然EI简化了流程,但你仍然需要理解每个参数的含义。例如,FFT窗口长度决定了频率分辨率,窗口类型(汉宁窗、矩形窗)影响频谱泄漏。如果完全依赖默认参数,遇到复杂工况时你将无从下手。本课程会深入讲解这些参数背后的物理意义。
学习建议:每完成一个章节,建议你动手操作一遍EI平台,并记录下关键参数和结果。例如,在第5章完成数据采集后,你可以尝试用不同的采样率采集同一台电机的振动数据,对比频谱图的差异。这种“实验式学习”比单纯看教程有效得多。另外,建议加入Edge Impulse的社区论坛,很多实际问题(如传感器驱动问题、模型部署报错)都能在论坛中找到解决方案。