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

WIFI Battery Monitor System - ESP8266

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:

  1. 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

  1. WIFI Battery Monitor System - ESP8266



    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:
    WIFI Battery Monitor System - ESP8266

    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



  1. 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

  1. 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 - Spannungs

     Funktion 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 - Aktuelle

     Funktion 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 Berechnung

     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
    


    5. Anzahl Format für die ordnungsgemäße Funktion LCD Druck

     nr_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 / Energieerzeugung

    Fü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-Programm

     require ('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

  1. WIFI Battery Monitor System - ESP8266

    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

    WIFI Battery Monitor System - ESP8266


    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

  1. WIFI Battery Monitor System - ESP8266


     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

  1. WIFI Battery Monitor System - ESP8266


     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

  1. WIFI Battery Monitor System - ESP8266

    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



  1. 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 :)