Messeinrichtung für Solarmodule

Ich betreibe nun schon geraume Zeit mehrere kleine Solarmodule (3x ca. 7Wp, 1x ca. 3Wp, 1x 2Wp) auf meinem Balkon. Die Anschlüsse der Module enden an Laborbuchsen (4mm) in meinem Shack, damit die einzelnen Module für verschiedene Experimente mit Spannungswandlern, Ladeschaltungen u.a. verfügbar/konfigurierbar sind. Ausserhalb der "Experimentierzeiten" sind die Module mit verschiedenen Spannungswandlern und Akkus (1-50Ah) verbunden. Auf diesem Weg habe ich bereits die Beleuchtung meines Arbeitstisches und den gelegentlichen (QRP-) Funkbetrieb komplett auf "autarke Solarversorgung" umgestellt. Im Winter (→mangelnde Solarenergie) muss ich meine Funkaktivität ein wenig einschränken, damit ich abends noch basteln kann (→ Beleuchtung), aber bereits ab etwa März sind die Akkus wieder "gut gefüllt". Jedoch ist mir z.Zt. unbekannt, welches Modul unter welchen Umständen wieviel Energie zum Laden des aktuell angeschlossenen Akkus geliefert hat. Ist die (handgesteckte) Verteilung der Solarzellen auf die verschiedenen Akkus/Ladegeräte optimal, oder liesse sich mit einer anderen Verschaltung mehr Solarenergie "lagern"? Ausserdem ist mir (im Sommer) aufgefallen, daß sich die Leistungsabgabe eines Moduls durch Kühlung (z.B. Besprühen mit Wasser) deutlich steigern lässt. Und welchen Einfluß hat eigentlich eine dünne (1-3mm) Schneeschicht auf dem Modul? Ist es sinnvoll, die Schicht (mit entsprechendem Arbeitsaufwand) zu entfernen, oder steut die Schicht genug Licht, daß der (sowieso miese) Wirkungsgrad kaum verringert wird? Um diese Fragen zu klären, benötigte ich eine Einrichtung, die mir außer der Modulspannung auch noch Werte für den entnommenen Strom und die aktuelle Modultemperatur (und vielleicht noch mehr Informationen) liefern kann
Aktuelle Verteilung

Überlegungen zur Konstruktion

PIC12F675
Da u.a. auch die Modultemperatur gemessen werden soll, ist es sicher sinnvoll, den "Messkopf" direkt am Modul zu montieren (→Vermeidung von langen Leitungen zum Temperaturfühler). Zur Messung bietet sich ein PIC12F675 an, der die benötigten A/D-Wandler bereits enthält. Da auch nicht nur an einem Modul gemessen werden soll, und sich die Anzahl der Leitungen auch in Grenzen halten sollte, bietet sich ein System mit einem "Kommunikationsbus" an, an dem bei Bedarf auch weitere Module angeschlossen werden können.

Konzept eines "Kommunikationsbusses"

Um möglichst wenige zusätzliche Leitungen verlegen zu müssen, sollte die Übertragung der Messdaten seriell erfolgen, wobei die Möglichkeit gegeben sein sollte, auch mehrere Messköpfe an einer Leitung anzuschliessen →"One-Wire-Bus". Die sich dadurch ergebende Möglichkeit von Datenkollisionen sollte sich durch verschiedene Maßnahmen verhindern lassen: Entweder es wird ein striktes Master/Slave-Protokoll verwendet (ein Controller fragt die Module der Reihe nach ab), oder die einzelnen Module haben die Möglichkeit, Kollisionen zu vermeiden und zu erkennen (CSMA/CD-Verfahren). Letztere Möglichkeit ist bei der nebenstehenden Prinzipskizze durch die separaten Signale TX (Senden) und RX (Empfangen) gegeben, da der Controller so auch während seiner Sendung mit Hilfe des RX-Signals prüfen kann, ob der zu sendende Pegel auch wirklich auf dem Bus anliegt. Ist dieses nicht der Fall, sendet gleichzeitig auch ein anders Busdevice, es wird eine Kollision erkannt, signalisiert, und nach einer (sich dauernd -möglichst "zufällig"- ändernden) Wartezeit kann erneuter Sendeversuch unternommen werden. Um die Datenleitung gleichzeitig als Stromversorung verwenden zu können (s.u.), erfolgt die Datenübertragung durch eine Spannungsabsenkung (Lastmodulation) auf 70-80%. Von den für solche Anforderungen "gängigen" Verfahren (z.B. KNX) nehme ich aufgrund der Patentierung/Kosten und ggf. rechtlichen Problemen lieber Abstand, und entwickle lieber etwas "Eigenes"...
Busdevices

Stromversorgung

Busdevice mit Stromversorgung
Da die Menge der zu übertragenden Daten recht gering ist (10-20 Byte sollten für einen kompletten Satz von Messwerten ausreichen), und der Abstand zwischen zwei Messungen durchaus mehrere Sekunden betragen darf, bietet es sich an, die Kommunikationsleitung auch gleichzeitig zur Stromversorgung zu verwenden: Die einzelnen Messköpfe puffern die Betriebsspannung mit Kondensatoren entsprechender Grösse, sodaß die Controller auch während der Kommunikation mit Spannung versorgt werden. Der einzige Haken an diesem Verfahren ist jedoch, daß die Betriebsspannung des Controllers auch als Referenzspannung für die A/D-Wandler verwendet wird. Die Referenz der Wandler könnte auch als eine Referenzspannungsquelle realisiert werden, nur das "kostet" einerseits einen Portpin, andererseits auch mehr Strom, als mein ganzer Messkopf benötigt (ca.500µA)... Daher darf eine Messung nur vorgenommen werden, wenn die letzte Datenübertragung lange genug her ist, sodaß die Kondensatoren vollständig geladen sind und eine verlässliche Betriebsspannung zur Verfügung stellen. Dieser kleine Nachteil lässt sich jedoch "per Software ausbügeln", und stellt somit keinen Vergleich zu dem großen Vorteil dar, das gesamte System mit nur einer Leitung (und der Systemmasse) zu betreiben.

Messung der Modulspannung und des Modulstromes

Die Bereitstellung der zu messenden Solarmodulspannung für die A/D-Wandler ist ja nicht weiter kompliziert → Spannungsteiler. Jedoch eine Spannung zu erzeugen, die vom Modulstrom abhängig ist, und im Messbereich des Wandlers liegt, ist schon ein wenig aufwändiger... Ein Shunt in der Masseleitung würde zwar eine Spannung im Messbereich des A/D-Wandlers erzeugen, nur eine solche Konstruktion ist einfach "häßlich", da damit die Systemmasse nicht mehr klar definiert ist. Es muss also der Strom in der Ausgangsleitung des Solarmoduls gemessen werden. Nur leider liegt diese Leitung auf einem Potential, welches sich meist ausserhalb des Messbereichs des A/D-Wandlers befindet. An dieser Stelle ist also ein wenig Elektronik (u.a. ein "Rail-To-Rail-OpAmp") erforderlich... Diese Schaltung steuert eine Konstantstromquelle so, daß ein dem zu messenden Strom proportionaler Strom durch einen Widerstand gegen Masse fließt, wobei der Spannungsabfall daran dem Messtrom proportional ist. Die Versorgung dieser Teilschaltung erfolgt aus dem Solarmodul, um die Belastung des Datenbusses nicht unnötig zu erhöhen. Daraus ergibt sich zwar der Nachteil, daß der Messkopf erst ab ca.5-6V Solarspannung einigermaßen brauchbare Messwerte für den Strom liefert, aber es ist ja auch etwas sinnlos, einen Solarstrom messen zu wollen, wenn keine Spannung von dem Modul geliefert wird. Daher wird auch hier wieder "durch Software ausgebügelt" → Liegt die Modulspannung unter 5V, wird auf die Strommessung verzichtet, und als Messwert Null geliefert.
Schaltung zur Strommessung

Messung der Temperatur

Berechnung und Messung der Temperatur
Die Bereitstellung einer Spannung, die proportional zur Temperatur ist, sollte eigentlich mit Hilfe eines NTC recht einfach ein. Nur leider sind die Widerstandswerte eines NTC (und damit auch die Spannung an einem entsprechenden Spannungsteiler) nicht so sonderlich linear zur Temperatur. Nach dem eingehenden Studium entsprechender Datenblätter (und etlichen Messungen/Versuchen/Berechnungen) wurde klar, daß die Linearisierung der Temperaturkurve schon ein wenig mehr "Rechenarbeit" (ein kubisches Polynom sollte für eine Genauigkeit von ca. 0.2°C ausreichen) notwendig wird... Solche Berechnungen auf einem 8bittigen Controller (mit wenig Speicher) auszuführen, bedarf schon einer gewissen Menge an "Hirnschmalz" (zumal ich aus Timinggründen die Dinger ausschliesslich in Assembler programmiere), aber dafür muß es nur einmal geschrieben werden. Die Verwendung von entsprechenden (linearisierten) Temperaturfühlern würde Kosten bei jedem aufgebauten Messkopf verursachen...

Die ersten Messungen mit dem Prototypen

Nachdem ich den ersten Prototypen eines Messkopfes und einen Wandler "One-Wire-Bus/RS232" aufgebaut hatte, konnte ich damit die ersten Messungen ausführen. Das Programm im Messkopf ermittelte/berechnete die Messwerte, und gab sie alle paar Sekunden als ASCII auf dem Bus aus. Die nebenstehenden Diagramme zeigen die aufbereiteten Messdaten von 13.4.2013, ca.13:00. Sehr schön zu erkennen ist das Ansprechen des Ladereglers etwa in der Mitte der Diagramme: Der angeschlossene Akkumulator hat seine maximale Ladespannung erreicht, der Regler begrenzt den Ladestrom, und die Spannung am Solarmodul steigt. Die kurzen Einbrüche der Modulspannung und des Stromes rühren von Vergleichsmessungen mittels eines Multimeters, wobei u.a. die Verbindungsleitungen kurz zum Anschluß eines Amperemeters unterbrochen wurde. Auch die Verzögerung der Modultemperatur gegenüber der Ausgangsleistung/Beleuchtungsstärke ist gut zu erkennen.
Nur was nutzt mir das? Ich kann damit sehen, daß mein Messkopf anscheinend einigermaßen funktioniert, nur ich benötige immer einen laufenden PC, um die aktuellen Daten zu sehen. Für Aufzeichnungen (zur Erstellung von zeitlichen Diagrammen) ist das zwar ganz brauchbar, nur ein PC "frißt" wesentlich mehr Leistung, als meine Solarzellen hergeben... Ok, ich könnte einen "Scheckkartenrechner" verwenden, aber ein "einfacher, stromsparender" Überblick über den aktuellen Zustand wäre mir lieber... → Ein einfaches Display muss her... Aber so Etwas habe ich doch schon ein mal (für andere Zwecke) gebaut?
Spannung und Strom am 13.4.2013
Spannung und Temperatur am 13.4.2013

Das Display-Modul

Schaltplan des Displays
Also habe ich mein I2C-Display noch einmal in Eagle neu aufgelegt, diesmal jedoch mit einem Interface für meinen "Eindrahtbus", und einem etwas größeren Controller (PIC16F628A). Die Arbeit der Erstellung eines Layouts und einer Leiterplatte habe ich mir dieses Mal gespart, und das Display auf Lochraster aufgebaut.
Nun zeigte mir das Display drei Zahlen (Spannung, Strom, und Temperatur) in der oberen Zeile an. "Nett", aber irgendwie auch nicht so sonderlich "schön". Eine Anzeige mit Masseinheiten (V, mA, und °C) wäre da schon angebracht, vielleicht auch noch die Anzeige der aktuellen Leistung,... Und ausserdem sollten ja auch noch weitere Messköpfe an dem Bus angeschlossen werden...
Dabei hätte jeder Messkopf die "ASCII-Aufbereitung" vornehmen müssen, was irgendwie nicht in den Aufgabenbereich einer Messapparatur gehört. Solche Funktionalität gehört eher in das Display, oder (noch besser) in einen weiteren Controller.
So entstand im Laufe der Zeit das Konzept eines komplett eigenständigen Protokolls für "meinen" Bus, welches auf Datenblöcken mit Adressen, Befehlen, Daten und Statuscodes basierte. Jedes Gerät am Bus bekam eine Adresse, über die es angesprochen werden kann. Und jeder Typ von Busdevices (Messkopf, Display,...) kennt eine gewisse Anzahl von Befehlen, und "antwortet" darauf mit einem Datenblock. So bekam z.B. das Display Befehle zur formatierten Darstellung von Binärdaten oder Zeichen. Nur "Irgendwer" musste nun die Pakete mit den Befehlen und Daten auch versenden...

Der "Buscontroller"

In der ersten Ausbaustufe sollte die Steuerung von einem PC vorgenommen werden. Also entwickelte ich ein weiteres Board mit einem Businterface und einer seriellen Schnittstelle, um vom PC her auf den Bus zugreifen zu können. Dieses Mal verwendete einen PIC16F628, einen MAX232, und KiCad zur Schaltplanerstellung. Der Aufbau erfolgte wieder auf Lochrasterkarte. Ein entsprechendes Programm im PC ermöglichte es mir nun, beliebige Datenpakete auf dem Bus an die verschiedenen Devices zu senden, mir die entsprechenden "Antworten" anzusehen, und die Aktivität auf dem Bus zu überwachen. Diese Funktionalität erwies sich als sehr nützlich, um ein entsprechendes Steuerprogram für die spätere "Eigenständigkeit" des Buscontrollers zu entwickeln. Nach geraumer Zeit konnte der Buscontroller "Opcodes" aus seinem EEPROM lesen, Datenpakete senden und empfangen, selber Daten modifizieren, und auf "Events" (z.B. eine Tastenbetätigung am Display, die das Displaymodul durch Aussendung eines entsprechenden Datenpaketes auf dem Bus signalisiert) reagieren. Natürlich erfuhren dabei auch die Programme in den Messköpfen und dem Display ständig Erweiterungen.
Schaltplan des Buscontrollers

Erweiterung des Messkopfes

Messkopf
Im Zuge der Programmierung des Buscontrollers hat auch der Messkopf einige Erweiterungen erhalten. Aus der gemessenen Spannung und dem gemessenen Strom wird nun auch die aktuelle Leistung berechnet, und zusätzlich über die Zeit aufaddiert. Somit steht auch ein Wert für die insgesamt abgegebene Leistung (seit dem letzten Start/Reset) zur Verfügung. Auch der seit der ersten Entwicklungsphase (zum "Debugging" sehr nützliche) herausgeführte "Testpin" hat eine neue Anwendung gefunden: Mit diesem Pin/Port kann nun mit Hilfe eines Transistors ein 1kΩ-Widerstand an den Solarspannungsausgang des Moduls gelegt werden. Wird dieser Ausgang nach der ersten Messung von Spannung und Strom (für ein paar µS) aktiviert, und eine erneute Messung von Spannung und Strom vorgenommen, kann durch Vergleich der beiden dabei ermittelten Leistungswerte die Richtung zum Leistungsmaximum des Solarmoduls ermittelt werden. Diese Information kann ebenfalls bei dem Messkopf angefagt werden, und könnte bei der zukünftigen Entwicklung von Ladereglern (die ebenfalls an den Bus angeschlossen werden) sehr nützlich werden...

Die Stromversorgung

Nachdem ich nun die "Baustellen" in einen "einigermaßen brauchbaren" Zustand gebracht hatte, wurde es Zeit, sich Gedanken über eine "autarke" Stromversorgung zu machen. Was liegt bei diesem Projekt näher, als zur Versorgung der einzelnen Schaltungen gleich die Solarzellen zu verwenden? Bei dieser schwankenden Versorgung ist jedoch ein Puffer zur Überbrückung der "Dunkelzeiten" notwendig. Eine kurze Messung ergab, daß Buscontroller, RS232-Interface, Display (ohne Beleuchtung), und (aktuell drei) Messköpfe ca.30mA benötigen, die Displaybeleuchtung zusätzlich noch ein mal ca.30mA. Damit sollte ca. 1Ah (bei Verzicht auf eine dauernde Beleuchtung des LCDs) für mehr als einen Tag ausreichen. Ein entsprechender Bleigelakku passte jedoch nicht mehr mit in das vorgesehene Gehäuse, und mit 12V zu puffern ist bei einem Betrieb mit 5V-Linearreglern auch nicht so besonders effektiv... Dann fielen mir jedoch zwei LiIon-Zellen mit ca. 2Ah (aus einem Notebook-Akku ausgeschlachtet) in die Hände. Da die minimale, für die Spannungsregler auf den Baugruppen notwendige Spannung knapp 7V beträgt, kann ich die Zellen zwar nicht ganz bis auf 3V pro Zelle entladen, aber trotzdem sollte die Kapazität der Zellen ausreichen. Also entwickelte ich fluchs einen Laderegler (nach einem Schaltungsbeispiel von 1967, welches ich für meinen Bedarf modifizierte) und eine Unterspannungsabschaltung. Der Laderegler, der eine Spannung von 8.3V für den "internen Puffer" bereitstellt, zeigte schon bei den ersten Versuchen einen sehr nützlichen Effekt: Wenn die Solarzellen morgens anfangen, Energie zu liefern, wird die gesamte Energie zuerst einmal zum Laden des Puffers verwendet. Dadurch reduziert sich die Solarspannung auf maximal 10.5V. Mit dieser Spannung arbeiten jedoch die parallel angeschlossenen Laderegler für 12V-Akkus noch nicht. Erst wenn der interne Akku kaum noch mehr Strom aufnimmt, erhöht sich die Spannung, und die anderen Laderegler fangen an, zu arbeiten. Damit ist gewährleistet, daß immer zuerst der interne Akku geladen wird.
Schaltplan des Ladereglers
Schaltplan des Unterspannungsabschaltung

Und nun "Alle zusammen..."

Da nun alle Einzelteile vorlagen, wurde Alles (mit Ausnahme der Messköpfe) in ein Gehäuse verfrachtet, verkabelt, und mit den notwendigen Steckverbindern zur "Außenwelt" versehen.
Das Displaymodul
Das Displaymodul an der Frontplatte.
Die eingebauten Einzelteile
Ladeschaltung, Unterspannungsabschaltung, Akku, und Buscontroller.
Verbindungsstecker
Die Anschlüße fü RS232, Bus, und Stromversorgung. Der Schalter auf der Frontplatte schaltet nur die interne Stromversorgung, der interne Laderegler wird nicht abgeschaltet.
Die Frontplatte
Anzeige von Modulspannung, entnommenem Strom, und aktueller Leistung (Hmm, da fehlt noch eine Rundungsfunktion...) in der oberen Zeile. Die untere Zeile zeigt das aktuell gemessene Modul ("A"), die Richtung des Leistungsmaximums (momentan könnte mehr Strom entnommen werden), die aufsummierte Leistung, und die Modultemperatur. Die LED zeigt die Busaktivität an. Die Tasten dienen momentan nur zur Auswahl des zu messenden Moduls und zum Schalten der Displaybeleuchtung.

Erste Versuche mit dem System

Temperatur/Leistungsdiagramm
Wie schon im allerersten Absatz angesprochen, interessiert mich insbesondere der Zusammenhang zwischen der Modultemperatur und der abgegebenen Leistung. Da es am 21. und 22.5.14 zwar bewölkt, aber recht warm war, habe ich (mit Hilfe der seriellen Schnittstelle und eines Aufzeichnungsprogramms auf meinem PC) die von den Messköpfen ermittelten Daten in eine Datei schreiben lassen. Dazu wurde das "Programm" im Buscontroller (holt Daten von den Messköpfen, und sendet sie zum Display) per RS232-Befehl abgeschaltet, und die Kontrolle des Busses vom Programm im PC übernommen. Während die Aufzeichnung lief, habe ich Wasser mittels einer Blumenspritze auf die Solarmodule "geplempert" (jeweils ca.30-50ml über 1-2Minuten), sodaß kaum noch Wasser am unteren Rand des Moduls ankam, weil der Großteil davon schon auf dem Wege verdampft war. Dummerweise hatte ich beim ersten Versuch alle Module gekühlt, sodaß ich in den aufgezeichneten Daten nur schwerlich zwischen "bewusster Kühlung" und der durch die wechselnde Einstrahlung sich ständig ändernden Temperatur kaum unterscheiden konnte. Also habe ich das Experiment am Folgetag mit zwei Modulen an der gleichen Last (Bleiakku, die Module über Dioden zusammengeschaltet) wiederholt, und nur immer ein Modul gekühlt. Trotz der Ungenauigkeit der Messungen (Toleranz der Messköpfe, unterschiedlich lange Zuleitungen, nur am Rand der Module positionierte Temperaturfühler, ...) lässt sich aus dem (aus den aufgezeichneten Daten gewonnenen) Diagramm deutlich erkennen, zu welchem Zeitpunkt ich welches Modul gekühlt habe. Der Einfluß der Modultemperatur auf die abgegebene Leistung erscheint mir enorm hoch. Nun muß ich "nur noch" ermitteln/ausrechnen, ab welcher Temperatur/Last es "lohnenswert" ist, eine kleine Wasserpumpe oder ein Magnetventil (welches natürlich vom Modul versorgt wird) zu aktivieren...

Das "Material"

Schaltplan des Messkopfes im Eagle-Format (incl. seriellem Adapter).

Layout des Messkopfes im Eagle-Format (incl. seriellem Adapter).

Schaltplan des Displays im Eagle-Format.

Schaltplan des Buscontrollers im KiCad-Format.

Schaltplan der Ladeschaltung im KiCad-Format.

Simulationsdaten der Ladeschaltung im KiCad-Format.

Schaltplan der Unterspannungsabschaltung im KiCad-Format.

Simulationsdaten der Unterspannungsabschaltung im KiCad-Format.

Von der Veröffentlichung des Quellcodes der verschiedenen PIC-Programme habe ich erst einmal abgesehen, da sich dieser Code momentan in einem grausigen Zustand befindet, und wohl noch so einige Änderungen erfahren wird.

Hinweise für Nachbauwillige:

Wer diese Gerätschaften nachbauen möchte, sollte über die Möglichkeiten der Herstellung einseitiger Leiterplatten und etwas Kentnisse der angewendeten Technik verfügen. Es handelt sich hierbei nicht um einen Bausatz, sondern eher um eine Anregung für eigene Konstruktionen. Alles, was ich dazu anbieten kann, befindet sich auf dieser Seite, d.h. Nachfragen nach fertigen Geräten, Bausätzen oder fertigen Leiterplatten zwecklos → Ich "produziere" ausschliesslich für den Eigenbedarf.


Für die Funktionalität und Nachbausicherheit dieser Gerätschaften kann ich keinerlei Verantwortung übernehmen. Eine kommerzielle Verwertung der Schaltpläne oder des Layouts ist nur mit meiner ausdrücklichen Genehmigung zulässig.


Startseite  Hardware  Rechtliches  Kontakt

HTML und Design: DK1RM erstellt: 16.03.2013 - letzte Änderung: 05.06.2018