本网页已闲置超过3分钟,按键盘任意键或点击空白处,即可回到网页

基于RSL10的的压缩机水泵预测性维护设备

发布时间:2022-06-07
分享到:

基于RSL10的的压缩机水泵预测性维护设备

发布时间:2022-06-07
分享到:

背景

一个大城市的普通居民很少考虑水是如何进入水龙头或中央供暖管道的,甚至可能不知道压缩机水泵是什么样子的。但实际上,很难想象没有水泵的生活,因为毕竟没有人会喜欢无法随时洗个热水澡的日子。

一些其他的国家,情况则更加严峻。在某些地方,获得加工过的饮用水非常困难,因此人们不得不依赖地下水。在这种情况下,水泵是唯一的选择。但如果设备出现严重磨损,可能要等待将近一周的时间才能修好水泵。

与任何其他机器一样,水泵应进行维护和维修,例如润滑、清洁、更换空气过滤器以及检查机器是否存在潜在问题,因此在引起严重问题之前解决任何潜在问题非常重要。人们可以使用基于机器学习的预测性维护,而不是在损坏已经发生时采取反应措施,这将有助于避免任何严重问题并延长压缩机泵的使用寿命。

借助 RSL10 传感器和Neuton AI,我为压缩机水泵预测性维护构建了一个快速可扩展的解决方案。

预测性维护 VS 反应性维护?
预测性维护是一种故障排除类型,可在需求变成问题之前解决需求。此过程可帮助您防止设备故障,而不是等到问题出现后才反应性维护需要的预谋要少得多,但可能会花费很多。预测性维护需要更多的计划,但它可以在很大程度上得到回报,正如我们将看到的那样。当然,不可能预测每一个问题,但你可以避免很多意想不到的机器问题。

被动式维护需要的远见少得多,但可能会花费很多。预测性维护需要更多的计划,但它可以在很大程度上得到回报,正如我们将看到的那样。当然,不可能预测每一个问题,但你可以避免很多意想不到的机器问题。

水泵的重要性
水泵有几个使用领域:住宅、工业和商业,具体取决于它们的功能。但是,所有这些泵的功能保持不变——它们都将水和其他液体从一个地方输送到另一个地方。

在这个项目中,我使用了业界功耗最低的蓝牙® 5 SoC RSL10,以及来自安森美半导体和博世的多个传感器。

主要特征

  • 时钟频率高达 48 MHz 的 Arm® Cortex®-M3 处理器
  • 电源电压范围:1.1 - 3.3 V
  • 384 kB 闪存
  • 76 kB 程序存储器
  • 88 kB 数据存储器
  • 深度睡眠模式下约 10 年的电池操作

高级无线功能:

  • 通过 LE 2-Mbit PHY(高速)认证的蓝牙 5.2,以及向后兼容性和对早期的支持
  • 支持 FOTA(无线固件)更新
  • 接收灵敏度(蓝牙低功耗模式,1 Mbps):−93 dB
  • 发射功率:−17 至 +6 dBm
  • 范围可达 100 米

传感器融合
传感器融合是结合传感器数据或来自不同来源的数据的过程,以便得到的信息更加准确。传感器融合创造了一种整体远大于部分之和的情况。这些机制提供了一种解决矛盾情况并允许开发动态传感策略的方法。传感器融合也称为(多传感器)数据融合,是信息融合的一个子集。数据融合的概念起源于人类和动物的进化能力,可以整合来自多种感官的信息,以提高他们的生存能力。例如,视觉、触觉、嗅觉和味觉的组合可能表明一种物质是否可食用。传感器融合、机器学习和连通性支持“上下文”感知,而“上下文”感知支持新的服务世界。

什么是“上下文”?
背景定义为构成事件、陈述、情况或想法的背景的情况或事实。在软件编程中,开发上下文感知应用程序的想法已经存在了一段时间。“上下文”感知应用程序检查谁、在哪里、何时以及做什么。软件设计人员使用此“上下文”信息来确定情况发生的原因,然后在应用程序中对某些操作进行编码。

根据这个定义,制定情境感知行动的四个最重要的信息类别是:

  • 鉴别
  • 地点
  • 时间
  • 活动
  • 程序

第 1 步:数据收集

此项目的输入功能描述:

如上所示,我们将使用 RSL10 设备传感器为我们的压缩机水泵设置数据收集阶段。为此,我们需要首先配置我们的 IDE 以进行编程。

1、访问网站https://www.onsemi.com/products/wireless-connectivity/wireless-rf-transceivers/rsl10-sip ,下载所需IDE和SDK包

2. 按照官方手册在 OnSemi IDE 中导入 CMSIS 包的详细步骤,https: //www.onsemi.com/pub/collat​​eral/evbum2614-d.pdf

3. 在您的工作区中复制 BH160 Sensor Hub 示例。

4.我们可以修改示例代码为我们的项目构建一个数据集,

硬件设置:

我尝试使用粗糙的外壳来保护 RSL10 传感器板免受任何损坏。设置完成后,我们就可以打印所有传感器值并准备数据集了。

printf("%.2f, %.2f, %.2f, %.2f, %.2f, %.2f, %.2f, %.2f, %.2f, %.2f, %.2f, %.2f \n", sensorFusion.h, sensorFusion.p, sensorFusion.b, sensorFusion.xlinear, sensorFusion.ylinear, sensorFusion.zlinear, sensorFusion.xrotate, sensorFusion.yrotate, sensorFusion.zrotate, sensorFusion.pressure, sensorFusion.temperature, sensorFusion.humidity);

传感器值将打印在 J-Link RTT 查看器上,等准备好数据收集部分,我们将继续进行 Neuton AI 模型训练和推理。

检查我们的数据集摘要

第 2 步:模型训练
在Neuton 平台上,上传您的数据集,然后选择“输出”作为目标变量。默认情况下,Neuton 使用交叉验证,为创建的模型提供完美的度量结果。我还上传了一个保留数据集来衡量模型训练期间未看到的数据的指标。

在这种情况下,我们的目标是根据提供的特征值定义泵的动作模式以解决分类任务。

切换 DSP 选项并选择窗口大小自动选择并开始训练。在自动模式下,将选择最佳窗口大小。此外,将从数据中生成其他特征,然后进行特征选择。

训练开始几分钟后,我们可以探索变量到目标的关系特征和数据分析图表。

训练看起来不错——我们的模型有99% 的准确率。接下来,我们将下载生成的 TinyML 模型 C 库以在我们的 RSL10 板 IDE 上使用。

这是混淆矩阵:

单击下载按钮:

第 3 步:模型部署和推理
我们将把我们所有的头文件include和C 文件放在src下载的 Neuton TinyML C 库的文件夹中,见本文下方。

这里的重要函数是neuton_model_set_inputs(inputs) ,其中输入所有传感器值,一旦缓冲区已满,函数返回 0 并准备好进行推理。

构建您的项目,构建 writes.elf 二进制文件,该文件将通过 J-Link 调试器在 RSL10 设备上刷新。

为 RSL10 设备设置构建配置,然后继续运行按钮以刷新 RSL10 板。

成功后,控制台应记录以下输出

SEGGER J-Link GDB Server V7.58b Command Line Version

JLinkARM.dll V7.58b (DLL compiled Nov 16 2021 15:00:10)

Command line: -if swd -device RSL10 -endian little -speed 1000 -port 2331 -swoport 2332 -telnetport 2333 -vd -ir -localhostonly 1 -singlerun -strict -timeout 0 -nogui
-----GDB Server start settings-----
GDBInit file:                  none
GDB Server Listening port:     2331
SWO raw output listening port: 2332
Terminal I/O port:             2333
Accept remote connection:      localhost only
Generate logfile:              off
Verify download:               on
Init regs on start:            on
Silent mode:                   off
Single run mode:               on
Target connection timeout:     0 ms
------J-Link related settings------
J-Link Host interface:         USB
J-Link script:                 none
J-Link settings file:          none
------Target related settings------
Target device:                 RSL10
Target interface:              SWD
Target interface speed:        1000kHz
Target endian:                 little

Connecting to J-Link...
J-Link is connected.
Firmware: J-Link Lite-Cortex-M V9 compiled Feb  2 2021 16:33:27
Hardware: V9.00
S/N: 519003973
Feature(s): GDB
Checking target voltage...
Target voltage: 2.58 V
Listening on TCP/IP port 2331
Connecting to target...
Connected to target
Waiting for GDB connection...Connected to 127.0.0.1
Reading all registers
Read 4 bytes @ address 0x00000000 (Data = 0x20002000)
Read 2 bytes @ address 0x00000000 (Data = 0x2000)
Received monitor command: speed 1000
Target interface speed set to 1000 kHz
Received monitor command: clrbp
Received monitor command: reset
Resetting target
Received monitor command: halt
Halting target CPU...
...Target halted (PC = 0x00100158)
Received monitor command: regs
R0 = 00100159, R1 = 00000007, R2 = 20008000, R3 = E000ED00
R4 = 00100000, R5 = 00000007, R6 = FFFFFFFF, R7 = 40000E2C
R8 = 4200A700, R9 = 00081A00, R10= BD648BE7, R11= 99F19BFF
R12= 00000001, R13= 20007FFC, MSP= 20007FFC, PSP= 37EBBDB8
R14(LR) = 000002E5, R15(PC) = 00100158
XPSR 61000000, APSR 60000000, EPSR 01000000, IPSR 00000000
CFBP 00000001, CONTROL 00, FAULTMASK 00, BASEPRI 00, PRIMASK 01

Security extension regs:
MSP_S  = 00000000, MSPLIM_S  = 00000000
PSP_S  = 00000000, PSPLIM_S  = 00000000
MSP_NS = 20007FFC, MSPLIM_NS = 00000000
PSP_NS = 37EBBDB8, PSPLIM_NS = 00000000
CONTROL_S  00, FAULTMASK_S  00, BASEPRI_S  00, PRIMASK_S  00
CONTROL_NS 00, FAULTMASK_NS 00, BASEPRI_NS 00, PRIMASK_NS 01

Reading all registers
Received monitor command: speed auto
Select auto target interface speed (2000 kHz)
Received monitor command: flash breakpoints 1
Flash breakpoints enabled
Received monitor command: semihosting enable
Semi-hosting enabled (Handle on BKPT)
Received monitor command: semihosting IOClient 1
Semihosting I/O set to TELNET Client
Received monitor command: SWO DisableTarget 0xFFFFFFFF
SWO disabled successfully.
Received monitor command: SWO EnableTarget 0 0 0x1 0
SWO enabled successfully.
Downloading 16112 bytes @ address 0x00100000 - Verified OK
Downloading 16048 bytes @ address 0x00103EF0 - Verified OK
Downloading 16032 bytes @ address 0x00107DA0 - Verified OK
Downloading 16016 bytes @ address 0x0010BC40 - Verified OK
Downloading 16016 bytes @ address 0x0010FAD0 - Verified OK
Downloading 14888 bytes @ address 0x00113960 - Verified OK
Downloading 8 bytes @ address 0x00117388 - Verified OK
Downloading 548 bytes @ address 0x00117390 - Verified OK
Received monitor command: clrbp
Received monitor command: reset
Comparing flash   [....................] Done.
Erasing flash     [....................] Done.
Programming flash [....................] Done.
Resetting target
Received monitor command: halt
Halting target CPU...
...Target halted (PC = 0x00100158)
Received monitor command: regs
R0 = 00100159, R1 = 00000007, R2 = 20008000, R3 = E000ED00
R4 = 00100000, R5 = 00000007, R6 = FFFFFFFF, R7 = 40000E2C
R8 = 4200A700, R9 = 00081A00, R10= BD648BE7, R11= 99F19BFF
R12= 00000001, R13= 20007FFC, MSP= 20007FFC, PSP= 37EBBDB8
R14(LR) = 000002E5, R15(PC) = 00100158
XPSR 61000000, APSR 60000000, EPSR 01000000, IPSR 00000000
CFBP 00000001, CONTROL 00, FAULTMASK 00, BASEPRI 00, PRIMASK 01

Security extension regs:
MSP_S  = 00000000, MSPLIM_S  = 00000000
PSP_S  = 00000000, PSPLIM_S  = 00000000
MSP_NS = 20007FFC, MSPLIM_NS = 00000000
PSP_NS = 37EBBDB8, PSPLIM_NS = 00000000
CONTROL_S  00, FAULTMASK_S  00, BASEPRI_S  00, PRIMASK_S  00
CONTROL_NS 00, FAULTMASK_NS 00, BASEPRI_NS 00, PRIMASK_NS 01

Reading all registers
Starting target CPU...

要查看输出,我们可以使用 J-Link RTT 查看器或 Eclipse IDE 终端查看器,我们在 Eclipse OnSemi IDE 中使用终端。

我们可以在终端上看到推理输出:

查看设备上的模型占用空间。

结论
通过这个项目,我展示了这种富含传感器的微型低功耗设备如何改善生活。压缩机水泵的预测性维护确实可以为普通人、农民甚至公司节省很多钱。

本文中所用到的一些代码

如果您对此项目有任何想法、意见或问题,请在下方留言。

以上内容翻译自网络,原作者:Sumit Kumar,如涉及侵权,可联系删除。

加入微信技术交流群

技术交流,职业进阶

关注与非网服务号

获取电子工程师福利

加入电路城 QQ 交流群

与技术大牛交朋友

讨论