測量太陽能電池板、UPS和其他日常使用電池的電壓會花費大量時間。如果,給這些設備添加一個WiFi模塊,是不是讀取電壓更方便了?為此,英銳恩單片機開發工程師分享了一個來自國外的基于NodeMCU開發的帶WiFi模塊的電池電壓監控系統。
使用該系統可以連接到我們本地家庭WiFi的WiFi設備,可以從控制器讀取電壓,并向最終用戶更新當前電池電量。為此,在本方案中使用nodemcu WiFi模塊。它不僅可以用作控制器,還可以將其自身作為服務器或客戶端連接到WiFi網絡。電池監控電路是傳統的分壓器電路。我要測量12伏電池??梢孕薷碾娐芬詼y量24伏電池,甚至更多48伏并聯電池組。
Nodemcu是一個很小的設備,它的工作電壓為3.3伏。由于其工作電壓為3.3伏,因此其引腳只能提供和吸收3.3伏的電壓。大于5伏的電壓可能會燒斷引腳或炸掉節點MCU。在我們的情況下,我們要測量12伏電池,nodemcu adc(模擬至數字通道)只能接受3.3伏。我們需要在這里聰明地比賽。我們要做的是將兩個電阻器之間的電壓分壓,并僅測量一個電阻器上的電壓,剩余的電阻器電壓將通過數學計算。典型的分壓器電路和公式如下:
接下來,我們來計算一下Rtop和Rbottom的值。在這里,我們需要認真考慮一些重要的因素。
(1)低歐姆電阻會吸收大量電流,并且電線可能會立即被加熱。因此,電線可能在幾秒鐘內熔化。因此,對于較大的安培小時電池,請始終使用足夠數量的電阻。這里選擇了一個電阻Rbottom為10k歐姆。
(2)在充電過程中,電池電壓可能會增加到18伏。例如,在充滿陽光的情況下,150瓦的太陽能電池板在6安培時輸出17伏特,輸出電壓甚至可以達到18伏特以上。太陽能控制器還輸出電壓大約等于15伏,可為電池充電。
公式計算
我將測量Rbottom兩端的電壓,并隨機決定其值為10k歐姆。我們知道Vout可以高達3.3伏,因為nodemcu可以工作并且在其I/O引腳接受最大3.3伏。電池充電時Vin為18伏,現在我們可以計算Rtop的值。
現在,如果電池側有18伏電壓,則將在電阻器之間分配電壓,在10k電阻器上將下降3.3伏,在44.54k電阻器上將剩下14.7伏。44.54 k ohm電阻在市??場上不可用,我將使用高于該額定值的電阻,可以在任何電子產品商店中找到47 k ohm電阻。如果電池沒有充電,并說提供12伏電壓,電阻兩端的壓降將是多少?
從以上討論可以明顯看出,Rbottom兩端的電壓現在不會超過3.3伏。我希望讀者對計算有意義?,F在的問題是如何通過nodemcu將3.33伏轉換為12伏,或者如何從3.33伏預測電池側的電壓為12伏。這里涉及更多的數學。由于電阻值是固定的,因此我們可以計算電阻兩端相對于電源的電壓比,并將其用于代碼中表示電源的實際電壓。比率的計算方法如下:
上面給出了兩種情況,當電源為18伏時和電源為12伏時,兩種情況的比率均為恒定值。該比率在代碼中用于預測實際的電源/電池電壓。比率乘以Rbottom處的實際電壓值。
方案電路圖如下。我正在使用nodemcu的ADC0通道來測量電池電壓。電池和nodemcu電源都必須接地,以完成電路。這是一個最常見的錯誤,將測量兩個接地未一起接地的電壓。如果未將nodemcu接地與電池接地綁在一起,則adc0引腳將變為浮動引腳,并開始讀取浮動值。
在完成電路之后,是時候繼續編寫代碼了。代碼是用arduino IDE編寫的。我在代碼中使用了ESP8266WiFi.h庫,因此請首先確保將此庫安裝在arduino庫文件夾中。如果不存在,請從github下載并首先安裝。然后輸入要與您的nodemcu連接的WiFi網絡的SSID和密碼。最有可能的是您的家庭WiFi。因此,只需輸入ssid和密碼?,F在,將代碼上傳到nodemcu中。上傳之前,請確保您從arduino開發板上選擇了正確的開發板。如果nodemcu沒有出現在您的面板下拉菜單中,則從面板管理器導入其鏈接并安裝其必要文件。
在瀏覽器中點擊分配的IP后,您將看到顯示電池狀態和按鈕的頁面。隨時按此按鈕可獲得更新的溫度。
注意:Nodemcu和要查看其電壓的客戶端移動設備或臺式機必須連接到同一WiFi。如果您的服務器節點計算機和客戶端移動設備或計算機,便攜式計算機等連接到不同的網絡,則在點擊IP后無法查看任何內容。
源代碼附件:
以上就是英銳恩單片機開發工程師們分享的基于NodeMCU開發的帶WiFi模塊的電池電壓監控系統。