Original Programmbeschreibung:
********************************************************************
System : C-Control/BASIC mit Mikroprozessor MC68HC05B6
Programm: Solarxxx.bas
Version : V1.10
Autor : DG1XPZ, (c) 04.07.1999
Länge : 5178 Byte
Funktion: Anzeige der Solarleistung einer Solaranlage in Ampere-Stunden
Systemvoraussetzungen:
- C-Control/Basic-Modul
- Applicationsboard mit angeschlossenem Display und Tastatur
- ein 4-zeiliges Display mit 20 Zeichen je Zeile wird vorausgesetzt
(sorry, das original 2x16-Display ist für dieses Prg nicht geeignet)
Schwerpunkt:
- Anzeige der dem Akku zugeführten Energie (von der Solarzelle)
- Speichern des Tages-Messwertes im EEPROM
- Übertragen der Daten aus EEPROM zum PC (Terminalprogramm)
Hinweise:
- AD1-Eingang = Spannung mit 15V-Sensor (Batterie)
- AD2-Eingang = Strom mit Stromsensor 2.55A oder 25.5A
Variable "Stromsensor" muss eingestellt werden !!!
bei 25.5A: "Stromsensor:=25"
bei 2.55A: "Stromsensor:=2"
- Die Leistung wird jede!! Minute mit 5 Stellen nach dem Komma
berechnet.
- Sonnenscheindauer ist auf max. 18h begrenzt (reicht wohl auch)
- max. Solarstrom von 2,5A (25A)
- max. Kapazität(Leistung) 32,350Ah (323,50Ah) pro Tag
(hängt vom Variablen-Typ ab, Typ Word = 32767, dann würde ein un-
kontrollierter Überlauf stattfinden, ab 32,350 wird nicht mehr
gezählt und ein Fehlerton ausgegeben!!)
- beim "Umschalten" von 2,55A- zum 25,5A-Sensor ändert sich nichts an
der Berechnung der Daten, lediglich die Kommastelle bei der Ausgabe
wird um eine Stelle versetzt.
- die dem Akku zugeführte Energie wird durch den Faktor 1,4 geteilt
(Wir erinnern uns: Dem Akku muss immer die 1,4-fache Energie zugeführt
werden, um auf die volle Nennkapazität zu kommen.)
Die Nutzung eines Funkuhr-Moduls ist ohne Programmänderung möglich.
Messwertaufzeichnung:
- Format: Tag, Monat, int_Kapazitaet, Rest_Kapazitaet, Sonnendauer, Imax
- um 23:59 werden die Messwerte aufgezeichnet (im EEPROM)
(= 6 Messwerte a 2 Byte pro Tag)
Fehlermeldungen:
1. "Fehler" (4.Zeile)+ Beepton -> Die dem Akku zugeführte Kapazität
überschreitet den Wert von 32,350Ah (323,50Ah).
2. "EEPROM voll" (4.Zeile)+ Beepton -> wenn der interne EEPROM keinen
Platz mehr zum Speichern der Messwerte hat.
Weiter erst nach Drücken einer beliebigen Taste -> führt zum Menü
(Messwert auf Display per Hand notieren !!!)
3. Wurde der Stromsensor nicht richtig eingetragen (2 oder 25) startet
das Programm nach Ausgabe der Version und Programmname wieder von
vorn, ohne eine Fehlermeldung auszugeben.
Versions-Geschichte:
V1.00: - Urversion
Die Solar-Leistung wird bewusst nicht in Watt-Stunden angegeben, denn
mich interessiert in erster Linie die dem Akku zugeführte Energie.
Aus diesem Grunde wird die "Leistung" in Ampere-Stunden angegeben.
V1.01: - Sonnenscheindauer wird berechnet
- Imax wird aufgenommen und im EEPROM gespeichert
V1.02: - Änderung der Sonnenscheindauerberechnung:
* Der ungefähre Solarladestrom wird am Programmbeginn
in der Zeile: "define Solarladestrom xxx" eingetragen
V1.03: - Berechnung Sonnenscheindauer alle 2 sec, damit verdoppelt sich
die max. mögliche Messzeit auf 18h
V1.04: - Programmbeschreibung hinzugefügt
- kleine "Schönheitskorrektur" bei der Ausgabe der EEPROM-Werte
- Fehlermeldung "EEPROM voll" muss mit Taste bestätigt werden
V1.05: - Bug entfernt: Variable "Daten" hatte Typ BYTE (muss WORD sein!!)
- Text: "Ende Übertagen" wird nicht mehr bei Übertragung zum PC
in die Tabelle geschrieben.
V1.06: - Verwendung eines 25,5A Stromsensors ermöglichen
- Variable "Key" war Typ WORD und ist jetzt Typ BYTE (dadurch
Platz für Stromsensor)
V1.07: - Schaltplan hinzugefügt
V1.08: - Speichern der Akkuspannung (Ub) im EEPROM (ja geht endlich,
siehe Schaltplan ! )
V1.09: - neuen Menüpunkt hinzugefügt:
4 - Messwerte in EEPROM
Damit ist es möglich die Werte vor 23:59 Uhr in den EEPROM
schreiben zu lassen und dann das C-Control auszuschalten.
(alle Datenfelder werden auf "Null" gesetzt!)
- Bug: beim Schreiben der Werte zum PC war zwischen "Imax" und
"Ub" ein Zeilenumbruch
V1.10: - Variable "Spannung" (word) einsparen (ersetzt durch "Daten")
- Variable "Akku-Zustand" (byte) neu.
Soll den Zustand des Akkus speichern: 0=Laden, 1=Voll.
Wird nach Speichern in EEPROM gelöscht (23:59 oder Menüpunkt 4)
"Akku voll"-Anzeige durch einen großes "V" hinter Ub=xx.xx,
ansonsten wird ein kleines "v" angezeigt.
Todo: - Addieren der Strom-Werte alle 5 sec und teilen durch 12
Programmbeschreibung:
Vor dem ersten Laden des Programms, muss am Beginn der Hauptroutine
die Art des Stromsensors eingestellt werden, sowie am Anfang des
Programmlistings bei der Variablendefinition in der Zeile
"define Solarladestrom xxx" der maximal zu erwartenden Solarladestrom.
Nach dem Start des Programms und Ausgabe der Programmversion wird
sofort mit der Messung begonnen.
In der ersten Zeile wird der Programmname und die Version angezeigt.
In der zweiten Zeile wird hinter "Ub=" die Spannung der Solarbatterie
angezeigt. Mit einem kleinen "v" (für Volt) soll angezeigt werden, dass
der Akku noch geladen wird, mit einem großen "V" wird angezeigt, dass
die Ladeschlussspannung bereits erreicht wurde (define Akku_Voll 1400).
Dahinter wird die Sonnenscheindauer angezeigt, berechnet aus dem ungefähr
zu erwartenden Solarladestrom, der am Anfang des Programmlistings
unbedingt eingetragen werden muss (define Solarladestrom xxx).
Ist der Solarladestrom auf weniger als 1/4 gesunken, ist eine Wolke vor
der Sonne, und die Zählung wird angehalten. In der dritten Zeile wird der
momentane Solarladestrom und die schon der Batterie zugeführte Kapa-
zität (um den Ladefaktor korrigiert, siehe oben) angezeigt. Die
letzte Zeile zeigt das aktuelle Datum und die Zeit an. Um 23:59 Uhr
werden die Tages-Werte in den EEPROM geschrieben und alle Zellen
wieder auf Null gesetzt (gleicher Effekt mit MENÜ-4).
Drückt man während der Messung die Sterntaste länger als 0.5 sec dann
wird ein Menü angezeigt:
1 - Datum/Zeit
ermöglicht die Eingabe von Zeit und Datum (Hinweis: nach Eingabe
des Sekundeneiners blinkt "->#" auf, erst nach Druck auf "#" wird
die Uhrzeit übernommen, damit ist eine Sekundengenaue Zeit möglich.)
2 - Portinfo
war eigentlich gedacht um noch mal nachsehen zu können an welche Ports
welche Sensoren angeschlossen werden müssen, da ich noch 2 Spannungs-
sensoren einbinden wollte.
3 - Messwerte zum PC
Spätestens jetzt sollte ein Terminalprogramm am PC gestartet werden,
aber es ist auch eine Ausgabe ins "Nirwana" möglich, denn es werden
gleichzeitig die Werte auf dem LCD-Display angezeigt.
Die erste Abfrage "einzeln (N=*/J=#) ->" bewirkt nach Druck auf die
"*"-Taste eine Ausgabe aller im EEPROM befindlichen Werte in
"einem Rutsch" zum PC bzw. die Anzeige des "letzten" Tages-Wertes
auf dem LCD-Display, der Druck auf die "#"-Taste bewirkt eine Einzel-
ausgabe auf dem PC und dem LCD-Display, jeder weitere Druck auf die
"#"-Taste überträgt/zeigt den nächsten Wert. Nach dem letzten Wert
wird "Ende übertr. ->#" angezeigt das mit "#" bestätigt werden muss.
Danach wird Angeboten die Messwerte zu löschen. Bewusst wird hier eine
Bestätigung mit der "0" erwartet um eine unbeabsichtigte Löschung
zu vermeiden. Wird die "0" gedrückt ist der EEPROM leer, anderenfalls
bleiben die Werte erhalten und die nächsten Messwerte werden um
23:59 Uhr angehängt.
4 - Werte in EEPROM
Das Schreiben der Werte in den EEPROM, dass automatisch 23:59 Uhr er-
folgt, kann hiermit per Hand vorgezogen werden.
Danach kommt man wieder automatisch wieder zur Messwertausgabe, damit die
Messwertaufzeichnung weitergehen kann.
Da der µController kein Multitasking hat, stoppt logischer Weise die
Messung, nur die Uhrzeit und das Datum läuft weiter !!!
Schaltung: (Das Strommodul muss unbedingt im Minuszweig sein !)
*** = Verbindung der Meßmodule mit einem Analogeingang des C-Control
O = absoluter Massepunkt, direkt am Minuskabel des Strommoduls.
Am Strommodul muss vorher noch etwas geändert werden:
- Der Polyswitch (F1) muss ausgelötet werden und durch eine Drahtbrücke
ersetzt werden. Dann wird ein Bein des Widerstands (R1) ausgelötet,
in das dadurch freie Lötauge wird ein Bein des Polyswitchs eingelötet
und anschließend die beide freien Ende des Polyswitchs und des Wider-
standes zusammengelötet. (Polyswitch und R1 liegen somit in Reihe)
Vorteil: es gibt keine gravierenden Abweichungen bei der Strommessung
mehr. (durch den ehem. Widerstand des Polyswitch im Masse-
kreis, ca. 1,83 Ohm)
Nachteil: Sollte in irgendeiner Weise ein zu großer Massestrom durch
Kurzschluss o.ä. entstehen, kann (durch den fehlenden Poly-
switch im Massekreis) das C-Control zerstört werden.
Der Autor haftet nicht für eventuell entstandene Schäden !!!
********************************************************************