当前位置:首页 > 工业控制 > 电路设计项目集锦
[导读]或者,如果你是一家企业,你在业务中使用某种工具的频率是多少?操作那台机器的费用是多少?敏感实验室设备周围的电压有多稳定?你所在位置接收到的电能质量如何?例如,您可以使用这些信息来更好地估计产品成本,或者通过进行异常检测或预测性维护。

测量任何插入设备的能量参数(电流/电压/功率等),并在web应用程序上查看仪表板和历史数据图表

在这个项目中,我创建了一个独立的便携式能量监测和分析设备,并集成了Web应用程序。

你一天看多少电视?那要花你多少钱?你的使用模式是什么?把洗衣机放在非高峰时间而不是高峰时间,你能省下多少钱?

或者,如果你是一家企业,你在业务中使用某种工具的频率是多少?操作那台机器的费用是多少?敏感实验室设备周围的电压有多稳定?你所在位置接收到的电能质量如何?例如,您可以使用这些信息来更好地估计产品成本,或者通过进行异常检测或预测性维护。

这个便携式能量监测装置可以帮助你回答这些问题。它测量插入的任何设备/负载的能量参数:

•监控能源参数(电流(RMS),电压(RMS),功率因数,线路频率,功率,能耗等),并将其写入时间序列数据库(InfluxDB)

•重置每天午夜的能量积累,这样能量积累(累计消耗的能量)是每天进行的。

•监控事件条件(过流/功率,电压骤降/浪涌)

•呈现一个显示所有当前参数的web仪表板。单击每个参数还可以获取并显示最近5分钟的活动。

•使用线形图呈现较长时期的历史数据-您可以在同一图形上覆盖多个参数以进行比较。您可以从下拉菜单中选择数据的间隔- 5m, 10m, 30m, 1hr, 3hr, 6hr, 12hr和24hr

它是用Raspberry Pi 4、Dr. Wattson Energy Monitoring Board V2和OLED屏幕制作的。

ProtoStax机箱用于树莓派3/4/5和Dr. Wattson能源监视器,为整个项目提供了一个很好的模块化机箱解决方案,包括一个电源入口和一个可以测量能耗参数的插座。插入您感兴趣的负载并开始测量!

树莓派运行一个基于python Flask的应用程序,每秒查询Dr. watson,并将数据上传到InfluxDB实例。该应用程序还提供了一个使用HTML, CSS和Javascript的web用户界面,在仪表板中显示当前的能源指标。您可以点击每个指标来查看最近5分钟的活动。您还可以通过图表查看历史数据-最近5分钟,10分钟,30分钟,60分钟,3小时,6小时,12小时和24小时。您可以使用REST api直接查询JSON格式的数据。设备上附带的OLED屏幕显示当前的关键参数,因此您可以通过查看设备屏幕快速查看数据。

此基础设施还允许在其上轻松构建任何其他数据分析和控制。您可以使用web应用程序原样获得大量有用的信息,包括当前和历史数据(最多24小时),而无需任何额外的编码。由于历史数据存储在时间序列数据库中,您也可以查询它,将其可视化(使用与InfluxDB配合良好的Grafana等工具),并通过额外的编码和数据分析来分析它。

这是架构图。

使用它

我试图简化在你自己的设置中使用Energy Monitor的过程。

第一步是把电路组装在一起,并将其组装在外壳中。ProtoStax和沃森博士的用户手册里有足够的信息,我建议你参考一下。

一旦您完成了这些,您将希望启用Raspberry Pi的无头操作。目前的树莓派Imager使它相当简单,允许你配置你的WiFi网络设置,也启用SSH等。

一旦你有了一个工作设备,你可以启动和登录,你必须安装软件。如果你还没有git,你首先需要安装它:

您还需要安装并设置InfluxDB2。关于这个有很多教程,所以我就不重复了。您需要设置组织和存储桶,以及用于身份验证的令牌。注意这些值。

之后,你可以从Github克隆软件:

接下来,我们将创建一个python虚拟环境,以方便安装所需的软件包,然后使用项目中的需求一次轻松安装所有依赖项:

接下来,您需要创建一个config.ini文件来包含连接到InfluxDB实例的凭据。提供了一个样例config_sample.ini。你可以使用它,并在适当的时候更新它。记得创建一个新的文件config.ini(而不是修改config_sample.ini文件)

如果一切正常,你应该可以像这样启动应用程序:

您还可以创建一个服务,以便在树莓派启动时自动启动应用程序。Github README有关于如何做到这一点的说明。我提供了一个示例服务文件供您根据需要进行修改。

如果代码正常运行,您应该能够打开浏览器到您的web应用程序。假设您将树莓派命名为myPi.local。

代码深潜

代码是用Python编写的。我使用了Flask,它是一个轻量级的web框架,作为web服务器,不仅提供web UI,还提供JSON格式的数据(客户端Javascript使用JSON格式加载、显示和刷新历史数据)。

为了与沃森博士交流,我使用它的Python库UpbeatLabs_Python_MCP39F521。

我还安装了一个InfluxDB2数据库作为时间序列数据库。InfluxDB的最新版本是3,但该版本有一个严格的限制,即只能支持大约72小时的数据查询(再多的话性能就不高了,而且会给系统带来很大的压力)。InfluxDB2工作得很好,在可预见的未来,我将使用它超过3个版本(直到他们修复/解决问题)。对于InfluxDB2,您必须使用Flux查询,这不是最流行的,但我认为它们使用起来很好!

为了与OLED屏幕进行通信,我使用Adafruit的Adafruit_Python_SSD1306。请注意,这个库现在已被弃用,取而代之的是他们的CircuitPython库,但它还不能在Raspberry Pi 5/bookworm上工作。我还必须用GPIO python库做一些技巧来让bookworm工作。

我使用Dr. watson的事件检测引脚在事件触发条件发生时获得通知,并使用它打开显示板上的LED。

当连接到InfluxDB数据库时,我使用配置文件来存储必要的信息(url、令牌、org、要使用的桶),并使用configparser库来读取和获取数据。确保创建一个包含您自己的数据库信息的config.ini文件!

Dr. Wattson使用的MCP39F521提供能量积累,Dr. Wattson公开api来打开/关闭能量积累。python应用程序会在午夜重置能量积累,这样我们就可以记录一天的能量积累。

为了确保每天只进行一次重置,即使应用程序重新启动,我也使用shelve python库来跟踪文件中的这些信息。如果当天的能量积累已经重置,则调用该函数没有任何作用。

在Flask中,它定义路由,其中既包括数据(JSON格式),也包括呈现客户端HTML、CSS和Javascript页面。在Flask中,默认情况下,html页面存储在“templates”目录下,其他静态资产(如CSS和Javascript)存储在“static”目录下。

对于客户端,我使用Bootstrap框架来提供一致的、移动友好的响应界面,而不需要太多的麻烦。当然,熟悉它是有学习曲线的!

对于仪表板以及度量图表页面,我使用Chart.js小部件和图形来显示各种项目。

例如,我使用“甜甜圈”图表在仪表板上显示电流、电压、线路频率、功率因数等指标。我还使用了doughnutLabel注释插件。这允许我将当前值表示为一个仪表,以获得更令人愉悦的视觉外观。单击每个仪表板指标还会弹出一个指标图表,显示最近5分钟的活动。让它工作有点棘手!

对于事件条件(过电流,过功率,电压下降和电压浪涌)以及功率象限表示,我使用了一个散点图,中心为0,0,并用4个注释表示四个事件或四个功率象限。

在事件的情况下,一个或多个事件可以是活动的,而功率象限可以是4个值中的一个。将鼠标移到每个将给出额外的信息-例如,触发过电流的条件是> 0.18 A。因此,这个小部件呈现了大量的信息,同时看起来极简主义。将鼠标悬停在数据点上并单击可以获得更多信息,活动区域会改变颜色和大小(红点变大)。

度量图表页面显示一个线形图,并具有所有不同的属性。默认情况下,只显示当前RMS,但您可以单击其他属性来启用/禁用它们。因此,一个图表可以用于所有属性。我还添加了从下拉菜单中选择不同时间框架的功能。这将获取新数据并重新呈现图表。它还智能地更改刷新间隔- 24小时图表将每分钟刷新一次,而5分钟图表将每5秒刷新一次。javascript使用合适的查询参数调用后端REST API来获取数据并更新图表。我必须测试双方,以确保一切都按预期工作,并发现和修复一些漏洞。这都是过程的一部分!

也可以设置y轴缩放的最小/最大-否则Chart.js会根据手头的数据自动缩放。如果你正在寻找特定的模式,并知道你正在观察的最小/最大值,并在这些范围内渲染图表,那么自己设置比例是很有用的。

为了在所有页面之间共享导航链接和标题,我有一个base.html页面,所有其他页面都继承自这个页面,所以如果我想更改导航链接,我可以只在一个位置这样做。

因此,您可以看到在客户端也发生了相当多的事情!

前进

由于数据在InfluxDB中,并且它支持Python,因此您可以通过编写单独的Python程序和直接查询数据库来添加额外的数据分析,并利用各种Python库和框架进行人工智能和数据分析(例如,生成每日报告)。

当然,你也可以修改/增强现有的应用程序:

•添加用户身份验证,这样用户必须登录才能看到仪表板

•使用不同类型的图表——条形图、散点图等。

•增加对查询更长的数据周期的支持(目前最多可查询24小时)。在查询大量数据时要记住一些事情。如何减少数据点的数量?您可以在Chart.js中使用数据抽取来帮助减少数据点的数量。或者您可以在服务器端进行处理以减少它(例如,将数据聚合为5分钟间隔以减少数据点的数量)。

•添加额外的分析和报告-您可以创建一个新的页面来显示报告

•添加用于更改配置设置的页面—例如,事件触发条件(这些现在是硬编码的,但可以由用户配置)

本文编译自hackster.io

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: 驱动电源

在工业自动化蓬勃发展的当下,工业电机作为核心动力设备,其驱动电源的性能直接关系到整个系统的稳定性和可靠性。其中,反电动势抑制与过流保护是驱动电源设计中至关重要的两个环节,集成化方案的设计成为提升电机驱动性能的关键。

关键字: 工业电机 驱动电源

LED 驱动电源作为 LED 照明系统的 “心脏”,其稳定性直接决定了整个照明设备的使用寿命。然而,在实际应用中,LED 驱动电源易损坏的问题却十分常见,不仅增加了维护成本,还影响了用户体验。要解决这一问题,需从设计、生...

关键字: 驱动电源 照明系统 散热

根据LED驱动电源的公式,电感内电流波动大小和电感值成反比,输出纹波和输出电容值成反比。所以加大电感值和输出电容值可以减小纹波。

关键字: LED 设计 驱动电源

电动汽车(EV)作为新能源汽车的重要代表,正逐渐成为全球汽车产业的重要发展方向。电动汽车的核心技术之一是电机驱动控制系统,而绝缘栅双极型晶体管(IGBT)作为电机驱动系统中的关键元件,其性能直接影响到电动汽车的动力性能和...

关键字: 电动汽车 新能源 驱动电源

在现代城市建设中,街道及停车场照明作为基础设施的重要组成部分,其质量和效率直接关系到城市的公共安全、居民生活质量和能源利用效率。随着科技的进步,高亮度白光发光二极管(LED)因其独特的优势逐渐取代传统光源,成为大功率区域...

关键字: 发光二极管 驱动电源 LED

LED通用照明设计工程师会遇到许多挑战,如功率密度、功率因数校正(PFC)、空间受限和可靠性等。

关键字: LED 驱动电源 功率因数校正

在LED照明技术日益普及的今天,LED驱动电源的电磁干扰(EMI)问题成为了一个不可忽视的挑战。电磁干扰不仅会影响LED灯具的正常工作,还可能对周围电子设备造成不利影响,甚至引发系统故障。因此,采取有效的硬件措施来解决L...

关键字: LED照明技术 电磁干扰 驱动电源

开关电源具有效率高的特性,而且开关电源的变压器体积比串联稳压型电源的要小得多,电源电路比较整洁,整机重量也有所下降,所以,现在的LED驱动电源

关键字: LED 驱动电源 开关电源

LED驱动电源是把电源供应转换为特定的电压电流以驱动LED发光的电压转换器,通常情况下:LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: LED 隧道灯 驱动电源
关闭