2te DC-Leistungsmessung mit Shelly Puls UNI

  • Einleitung
    Auch bei mir bestand der Bedarf nach einer Messmöglichkeit einer DC-Insel-Solaranlage.
    Konkret für eine InselPVThermie-Anlage, welche in meinem Mietshaus den Warmwasserspeicher aufheizen soll.
    Als Vermieter bin ich gesetzlich gezwungen, alle Primärenergie, die dem Haus zugeführt wird, zu erfassen und dem Abrechnungsunternehmen, zur Erstellung der jährlichen Heizkostenabrechnung, zu Verfügung zu stellen.
    Ein geeichtes Messsystem ist hier nicht notwendig, da die Solarenergie den Mietern kostenlos zur Verfügung gestellt wird.
    Die Anforderungen an das Messsystem sind sehr wohl: hohe Linearität und einen Gesamt-Messfehler von unter 5%.

    Shelly Öko-System
    Meine komplettes Heizungssystem wird mit Shellys überwacht.
    Die zeitliche Auflösung beträgt 1 Minute. D.h., jede Minute übertragen die Shellys ihre Daten per http-Request an ein Hosting-Paket im Internet.
    Auch das DC-Messsystem muss diesen Anforderungen genügen.

    Shelly Plus UNI
    Ich hatte mich ja schon in der Vergangenheit mit dem Plus UNI beschäftigt und heraus gefunden, dass der Analog-Eingang alles andere als genau ist.

    Der Inhalt kann nicht angezeigt werden, da Sie keine Berechtigung haben, diesen Inhalt zu sehen.

    D.h., den Bereich unterhalb von 3,0V kann man getrost vergessen.
    Mir ist auch echt schleierhaft, wie man bei Allterco einen 12-Bit Analogeingang derart verbocken kann.

    Messkonzept
    Der Plus UNI hat ja nur einen Eingang zum Messen einer analogen Spannung (in Volt oder Analog in Prozent).
    Was der gute Shelly aber hat, sind zwei Digital Out-Kanäle!
    Die kann man gut nutzen, um einen analogen Multiplexer zu steuern.

    Wie oben schon geschrieben, benötige ich jede Minute einen neuen Wert.
    Somit habe ich eine Minute lang Zeit, den Strom und die Spannung zu messen.

    BTW: ich messe und übertrage mit dem Plus UNI (und auch mit den anderen Shellys) immer nur die RAW-Daten. Auswertungen, Multiplikationen, etc. erledige ich auf dem Server, weil ich da mehr Performance habe.

    Also schreibe ich mir ein mJS-Script mit einer State-Machine, die zuerst die Spannung (in %) und dann den Strom (in %) misst.
    Danach alle Daten zu einem Paket schnürt und dann versendet.

    von der Theorie zur Praxis
    Tja, wenn der Shelly ordentlich messen würde, wäre es damit getan gewesen - tut er aber nicht.
    Aber es gibt ja noch ein paar technische Kniffe und die Mathematik.

    Dann legen wir doch einfach den Nullpunkt (Offset) der Spannung/Strom höher. Konkret ausgewählt bei 3,8V.
    Jetzt besteht aber die Gefahr, dass ich auf dem Server immer diese Konstante von den übertragenen Werte abziehe, obwohl die Spannung in der DC-Messbox wegen Temperatur oder Alterung schon längst bei, sagen wir 3,7Volt oder 3,9Volt ist.
    Dann bauen wir halt einen 4-fach Multiplexer ein (CD4066) und benötigen dazu zur Selektion der Analog-Schalter noch etwas Digitaltechnik (CD4093).

    Somit ändert sich der zeitliche Ablauf in der State-Machine wie folgt:

    Zuerst den Schalter auf die Offset-Spannung stellen, warten, Spannung messen, warten, Strom messen, Paket bauen und versenden, warten

    Schaltplan
    Im Schaltplan kann man zentral den Analog-Multiplexer erkennen.
    Unten die Referenzspannungserzeugung für den Offset.


    Der Inhalt kann nicht angezeigt werden, da Sie keine Berechtigung haben, diesen Inhalt zu sehen.


    Auf der rechten Seite gibt es oben die Spannungsmessung über einen Spannungsteiler direkt am Anschluss des Generator-Anschluss-Kasten (GAK).
    Ich muss hier noch erwähnen, dass die Spannung dort lebensgefährlich hoch ist, dass elektrotechnische Laien daran nichts zu suchen haben.
    Also Finger weg!
    Die Strommessung erfolgt potenzialfrei über einen LEM LA-55P.

    Aufbau Elektronik
    Im ersten Schritt habe ich zur Zeit dort eine Lochrasterplatine verwendet, die demnächst noch gegen eine ordentliche Leiterplatte ersetzt wird.


    Der Inhalt kann nicht angezeigt werden, da Sie keine Berechtigung haben, diesen Inhalt zu sehen.


    Der Inhalt kann nicht angezeigt werden, da Sie keine Berechtigung haben, diesen Inhalt zu sehen.


    Auf dem obigen Foto kann man das vollständige DC-Messsystem sehen.
    Links ist ein 30mA RCD, daneben ein B6 LSS, sowie 2 Meanwell HDR-15-15 Netzteile.
    Aus den beiden 15V Netzteilen erzeuge ich auf der Leiterplatte eine +/-15V Spannungsversorgung.

    Server-Software / Datenbank
    Wenn der http-Request auf dem Server ankommt, werden die %-Werte des Plus UNI in echte Spannung / Strom mit dem gemessenen Offset umgerechnet.
    Das ist einfache Mathematik in den Grundrechenarten.
    In einem weiteren Schritt werden dann die korrigierten Werte miteinander zur Leistung multipliziert.
    Alle Daten, also die %-Daten, Spannung/Strom/Offset und berechnete Spannung/Strom/Leistung, lege ich dann mit dem Unix-Zeitstempel in einer Datenbank-Tabelle ab.

    Kalibrierung
    Als die InselPVThermie-Anlage in Gänze stand und Strom produzierte, habe ich die Kalibrierung vorgenommen.
    Dazu habe ich mit meinen Fluke Messsystemen an der DC-Messbox den realen Strom und die reale Spannung gemessen und protokolliert.
    Gleichzeitig dazu dann in meiner APP den im Server-Script berechneten Strom, Spannung und Leistung ebenfalls protokolliert und mit den realen Werten verglichen.
    Die Strommessung zeigte lediglich einen Fehler von etwa 1-1,5% auf.
    Bei der Spannungsmessung hatte ich etwa konstant 10V zu viel berechnet.
    Diese 10V habe ich Serverseitig wieder rausgerechnet, so dass auch die Spannungsmessung meiner Anforderung genügt.

    Fazit
    Für technisch Visierte, die auch mit hohen Spannungen arbeiten dürfen, ist das eine feine Lösung zur DC-Leistungsmessung.
    Sie passt wunderbar in mein Shelly-Öko-System und ich kann die Messdaten nach belieben auswerten.

    Man kann natürlich die Offset-Korrekturrechnung sowie die Multiplikation zur Leistung auch im mJS-Script auf dem Plus UNI machen.

  • Mir ist auch echt schleierhaft, wie man bei Allterco einen 12-Bit Analogeingang derart verbocken kann.

    Wie so häufig, schlägt man den Esel und trifft den Sack…

    Denn die Entwickler von Shelly Europe Ltd. konnten da wenig ausrichten: Der ADC ist integraler Bestandteil des ESP32. Die Spezifikation des ADC liest sich so:

    Der Inhalt kann nicht angezeigt werden, da Sie keine Berechtigung haben, diesen Inhalt zu sehen.

    (Quelle: Espressif Systems, Datenblatt ESP32 Series V3.7)

    Der kritische Punkt liegt wohl in der Bemerkung „WiFi & BT off“…

    An der Eingangsbeschaltung des UNI plus kann es auch nicht liegen, denn die ist denkbar simpel:

    Der Inhalt kann nicht angezeigt werden, da Sie keine Berechtigung haben, diesen Inhalt zu sehen.

    Es kribbelt mir in den Fingern, eine eigene Meßreihe anzulegen. Allerdings steht mir keine kalibrierte Spannungsquelle zur Verfügung, mit der ich ein Präzisionsmeßgerät mit 6.000 counts (Fluke 179) überprüfen könnte. Muß leider mit meinem Prema 5017 auskommen…

    „Habt Geduld. Alle Dinge sind schwierig, bevor sie einfach werden!“ (aus Frankreich)

    „Nothing in life is to be feared, it is only to be understood.“ (Marie Curie, 1867-1934)

    „Comment is free, but facts are sacred“ (C.P. Scott, britischer Verleger)

  • Also gegenüber den Addon misst der UNI und Plus UNI recht ordendlich..

    D.h., den Bereich unterhalb von 3,0V kann man getrost vergessen.
    Mir ist auch echt schleierhaft, wie man bei Allterco einen 12-Bit

    In welcher Region bewegt man sich jetzt?
    Kalibrierte Messgeräte für eine Verrechnung?
    Der Aufbau sieht gut aus und ich habe mir das Schaltbild nicht angesehen, warum?
    Ich nutze an 12V DC nen Arduino mit INA219 Modulen und übertrage die an nen UNI.

    Als Vermieter bin ich gesetzlich gezwungen, alle Primärenergie, die dem Haus zugeführt wird

    Wo finde ich die relevanten Daten jetzt :/

    VG Rolf

    (Wer einen Tippfehler findet, darf den gerne behalten :saint:)

  • thgoebel

    Die +/- 12 Bit INL des Chip ESP32 erklären nicht die große Abweichung im unteren Bereich.

    Die Skizze mit dem Spannungsteiler hast du selbst aufgenommen?

    Dann könnte es an einem Input Offset Current (aus dem ESP) kommen, der über die Widerstände 100k/47k einen Spannungsabfall generieren.

    Habe mir mal mit meiner These die obige Tabelle angesehen: wenn der Input Offset Current leicht positiv ist (Strom fließt aus dem Pin heraus), dann scheint es kausal zu sein.

    Aber egal wie, ändern können wir das nicht. Aber wir können es bei Bedarf umgehen, wie ich gezeigt habe.

  • Dieses Thema enthält 23 weitere Beiträge, die nur für registrierte Benutzer sichtbar sind.