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
|
Überlegungen zur Konstruktion
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"...
|
Stromversorgung
Messung der Modulspannung und des Modulstromes
Messung der Temperatur
Die ersten Messungen mit dem Prototypen
Das Display-Modul
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.
|
Erweiterung des Messkopfes
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
Und nun "Alle zusammen..."
Erste Versuche mit dem System
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