WIFI Battery Monitor System - ESP8266
9 Schritt:Schritt 1: Was wir brauchen: Schritt 2: Schematische & Schaltung Schritt 3: Wie man Batterieparameter zu messen Schritt 4: Software-Implementierung Schritt 5: Erste RUN Schritt 6: BMS Web Server Interface Schritt 7: Thingspeak.com Daten-Upload Schritt 8: Web Server - Erste RUN Schritt 9: FAZIT
Eines der wichtigsten Probleme in batteriebetriebenen Projekte ist es, wählen Sie / verwenden, die richtige Batteriegröße / Model / Typ. Als Markt nun mit viel Qualitätsbatterien niedrig behaupten tausende mAh überflutet ( Ultra Fälschungen Geschichten ist nur ein Beispiel ) der einzige Weg, um die richtige überprüfen sie ist, eine Reihe von Tests durchgeführt.
Eine einfache Grund Tester, die in der Lage sein zu überwachen über die gesamte Lebensdauer der Batterie zumindest einige Parameter wie Spannung, Strom, Stromverbrauch und die gespeicherte Energie zwischen den Ladevorgängen können Sie wertvolle Informationen über die Parameter und die Gesundheit der Batterie geben. Und natürlich auch Sie können sehen, wie sich die Zahlen auf der Suche gegen die Ansprüche Datenblatt :).
Schritt 1: Was wir brauchen:
- CBDBv2 Evo Verwaltungsrat (oder jede andere ESP8266 Foren können Sie gerne, aber die Spannungs- / Strommessmöglichkeiten bietet) INA21x - Strom-Shunt-Monitor USB-Adapter (schauen Sie hier für weitere Informationen über die USB Adapte r) Li-Ionen-Akku-Modul 2 x 10 Ω / 10 W Widerstände Anschlussdrähte - verschiedene Farben
Schritt 2: Schematische & Schaltung
-
Da die CBDBv2 Evo DevBoard bereits Spannungs- und Strommessungen Fähigkeiten an Bord, ist die einzige Sache, dass wir tun müssen, um die Batterie-Modul, das wir in den Vorstand messen wollen verbinden:
VERKABELUNG:
GREEN - V + BLUE - GND RED - SH_IN + WHITE - SH_IN-Für diese diejenigen unter Ihnen, die einen anderen Foren benutzen wollen oder wollen einfach nur, um diese Funktionen zu einer ESP8266 Module hinzuzufügen, müssen Sie nur:
für Spannung - fügen und Größe nach Ihren Bedürfnissen der Spannungsteiler, wie in Einzelheiten im vorigen Artikel über erklärt ESP8266 Interne ADC . für Strom - fügen Sie Ihre Lieblings Current Monitor aber vergessen Sie nicht über die VmaxIN für ESP8266 ADC von etwa 1 V!
Schritt 3: Wie man Batterieparameter zu messen
Bei der Messung des realen Batteriekapazität, was uns interessiert, ist die Menge an Energie in einer Batterie gespeichert, da es diese Energie, die wir brauchen, um unsere Geräte zu betreiben. Dieselbe Einheit verwendet, um unsere inländischen Stromverbrauch (wo 1,000Wh = 1 kWh = 1 Einheit Strom) zu messen - gespeicherte Energie in Wattstunden gemessen.
Um die gespeicherte Energie in einer Batterie zu messen, ein Leistungswiderstand als Last verwendet wird, und ein voll geladener Akku ist vollständig durchstoßen. Durch Messung der Spannung über diesem Widerstand in regelmäßigen Abständen während der Entladung ist es einfach, die gesamte Energie dissipiert und damit der gesamten Energie, die in der Batterie gespeichert worden calcuate.
Nach dem Ohmschen Gesetz (I = U / R) kann dann berechnen wir den Strom durch die Last fließt, da wir wissen, dass die Spannung über ihm. Momentanleistung durch Multiplizieren der gemessenen Spannung und dem berechneten Strom (P = U * I).
Indem Ablesungen für eine gewisse Zeit, bis die Batterie vollständig entladen ist, und Addieren der Energie in jedem Zeitintervall abgeleitet wird, können wir die Gesamtenergie von der Batterie aufgenommen und in dem Widerstand dissipiert und damit die Gesamtenergie, die gespeichert wurde, zu berechnen in der voll geladenen Batterie.
Schritt 4: Software-Implementierung
Für die Programmierung CBDBv2 Evo Verwaltungsrat und das Hochladen der Treiber und der Software werden wir auch weiterhin auf die Verwendung LuaUploader wie zuvor.
1 verwendet GPIO-Pins und Variablen definieren:ADC_SRC = 5 - GPIO14 - wählen Sie Spannungsteiler / Stromeingang sda = 2 - GPIO4 - SDA scl = 1 - GPIO5 - SCL gpio.mode (ADC_SRC, gpio.OUTPUT, gpio.PULLUP) gpio.write (ADC_SRC, 1) - Spannungsmessung - Spannungsteiler Quelle ausgewählt gpio.write (ADC_SRC, 0) - Strommessung - Aktuelle Shunt-Monitor-Ausgang gewählt voltdiv = 0,00412 - Spannungsmesswert Kalibrierung dival = 0,00096 - ADC Volt / div Wert - Kalibrieren !! resdiv = 4,31447 - Spannungsteilerverhältnis - Kalibrieren !! Divali = 0,9425 - Aktuelle Volt / div Verhältnis - Kalibrieren !! CPCT = 0 - Berechnet abgegebene Energie ADCI = 0 - ADC Lesungen - Curent ADCV = 0 - ADC Lesungen - Spannungs PWR = 0 - Berechnen Strom t = 0 - Zeit
2. READ ADC - SpannungsFunktion readADC_Voltage () ADCV = 0 ADVR = 0 ADVR = adc.read (0) print ("\ nADCV Schritt:" ..string.format ("% g", ADVR) .. "Stufen") ADCV = ADVR * dival * resdiv print ("Voltage:" ..string.format ("% g", ADCV) .. "V") zurück ADCV Ende
3. Lesen Sie ADC - AktuelleFunktion readADC_Current () ADCI = 0 ADCR = 0 ADCR = adc.read (0) ADCI = ADCR * Divali print ("ADCI Schritt:" ..string.format ("% g", ADCR) .. "Stufen") print ("Current:" ..string.format ("% g", ADCI) .. "mA") zurück ADCI Ende
4. Lesen Sie ADC-Prozess-Funktion und momentane Leistungsverbrauch Berechnungfunktionieren readUI () gpio.write (ADC_SRC, 1) --select Quelle ADCV = readADC_Voltage () tmr.delay (10000) gpio.write (ADC_SRC, 0) --select Quelle ADCI = readADC_Current () PWR = ADCI * ADCV print ("Power" ..string.format ("% g", PWR) .. "MW") Ende
5. Anzahl Format für die ordnungsgemäße Funktion LCD Drucknr_format = function (FNR, Einheit) if (fnr> 1000), dann FNRI = fnr / 1000 uniti = string.sub (Einheit 2) nrf = string.format ("% .3f% s", FNRI, uniti) sonst if (fnr <100), dann if (fnr <10), dann nrf = string.format ("% .1f% s", FNR, Einheit) sonst nrf = string.format ("% .1f% s", FNR, Einheit) Ende sonst nrf = string.format ("%. 1f% s", FNR, Einheit) Ende Ende zurück nrf Ende
6. LCD-Druck -> Spannung / Strom / Energie / EnergieerzeugungFür weitere Einzelheiten über den I2C-LCD-Treiber, bitte einen Blick an der ST7032i LCD-Treiber-Artikel
funktionieren readUI () gpio.write (ADC_SRC, 1) --select Quelle ADCV = readADC_Voltage () tmr.delay (10000) gpio.write (ADC_SRC, 0) --select Quelle ADCI = readADC_Current () PWR = ADCI * ADCV print ("Power" ..string.format ("% g", PWR) .. "MW") Ende
7. MAIN-Programmrequire ('st7032i') st7032i: init_i2c (sda, scl) st7032i: init_LCD () st7032i: lcd_clear () st7032i: lcd_print (1,1, string.format ("Battery Monitor")) st7032i: lcd_print (3,2, string.format ("Starten ...")) tmr.alarm (0, 10000, 1, function () readUI () LCDOUT () tmr.delay (1000) Ende)
Schritt 5: Erste RUN
-
Zum Testen einfach den Code sparen bei ESP als "blms.lua", starten Sie ESP und ausführen:
dofile ("blms.lua") - Starten Sie die Live-Battery Monitoring System
Wenn Sie die BLMS Software automatisch gestartet, wenn Sie Ihren CBDB Modul startet oder neu startet, dann sind Sie neet zu erstellen und fügen Sie einige Zeilen in der Datei 'init.lua' wollen:
dofile ("blms.lua") - Starten Sie die Live-Battery Monitoring System
Speichern Sie den Code auf ESP als "init.lua ', starten ESP.
Es sollte neu starten, und starten Sie das Programm automatisch.
Schritt 6: BMS Web Server Interface
-
srv = net.createServer (net.tcp) srv: hören (80, Funktion (conn) conn: on ("empfangen", Funktion (conn, Nutzlast) --print (Nutzlast) conn: send ("HTTP / 1.1 200 OK \ n \ n") conn: Senden ("<meta http-equiv = \" REFRESH \ "content = \" 5 \ ">") conn: send ("<html> <title> Battery Live-Monitor-System - ESP8266 </ title> <body>") conn: send ("<h1> Battery Live-Monitor-System - ESP8266 </ h1> <BR>") conn: send ("Voltage: <B> <font color = red size = 4>" ..string.format ("% g", ADCV) .. "V </ font> </ b> <br>") conn: send ("Strom: <B> <font color = blue size = 4>" ..string.format ("% g", ADCI) .. "mA </ font> </ b> <br>") conn: send ("Power: <B> <font color = red size = 4>" ..string.format ("% g", PWR) .. "mW </ font> </ b> <br>") conn: send ("Energie: <B> <font color = green size = 4>" ..string.format ("% g", CPCT) .. "Wh </ font> </ b> <br>") conn: send ("<br> Node.HEAP: <b>" .. node.heap () .. "</ b> <BR>") conn: Senden ("IP ADDR: <b>" .. wifi.sta.getip () .. "</ b> <BR>") conn: send ("TMR.NOW: <b>" .. tmr.now () .. "</ b> <BR <BR> <BR>") conn Sende ("</ html> </ body>") conn: on ("gesendet", Funktion (conn) conn: close () end) conn = nil Ende) Ende)
Schritt 7: Thingspeak.com Daten-Upload
-
funktionieren sendDataTh () print ("Senden von Daten an thingspeak.com") conn = net.createConnection (net.tcp, 0) conn: on ("empfangen", Funktion (conn, Nutzlast) print (Nutzlast) Ende) conn: Verbindung (80, '184.106.153.149') conn: send ("GET /update?key=YOURKEYHERE&field1="..adcV.."&field2="..adcI.."& field3 = ".. .. PWR" & field4 = ".. CPCT .." HTTP / 1.1 \ r \ n ") conn: send ("Host: api.thingspeak.com \ r \ n") conn: send ("Accept: * / * \ r \ n") conn: send ("User-Agent: Mozilla / 4.0 (compatible; esp8266 Lua; Windows NT 5.1) \ r \ n") conn: send ("\ r \ n") conn: on ("gesendet", Funktion (conn) print ("Closing connection") conn: close () Ende) conn: on ("Abschaltung", Funktion (conn) print ("Got Abschaltung ...") Ende) Ende
Schritt 8: Web Server - Erste RUN
-
Wenn Sie eine neue ESP-Modul haben oder ist das erste Mal, wenn Sie es auf eine neue WIFI Netzwerk, vergessen Sie nicht, um die WIFI-Setup zu tun:
- Einmalige ESP-Setup - wifi.setmode (wifi.STATION) wifi.sta.config ("YOUR_WIFI_SSID", "password") print (wifi.sta.getip ())
- Lesen Sie ADC Daten alle 10 Sekunden - Druckwerte auf lokale Web-Schnittstelle und senden Sie sie an thingspeak.com tmr.alarm (0, 10000, 1, function () readUI () sendDataTh () end)
Zum Testen einfach den Code sparen bei ESP als "blmsweb.lua", starten Sie ESP und ausführen:
dofile ("blmsweb.lua") - Starten Sie die Live-Battery Monitoring System print (wifi.sta.getip ()) --print Ihre BMS WebServer IP-Adresse
Öffnen Sie Ihre Lieblings-Web-Browser und geben Sie Ihr neues BLMS Web Server-IP-Adresse. Wenn alles ok, sollte es wie folgt aussehen:
Schritt 9: FAZIT
Nach den bisherigen 8 Schritte, die Sie mit einigen kleineren Optimierungen mit einem schönen und leicht am Ende, um Batterie-Monitor-System, das eine längere Nutzung in ganz Ihnen ESP8266 Batteriebetriebene Projekte und noch mehr haben können programmiert werden.
Für weitere Informationen über bitte einen Blick auch auf die ursprüngliche Batterieüberwachungssystem Artikel hier
Für alle neuen CBDBv2 Evo Bestellungen / Anfragen wenden Sie sich bitte wie gewohnt verwenden:
tech in esp8266-projects.com.Wenn Sie möchten, für eigene Experimente zu CBDBv2 EVO nackten PCB nur bestellen, können Sie es auch tun, direkt am Schmutzige PCBs, unseren bevorzugten PCB House:
http: //dirtypcbs.com/view.php share = 5876 & accesske ...
Vielen Dank für Ihre kontinuierliche Unterstützung meiner Projekte und freuen uns auf eure Kommentare zu :)