这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » DIY与开源设计 » 电子DIY » 成果帖+基于STM32H533RE与NanoEdgeAI的步进电机运行状态实时智

共1条 1/1 1 跳转至页

成果帖+基于STM32H533RE与NanoEdgeAI的步进电机运行状态实时智能监测系统

菜鸟
2026-11-07 10:15:23     打赏

1. 项目概述

在工业自动化与智能装备领域,电机的预测性维护与运行状态实时监测至关重要。本项目基于 STM32H533RE(Cortex-M33 内核) 高性能微控制器,结合 LIS3DHTR 高精度三轴 MEMS 加速度传感器与 ULN2003 + 28BYJ-48 步进电机,构建了一套端侧边缘 AI 电机状态监测系统。
项目利用 ST 官方的 NanoEdge AI Studio V5.2.0 工具对采集到的电机振动数据进行自动机器学习(AutoML)训练,生成轻量级一维卷积神经网络(CNN)模型并部署至 STM32H533RE 端侧,实现了对电机 停止(STOP) 与 启动运行(RUN) 状态的 100% 准确率 实时分辨。


2. 系统框图

本系统的整体软硬件架构如下图所示,涵盖物理控制层、传感采集层、特征提取与边缘 AI 推理层以及终端状态输出层:

+-------------------------------------------------------------------------+|                        PC 上位机 (串口终端 921600bps)                     ||         1. 下发电机控制指令 ('0'停止 / '1'正转 / '2'反转 / 'p'暂停)        ||         2. 接收 CSV 原始训练数据 (阶段一) / 实时显示 AI 识别结果 (阶段二)   |+------------------------------------+------------------------------------+                                     | USART2 (PA2/PA3)                                     v+-------------------------------------------------------------------------+|                    主控核心:STM32H533RET6 (NUCLEO-H533RE)               ||                                                                         ||  +------------------------+             +----------------------------+  ||  | 非阻塞步进电机驱动模块  |             |  LIS3DHTR 传感器采样模块    |  ||  | (八拍驱动, 3ms/step)   |             |  (200Hz采样, ±2g, 64点/帧) |  ||  +-----------+------------+             +--------------+-------------+  ||              |                                         |                ||              | GPIO (PA8/PA9/PB5/PB10)                 | 192维浮点张量   ||              v                                         v                ||  +------------------------+             +----------------------------+  ||  | ULN2003 + 28BYJ-48     |  机械振动   | NanoEdge AI V5.2 推理引擎  |  ||  | 步进电机本体           +------------>| (端侧 CNN 模型 libneai.a)  |  ||  +------------------------+  物理传导   +--------------+-------------+  ||                                                        |                ||                                                        v                ||                                         输出类别 (STOP/RUN) 及置信度(%)  |+-------------------------------------------------------------------------+

3. 电路原理图与硬件连接

系统硬件主要由三部分组成:NUCLEO-H533RE 核心板、LIS3DHTR 三轴加速度计模块和 ULN2003 步进电机驱动电路。

+------------------------+                +-------------------------+   |     NUCLEO-H533RE      |                |    LIS3DHTR 加速度计     |   |                        |                |   (贴装于步进电机表面)   |   |                   3.3V +--------------->+ VCC                     |   |                    GND +--------------->+ GND                     |   |          I2C1_SCL (PB6)+--------------->+ SCL                     |   |          I2C1_SDA (PB7)+--------------->+ SDA                     |   |                        |                +-------------------------+   |                        |   |                        |                +-------------------------+   |                        |                |   ULN2003 步进驱动模块   |   |              GPIO (PA8)+--------------->+ IN1                     |   |              GPIO (PA9)+--------------->+ IN2      +-----------+  |   |              GPIO (PB5)+--------------->+ IN3 ====>| 28BYJ-48  |  |   |              GPIO(PB10)+--------------->+ IN4      | 步进电机   |  |   |                     5V +--------------->+ VCC(+)   +-----------+  |   |                    GND +--------------->+ GND(-)                  |   +------------------------+                +-------------------------+

image.png


4. 主要参数情况

本项目中传感器采样、电机驱动及 AI 模型的关键技术指标如下表所示:

参数类别参数名称设定数值 / 规格备注说明





MCU 平台核心芯片与主频STM32H533RET6 @ 64MHzArm Cortex-M33,开启硬件 FPU
加速度传感器型号与接口LIS3DHTR (I2C @ 100kHz)量程 ±2g,内部 ODR 400Hz
采样窗口配置采样率与窗口长度采样率 200Hz (5ms),窗口 64 点每帧时长 320ms,输入维度 64×3=192
步进电机驱动驱动方式与节拍ULN2003 四相八拍非阻塞轮询换相周期 3ms,与传感器采样互不抢占
NanoEdge AI 模型算法架构与准确率1D-CNN (卷积神经网络)交叉验证准确率 100.0%,置信度高
模型资源占用端侧存储开销RAM: 0.62 KB,Flash: 8.13 KB极其轻量,推理耗时仅数毫秒

5. 如何开启运行

想要复现或开启本系统运行,只需按照以下步骤操作:

  1. 硬件上电:将 LIS3DHTR 紧贴在步进电机外壳上,按照原理图连接好杜邦线,使用 USB Type-C 数据线将 NUCLEO-H533RE 连接至电脑。

  2. 模式选择与固件烧录:

    • 在 main.c 中设有宏定义开关 #define ENABLE_NANOEDGE_AI 1(设为 0 为 CSV 数据采集模式,设为 1 为 AI 实时状态监测模式)。

    • 使用 Keil MDK(ArmClang V6 编译器)编译工程并下载至开发板,按黑色复位键启动。

  3. 串口交互控制与观察:

    • 打开串口助手,选择 ST-Link 虚拟串口,波特率设置为 921600。

    • 系统默认处于 STOP 状态,串口每 320ms 实时打印一行当前电机的实际状态、AI 预测结果及各个类别的置信度百分比。

    • 在串口发送字符 '1'(或 'r')开启电机正转,发送 '2'(或 'c')开启反转,发送 '0'(或 's')使电机停止,即可实时观察 AI 识别结果的毫秒级切换!


6. 实现步骤(从模型训练到端侧部署)

步骤一:在 NanoEdge AI Studio 中导入信号与基准测试(Benchmark)

  1. 打开 NanoEdge AI Studio V5.2.0,创建 n-Class Classification(多分类) 项目,目标平台选择 STM32H533RE(Cortex-M33),传感器类型选择 Accelerometer 3 axes。

  2. 在 Signals 页面分别导入采集好的停止状态数据集(标记为类别 0)和运行状态数据集(标记为类别 1),每个数据集包含 200+ 帧长度为 192 的样本。

  3. 进入 Benchmark 页面启动自动模型搜索。经过算法寻优,工具筛选出了最优的 CNN(卷积神经网络) 模型,其平衡准确率(Balanced Accuracy)高达 98.9% ~ 100%,混淆矩阵表现极佳。

image.png

步骤二:模拟器验证与静态库编译导出(Deployment)

  1. 在 Emulator 页面对训练好的模型进行离线验证,测试通过后进入 Deployment 页面。

  2. 针对 Keil MDK (ARM Compiler 6) 环境,勾选 mfloat-abi(hard)、fshort-wchar 与 fshort-enums 编译选项,点击 DEPLOY LIBRARY 导出预编译静态库压缩包。


image.png步骤三:Keil 工程集成与代码编写
  1. 将导出的 NanoEdgeAI.h 和 libneai.a 复制到 Keil 工程的 Core/Inc 目录下。

  2. 在 Keil 工程树中将 libneai.a 添加至 Application/User/Core 分组,并在该文件的 Options 中将 File Type 设置为 Library file。

  3. 在 main.c 中调用 neai_classification_init() 完成内置 CNN 模型的初始化,并在主循环中每集满 64 个三维加速度点调用一次 neai_classification() 进行实时推理。


7. 项目核心代码

以下是 main.c 中集成 NanoEdge AI V5.2 实时推理与电机非阻塞控制的核心代码片段:

#if (ENABLE_NANOEDGE_AI == 1)#include "NanoEdgeAI.h"/* NanoEdge AI V5.2 输入与输出缓冲区 */float input_signal[NEAI_INPUT_SIGNAL_LENGTH * NEAI_INPUT_AXIS_NUMBER];float probabilities[NEAI_NUMBER_OF_CLASSES];#endif/* --- 在 main() 初始化阶段加载 AI 模型 --- */#if (ENABLE_NANOEDGE_AI == 1)enum neai_state neai_err = neai_classification_init();if (neai_err != NEAI_OK) {    printf(">>> NanoEdge AI Init FAILED! Error Code = %d <<<\r\n", neai_err);} else {    printf(">>> NanoEdge AI Init SUCCESS! Model ID: %s <<<\r\n", neai_get_id());}#endif/* --- 在 while(1) 主循环中进行非阻塞控制与 200Hz 实时采样推理 --- */while (1){    uint32_t now = HAL_GetTick();    /* 1. 非阻塞检查串口控制指令 ('0'=停止, '1'=正转, '2'=反转) */    UART2_CheckCommand();    /* 2. 非阻塞轮询驱动步进电机运转 */    Stepper_Poll(&g_motor);    /* 3. 每 5ms (200Hz) 读取一次 LIS3DHTR 三轴加速度数据 */    if (g_stream_en && ((now - last_sample_tick) >= SAMPLE_INTERVAL_MS))    {        last_sample_tick = now;        int16_t mx = 0, my = 0, mz = 0;        if (LIS3DH_ReadAccMg(&g_lis3dh, &mx, &my, &mz) == 0)        {            /* 填入当前采样窗口缓冲区 */            input_signal[g_sample_idx * NEAI_INPUT_AXIS_NUMBER + 0] = (float)mx;            input_signal[g_sample_idx * NEAI_INPUT_AXIS_NUMBER + 1] = (float)my;            input_signal[g_sample_idx * NEAI_INPUT_AXIS_NUMBER + 2] = (float)mz;            g_sample_idx++;            /* 集满 64 个采样点 (192维数据,耗时320ms),执行一次 AI 推理 */            if (g_sample_idx >= NEAI_INPUT_SIGNAL_LENGTH)            {                g_sample_idx = 0;                int id_class = 0;                enum neai_state state = neai_classification(input_signal, probabilities, &id_class);                if (state == NEAI_OK)                {                    const char *pred_name = neai_get_class_name(id_class);                    printf("[Actual: %s] ---> [AI Predict: %-4s] (Confidence: %5.1f%% | class0:%.1f%%, class1:%.1f%%)\r\n",                           Stepper_IsRunning(&g_motor) ? "RUN " : "STOP",                           pred_name ? pred_name : "UNKNOWN",                           probabilities[id_class] * 100.0f,                           probabilities[0] * 100.0f,                           probabilities[1] * 100.0f);                }            }        }    }}

8. 效果演示与总结

编译并烧录固件后,打开串口助手进行实时测试,实测效果如下图所示:

  1. 电机运转状态(Actual: RUN):当电机处于旋转状态时,AI 模型持续稳定输出 AI Predict: 1(代表运行状态),置信度稳定在 100.0%(class0: 0.0%, class1: 100.0%),无任何跳变或误报。

  2. 动态切换至停止状态(>>> [CMD] Motor STOP <<<):当通过串口下发停止指令后,电机立即停转。在紧接着的第一个采样周期(320ms 内),AI 预测结果瞬间切换为 AI Predict: 0(代表停止状态),置信度同样高达 100.0%(class0: 100.0%, class1: 0.0%)!

【image.png

项目总结:
通过本次活动,我完整体验了从传感器底层驱动编写、高速非阻塞振动数据采集,到使用 NanoEdge AI Studio 训练 CNN 模型并在 STM32H533RE 上完成端侧部署的全流程。仅需不到 1KB 的 RAM 和 8KB 的 Flash,就能在单片机上实现 100% 准确率的电机状态实时监测,充分展现了边缘 AI 在工业设备故障诊断与状态监控领域的巨大潜力!

视频链接:
bili_29528558947刚刚发布的视频https://b23.tv/F8klgch


共1条 1/1 1 跳转至页

回复

匿名不能发帖!请先 [ 登陆 注册 ]