AIGC标识 当 AI 遇上电气工程:用 STM32 + TinyML 做一套电机异常监测的最小闭环

这是一篇面向电气、自动化和嵌入式学习者的工程入门文章。目标不是堆砌“AI”概念,而是把采样、特征、模型、部署和保护逻辑串成一个可以逐步实现的小系统。

1. 为什么电气系统需要“边缘 AI”

传统电机保护往往依赖固定阈值,例如电流超过某个数值就报警。这类方法简单、可靠,但在负载变化、启动过程和工况切换时,单一阈值很难同时兼顾灵敏度与误报率。

AI 的价值不是替代过流、过压和过温保护,而是补充一个“状态识别层”:从电流、振动和温度的变化模式中,提前发现与正常工况不同的趋势。

一个比较稳妥的分层结构是:

  1. 硬保护层:保险丝、断路器、驱动器硬件保护,负责最后防线;
  2. 实时控制层:MCU 执行限流、停机、降额等确定性策略;
  3. 智能诊断层:模型输出异常概率或故障类别,辅助告警和维护决策。

关键原则只有一句:AI 可以参与判断,但不能取消确定性的安全保护。

2. 最小系统架构

以三相异步电机或无刷直流电机为例,可以从单路电流开始:

电流传感器/采样电阻
        ↓
模拟调理与抗混叠滤波
        ↓
STM32 ADC + DMA 连续采样
        ↓
分帧、去直流、归一化
        ↓
时域/频域特征提取
        ↓
轻量分类器或异常检测模型
        ↓
告警、记录、通信与降额策略

如果硬件条件允许,可再加入加速度计和温度传感器。多传感器并不意味着一定更好:每增加一个通道,都会增加同步、标定、布线、数据缺失和模型维护成本。第一次实现时,先用一路电流跑通闭环通常更有效。

3. 从原始波形提取什么

直接把数千个 ADC 点送入神经网络并非唯一选择。在资源有限的 STM32 上,先提取少量有物理意义的特征,常常更容易调试。

设一帧采样值为 x[i],长度为 N,可以计算:

  • 均方根值(RMS):反映电流有效值;
  • 峰值和峰峰值:观察冲击与波动范围;
  • 峰值因子:peak / RMS,对偶发冲击较敏感;
  • 均值、方差、偏度、峭度:描述分布形态;
  • 主频幅值、频带能量:观察转频及其倍频附近的变化;
  • 相邻帧变化率:区分稳定异常与瞬态扰动。

例如,RMS 的计算可以写成:

float calc_rms(const float *x, uint32_t n)
{
    float sum_sq = 0.0f;
    for (uint32_t i = 0; i < n; ++i) {
        sum_sq += x[i] * x[i];
    }
    return sqrtf(sum_sq / (float)n);
}

工程上还要注意三个细节:

  1. ADC 前端是否饱和;
  2. 采样率是否足以覆盖关心的频段;
  3. 训练数据与设备上的预处理是否完全一致。

第三点尤其容易出错。训练脚本使用标准化,而 MCU 忘记使用相同的均值和标准差,模型即使成功运行,输出也可能没有意义。

4. 模型怎么选

4.1 有明确故障标签:做轻量分类

如果有“正常、过载、转子不平衡、轴承异常”等可靠标签,可以从逻辑回归、决策树或小型全连接网络开始。模型越小,越容易解释特征贡献,也越容易部署。

4.2 只有正常数据:做异常检测

真实项目中,故障样本通常稀少,而且人为制造故障存在风险。这时可以只学习正常工况的特征分布,再用距离、孤立森林或小型自编码器给出异常分数。

不过,“异常”不等于“故障”。它也可能来自负载切换、传感器松动或采样链路异常,所以报警逻辑需要时间窗口和状态机,而不是看到一次高分就立即停机。

5. 一个更可靠的决策逻辑

模型输出可以记为 p_anomaly。不要直接写成:

if (p_anomaly > 0.8f) motor_stop();

更实用的方式是加入连续计数、回差与硬阈值兜底:

if (current_rms > HARD_CURRENT_LIMIT) {
    emergency_stop();                 // 确定性硬保护
} else if (p_anomaly > 0.8f) {
    abnormal_count++;
    if (abnormal_count >= 5) {
        raise_warning();              // 连续多帧异常才告警
    }
} else if (p_anomaly < 0.5f) {
    abnormal_count = 0;               // 设置回差,避免临界抖动
}

进一步还可以把告警分级:

  • 提示:记录事件并上传;
  • 警告:限制功率或降低转速;
  • 严重:进入安全停机流程;
  • 硬故障:绕过 AI,立即保护。

6. 从数据到部署的完整闭环

一个可复现的流程可以分成六步:

第一步:定义问题

先明确要识别的是过载、机械不平衡,还是“不同于正常状态”。没有清晰标签定义,后面再复杂的模型也无法补救。

第二步:采集并记录上下文

除传感器数据外,还要记录转速、负载、供电电压、环境温度和设备编号。否则模型可能只是记住某台设备或某个负载,而非真正的异常模式。

第三步:按设备或时间切分数据

不要把同一次连续采样切成小窗后随机分到训练集和测试集,这会造成数据泄漏。更稳妥的办法是按设备、实验批次或时间段切分。

第四步:先做基线

先比较固定阈值、统计距离和简单分类器,再尝试神经网络。只有当复杂模型在独立测试集上稳定胜出,它的计算和维护成本才有意义。

第五步:量化与部署

部署前关注 Flash、RAM、单次推理时间和最坏执行时间。若使用 int8 量化,需要用与真实工况接近的代表性数据做校准,并重新评估精度。

第六步:在线监测模型本身

记录输入范围、异常分数、固件版本和模型版本。当传感器更换、设备老化或工况变化时,数据分布会漂移,模型也需要重新验证。

7. 如何评价系统,而不只看“准确率”

电气故障检测通常更关心:

  • 漏报率:真实异常被忽略的比例;
  • 误报率:正常运行被错误报警的比例;
  • 提前量:能否在传统阈值触发前给出提示;
  • 跨工况表现:换负载、换转速后是否仍然有效;
  • 推理延迟与资源占用;
  • 传感器断线、饱和和噪声下的降级行为。

因此,一个模型在离线数据上达到很高准确率,并不代表它已经具备工程可用性。真正的验收对象应是“采集—推理—决策—执行—记录”整条链路。

8. 一个适合学习者的实现顺序

如果准备亲手做,可以按下面的难度递增:

  1. 用 STM32 ADC + DMA 稳定采集电流波形;
  2. 在串口或上位机上验证 RMS、峰值和频谱;
  3. 用正常数据建立统计阈值;
  4. 在 PC 上训练一个小型分类器;
  5. 将同一套预处理和模型移植到 MCU;
  6. 加入连续帧判定、回差、硬保护和事件日志;
  7. 最后再扩展振动、温度或云端分析。

这样做的好处是,每一步都有可观测结果。即使 AI 模型暂时没有带来收益,前面的采集、特征和状态机仍然是一套有价值的电气监测系统。

结语

AI 与电气工程结合的关键,不是把大模型塞进控制器,而是让数据驱动方法尊重物理规律、实时约束和安全边界。对 STM32 这类资源受限平台而言,小模型、好特征、清晰的状态机和可靠的保护链路,往往比“更深的网络”更重要。

当我们把 AI 放在正确的层级,它不是替代传统电气保护的黑盒,而是一个能提前发现趋势、帮助定位问题的传感器增强模块。


AI 内容声明: 本文由 AI 辅助生成并经过人工式技术审校,用于演示博客发布流程。文中的代码与架构为教学示例,不包含真实设备测试数据;涉及实际电机与功率系统时,请以硬件保护、标准规范和现场验证为准。

posted @ 2026-10-14 19:10  s-taRsea  阅读(4)  评论(1)    收藏  举报