基于物联网的智能电表
扫描二维码
随时随地手机看文章
大家都会同意,我们的家用电器耗电量高,令人十分困扰,我们每个月都在尽力减少电费。不仅如此,为了了解和监测电力使用情况,我们不断检查安装在家里或办公室的电表。如果我们可以通过智能手机随时随地监控电费会怎么样?是的,在物联网的帮助下,我们可以使用智能电表轻松监控功耗。我们之前做过其他基于物联网的远程监控项目,如温度和湿度监测,电池监测,食品监测,空气质量监测等。
很长一段时间以来,我一直在试图找到一种简单而准确的方法来测量和监控任何地方的电力使用情况,无论是在家里、办公室还是在旅途中。经过一番研究,我决定通过使用带有NodeMCU的电流传感器构建一个简单的电流值,并将测量的电流值发送到物联网云平台。这可以在Adafruit MQTT物联网平台的帮助下完成,该平台是免费的,不需要订阅。要制作这个电能表,你只需要很少的组件和互联网连接。
所需的材料
•ACS712电流传感器
•NODE MCU ESP8266模块
•移动充电器和USB连接线(用于供电和程序上传&用于串行监视器读取)
•灯座
•稳定负载-这里是100瓦的灯泡
•一些电线
电流传感的不同方法
测量导线电流的方法有很多种,本文讨论了常用的电流传感方法。电流传感有两种方式,即直接传感法和间接传感法。直接感应法使用欧姆定律来测量电流流过导线时发生的电压降,但ACS712使用间接电流感应法(通过应用法拉第定律或安培定律计算磁场来测量),因此载流导线上不会有外部负载,也不需要直接接触。它类似于钳形仪表的工作原理。我们将在本文后面讨论更多关于ACS712工作的内容。
另一种流行的电流传感方法是使用电流互感器(CT)。它也是一种间接电流传感方法。它的工作原理与载流导线穿过CT变压器的中心孔相同,CT变压器由一个线圈组成,该线圈将接收载流导线产生的磁通量。通过测量线圈中感应的电压,我们可以计算出通过导线的电流。一个典型的电流互感器如下所示。
ACS712电流传感器
ACS712基于1879年埃德温·霍尔博士发现的霍尔效应理论。根据这一原理,当载流导体置于磁场中时,会在其边缘产生垂直于电流和磁场方向的电压。这个电压被称为霍尔电压,它的典型值是几毫伏。因此,通过测量霍尔电压,我们将能够计算流过传感器的电流量。典型的ACS712电流传感器如下图所示。
当电子流过导线或路径时,会在其周围产生磁场。该磁场由霍尔效应IC感测并产生电压输出,该输出可直接馈送到微控制器或ESP板。该传感器位于从相位输入输出的粗铜导电路径上的IC表面。
ACS712传感器有4个变体(185mV=5A模块,100mV=10A和66mV,适用于20A和30A模块),每个变体的额定电流值不同。您可以根据自己的要求选择其中任何一个,但为了更好地校准,每安培的毫伏值应正确分配给编码。请注意,随着传感器电流额定值的增加,精度会降低。
NodeMCU电能表电路图
基于物联网的电能表的完整电路图如下所示。虽然它非常简单,但您应该遵循图形表示以更好地理解并确保连接是正确的。请注意,使用主电源需要练习,因此,如果您不确定如何做,请不要构建此电路。
我们将NodeMCU与ACS712电流传感器一起使用,电流传感器将测量交流负载消耗的电流,NodeMCU将测量该电流,计算功率(假设电压恒定)并将功率值发送到Adafruit IO等云平台。为了您的方便,下面还提供了一个直观的信息图形电路图。
正如您所看到的,NodeMCU将通过USB端口使用5V移动充电器供电,交流负载将通过我们的ACS712电流传感器连接到220V交流电源。
该传感器在VCC上的最大输入电压为5V,但在较低电压下也能正常工作。请注意,ASC712输出偏置电压依赖于其工作电压(一般为工作电压的一半)。由于我们从ESP 3V输出引脚上电模块,当没有电流流过时,ACS712模块输出偏置电压为1.5伏(1500 mv)。ESP内部有一个板载分压器电路,所以我们从ACS712输出直接输入到A0输入引脚。
按照上面的电路进行连接。我直接焊接了NodeMCU和ACS712传感器之间的电线,但您也可以使用面包板和连接线。准备好后,我的设置如下所示。
Adafruit IO能源监测
当一切完成后,是时候在“Adafruit IO”物联网平台上开设账户,并将我们的电路与Adafruit服务器连接起来,实时监控电能表读数。请按照以下步骤逐步操作:
对于Adafruit IO设置,您需要做的第一件事是注册Adafruit IO。
2. 在此之后,将弹出一个窗口,您需要在其中填写详细信息。
在注册窗口,填写您的详细信息,如您的姓名,邮件id,用户名等。然后点击保存设置,你的账户就创建好了。要获得AIO密钥,请单击“查看AIO密钥”。
3. 一个窗口将弹出与您的Adafruit IO AIO密钥。复制这个键,稍后在python代码中会用到它。
4. 现在,您需要创建一个提要。要创建提要,请单击“feed”。然后点击“Actions”,你会看到一些选项,点击“Create a New Feed”。
5. 在此之后,将打开一个新窗口,您需要输入:
名称-在名称选项中,为提要写一个简短的描述性名称。您可以使用字母、数字和空格。
描述-对数据的长格式描述。该字段不是必需的,但是您可以编写数据的描述。
6. 点击“创建”,您将被重定向到您的新提要。
7. 接下来,要添加一个新的Toggle Block,您需要创建一个仪表板。创建Dashboard和创建Feed是一样的。所以请遵循相同的步骤。现在要添加一个块,单击屏幕右上角的“加号”,然后单击第一个选项。
8. 现在,选择我们之前创建的提要,然后点击“下一步”。
9. 如果你想改变块的设置,或者保持原样,然后点击“创建块”。
NodeMCU物联网电能表程序
完整的物联网电能表代码可以在本文末尾找到,但我们需要下载一些代码库。你可以通过库管理器下载,也可以从下面的链接下载,并使用Arduino IDE上的“import library”选项添加。
•ESP8266WIFI
•Adafruit MQTT
•Adafruit MQTT客户机
首先,我们将包括ESP8266和Adafruit MQTT的所有库。
然后,我们定义您的wifi网络的SSID和PASSWORD。
这部分代码定义了“Adafruit服务器”,这是网站本身的链接,以及Adafruit服务器“端口”,您的帐户“用户名”和您的“AIO密钥”。
然后我们有一个可变的毫伏/安培灵敏度,必须在编码中提到,这对于ACS712传感器的所有变体都是不同的(5Amp模块185mV, 10A 100mV, 20 & 30安培模块66mv)。
在VOID设置下,我们刚刚连接到wifi。
在loop函数中,首先,我们连接MQTT并从传感器获取电压值。
在这个函数中,我们在1秒内取值,在这1秒内,我们将从传感器读取值,然后我们将计算最大值和最小值。所以,基本上在这1秒内我们要存储电压的最小值和电压的最大值结果是电压的最大值和最小值之间的差值乘以5再除以1024所有这些都是用来转换成电流的它与校准因子有关。
如果你看一下我为大家准备的手工图表,你可以看到有两条线,上面的线是我给的名字(Vp),表示电压的最大值,下面是(-Vp),表示电压的最小值。如果你取这两条线之间的差,你会得到(Vpp)电压峰值到峰值的值。
然后我们回到main函数。在环路下,您可以看到我们将使用上面解释的公式将峰值电压转换为有效值。注意,我们将测量电压除以2,得到正极或负极的值。
之后,我们将电压转换为电流,为此我们将Vrms值除以电流传感器的毫伏/安培值(我使用30安培模块,因此它是66毫安培)并乘以1000,以便我们将其转换为安培而不是毫安。
然后,我们将在Arduino IDE的串行监视器以及MQTT物联网平台上打印此当前值。
基于NodeMCU的物联网电能表的工作
通过这种方式,您可以构建基于物联网的电能表,可以从世界任何地方进行监控。建立连接并上传代码之后,您应该会在AdafruitIO控制台上看到电源读数。
我们在不同的负载条件下测试了它,比如100瓦的灯泡,200瓦的灯泡,500瓦的卤素灯等。以下是MQTT物联网平台上0到100瓦负载条件下的屏幕截图。
除了图形之外,MQTT上还打印了该值,并将其与串行监视器进行比较,如下所示。
本文编译自iotdesignpro