采用 FRDM-MCXN947 和 FXLS8974CF (ML Vibro Sens Click) 的便携式异常检测演示
此演示展示了使用来自 FXLS8974CF(3 轴加速度计)的 3 轴振动数据在 MCXN947 上运行的现场训练机器学习的强大功能。此设计在 FRDM-MCXN947 评估板上运行,并与 LCD-PAR-S035(触摸/显示)配合使用。
使用 Mikroe 的 ML Vibro Sense Click 模拟通用“机器”(实时振动数据源)(请参阅下文的“硬件”部分)。该 Click 板可插入 FRDM-MCXN947 评估板。
ML Vibro Sense Click 开发板包含两个小型电机,并在电机之间安装了恩智浦的 FXLS8974 三轴加速度计。振动(加速度)数据通过 I2C 总线从 FXLS8974CF 持续传输到 MCXN947 MCU。
- 上部电机特意设计为不平衡状态。脉冲宽度调制 (PWM) 信号通过 mikroBUS 的 PWM 线路(上图标记为“UNB”)施加到其电源开关电路。可以发送各种 PWM 波形来模拟非典型振动特征。通过改变该信号的频率、PWM 占空比和开启/关闭频率,用户可以模拟许多有趣的振动刺激。
- 下部电机已平衡。该电机通常通过 mikroBUS 的 CS 引脚(上图标记为“BAL”)完全开启或关闭。在训练过程中,平衡电机用于生成标称基线振动特征,模拟正常的机器。
该演示使用 LVGL 图形框架和 TFT 显示器 (LCD-PAR-S035) 来显示机器学习分析结果。GUI 采用 GUI Guider (NXP) 设计。
主板:FRDM-MCXN947
配件:ML Vibro Sens Click
类别:传感器、人工智能/机器学习、异常检测
外设:显示器、I2C
工具链:MCUXpresso IDE、VS Code
目录
1.软件
2.硬件
对于此演示,您将需要下一个硬件。
3. 设置
3.1 步骤 1:将显示器连接到 FRDM-MCXN947
3.2 步骤 2:将 ML Vibro Sens Click 板连接到 FRDM-MCXN947
- 将 ML Vibro Sens Click 插入 FRDM 板的原生微插槽上。
- 然后将USB线插入主机PC和FRDM-MCXN947之间。
参考下图。
3.3 步骤 3:下载并安装所需软件
- 下载MCUXpresso IDE 11.9.0 或更新版本,并按照安装程序说明进行安装。
- 下载适用于 FRDM-MCXN947 的 MCXUpresso SDK 2.14.0。构建 SDK 时,请确保选择 ISSDK 中间件。确保将版本更改为 2.14.00,并为 MCUXpresso IDE 构建 SDK。
- 安装 Git v2.39.0(用于克隆和运行 west 命令)
3.4 步骤4:构建演示项目
- 打开 MCUXpresso IDE 并选择一个目录来创建您的工作区。
- 将“MCXUpresso SDK 2.14.0 for FRDM-MCXN947”(将 SDK zip 拖放到“已安装的 SDK”视图中)安装到 MCUXpresso IDE 中。
- 转到“快速启动面板”并单击“从应用程序代码中心导入”。
- 在搜索栏中输入“portable-anomaly-detect”。选择项目卡。
- 单击向导中的“GitHub 链接”将 GitHub 信息复制到 IDE 向导中。
- 继续按照向导的默认步骤操作。单击“下一步”,然后单击“主”分支的“下一步”。
- 选择所需的目标位置来存储导入的项目。初始分支 = main。点击“下一步”。
- 单击下一步选择发现的 Eclipse 项目。
- 单击“完成”以完成导入工作区。
- 右键单击项目并选择构建以开始构建项目。
3.5 在 VS Code 中开发
- 下载并安装 Visual Studio Code v1.95.2 或最新版本。
- 在 VS 代码中,选择“MCUXpresso For VScode”插件,然后单击 QUICKSTART PANEL 中的“应用程序代码中心”。
- 搜索“portable-anomaly-detect”示例,克隆到本地工作区。
- 过了一会儿,该项目就会显示在“项目”中。
- 建立项目,编译完成后刷写电路板。
4.结果
- 重置开发板,主窗口将如下图所示。请注意,此操作仅在首次运行演示程序且模型 (OC-SVM) 尚未训练时发生。模型训练完成后,将其存储在 MCXN947 MCU 的闪存中,主显示屏将自动运行该模型,演示程序热图也将相应更新。
4.1 在“正常”振动模式下训练 OC-SVM
- 点击触摸屏GUI上的“Train”按钮,进入OC-SVM训练窗口。
- 点击“开始”按钮,平衡电机将开始运行,以在正常振动模式下训练 OC-SVM 模型。
- 进度条会显示OC-SVM训练的状态,等待进度条完成。
在训练期间,系统会创建一张红/绿热力图。红色表示状态不佳;绿色表示状态良好。此外,还会绘制一个条形图,展示机器健康状况随时间的变化。训练结束后,您将返回主演示窗口并看到这张热力图。演示将从此处自动运行。每次健康分析重复时,热力图上都会出现一个瞬时白点。一系列分析结果越“绿色”,机器健康评分就越高(-10 到 +10 之间的任意值)。
随着演示的进行,平衡电机将在开启和关闭状态之间交替,而不平衡电机将在关闭和各种速度之间交替 - 产生不同的“异常”振动特征。
注意:在训练 OC-SVM 时,强烈建议避免周围的振动,因为这会影响正在进行模型训练的数据集。
4.2 测试训练好的OC-SVM模型进行预测
点击“返回”按钮,演示单元将按照以下顺序运行以测试训练好的OC-SVM模型。
- 两个微型马达都将停止运转,OC-SVM 训练模型将检测到“异常”状态。
- 几秒钟后,平衡电机将开始运行,OC-SVM 训练模型将检测“正常”状态。
- 几秒钟后,不平衡的电机将开始运行并产生更大的振动,并且 OC-SVM 训练模型将检测到“异常”状态。
4.3 演示版使用更新的模型运行。
演示将永远运行,不断评估和传达机器健康状况,同时平衡和不平衡电机不断改变全关闭、标称和非典型振动特征。
在工业环境中,此类应用通常有数百到数千个宝贵的部署点。任何运动机械或机构都可以使用基于 SVM 的振动健康监测器进行监测。任何异常情况都可以自动标记并立即采取补救措施,以防止灾难性故障和代价高昂的停机。这些情况可能包括:轴承/衬套故障、失速、泵气蚀、叶轮泵损坏、机器不平衡、瞬态冲击、喘振等。
这些情况可能发生在深埋设备中,也可能发生在远离专业技术人员的远程设备上。能够及早发现故障设备至关重要,尤其是那些位于屋顶、大型厂房深处或地下金库的机器。及早发现并采取补救措施可以防止灾难性事件的发生。
5. 常见问题解答
训练窗口中的“Param”设置。
Gam 是“伽马(γ)”,Nu 是“Nu(ν)”,它们是两个用于调整训练模型的灵敏度和容差之间的权衡的参数。
对于大多数演示设置,默认值(Gam:0050,Nu:0.1)通常会导致敏感度和容差之间的合理权衡。
- Nu 越大,模型对数据变化越敏感,但过大的 Nu(例如 >=0.4)可能会导致模型将一些远离平均值的训练样本视为异常!因此,如果您想要一个高灵敏度且响应速度快的演示,则应该使用较大的 Nu(例如 0.1 到 0.4);但如果您希望演示对随机或意外干扰具有更高的容忍度,则应该使用较小的 Nu(例如 0.03 到 0.1)。
- Gamma 越大,模型倾向于将训练数据分成多个聚类(每个训练样本的有效范围变小),所以如果你的正常状态包含多个子状态(比如风扇关闭和风扇开启都正常),那么你应该使用较大的 Gamma(比如 20 到 200);但 Gamma 越大也会使模型对训练数据的随机性鲁棒性降低,所以如果你的演示环境受到严重干扰(比如工作中的电脑振动、附近风扇的空气振动、附近走动的人),你应该使用较小的 gamma(比如 5 到 20)。
模型决策边界在 LCD 屏幕上的二维彩色轮廓可视化,绿色至蓝色表示正常区域,黄色-红色-紫色表示异常区域。默认设置如下
注:该模型是“单类支持向量机”,以下是一些关于Gamma和Nu的更技术性的解释:Gamma(γ):Gamma是核函数的一个参数,它决定了数据映射到高维空间后的分布。在径向基函数(RBF)中,较大的gamma值意味着较小的决策边界,使模型更关注训练数据的局部特征;而较小的gamma值意味着较大的决策边界,使模型更平滑,对训练数据的局部波动不太敏感。
Nu (ν):Nu 是一个用户自定义参数,表示错误数据点比例的上限和边距的下限。该参数有助于控制支持向量的比例以及决策边界的松散程度。简而言之,较小的 nu 值使模型更倾向于忽略更多异常值,从而导致决策边界更宽;相反,较大的 nu 值使模型更倾向于包含更多数据点,从而导致决策边界更窄。
6. 支持
- 访问 NXP 传感器社区页面获取更多支持 - NXP 社区
- 了解有关 FXLS8974CF 三轴加速度计的更多信息,请参阅 - FXLS8974CF DS
- 使用传感器工具箱加速您的传感器开发,请参阅 -传感器开发生态系统
项目元数据
来源:恩智浦appcodehub