Merkmale und Technik
Technische Merkmale
Grundversion
- Bestellliste
- Internes Abspeichern der letzten 100 Tageswerte für die Energieerzeugung (davon die neuesten 40 über die Weboberfläche angezeigt)
- Internes Abspeichern der 5-Minutenwerte des aktuellen Tages und des Vortages
- Automatische Statusmail einmal täglich
- Ausgang mit Signal, falls aktuelle Solarleistung über einem Schwellwert liegt (so kann man einen Verbraucher steuern).
- Tabellarische Darstellung
- der letzten 40 Tageswerte
- der Monatswerte von aktuellem Monat und Vormonat
- der 5-Minutenwerte von Tag und Vortag
- Grafische Darstellung
- der 5-Minutenwerte von Tag und Vortag
Erweiterungspaket S0-Zähler
- Bestellliste
- Das Paket besteht aus einem S0-Zähler und erzeugt S0-Signale, wenn keiner in der Anlage vorhanden ist
- Aufgrund der Zählerkosten sollte man zunächst versuchen, die S0-Signale anders zu erzeugen, z.B. mittels einer Photodiode über einer vielleicht vorhandenen LED, die im Takt der Energieerzeugung blinkt, oder mittels einer Lichtschranke am Rad des Ferraris-Zählers.
Erweiterungspaket SML-Lesekopf
- Bestellliste
- Das Paket besteht aus Bauteilen für einen Lesekopf, mit dem Daten aus einem SML-Bezugs-Einspeisezähler zusätzlich in das Board eingespeist werden können
- Internes Abspeichern der letzten 30 Tageswerte für die Bezug und Einspeisung
- Internes Abspeichern der 5-Minutenwerte des aktuellen Tages und des Vortages von Bezug und Einspeisung
- Automatische Statusmail einmal täglich umfasst Bezug und Einspeisung
- Tabellarische Darstellung
- der letzten 30 Tageswerte von Bezug und Einspeisung
- der 5-Minutenwerte von Tag und Vortag (Bezug und Einspeisung)
- Grafische Darstellung
- der 5-Minutenwerte von Tag und Vortag (Bezug und Einspeisung)
- Für einen geschützten Zugriff auf die Daten können die Namen aller Webseiten, auf denen Bezug und Einspeisungswerte vorkommen, mit einem frei wählbaren Namensstamm versehen werden.
Detailliertere technische Hintergrundbeschreibung
Hintergrundinfos zu Programmiergeräten
Für das Aufspielen der FreeSol-Sofware auf den Chip im Board sowie für die anschließende Konfiguration benötigt man einen Programmieradapter. Sofern man noch keinen hat, hat man die Wahl zwischen ganz unterschiedlichen Varianten, die im Detail hier beschrieben werden. In der Regel wird man jedoch wohl einen der beiden Programmieradapter aus dem Grundpaket wählen.
Der Sourcecode der FreeSol-Software für das AVR-NetIO-Board
Die FreeSol-Software, die auf den Mikroprozessor geladen werden muss, ist in Basic für den BASCOM-Compiler geschrieben und basiert zum größten Teil auf Quellen des Programmpakets ">NETIO+, in dem verschiedene Ethernet-Dienste für das NetIO-Board implementiert sind. Der komplette Sorcecode ist im Downloadbereich verfügbar und kann somit auch selber weiterentwickelt werden.
Die BASCOM-Programmierumgebung kostet für ein Programm in der Größe von FreeSol allerdings ca. 70 EUR.
Datenstruktur im Eeprom
Sowohl alle notwendigen Parameter zur Konfiguration des Loggers als auch alle dauerhaft gespeicherten Loggerdaten finden sich im Eeprom des Boards. Die folgende Tabelle erläutert die wesentlichen Variablen und ihre Position im Speicher. Zu beachten ist, das Strings im Speicher jeweils ein Byte länger sind, da sie mit FF abgeschlossen werden.
Startposition HEX | Typ | Name | Bemerkung |
---|---|---|---|
001 | String*12 | Ee_s12_hostname | Name des Prozessorboards, z.B. "freesol". Taucht z.B. im Router auf und kann dann als Internetadresse im internen Netz aufgerufen werden, z.B. http://freesol |
00E | Byte*6 | Ee_b_macaddr(6) | MAC-Adresse des Chips. Der gekaufte Austauschprozessor ATMega1284P hat keine MAC-Adresse, am besten verwendet man hier die Adresse, die auf den kleinen ATMega32-Prozessor aufgeklebt war, der ursprünglich im Board war. |
014 | Byte*4 | Ee_b_ipaddr(4) | IP-Adresse des Boards. Diese Adresse ist nur zu Beginn gültig und wird ggf. durch eine mittels DHCP zugewiesene Adresse überschrieben oder zumindest diese DHCP-Adresse verwendet. |
018 | Byte*4 | Ee_b_subnetmask(4) | Subnetmask, hier setzt man in der Regel 255.255.255.0 |
01C | Byte*4 | Ee_b_defaultgateway(4) | Defaultgateway. Hier steht in der Regel die IP-Adresse des Router. Meistens ist das fast IP-Adresse des Boards, nur die letzte der ist Zahlen ist eine 1 |
020 | Byte*4 | Ee_b_nameserver(4) | Nameserver. In der Regel dieselbe IP-Adresse wie der Router. |
024 | Byte*4 | Ee_b_ntpserver(4) | NTP-Server. Dieser Server stellt die Uhrzeit zur Verfügung. Es gibt viele Server im Internet, die das können, bei mir funktioniert 192.145.119.188 |
0C8 | Byte*4 | Ee_smtp_server_ip_addr(4) | IP-Adresse des sendenden Mailservers. Im Moment nur für GMX getestet. |
0CC | Byte | Ee_b_smtp_server_port_h | Portadresse des Mailservers, High Byte |
0CD | Byte | Ee_b_smtp_server_port_l | Portadresse des Mailservers, Low Byte |
0CE | String*31 | Ee_s31_meine_email_adresse | Absendermailadresse |
0EE | String*47 | Ee_s47_benutzerkennung | Benutzerkennung des Mailkontos. ACHTUNG: Nicht die Mailadresse eingeben, die Benutzerkennung ist eine Nummer. Die Benutzerkennung findet sich als Kundennummer bei gmx.de unter "Mein Account". |
11E | String*31 | Ee_s31_passwort | Passwort des Mailkontos |
13E | String*31 | Ee_s31_empfaenger_email_adresse | Empfängermailadresse |
15F | Long | Ee_fs_speicherdatum_tage | Datum des letzten Abspeicherns. Format ist Sysday(), 4197 ist der 29.6.2011 |
163 | Integer*100 | Ee_fs_tageswerte(100) | Hier werden die letzten 100 Tagesenergiewerte abgespeichert. die Werte werden als Wh/10 abgespeichert, 57,3 kWh gibt also 5730. Die Werte kommen jeweils in die Speicherstelle Sysday Modulo 100, der Wert für den 29.6.2011 (Sysday ist 4197) geht also nach Ee_fs_tageswerte(97). |
22B | Long | Ee_fs_speicherdatum_monate | Tag, an dem der letzte Vorgänger-Monatswert Energie abgespeichert wurde. |
22F | Long | Ee_fs_monatswerte | Letzter gespeicherter Vorgänger-Monatswert Energie |
233 | Long | Ee_fs_speicherdat_lfdmon | Tag, an dem der laufender Monatswert Energie abgespeichert wurde. |
237 | Long | Ee_fs_lfdmonwerte | Laufender Monatswert Energie |
23B | Integer | Ee_fs_anlagenleistung | Die Peak-Anlagenleistung in Wh. Errechnet sich aus der Nennleistung aller Module. |
23D | Long | Ee_fs_pulszahlges | Hier wird jeweils der S0-Zählerstand um Mitternacht abgespeichert. Kann verwendet werden, um ein Zähleroffset zu setzen. |
241 | Integer | Ee_fs_pulsfaktor | S0-Pulse pro kWh. Muss ab Version 1.02 angegeben werden, typischerweise 1000. |
243 | Byte | Ee_lcd | 0 wenn kein LCD, 1 wenn spezielles 3-Ziffern-LCD mit I2c, 2 wenn LCD TC1604E-01 von Pollin. |
244 | Byte | Ee_fs_maildebugflag | Im Normalbetrieb = 0. Falls der Wert manuell auf 1 gesetzt ist, wird alle 5 min eine Testmail geschickt. Hilft beim Einrichten und Testen des Mailaccounts. |
245 | Integer | Ee_fs_schaltschwelle | Schaltschwelle für Ausgang Pin2 (EXT) in W (aktuelle Leistung in Watt, Mittelwert über 5 min). Wird 1, wenn Wert die letzten 5 min >= Schaltschwelle war." |
247 | String*40 | Ee_fs_alarmmailtext | Text für Alarmierungsmail beim Anliegen eines 0V-Signals auf Pin4 (EXT). Wird einmal pro Minute ausgelesen, ca. bei 22 Sekunden. Mail wird erneut erst nach zwischenzeitlichem Rücksetzen des Signals versandt (auch dies wird nur einmal pro Minute abgefragt). Unbeschaltet gilt als 1. |
26F | Integer | Ee_fs_schaltdauer | Zahl der 5min-Intervalle, nach denen das Schaltsignal nach Überschreiten der Schaltschwelle an bleibt. O bedeutet Funktion ist aus. |
271 | Long | Ee_fs_speicherdatum_minuten | Tag, an dem die letzen gültigen 5-Minutenwerte abgespeichert wurden. Hilft bei Stromausfällen, wenn Tag älter ist, werden nach dem Booten die Minutenwerte gelöscht. |
275 | Integer | Ee_fs_minw(216) | Die 5-Minutenwerte des aktuellen Tages. |
425 | Integer | Ee_fs_dhcp | 1: DHVP ausgeschalten, alle anderen Werte : DHCP eingeschalten. Sollte im Normalfall auf 0 stehen. |
427 | Long | Ee_fs_bezug_speichdat_t | Letztes Speicherdatum Tagesstand Bezug. |
42b | Long | Ee_fs_bezug_tagesstand(30) | Zählerstände des Bezugszählers am Tagesstart. |
4A3 | Long | Ee_fs_einspeis_speichdat_t | Letztes Speicherdatum Tagesstand Einspeisung. |
4A7 | Long | Ee_fs_einspeis_tagesstand(30) | Zählerstände des Einspeisezählers am Tagesstart. |
51F | Integer | Ee_fs_min_bezug(288) | Die 5-Minutenwerte des Bezugs des aktuellen Tages. |
75F | Integer | Ee_fs_min_einspeis(288) | Die 5-Minutenwerte der Einspeisung Bezugs des aktuellen Tages. |
99F | Integer | Ee_fs_min_bezug_vt(288) | Die 5-Minutenwerte des Bezugs des Vortags. |
BDF | Integer | Ee_fs_min_einspeis_vt(288) | Die 5-Minutenwerte der Einspeisung Bezugs des Vortags. |
E1F | Long | Ee_fs_speichdat_vt_t | Speicherdatum für 5min Werte von Bezug und Einspeisung des Vortags. |
E23 | Integer | Ee_fs_minw_vt(216) | Die 5-Minutenwerte der Solarerzeugung des Vortags. |
FD3 | String*6 | Ee_fs_ev_url | Präfix für die Webseiten mit vertraulicher Information (Bezugs- und Einspeisewerte). |
Funktionserweiterungen des Loggers
Täglicher Status-Emailversand
Das Programm kann einmal täglich eine Statusemail mit dem Ertrag des Tages an eine Emailadresse versenden. Hierzu ist ein kostenfreier GMX-Mailaccount einzurichten. Die Konfiguration des Boards erfolgt über das Windows-Setup-Programm.
Versand von Störungsmeldungen
Eine externes Signal kann benutzt werden, um dem Board eine Hardwarestörung mitzuteilen. Als Störungsquellen kommen entweder Störungssignale vom Wechselrichter oder auch Zustandsmeldungen von Blitzschutzelementen in Frage.
Im Moment müssen alle Störungen zu einem elektrischen Signal zusammengeführt werden (bei Bedarf könnte ich auch auf mehrere Eingangssignale erweitern). Der zuständige Eingang ist Pin 4 des EXT-Steckers. Ist er unbeschaltet oder liegt er auf 5 V, so liegt keine Störung vor. Falls er auf 0 V gezogen wird und dieses Signal mindestens eine Minute lang anliegt, wird eine Störungsmail an die normale Benachrichtigungsadresse generiert, der Text ist über einen Konfigurationsparameter einstellbar. Falls die Störung weiter besteht, wird eine erneute Mail erst dann verschickt, wenn das Signal mindestens eine Minute lang auf 5V lag. (Technische Umsetzung: Das Signal wird nur einmal pro Minute abgefragt)
Steuerung externer Verbraucher
Falls die Leistung der Solaranlage über einer mit dem Setup-Programm einstellbaren Schaltschwelle liegt (Messung als 5min-Mittelwert), kann ein Steuersignal zum Anschalten eines externen Verbrauchers gegeben werden. Das Steuersignal bleibt mindestens 5 min lang an, jedoch lässt sich über den Parameter "Schaltdauer" konfigurieren, wie viele 5min-Zyklen der Verbraucher anbleiben soll. Sobald ein weiterer 5min-Zyklus über der Schaltschwelle liegt, wird die Anschaltdauer wieder auf die eingestellte Schaltdauer verlängert.
Zur sicheren elektrischen Ansteuerung empfehle ich einen Funksender (Bausatz 9,95 EUR, fertig aufgebaut 17,95 EUR) und eine Funksteckdose (22,95 EUR) von ELV.
Sofern man nur Kleinspannung schalten will oder ein professioneller Elektriker ist, kann man sich auch mal die [href="http://www.pollin.de/shop/dt/NTU5OTgxOTk-/Bausaetze_Module/Bausaetze/Bausatz_Relaiskarte_K1.html Pollin-Relaisplatine K1] ansehen. Achtung, Warnhinweis: Keine 230V-Schaltungen bauen, wenn man nicht weiß, was man tut.
LCD-Display
An das Freesol-Board kann ein LCD-Display vom Typ TC1604A angeschlossen werden (gibts bei Pollin, Bestellnummer 120 628, 8.95 EUR). Da das Board an den 25-poligen Stecker anzuschliessen ist, muss man sich leider das Kabel selber bauen. Sofern man nicht ein altes Kabel mit passendem Stecker hat, von dem man ein Ende abschneiden kann, hilft vielleicht eine Kombination der Pollin-Bestellnummern 721 775 und 720 418 (kosten zusammen 1,50 EUR, Kabel zerschneiden und ein Ende an die LCD-Platine löten).
Die Anschlüsse an der Platine sind mit 1 und 16 beschriftet, die Belegung ist wie folgt:
LCD Display | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 |
D-Sub-25-Buchse | 18 | 15 | 18 | 2 | 3 | 4 | 18 | 18 | 18 | 18 | 5 | 6 | 7 | 8 | 15 | 18 |
Bedeutung | Vss | Vdd | V0 | RS | R/W | E | DB0 | DB1 | DB2 | DB3 | DB4 | DB5 | DB6 | DB7 | A | K |
Anmerkung: V0 könnte man an den Abgreifkontakt eines 10K-Potis legen und damit die Displayhelligkeit regeln, habe ich aber konstant an Masse liegen. Ebenfalls ist das Display nicht ausschaltbar.
Achtung: Hintergrundbeleuchtung auf PIN 15 braucht eventuell einen Vorwiderstand von ca 10 Ohm, da bin ich noch am Forschen.
Zur Aktivierung des Displays muss der Konfigurationsparameter fs_lcd auf 2 stehen.