Datenlogger Version 2
Inhaltsverzeichnis:
1.3.1 Anzeige auf dem grafischen Display. 4
1.5.2 Kurzzeitspeicher für das Display des Datenloggers. 5
1.5.3 Langzeitspeicher für die SD-Card. 7
2.2.1 Helligkeit einstellen. 13
2.2.2 Beleuchtungsdauer einstellen. 14
2.2.3 Zeit und Datum setzen. 14
2.2.4 Datenzähler zurückstellen. 15
2.2.5 Daten via RS232 ausgeben. 15
3.4.2 Namenskonvention für die Programmierung. 20
5 RJ-Steckerbelegung und Kabelfarben ab Temperaturlogger 23
Versionsverfolgung:
Version | Datum | Bemerkung |
|
V0.1 |
| Initialversion |
|
V0.2 | 23.11.15 | Korrekturen und Anpassungen |
|
V0.3 | 23.12.15 | Rückbesinnung auf 32 abzuspeichernde Bytes (nicht 64 Byte) |
|
V0.4 | 27.01.16 | Erweiterte Darstellung, zusätzliche Menues |
|
V0.5 | 03.02.16 | SD-Karte; Schreibspezifikation |
|
V0.6 | 25.04.16 | Zusätzliche SD-Schreibspezifikation |
|
V0.7 | 23.10.16 | SD-Karte; neuer Zugriff definiert |
|
V0.8 | 21.03.17 | Neuanordnung der Sensoren |
|
V0.9 | 16.05.17 | Neuformatierung |
|
V1.0 | 10.11.17 | Bilder eingefügt, kleinere Korrekturen, aufbereitet für WEB |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Der Datenlogger soll Temperauren, andere Wetterdaten, Zustände und die Heizungslaufzeit aufzeichnen. Die Daten werden auf einer SDHC-Karte gespeichert.
Die Übertragung der Temperatursensoren erfolgt asynchron, d.h. die Daten werden jede Minute aktualisiert. Dies geschieht, um die Anzeige momentan aktuell zu halten. Das Schreiben eines Datensatzes auf die SDHC-Karte erfolgt jedoch im Aufzeichnungsintervall. Da sich statische Zustände jederzeit ändern werden diese Zeiten zusätzlich mit einem kompletten Datensatz aufgezeichnet.
Die Zeit wird von einem real Time Clock (RTC) genommen. Dieser wiederum wird automatisch alle 24 Stunden mit dem Zeitsignal des DCF77 synchronisiert.
Zusätzlich zur Wärmepumpe wird als zweiter statischer Zustand Ausfahrt (Mähen) und Einfahrt (Laden) des autom. Rasenroboters aufgezeichnet. Als dritter Zustand ist die Überwachung des Aussenwassers vorgesehen. Weitere 5 statische Eingänge stehen noch zur Verfügung.
Die Daten werden auf der SD-Karte gesammelt und können dann an einem PC eingelesen werden.
Folgende Daten werden aufgezeichnet:
|
| Bytes |
|
| Bytes |
1 | Datum (Tag/Monat/Jahr) | 3 | 2 | Zeit (Std/Min) | 2 |
3 | statisch Wärmepumpe | 1/8 | 4 | statisch Röbby | 1/8 |
5 | statisch Aussenwasserüberwachung | 1/8 | 6 | statisch Reserve 1 | 1/8 |
7 | statisch Reserve 2 | 1/8 | 8 | statisch Reserve 3 | 1/8 |
9 | statisch Reserve 4 | 1/8 | 10 | statisch Reserve 5 | 1/8 |
11 | Sondenvorlauf | 2 | 12 | Sondenrücklauf | 2 |
13 | Heizungsvorlauf | 2 | 14 | Heizugsrücklauf | 2 |
15 | Aussen Nord | 2 | 16 | Aussen Süd | 2 |
17 | Wohnzimmer | 2 | 18 | Schlafzimmer | 2 |
19 | Wintergarten | 2 | 20 | Zimmer oben | 2 |
21 | Erdsonde unten | 2 | 22 | Erdsonde oben | 2 |
23 | Temperatur-Reserve 1 | 2 | ---- | --------- | ------ |
Die statischen Signale werden in einem Byte zusammengefasst. Somit stehen 8 statische Signale zur Verfügung.
Die Datenaufzeichnung beschränkt sich auf 32 Byte. Dies wegen des Aufzeichnungsverfahrens mit den EEPROMs für die Anzeige. Ein nächster Schritt würde 64 Byte betragen, wird aber im Programm nur wenn einfach möglich berücksichtigt.
Folgende Möglichkeiten werden vorgesehen:
- Daten anzeigen als Tabelle (ev. später auch als Diagramm)
- SD-Karte anmelden
- SD-Karte: Filename erstellen
- Fehlerprotokoll
- Datenzähler zurücksetzen
- Aufzeichnungsintervall in Minuten
- Displayhelligkeit einstellen
- Beleuchtungsdauer einstellen
- Zeit/Datum setzen (Initialwert)
- Daten über RS232 ausgeben
Folgende Anzeigen und Eingabemöglichkeiten sind vorhanden:
- Grafisches Display (240 x 128)
- 5 Eingabetasten (Links, Rechts, Up, Down, OK)
- Resettaste (intern)
| Up |
Im Ruhezustand erfolgt folgende Anzeige auf dem Display (Font 3, 7x12 Monospaced):
|
|
| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 |
Pos-ition |
|
| 1 | 8 | 15 | 22 | 29 | 36 | 43 | 50 | 57 | 6 4 | 71 | 78 | 85 | 92 | 99 | 106 | 113 | 120 | 127 | 134 | 141 | 148 | 155 | 162 | 169 | 176 | 183 | 190 | 197 | 204 | 211 | 218 | 225 | 232 |
1 |
|
| 3 | 1 | . | 0 | 5 | . | 1 | 5 |
| 1 | 7 | : | 4 | 5 | : | 1 | 8 |
|
| D | C | F | : |
| o | k |
| D | : |
| 0 | 0 | 0 | 1 |
15 |
|
| I | n | t | e | r | v | a | l | l | : |
| 1 | 5 |
| M | i | n |
|
| F | e | h | l | e | r | : |
| F | u | n | k | 0 | 2 |
|
28/30 |
|
| = | = | = | = | = | = | = | = | = | = | = | = | = | = | = | = | = | = | = | = | = | = | = | = | = | = | = | = | = | = | = | = | = | = |
32 |
|
| S | . | V | o | r | l | : |
| + | 0 | 7 | . | 4 | ° |
|
| | |
|
| S | . | R | ü | c | k | : |
| + | 1 | 0 | . | 2 | ° |
|
46 |
|
| H | . | V | o | r | l | : |
| + | 2 | 9 | . | 8 | ° |
|
| | |
|
| H | . | R | ü | c | k | : |
| + | 2 | 5 | . | 5 | ° |
|
60 |
|
| A | . | N | o | r | d | : |
| + | 0 | 5 | . | 3 | ° |
|
| | |
|
| A | . | S | ü | d | : |
|
| + | 0 | 8 | . | 5 | ° |
|
74 |
|
| W | o | h | n | Z | i | : |
| + | 2 | 2 | . | 1 | ° |
|
| | |
|
| S | c | h | l | Z | i | : |
| + | 1 | 9 | . | 6 | ° |
|
88 |
|
| W | i | G | a | : |
|
|
| + | 2 | 7 | . | 3 | ° |
|
| | |
|
| O | b | e | n | : |
|
|
| + | 1 | 9 | . | 4 | ° |
|
102 |
|
| - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - |
104 |
|
| W | P |
| l | ä | u | f | t | : |
|
|
|
|
|
|
| 3 | 7 |
| M | i | n |
| s | e | i | t | : |
| 1 | 6 | : | 3 | 4 |
116 |
|
| R | ö | b | b | y |
| l | i | e | f | : |
|
|
|
|
| 5 | 4 |
| M | i | n |
| b | i | s | : |
|
| 1 | 6 | : | 2 | 7 |
In der Zeile 1 wird das aktuelle Datum und die aktuelle Uhrzeit dargestellt. Weiter wird die Synchronisation mit dem DCF77-Signal (ok/--) angezeigt sowie der Zähler für die Anzahl gespeicherter Datensätze auf der SD-Karte dargestellt.
In der Zeile 2 werden das Messintervall sowie ein Fehlerhinweis angezeigt.
In der Zeile 4…8 werden momentane Messwerte wichtiger Orte (max. 10) angezeigt.
In der Zeile 9 wird der Status der Wärmepumpe angegeben.
In der Zeile 10 wird der Status des Rasenroboters dargestellt.
Folgende Anschlüsse sind vorhanden:
- 4 x RJ45 für I2C-Sensoren
- 4 x RJ45 für 1-Draht-Sensoren oder statische Signale (DCF-77-Anschluss)
- 1 x RJ11 für statische Signale
- RS232-Schnittstelle für die Datenübertragung (19200 Baud, 8N1)
- Netzanschluss mit Netzschalter
- 2x3-poliger Programmieranschluss
Die Daten werden komprimiert in einem EEPROM gespeichert. Die Anzeige wird aus diesem lokalen EEPROM bedient.
Parallel dazu werden die Daten im Speicherintervall auf der SD-Karte gespeichert. Es wird nur ein Filename „ALLDATA“ verwendet da die SD-Speicherkarte genügend Speicherplatz aufweist. Der Filename auf der SD-Karte kann mittels PC oder im Einstellbereich des Datenloggers erstellt werden.
Die Daten sind wie folgt aufgeteilt:
B1 | B2 | B3 | B4 | B5 | B6 | B7 | B8 |
Date$ | _hour | _min | 8 stat. Signale | Temperatur als Integer | |||
Jahr | Monat | Tag | Stunde | Minute | |||
00 … 99 | 01 … 12 | 01 … 31 | 00 … 23 | 00 … 60 | statisch | Heizungsvorlauf |
B9 | B10 | B11 | B12 | B13 | B14 | B15 | B16 |
Temperatur als Integer | Temperatur als Integer | Temperatur als Integer | Temperatur als Integer | ||||
Heizungsrücklauf | Sole Vorlauf | Sole Rücklauf | Aussen Nord |
B17 | B18 | B19 | B20 | B21 | B22 | B23 | B24 |
Temperatur als Integer | Temperatur als Integer | Temperatur als Integer | Temperatur als Integer | ||||
Schlafzimmer | Wintergarten | Aussen Süd | Zimmer oben |
B25 | B26 | B27 | B28 | B29 | B30 | B31 | B32 |
Temperatur als Integer | Temperatur als Integer | Temperatur als Integer | Temperatur als Integer | ||||
Wohnzimmer | Reservetemp. | Erdsonde unten | Erdsonde oben |
Bem: Es werden lediglich die Werte aufgezeichnet, die Stelle in der Byte-Stange ergibt die Funktion/Plazierung
Wärmepumpe: On = 1 = Hex 31h Off = 0 = Hex 30h
Röby: In der Garage/laden: = 1 = Hex 31h Aus der Garage/mähen: = 0 = Hex 30h
Die Temperaturen werden als Integerwert (-32768…+32767) abgespeichert
Es werden 2 Byte verwendet. Die Daten der Sensoren werden direkt im Integer-Format abgelegt.
High-Byte | Low-Byte |
Integer (-32768…+32768) |
Die Temperatur wird als Integerwert dargestellt. Da Integer nur ganze Zahlen darstellen kann wird die Temperatur x 10 gespeichert. Für die Anzeige wird der Integerwert dann durch 10 geteilt; damit erhält man eine Nachkommastelle.
Das Ein- und Auslesen erfolgt im Byte-Format. Zum Interpretieren der Daten wird das Byte-Array von einem Integer-Array überlagert, um direkten Zugriff zu erhalten. Es sind so 13 Temperatursensoren möglich. Für statische Signale steht 1 Bytes (Byte Nr. 5) zur Verfügung. Damit sind max. 8 statische Eingänge möglich, wobei momentan 3 Bits verwendet werden. Die ersten 5 Bytes werden für Datum und Uhrzeit verwendet.
Aufbau eines Datensatzes mit 32 Byte:
Byte 0…31
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | … | … | … | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 |
d | m | y | h | m | st | 1 | 2 |
|
|
| 7 | 8 | 9 | 10 | 11 | 12 | 13 | |||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
6 | 7 | 8 | 9 |
| Byte-Array(32); gilt für die Daten_in(x) und Datem_out(x) [x = 0 … 31] | |||||||||||||||||||||||
1 | 2 |
| Integer-Array(13), Start bei Byte-Array(6); gilt für die 13 Temperaturen TA(x) & TA_s(x) [x = 0 … 12] |
d = Tag | h = Stunde |
m = Monat | m = Minute |
y = Jahr | st = statische Signale für Wärmepumpe, Röby, Aussenwasser etc. (max. 8 Signale) |
Die Datenausgabe erfolgt im Klartext auf eine SD-Karte in direkt in Excel einlesbarem Text- Format.
Byte 1 | Byte 2 | Byte 3 | Byte 4 | Byte 5 | Byte 6 | Byte 7 | Byte 8 | Byte 9 | Byte 10 |
Jahr 10er | Jahr 1er | . | Mon.10er | Mon.1er | . | Tag 10er | Tag 1er | ; | Std. 10er |
Byte 11 | Byte 12 | Byte 13 | Byte 14 | Byte 15 | Byte 16 | Byte 17 | Byte 18 | Byte 19 | Byte 20 |
Std. 1er | : | Min 10er | Min. 1er | ; | WP | ; | Röbby | ; | AussenW |
Byte 21 | Byte 22 | Byte 23 | Byte 24 | Byte 25 | Byte 26 | Byte 27 | Byte 28 | Byte 29 | Byte 30 |
; | Stat Sig4 | ; | Stat Sig5 | ; | Stat Sig6 | ; | Stat Sig7 | ; | Stat Sig8 |
Byte 31 | Byte 32 | Byte 33 | Byte 34 | Byte 35 | Byte 36 | Byte 37 | Byte 38 | Byte 39 | Byte 40 |
; | Vorz. | T1 10er | T1 1er | . | T1 0.1er | ; | Vorz. | T2 10er | T2 1er |
Byte 41 | Byte 42 | Byte 43 | Byte 44 | Byte 45 | Byte 46 | Byte 47 | Byte 48 | Byte 49 | Byte 50 |
. | T2 0.1er | ; | Vorz. | T3 10er | T3 1er | . | T3 0.1er | ; | Vorz. |
Byte 51 | Byte 52 | Byte 53 | Byte 54 | Byte 55 | Byte 56 | Byte 57 | Byte 58 | Byte 59 | Byte 60 |
T4 10er | T4 1er | . | T4 0.1er | ; | Vorz. | T5 10er | T5 1er | . | T5 0.1er |
Byte 61 | Byte 62 | Byte 63 | Byte 64 | Byte 65 | Byte 66 | Byte 67 | Byte 68 | Byte 69 | Byte 70 |
; | Vorz. | T6 10er | T6 1er | . | T6 0.1er | ; | Vorz. | T7 10er | T7 1er |
Byte 71 | Byte 72 | Byte 73 | Byte 74 | Byte 75 | Byte 76 | Byte 77 | Byte 78 | Byte 79 | Byte 80 |
. | T7 0.1er | ; | Vorz. | T8 10er | T8 1er | . | T8 0.1er | ; | Vorz. |
Byte 81 | Byte 82 | Byte 83 | Byte 84 | Byte 85 | Byte 86 | Byte 87 | Byte 88 | Byte 89 | Byte 90 |
T9 10er | T9 1er | . | T9 0.1er | ; | Vorz. | T10 10er | T10 1er | . | T10 0.1er |
Byte 91 | Byte 92 | Byte 93 | Byte 94 | Byte 95 | Byte 96 | Byte 97 | Byte 98 | Byte 99 | Byte 100 |
; | Vorz. | T8 10er | T11 1er | . | T11 0.1er | ; | Vorz. | T12 10er | T12 1er |
Byte 101 | Byte 102 | Byte 103 | Byte 104 | Byte 105 | Byte 106 | Byte 107 | Byte 108 | Byte 109 |
. | T12 0.1er | TAB | Vorz. | T13 10er | T13 1er | . | T13 0.1er | CR |
Total 8 Zustände und 13 Temperaturen; Trennung mit ;, Abschluss mit Carriage Return (CR).
Diese Daten werden per Append wie vor beschrieben im Klartext auf eine SD-Karte geschrieben, ; trennt die einzelnen Daten, ein CR markiert das Ende des Datensatzes.
Start der Auswahl durch Drücken von OK !
Als Datenanzeige wird ein grafisches Display eA-DIP240 mit einer Auflösung von 240 x 128 verwendet.
| Als Standard-Charaktersatz wird 7x12 verwendet. Dies ergibt 34 Zeichen in 9 Zeilen. Als Startanzeige wird ein Menue dargestellt. Der aktive (wählbare) Menuepunkt wird invers dargestellt. Mit up und down kann zwischen den 7 Menüs gewechselt werden, mit OK wird das invers dargestellte Menue gestartet. |
Position |
| P | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 |
|
| 1 | 8 | 15 | 22 | 29 | 36 | 43 | 50 | 57 | 6 4 | 71 | 78 | 85 | 92 | 99 | 106 | 113 | 120 | 127 | 134 | 141 | 148 | 155 | 162 | 169 | 176 | 183 | 190 | 197 | 204 | 211 | 218 | 225 | 232 | |
1 | z1 |
| 1 |
| D | a | t | e | n |
| a | n | z | e | i | g | e | n |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
15 | z2 |
| 2 |
| Z | u | s | t | a | n | d |
| F | u | n | k | s | e | n | s | o | r | e | n |
|
|
|
|
|
|
|
|
|
|
|
|
29 | z3 |
| 3 |
| F | e | h | l | e | r | p | r | o | t | o | k | o | l | l |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
43 | z4 |
| 4 |
| S | D | - | K | a | r | t | e |
| a | n | m | e | l | d | e | n |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
57 | z5 |
| 5 |
| A | u | f | z | e | i | c | h | n | u | n | g | s | i | n | t | e | r | v | a | l | l |
|
|
|
|
|
|
|
|
|
|
71 | z6 |
| 6 |
| - | - | - | - | - | - | - | - | - | - |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
85 | z7 |
| 7 |
| D | i | v | e | r | s | e |
| E | i | n | s | t | e | l | l | u | n | g | e | n |
|
|
|
|
|
|
|
|
|
|
|
99 | z8 |
| - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - |
113 | z9 |
| M | i | t | |