很幸运能参加本期活动。这次拿到的是 NUCLEO-H533RE 开发板、LIS3DH 加速度计 Grove 扩展板,以及一套 ULN2003 加 28BYJ-48 的减速步进电机套装。我的想法比较直接,让 H533RE 按相序驱动步进电机,把 LIS3DH 贴在电机支架上采振动,观察启动、停止、换向和不同转速下的振动差异,为后面做运行状态判断做准备。

三件东西刚好凑成一个闭环:MCU 输出四相控制信号,ULN2003 放大电流,电机转起来,LIS3DH 把振动采回来,MCU 再判断当前是什么状态。有可控的激励源,也有可信的观测手段,这大概是做状态检测最小的可行结构。
主控是 STM32H533RET6,Cortex-M33 内核,最高 250 MHz,512 KB Flash、272 KB 内存,板载 ST-Link V3,一根 USB 线同时做供电、下载和虚拟串口。Arduino 兼容排针和 Morpho 排针都引出来了,Grove 模块用杜邦线直接插,不用画转接板。拿到板子我一般先点灯,让 LED 闪起来、串口能打印字符,这一步通了说明编译链、下载链、串口链路三条都正常,后面接外设才有意义。

传感器是 LIS3DH,三轴 MEMS 加速度计,量程可以在正负 2g 到正负 16g 之间配,高分辨率模式 12 位,正负 2g 下每 LSB 对应 1 mg,I²C 接口,内部有 32 级 FIFO,低功耗模式下静态电流大约 2 微安。有个容易混淆的地方要说明,它只测加速度,不测角速度,测角速度那是陀螺仪的事。而对电机来说,轴承磨损、转子不平衡、堵转、负载突变,这些毛病都会在振动波形上留下痕迹,所以加速度恰恰是最合适的观测量。32 级 FIFO 是我比较看重的,采样率一开到 400 Hz,每 2.5 毫秒就来一帧,逐帧去读很容易丢点,攒一批再一次性搬走稳得多。另外传感器一定要固定牢,用双面胶或者扎带贴在电机外壳上,线材也别松,否则采到的主要是它自己晃动的噪声。

执行器是 ULN2003 加 28BYJ-48。之所以不拿 GPIO 直接推电机,两条路都走不通,要么带不动,要么把引脚烧了。ULN2003 每一路可以提供最高 500 毫安的持续灌电流,而且内置了续流二极管,用来吸收线圈断电瞬间产生的反向电动势,保护 MCU 不被高压尖峰打穿。接线就是把 MCU 的四个 GPIO 接到 IN1 到 IN4,输出端接电机四相线圈,电机的公共端也就是那根红线接 5V。我准备用 8 拍半步来换相,A、AB、B、BC、C、CD、D、DA 这样走,比 4 拍整步平稳,噪声也小。28BYJ-48 自带大约 1 比 64 的减速机构,定位精度不错但转速不快,正好适合做可复现的振动实验。有三个地方要特别注意,电机用 5V 独立供电,不要从 3V3 取电;电机的地和 MCU 必须共地,不然输入电平没有参考,电机会时转时停;停机的时候把四相全部拉低,否则线圈一直通电会发烫。
接下来我打算按四个任务推进。任务一是开发板基础,LED、按键中断、蜂鸣器、串口,顺便把 1 毫秒时基用定时器中断做出来。任务二是传感器驱动,用 I²C 读 LIS3DH,先确认静止时 Z 轴大约 1000 毫克,也就是 1g 重力,再打开 FIFO 做批量采样。任务三是步进电机,8 拍半步、可换向、可调速,换相放在定时器中断里,保证采数据的这段时间电机仍然匀速转。成果部分把停止、正常运行、堵转三种工况的数据采下来,用 NanoEdge AI Studio 训练分类模型,编译成静态库集成到工程里,在片内完成判别,只在异常时报警。
进展会陆续发过程帖。感谢得捷和电子产品世界提供这次机会。

三件东西刚好凑成一个闭环:MCU 输出四相控制信号,ULN2003 放大电流,电机转起来,LIS3DH 把振动采回来,MCU 再判断当前是什么状态。有可控的激励源,也有可信的观测手段,这大概是做状态检测最小的可行结构。
主控是 STM32H533RET6,Cortex-M33 内核,最高 250 MHz,512 KB Flash、272 KB 内存,板载 ST-Link V3,一根 USB 线同时做供电、下载和虚拟串口。Arduino 兼容排针和 Morpho 排针都引出来了,Grove 模块用杜邦线直接插,不用画转接板。拿到板子我一般先点灯,让 LED 闪起来、串口能打印字符,这一步通了说明编译链、下载链、串口链路三条都正常,后面接外设才有意义。

传感器是 LIS3DH,三轴 MEMS 加速度计,量程可以在正负 2g 到正负 16g 之间配,高分辨率模式 12 位,正负 2g 下每 LSB 对应 1 mg,I²C 接口,内部有 32 级 FIFO,低功耗模式下静态电流大约 2 微安。有个容易混淆的地方要说明,它只测加速度,不测角速度,测角速度那是陀螺仪的事。而对电机来说,轴承磨损、转子不平衡、堵转、负载突变,这些毛病都会在振动波形上留下痕迹,所以加速度恰恰是最合适的观测量。32 级 FIFO 是我比较看重的,采样率一开到 400 Hz,每 2.5 毫秒就来一帧,逐帧去读很容易丢点,攒一批再一次性搬走稳得多。另外传感器一定要固定牢,用双面胶或者扎带贴在电机外壳上,线材也别松,否则采到的主要是它自己晃动的噪声。

执行器是 ULN2003 加 28BYJ-48。之所以不拿 GPIO 直接推电机,两条路都走不通,要么带不动,要么把引脚烧了。ULN2003 每一路可以提供最高 500 毫安的持续灌电流,而且内置了续流二极管,用来吸收线圈断电瞬间产生的反向电动势,保护 MCU 不被高压尖峰打穿。接线就是把 MCU 的四个 GPIO 接到 IN1 到 IN4,输出端接电机四相线圈,电机的公共端也就是那根红线接 5V。我准备用 8 拍半步来换相,A、AB、B、BC、C、CD、D、DA 这样走,比 4 拍整步平稳,噪声也小。28BYJ-48 自带大约 1 比 64 的减速机构,定位精度不错但转速不快,正好适合做可复现的振动实验。有三个地方要特别注意,电机用 5V 独立供电,不要从 3V3 取电;电机的地和 MCU 必须共地,不然输入电平没有参考,电机会时转时停;停机的时候把四相全部拉低,否则线圈一直通电会发烫。
接下来我打算按四个任务推进。任务一是开发板基础,LED、按键中断、蜂鸣器、串口,顺便把 1 毫秒时基用定时器中断做出来。任务二是传感器驱动,用 I²C 读 LIS3DH,先确认静止时 Z 轴大约 1000 毫克,也就是 1g 重力,再打开 FIFO 做批量采样。任务三是步进电机,8 拍半步、可换向、可调速,换相放在定时器中断里,保证采数据的这段时间电机仍然匀速转。成果部分把停止、正常运行、堵转三种工况的数据采下来,用 NanoEdge AI Studio 训练分类模型,编译成静态库集成到工程里,在片内完成判别,只在异常时报警。
进展会陆续发过程帖。感谢得捷和电子产品世界提供这次机会。
我要赚赏金
