Spannungsanzeige (PCF8591)

By | April 15, 2021

Wird der Raspberry Pi über eine 12V Batterie mit Strom versorgt, so kann mit dem Modul PCF8591 die Spannung der Batterie gemessen werden. Das Modul kostet nur ca. 5 Euro. Dies hat den Vorteil, dass man weiß wie viel Spannung in der Batterie verbleibt. Außerdem kann man auch die Eingangsspannung des Solarpanels damit messen.

Der PCF8591 verwendet, wie auch der BME680-Sensor, die I2C Schnittstelle. An die I2C Schnittstelle können mehrere Sensoren und Module angeschlossen werden. Diese nutzen alle die selben beiden Pins am Raspberry.

Der PCF8591 ist ein Analog-Digital Wandler, der einen analogen Wert in einen digitalen Wert umwandelt.

Benötigte Bauteile

Die richtige Verkabelung

Verkabelung zwischen Raspberry Pi, PCF8591 und einem Spannungsteiler.

Batterie an den Spannungsteiler:

  • + Plus Pol -> VCC (Schraubkontakt)
  • – Minus Pol -> GND (Schraubkontakt)

Spannungsteiler an das PCF8591 Modul:

  • S -> AIN2
  • GND -> GND

PCF8591 an den Raspberry Pi:

  • SCL -> Pin 5/GPIO3 (wie der BME280/BME680)
  • SDA -> Pin 3/GPIO2 (wie der BME280/BME680)
  • GND -> GND
  • VCC -> 3.3V

Spannungsteiler selbst löten

Das Spannungsteiler-Bauteil ist vergleichsweise teuer, dafür, dass es nur zwei Widerstände beinhaltet, die diesen Job machen. Daher kann man sich auch einfach selbst einen Spannungsteiler löten.

Es ist ein 5:1 Verhältnis zu empfehlen. Dies entspricht 30kOhm : 7,5kOhm

Schaltbild eines 5:1 Spannungsteilers.

Messbereich erhöhen

Wird der PCF8591 vom Rasperry Pi mit 3,3V versorgt, so kann der PCF8591 bis zu 16,5V messen. Rechnung: 5*3.3V=16,5V

Will man bis zu 25V messen, so muss man bei einem 5:1 Verhältnis den PCF8591 an die 5V des Raspberrys anschließen. Die Berechnung geht wie folgt: 5*5V=25V

Will man weiterhin den PCF8591 mit 3,3V versorgen, und dennoch bis zu 25V messen, so kann man das Verhältnis des Spannungsteilers anpassen.

Sensor im HoneyPi Wartungsmodus hinzufügen

Wie alle Sensoren, die an den HoneyPi angeschlossen werden kann der PCF8591 als Sensor hinzugefügt werden. Anschließend wird ein ThingSpeak Feld ausgewählt, auf dem die Messwerte gespeichert werden sollen.

Author: Javan

Hobbyimker und leidenschaftlicher Programmierer. Hat das Imkern während der Schulzeit gelernt. Imkert seit 2013. Mitglied des Imkerverein Würmgau.

33 thoughts on “Spannungsanzeige (PCF8591)

  1. Chris

    Hallo, erst einmal ein großes BRAVO für diese Entwicklung! Konnte alles relativ leicht aufbauen und werde es nach der Winterpause bei meinen Bienne implantieren.

    2 Fragen hätte ich aber noch:

    1) Surfstick: Ich habe den Huawei E3372 allerdings in der Version 325. Der wird nur als Speicher erkannt und bin jetzt schon ziemlich alles bei Euch und github durchgegangen ohne ihn zum Laufen zu bringe. Wisst Ihr da Abhilfe oder eine Alternative?
    2) Ich würde gerne noch einen Regensensor anschließen (YL-38). Wie kann ich ihn in die Software implantieren?

    Danke im Voraus für eine kurze Rückmeldung – Grüße, Chris

    Reply
    1. Michael

      Zum UMTS-STICK kann ich dir nicht weiterhelfen. Habe einfach keinen im Einsatz. Ich nutze einen 4G USB Stick, der ein WLAN aufmacht.

      Zum Regensensor.
      Der lässt sich grundsätzlich einbinden.
      Die „Platte“ und die kleine Platine liegen in meinem Labor seit ~2Jahre. Nach meiner Erinnerung:
      Die Platine liefert ein analoges und ein digitales Signal.
      Der Schwellwert des digitalen Signales lässt sich über ein Potentiometer eistellen. Ggf. braucht man noch einen Pullup/-down Widerstand.
      Damit wäre ein „es Regnet“ / „Regnet nicht“ Signal grundsätzlich möglich. Schwellwert müsste gefunden werden. Offene Punkte: Verschmutzung? (Schräge) Aufstellung? Nebel?

      Das analoge Signal ist am RPi nicht direkt nutzbar.
      Dazu benötigt man dann einen analog-digital Wandler. Der PCF8591 kann 256 bit und hätte noch Eingänge frei.

      Grundsätzlich wäre ich für das analoge Signal.
      Vorteil: Der Schwellwert kann in der Software definiert werden und auch der Analogwert kann dargestellt werden.
      Nachteil: Der Schwellwert muss in der Software definiert werden. 😉 Es muss also etwas mehr programmiert werden.
      Für beide Lösungen gilt: Läuft der RPi nicht, keine Messwerte.

      Kommen wir zur Software.
      Das Projekt ist open source und liegt bei github.com.
      Du kannst also ein entsprechendes Pythonscript schreiben und einbinden.
      Schau dir mal die *.py Dateien an. Die Namen entsprechen den Sensoren. So verstehst Du sicher schnell das Prinzip. Mit dem PCF8591 messen wir die Batteriespannung. Damit hatte ich rumexperimentiert. Wie gesagt vor 2 Jahren und ich fühle mich gerade alt und vergesslich;-)
      Änderungen an der Oberfläche(Konfiguration) können dann im 2. Schritt mit Javan angegangen werden.

      Reply
      1. Chris

        Hallo Michael, Danke für Dein feedback! Beim Regensensor habe ich mich vorerst auf das digitale Signal beschränkt, weil ich erstmal sehen möchte wie lange der überhaupt hält… Die Version mit dem AD-Wandler probiere ich dann später (teile hier Deine Bedenken).

        Habe hierzu auch ein Pythonscript geschrieben das ich Euch bei Bedarf gerne zur Verfügung stellen kann. Ich lese hiermit auch gleich die Batteriespannung direkt über das WittyPi -Modul aus und schreibe es in ThingSpeak (spare mir dadurch zusätzliche Elektronik). Das Pythonscript läuft dann parallel zur HoneyPi-Software.

        Funktioniert eigentlich die Abschaltung vom WittyPi bei zu geringer Spannung parallel zu HoneyPi?

        Mein Problem bleibt aber die mobile Datenanbindung, wo ich den Huawei E3372 (325) einfach nicht zum Laufen bringe, auch mit den Hinweisen auf github. Wie machst Du das genau mit welchen Material?

        Vielleicht weiß ja hierzu auch Javan mehr?

        Grüße, Chris

        Reply
  2. Christian

    Hallo, ersteinmal ein BRAVO fuer Eure Arbeit. Habe alles nach Anleitung ziemlich schnell zusammensetzen koenen und werde es dann nach der Winterpause einbauen.

    2 Fragen noch:
    1) ich habe Probleme den Surfstick zum Laufen zu bringen. Ich verwende den E3372 allerdings die Version 325 (den 320er bekomme ich nicht mehr). Er wird nur als Mass-Storage erkannt. Bin schon die Anleitungen auf github durchgegangen aber komme einfach nicht weiter. Gibt es da andere verfuegbare Alternativen?
    2) ich moechte noch einen Regensensor installieren – gibt es da eine Einbindung in Euer tolles tool?

    Danke fuer eine Rueckmeldung, Christian

    Reply
  3. Mathias

    Hallo

    Ich habe mal eine Frage wegen PCF8591
    Kann ich 5 Stück von PCF 8591 anschliessen .
    Gruss Mathias64

    Reply
    1. Michael

      Die Bus-Adresse des von uns eingesetzten Moduls ist fix. Daher also: Nein.
      Der eingesetzte Chip, auf dem Modul, unterstützt verschiedene Adressen. Mit einem anderen Modul, das die Adresspins rausführt, oder durch das Auftrennen / Umkodieren auf dem Modul, müsste es gehen. Letzteres habe ich nicht probiert. M.E. muss die Adresse Softwareseitig auch noch angepasst werden.

      Wenn man mehrere Eingänge nutzen möchte, gibt es andere, bessere Möglichkeiten.
      Das wäre dann eine Weiterentwicklung.

      Reply
  4. Marco

    Hi zusammen,

    ich nun alle Sensoren ( 2*Temp, 1*Waage) angeschlossen und es funktioniert auch alles einwandfrei.
    Vielen lieben Dank an der Stelle für die tollen hinweise und Tutorials 🙂
    Nun bin ich dabei die Spannungsmessung zu testen. den Spannungsteiler (30K und 7.5K) habe ich selbst gebaut und wie in der Anleitung angeschlossen. Die Batterie mit 12.8 V angeschlossen und am Spannungsteiler messe ich 2.52 Volt.
    Diese an den AIN2 des PCF8591 angeschlossen. Leider zeigt Thinkspeak immer den konstanten Wert 8.25 an – auch wenn ich den AIN2 abklemme ?
    Kann mir an der Stelle jemand weiterhelfen ?

    viele Dank und viele Grüße,
    Marco

    Reply
    1. Marco

      Hi zusammen,

      hat sich erledigt 🙂
      Das Gewicht wird nun korrekt angezeigt.
      Die 8.25 werden bei der ersten Messung nach dem Einschalten angezeigt. Danach passen die Werte dann….

      viele Grüße,
      Marco

      Reply
  5. Andreas

    Hallo zusammen,
    zunächst mal großes Lob an das HoneyPi Team, ich bin total begeistert!
    Auch ich habe auch den Spannungssensor PCF8591 verbaut und beobachte eine ausgegebene Spannung die 0,2-0,35 niedriger ist als mit Voltmeter gemessen oder vom Laderegler angezeigt. Ich habe gelesen dass hier jemand ebenfalls das schon hatte, sollte das mit der neuesten Firmware 1.3.7 schon behoben sein? Oder mache ich was falsch?
    Mein Vorgehen: Spannungsteiler gebaut mit 33kOhm und 6,8kOhm Widerständen (real gemessen: 31,8kOhm und 6,8kOhm).
    Ich habe mit den realen Werten gerechnet: ((31,8/6,8)+1)*3,3 = 18,73. Verwende ich diesen Wert habe ich die genannte Abweichung. Ich habe demnach etwas nach oben korrigiert bis der Spannungswert stimmt, welche Auswirkung/Abweichung das zur Folge hat über verschiedene Spannungshöhen weiß ich noch nicht. Grüße Andreas

    Reply
  6. Stephan

    hallo, tolles projekt. eine frage darf ich wissen wie du den PCF8591 ausliest? ich würde gerne allein mit einem raspi die spannung von einem akku messen? hab zwar einige python scripts gefunden im internet aber die laufen irgendwie nicht bzw. es steht nirgends dran wie ich das einstelle das ich die richtige spannung messen/auslesen kann?
    danke

    Reply
  7. Uwe

    Hallo,
    ich habe folgendes Problem mit dem PCF8591. Die Spannung kann ich messen und wird auch richtig angezeigt wenn ich die Messwerte aktualisiere. Dann habe ich einen Kanal 4 in Thinkspeak eingerichtet und da ist das Problem, der Messwert kommen nicht an. Die anderen Sensorenwerte werden sauber eingetragen nur die Batteriespannung nicht. Kann es an dem I2C Bus liegen? Weil wenn ich die Messdaten anzeige kommt Feld 33.
    Ich denke ich habe alles richtig eingestellt, weil die anderen Sensoren laufen ohne Probleme.
    Ich hoffe Ihr könnt mir helfen.
    Danke und Super Projekt was ihr da gemacht habt.
    Gruß
    Uwe

    Reply
    1. Javan Post author

      Hallo Uwe, ist der API Key für deinen 4. ThingSpeak Kanal korrekt? und hast du das Feld in ThingSpeak richtig konfiguriert? Wenn du bei der lokalen Messung ein Messergebniss angezeigt bekommst, dann liegt es nicht am I2C Bus.

      Reply
  8. Alexander Fröhner

    Hallo Javan,

    danke für die Info, sobald ich das eigentliche WLAN eingerichtet, hat es auch funktioniert.
    Eine tolle Sache.
    Ist es richtig, dass die ThinkView APP nur im Public View Daten anzeigt?
    Grüße Alexander

    Reply
    1. Javan Post author

      Schön, dass es jetzt funktioniert. Ja ThingSpeak hat einmal einen privaten Bereich den siehst du nur selbst bei ThingSpeak und einen öffentlichen Bereich, den du mit jedem teilen kannst oder auf deiner Webseite verlinken kannst.

      Reply
  9. Olaf

    Hallo Javan, kurze Frage zum Spannungsteiler. Ist das Verhältnis 5:1 wichtig (im Bespiel ist es ja auch 4:1). Ich hatte das verstanden, dass nur die Relation wichtig ist – also 1k zu 220 würde demnach auch passen. Sicher kann man mir dem Regler nachjustieren.

    Danke

    Olaf

    Reply
  10. Alexander Fröhner

    Hallo Forum,
    ich habe mir den Bausatz nun aufgebaut, speziell möchte ich nur den Spannunsmesser anschließen.
    Es ist eine Erstinbetriebnahme! Mit Firmware 1.1 auf dem Zero WH. Die Pins laut der Anleitung angeschlossen.
    Ich komme auch in den Wartungsmodus und habe ich auch den Sensor konfiguriert, alle Keys eingeben.
    Aber wenn ich auf Speichern drücke, kommt ein Fenster „Die Bienenstockwaage ist nicht erreichbar……. und
    ein Button Erneut versuchen“
    Dieses Fenster kann ich nicht beenden, also auch keine Einstellungen speichern. Wohlgemerkt, ich möchte nur den Spannungssensor testen, ohne eine Bienenwaage.
    Könnt ihr mirt sagen, was ich evtl. Falsch mache? Oder muss eine Bienenwaage angeschlossen sein?
    Danke für eure Hilfe.
    Alexander

    Reply
    1. Javan Post author

      Hallo Alexander,
      eine Waage muss nicht angeschlossen sein. Du kannst auch ausschließlich einen Sensor oder in dem Fall nur den PCF8591 anschließen.

      Das Problem, welches du beschreibst zeigt doch im selben Dialog auch mögliche Ursachen an. „Dein HoneyPi ist derzeit nicht erreichbar.“ Das bedeutet, dein WLAN könnte sich getrennt haben. Steht eigentlich auch in diesem Dialog. Stelle die Verbindung wieder her.

      Viele Grüße

      Reply
  11. Sambuco

    Hallo Javan
    du hast erwähnt dass man den Spannungsteiler einfach selbst herstellen kann.
    Hast du da ein Schaltbild oder einen Link mit einem Bauplan wo das etwas beschrieben wird?

    Danke und Grüße
    Sambuco

    Reply
  12. Patrick

    Hallo,
    ich wollte gerne den PCF8591 Voltmeter im Wartungsmodus auswählen. Der Sensor taucht aber nicht auf, habe Version 1.07 drauf und diese auch nochmal neu runtergeladen und erneut aufgespielt, dann mal auf 1.08 beta geupdatet, jedoch taucht der Sensor in der Auswahl nicht auf. Was mache ich falsch?

    Reply
    1. Michael Drewitz

      Ist der denn auf dem BUS zu finden?
      An der Konsole i2cdetect -y 1 eingeben….

      Reply
  13. Rene

    Hallo zusammen erst mal,

    und sorry für meine vielleicht blöde Frage. Ich habe den Pi mit Wäge Plattform soweit fertig. Nur stehe ich mit der Stromversorgung irgendwie gewaltig auf dem Schlauch.

    ich habe zur Stromversorgung eine Solarzelle mit Zubehör wie empfohlen sowie einen USB Stecker für den Pi. Wie muss ich das jetzt schalten um die Spannung welche noch in der Batterie ist bzw. übers Panel geladen wird über den PCF8591 zu messen und anzeigen zu lassen??

    Die PI Stromversorgung normal über den Mini USB ? oder die 12V an den Anschluss des Voltage Sensor ? Wie Messe ich die Batteriespannung wenn diese über die Mini USB Buchse erfolgt ? Irgendwie hab ich gerade eine Denkblockade oder sehe was komplett falsch.

    Die PI Stomversorgung normal über den Mini USB ? oder die 12V an den Anschluss des Voltage Senor ? Wie Messe ich die Batteriespannung wenn diese über die Mini USB Buchse erfolgt ? Irgendwie hab ich gerade eine Denkblockade oder sehe was komplett falsch.

    Grüße
    René

    Reply
    1. Javan Post author

      Hi Rene,

      der Raspberry wird mit einem 5V USB Anschluss versorgt. Dafür hast du den 12V auf 5 Converter an der Batterie.

      Deine Batterie und dein Solarpanel haben 12V. Mit der Spannugsanzeige (PCF8591) kannst du entweder die Eingangsspannung am Solarpanel messen, oder wie es vorgesehen ist, die Spannung an der Batterie. Damit kannst du abschätzen wie lange dein Akku noch hält.

      Viele Grüße
      Javan

      Reply
  14. Jürgen

    Hallo Javan
    Meine Waage funktioniert tadellos. Einfach ein super Projekt, was ihr da zur Verfügung stellt.
    Ich möchte nun eine Spannungsanzeige auf meinem Raspberry pi Zero WH anschliessen und in Thinkspeak einfügen.
    Da es aber den obigen verlinkten Sensor PCF8591 nicht mehr auf Amazon gibt, wollte ich fragen ob ich dafür den Sensor ADS1115 ADC Modul 16bit 4 Kanäle (Amazon) verweden kann, ohne war zu programmieren zu müssen.
    Bitte um Rückmeldung

    Reply
    1. Javan Post author

      Vielen Dank.
      Nein, da das ein anderer Sensor ist geht das leider nicht.

      Reply
  15. Javan Post author

    Im Wartungsmodus unter dem Reiter „Systemupdate“ kannst du auf die neuste Version aktualisieren. Das ist die Version v1.0.6
    Viele Grüße

    Reply
    1. Sebastian

      Danke Javan, ich habe nach dem Update nur auf der Website gesucht..

      Noch eine Frage zur Genauigkeit der Spannungsmessung: Der mit zwei unterschiedlichen Multimetern gemessene Spannungswert an der Batterie liegt bei 12,42V – ausgegeben bekomme ich HoneyPi jedoch 12,207V.

      Kannst du die Abweichung bei dir auch feststellen? Würde hier ein Korrekturwert, wie bei der Temperatur des BME280, sinnvoll sein?

      LG Sebastian

      Reply
      1. Javan Post author

        ivh habe gerade eine Betaversion bereitgestellt. Kannst du nochmal messen ob es jetzt genauer ist?

        Reply
        1. Sebastian

          Die Beta ist nun installiert – leider jedoch keine Verbesserung bei mir..
          Bei den Messergebnissen (Spannung) scheinen auch nur zwei Werte rauszukommen: 12,207 und 12,1094 – seltsam. Beim verstellen des Potis auf der Platine des pcf ergibt sich auch keine Veränderung des Wertes. Auch die 3 Jumper verändern nichts – egal ob sie drin sind oder nicht.
          Der Anschluss nach Schaltplan passt – alle weiteren Sensoren laufen und geben die Daten korrekt aus..
          Den Voltage-Sensor konnte ich tauschen da ich hiervon genügend da habe – den PCF werde ich dann nochmal ordern, nicht das er einfach fehlerhaft funktioniert. Überprüfen kann ich ihn mangels Expertise nicht.
          LG Sebastian

          Reply
        2. Sebastian

          Hallo Javan / Florian,

          danke bis an diese Stelle für eure Hilfe! Die Waage geht heute, trotz der leichter Fehlmessung bei der Spannung, in Betrieb unter 2 Bienenstöcke.

          Ich habe zwischenzeitlich 4 weitere PCF8591 erhalten und der reihe nach getestet – die Fehlmessung bleibt bestehen. Die Volt-Sensoren stammten aus einer Lieferung – vielleicht liegt auch hier der Bauteilefehler: Bei den aufgelöteten Widerständen messe ich R1= 30,12Ohm und R2= 7,48 Ohm. (Bei allen 5) – Vielleicht kommt es auch hierbei zur Fehlerhaften Übersetzung – 1:5 beträgt dieses Verhältnis nicht.

          Bei dem Vergleich der Messwerte zwischen Multimeter und HoneyPi-Messung über PCF8591 kommt es zu folgendem Bild: (Ich hoffe die Formatierung bleibt erhalten)

          Spalte 1. Messung durch HoneyPI
          Spalte 2: Messung durch Multimeter
          Spalte 3: Abweichung zu Realwert

          11,2305 11,5 -0,27
          11,4258 11,66 -0,234
          11,5234 11,76 -0,237
          11,5234 11,82 -0,296
          12,3047 12,53 -0,225
          12,4023 12,69 -0,288
          12,5 12,71 -0,21

          Die Messwerte weichen schon weitestgehend gleichmäßig um~ -0,25V von der tatsächlichen Spannung ab – die Messung löst allerdings, trotz 4 Nachkommastellen, nicht sehr genau auf. Die Abweichung könnte ich mir noch durch das falsche Verhältnis des Spannungsteilers erklären, die grobe Abtastrate jedoch nicht.
          Habt ihr dafür vielleicht einen Ansatz der mich da weiter bringt?
          Danke und viele Grüße
          Sebastian

          Reply
      2. Javan Post author

        Vielen Dank für dein Kommentar vom 2. Mai – das hilft denke ich sehr. Da wir den Spannungswert aus der maximal messbaren Spannung umrechnen kommt es vermutlich zu diesen linearen Abweichungen. Ich habe mir etwas als Lösung überlegt, was ich im nächsten Beta-Update einspielen werden.

        Reply

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert