基于物聯(lián)網(wǎng)的智能電表
掃描二維碼
隨時(shí)隨地手機(jī)看文章
大家都會(huì)同意,我們的家用電器耗電量高,令人十分困擾,我們每個(gè)月都在盡力減少電費(fèi)。不僅如此,為了了解和監(jiān)測(cè)電力使用情況,我們不斷檢查安裝在家里或辦公室的電表。如果我們可以通過(guò)智能手機(jī)隨時(shí)隨地監(jiān)控電費(fèi)會(huì)怎么樣?是的,在物聯(lián)網(wǎng)的幫助下,我們可以使用智能電表輕松監(jiān)控功耗。我們之前做過(guò)其他基于物聯(lián)網(wǎng)的遠(yuǎn)程監(jiān)控項(xiàng)目,如溫度和濕度監(jiān)測(cè),電池監(jiān)測(cè),食品監(jiān)測(cè),空氣質(zhì)量監(jiān)測(cè)等。
很長(zhǎng)一段時(shí)間以來(lái),我一直在試圖找到一種簡(jiǎn)單而準(zhǔn)確的方法來(lái)測(cè)量和監(jiān)控任何地方的電力使用情況,無(wú)論是在家里、辦公室還是在旅途中。經(jīng)過(guò)一番研究,我決定通過(guò)使用帶有NodeMCU的電流傳感器構(gòu)建一個(gè)簡(jiǎn)單的電流值,并將測(cè)量的電流值發(fā)送到物聯(lián)網(wǎng)云平臺(tái)。這可以在Adafruit MQTT物聯(lián)網(wǎng)平臺(tái)的幫助下完成,該平臺(tái)是免費(fèi)的,不需要訂閱。要制作這個(gè)電能表,你只需要很少的組件和互聯(lián)網(wǎng)連接。
所需的材料
?ACS712電流傳感器
?NODE MCU ESP8266模塊
?移動(dòng)充電器和USB連接線(xiàn)(用于供電和程序上傳&用于串行監(jiān)視器讀取)
?燈座
?穩(wěn)定負(fù)載-這里是100瓦的燈泡
?一些電線(xiàn)
電流傳感的不同方法
測(cè)量導(dǎo)線(xiàn)電流的方法有很多種,本文討論了常用的電流傳感方法。電流傳感有兩種方式,即直接傳感法和間接傳感法。直接感應(yīng)法使用歐姆定律來(lái)測(cè)量電流流過(guò)導(dǎo)線(xiàn)時(shí)發(fā)生的電壓降,但ACS712使用間接電流感應(yīng)法(通過(guò)應(yīng)用法拉第定律或安培定律計(jì)算磁場(chǎng)來(lái)測(cè)量),因此載流導(dǎo)線(xiàn)上不會(huì)有外部負(fù)載,也不需要直接接觸。它類(lèi)似于鉗形儀表的工作原理。我們將在本文后面討論更多關(guān)于ACS712工作的內(nèi)容。
另一種流行的電流傳感方法是使用電流互感器(CT)。它也是一種間接電流傳感方法。它的工作原理與載流導(dǎo)線(xiàn)穿過(guò)CT變壓器的中心孔相同,CT變壓器由一個(gè)線(xiàn)圈組成,該線(xiàn)圈將接收載流導(dǎo)線(xiàn)產(chǎn)生的磁通量。通過(guò)測(cè)量線(xiàn)圈中感應(yīng)的電壓,我們可以計(jì)算出通過(guò)導(dǎo)線(xiàn)的電流。一個(gè)典型的電流互感器如下所示。
ACS712電流傳感器
ACS712基于1879年埃德溫·霍爾博士發(fā)現(xiàn)的霍爾效應(yīng)理論。根據(jù)這一原理,當(dāng)載流導(dǎo)體置于磁場(chǎng)中時(shí),會(huì)在其邊緣產(chǎn)生垂直于電流和磁場(chǎng)方向的電壓。這個(gè)電壓被稱(chēng)為霍爾電壓,它的典型值是幾毫伏。因此,通過(guò)測(cè)量霍爾電壓,我們將能夠計(jì)算流過(guò)傳感器的電流量。典型的ACS712電流傳感器如下圖所示。
當(dāng)電子流過(guò)導(dǎo)線(xiàn)或路徑時(shí),會(huì)在其周?chē)a(chǎn)生磁場(chǎng)。該磁場(chǎng)由霍爾效應(yīng)IC感測(cè)并產(chǎn)生電壓輸出,該輸出可直接饋送到微控制器或ESP板。該傳感器位于從相位輸入輸出的粗銅導(dǎo)電路徑上的IC表面。
ACS712傳感器有4個(gè)變體(185mV=5A模塊,100mV=10A和66mV,適用于20A和30A模塊),每個(gè)變體的額定電流值不同。您可以根據(jù)自己的要求選擇其中任何一個(gè),但為了更好地校準(zhǔn),每安培的毫伏值應(yīng)正確分配給編碼。請(qǐng)注意,隨著傳感器電流額定值的增加,精度會(huì)降低。
NodeMCU電能表電路圖
基于物聯(lián)網(wǎng)的電能表的完整電路圖如下所示。雖然它非常簡(jiǎn)單,但您應(yīng)該遵循圖形表示以更好地理解并確保連接是正確的。請(qǐng)注意,使用主電源需要練習(xí),因此,如果您不確定如何做,請(qǐng)不要構(gòu)建此電路。
我們將NodeMCU與ACS712電流傳感器一起使用,電流傳感器將測(cè)量交流負(fù)載消耗的電流,NodeMCU將測(cè)量該電流,計(jì)算功率(假設(shè)電壓恒定)并將功率值發(fā)送到Adafruit IO等云平臺(tái)。為了您的方便,下面還提供了一個(gè)直觀的信息圖形電路圖。
正如您所看到的,NodeMCU將通過(guò)USB端口使用5V移動(dòng)充電器供電,交流負(fù)載將通過(guò)我們的ACS712電流傳感器連接到220V交流電源。
該傳感器在VCC上的最大輸入電壓為5V,但在較低電壓下也能正常工作。請(qǐng)注意,ASC712輸出偏置電壓依賴(lài)于其工作電壓(一般為工作電壓的一半)。由于我們從ESP 3V輸出引腳上電模塊,當(dāng)沒(méi)有電流流過(guò)時(shí),ACS712模塊輸出偏置電壓為1.5伏(1500 mv)。ESP內(nèi)部有一個(gè)板載分壓器電路,所以我們從ACS712輸出直接輸入到A0輸入引腳。
按照上面的電路進(jìn)行連接。我直接焊接了NodeMCU和ACS712傳感器之間的電線(xiàn),但您也可以使用面包板和連接線(xiàn)。準(zhǔn)備好后,我的設(shè)置如下所示。
Adafruit IO能源監(jiān)測(cè)
當(dāng)一切完成后,是時(shí)候在“Adafruit IO”物聯(lián)網(wǎng)平臺(tái)上開(kāi)設(shè)賬戶(hù),并將我們的電路與Adafruit服務(wù)器連接起來(lái),實(shí)時(shí)監(jiān)控電能表讀數(shù)。請(qǐng)按照以下步驟逐步操作:
對(duì)于Adafruit IO設(shè)置,您需要做的第一件事是注冊(cè)Adafruit IO。
2. 在此之后,將彈出一個(gè)窗口,您需要在其中填寫(xiě)詳細(xì)信息。
在注冊(cè)窗口,填寫(xiě)您的詳細(xì)信息,如您的姓名,郵件id,用戶(hù)名等。然后點(diǎn)擊保存設(shè)置,你的賬戶(hù)就創(chuàng)建好了。要獲得AIO密鑰,請(qǐng)單擊“查看AIO密鑰”。
3. 一個(gè)窗口將彈出與您的Adafruit IO AIO密鑰。復(fù)制這個(gè)鍵,稍后在python代碼中會(huì)用到它。
4. 現(xiàn)在,您需要?jiǎng)?chuàng)建一個(gè)提要。要?jiǎng)?chuàng)建提要,請(qǐng)單擊“feed”。然后點(diǎn)擊“Actions”,你會(huì)看到一些選項(xiàng),點(diǎn)擊“Create a New Feed”。
5. 在此之后,將打開(kāi)一個(gè)新窗口,您需要輸入:
名稱(chēng)-在名稱(chēng)選項(xiàng)中,為提要寫(xiě)一個(gè)簡(jiǎn)短的描述性名稱(chēng)。您可以使用字母、數(shù)字和空格。
描述-對(duì)數(shù)據(jù)的長(zhǎng)格式描述。該字段不是必需的,但是您可以編寫(xiě)數(shù)據(jù)的描述。
6. 點(diǎn)擊“創(chuàng)建”,您將被重定向到您的新提要。
7. 接下來(lái),要添加一個(gè)新的Toggle Block,您需要?jiǎng)?chuàng)建一個(gè)儀表板。創(chuàng)建Dashboard和創(chuàng)建Feed是一樣的。所以請(qǐng)遵循相同的步驟。現(xiàn)在要添加一個(gè)塊,單擊屏幕右上角的“加號(hào)”,然后單擊第一個(gè)選項(xiàng)。
8. 現(xiàn)在,選擇我們之前創(chuàng)建的提要,然后點(diǎn)擊“下一步”。
9. 如果你想改變塊的設(shè)置,或者保持原樣,然后點(diǎn)擊“創(chuàng)建塊”。
NodeMCU物聯(lián)網(wǎng)電能表程序
完整的物聯(lián)網(wǎng)電能表代碼可以在本文末尾找到,但我們需要下載一些代碼庫(kù)。你可以通過(guò)庫(kù)管理器下載,也可以從下面的鏈接下載,并使用Arduino IDE上的“import library”選項(xiàng)添加。
?ESP8266WIFI
?Adafruit MQTT
?Adafruit MQTT客戶(hù)機(jī)
首先,我們將包括ESP8266和Adafruit MQTT的所有庫(kù)。
然后,我們定義您的wifi網(wǎng)絡(luò)的SSID和PASSWORD。
這部分代碼定義了“Adafruit服務(wù)器”,這是網(wǎng)站本身的鏈接,以及Adafruit服務(wù)器“端口”,您的帳戶(hù)“用戶(hù)名”和您的“AIO密鑰”。
然后我們有一個(gè)可變的毫伏/安培靈敏度,必須在編碼中提到,這對(duì)于ACS712傳感器的所有變體都是不同的(5Amp模塊185mV, 10A 100mV, 20 & 30安培模塊66mv)。
在VOID設(shè)置下,我們剛剛連接到wifi。
在loop函數(shù)中,首先,我們連接MQTT并從傳感器獲取電壓值。
在這個(gè)函數(shù)中,我們?cè)?秒內(nèi)取值,在這1秒內(nèi),我們將從傳感器讀取值,然后我們將計(jì)算最大值和最小值。所以,基本上在這1秒內(nèi)我們要存儲(chǔ)電壓的最小值和電壓的最大值結(jié)果是電壓的最大值和最小值之間的差值乘以5再除以1024所有這些都是用來(lái)轉(zhuǎn)換成電流的它與校準(zhǔn)因子有關(guān)。
如果你看一下我為大家準(zhǔn)備的手工圖表,你可以看到有兩條線(xiàn),上面的線(xiàn)是我給的名字(Vp),表示電壓的最大值,下面是(-Vp),表示電壓的最小值。如果你取這兩條線(xiàn)之間的差,你會(huì)得到(Vpp)電壓峰值到峰值的值。
然后我們回到main函數(shù)。在環(huán)路下,您可以看到我們將使用上面解釋的公式將峰值電壓轉(zhuǎn)換為有效值。注意,我們將測(cè)量電壓除以2,得到正極或負(fù)極的值。
之后,我們將電壓轉(zhuǎn)換為電流,為此我們將Vrms值除以電流傳感器的毫伏/安培值(我使用30安培模塊,因此它是66毫安培)并乘以1000,以便我們將其轉(zhuǎn)換為安培而不是毫安。
然后,我們將在Arduino IDE的串行監(jiān)視器以及MQTT物聯(lián)網(wǎng)平臺(tái)上打印此當(dāng)前值。
基于NodeMCU的物聯(lián)網(wǎng)電能表的工作
通過(guò)這種方式,您可以構(gòu)建基于物聯(lián)網(wǎng)的電能表,可以從世界任何地方進(jìn)行監(jiān)控。建立連接并上傳代碼之后,您應(yīng)該會(huì)在AdafruitIO控制臺(tái)上看到電源讀數(shù)。
我們?cè)诓煌呢?fù)載條件下測(cè)試了它,比如100瓦的燈泡,200瓦的燈泡,500瓦的鹵素?zé)舻?。以下是MQTT物聯(lián)網(wǎng)平臺(tái)上0到100瓦負(fù)載條件下的屏幕截圖。
除了圖形之外,MQTT上還打印了該值,并將其與串行監(jiān)視器進(jìn)行比較,如下所示。
本文編譯自iotdesignpro