Logo Juerg Wenger

Wetterdaten

Vor ein paar Jahren legte ich mir eine Wetterstation des Elektronikkonzerns ELV zu. Die Station erfasst Temperatur, Feuchte, Windgeschwindigkeit sowie die Regenmenge und Regen-Sofort-Melder. Die Station gibt es auch heute noch zu kaufen (ELV WS 300). Grundsätzlich ist das Produkt gut, die gelieferten Daten kommen der Realität gefährlich nahe und die Batterien - auch vom Aussensensor - halten extrem lange (bei mir ca drei Jahre).
Leider hat die Station aber ein paar gravierende Nachteile:

  • Sie überträgt die Wetterdaten per Funk. Und da sowohl meine, als auch die Funklautsprecher der Nachbarn auf der selben Frequenz liegen, sendete die Wetterstation des öfteren keine Daten
  • Sie misst die Windrichtung nicht
  • Die Windgeschwindigkeit ist ein gemittelter Wert und Böen werden daher nicht erfasst
  • Die Regen-Sofort-Erkennung ist lediglich ein Verkaufsargument. Nicht, dass es nicht funktionieren würde, aber die Daten werden alle 155sek gesendet, also ist da nichts mit Sofort-Erkennung
  • Die Wetterdaten sind nur mit viel Aufwand elektronisch speicherbar (aber nicht unmöglich)

Aus diesen Gründen entschied ich mich dazu, eine neue Station anzuschaffen. Schon bald realisierte ich aber, dass es eine Station, die meinen Anforderungen gerecht wird nicht zu kaufen gibt. Also begann ich sie selber zu bauen ...

Ich stellte folgende Anforderungen:
  • Kabel gebunden
  • Beliebig mit weiteren Sensoren erweiterbar
  • Möglichst IP-basierend um Unabhängig von Reichweitenbeschränkungen bsp. von seriellen Verbindungen zu sein und um die Daten "einfach" einlesen zu können
  • Die Auswertung der Daten möglichst selber durchführen um ein besseres Verständnis der Sensorik zu erhalten
  • Die Daten in einer MySQL-Datenbank speichern

Nach längerem Suchen und studieren von Wetterforen aller Art bin ich auf eine kleine amerikanische Firma namens HobbyBoards gestossen. Diese Sensoren sind kabelgebunden und verwenden das OneWire-Protokoll von (Warnung: Technische Webseite) Maxim. Ausgelesen wird der OneWire-Bus mittels des OneWire-Ethernet-Servers der (ebenfalls amerikanischeni) Firma Embedded Data Systems.

Weil draussen gerade Schnee liegt, wollte ich auch die Schneehöhe elektronisch messen. Dazu bin ich im Internet auf die Webseite von Jens Dietrich und seinen Ultraschallsensoren gestossen.

Eine Spielerei für den Sommer ist die elektronische Erfassung der elektrischen Ladung bei Blitzen mittels dem TOA-Blitzortungs-Projekt. Gleichzeitig wird hier auch erfasst wo genau es derzeit Gewitter hat.

Und weil ich gerade so am basteln war, habe ich mich entschieden auch die aktuelle radioaktive Strahlung zu messen. Dazu verwende ich einen Eigenbau, welcher sich prima an die Sensoren von Hobby-Boards anschliessen lässt. (Ich habe VOR dem Unglück in Fukushima mit dem Bau des Sensors begonnen. Versucht da mal an Geiger-Müller-Zählrohre zu gelangen... Jetzt ist eBay voll davon...)

Wolken sind etwas faszinierendes ! Ich lese gerade ein paar Bücher über die Entstehung, Formen und deren Einfluss auf das Wettergeschehen dieser interessanten Himmelsphänomen. Was liegt da näher, als auch die Bewölkung elektronisch zu erfassen. Gedacht getan, ein Parallax BasicStamp BS2sx lag noch ungebraucht im Keller rum, ein entsprechender Infrarot-Sensor war schnell zur Hand und - voilà ein Wolkensensor entsteht. Mehr über die einzelnen Sensoren und deren Auswertung findet ihr weiter unten auf dieser Seite.

Die aktuellen Wetterdaten dieser Sensoren befinden sich hier.


Folgende Sensoren werden Daten in die neue Wetterstation einspeisen:



Sensorart Misst folgenden Wert Physikalische Messgrösse
 Luft- und Bodentemperaturen Grad Celsius (°C)
 relative Aussenluftfeuchte Prozent relative Luftfeuchtigkeit (%rH)
 aktuelle Helligkeit Lux (lx)
 Messung der aktuellen UV-Strahlung  1-16
 Messung der aktuellen Sonneneinstrahlung  W/m²
 Luftdruck Hektopascal (hPa)
 Zählung der elektrischen Entladungen  Anzahl Impulse
 Ermittlung von Geweitter Auswertung der elektrischen Impulse
 Windrichtung Richtung in °
 Messung der Böen und Durchschnittsgeschwindigkeit Geschwindigkeit (km/h)
 Messung des Niederschlages Regen in l/m²
 Anzahl Regentropfen Regentropfen
 Messung der aktuellen Schneehöhe Höhe in cm
 Messung der aktuellen Strahlenbelastung µSv/h (mikroSievert)
 Aufzeichnung der Erdbewegungen Bewegung (Erdbeschleunigung)
 Bewölkung anhand der Himmeltemperatur feststellen Grad Celsius
 Umgebungslautstärke Dezibel

 

Alles beginnt mit einem Testaufbau als Machbarkeitsstudie: Barometer, Feuchte- und Helligkeitsfühler, UV-Index Messegrät, OneWire-Ethernet-Server und Blitzdetektor (vlnr) sind lose miteinander verkabelt. Unten links das kleine schwarze ist einer der Temperaturfühler (in Transistorform).

Wie eingangs schon erwähnt, wollte ich möglichst alle Sensoren via IP-Verbindung abfragen können. Die meisten Sensoren verwenden das OneWire-Protokoll der Firma Maxis oder werden über einen AD-Wandler in das OneWire-System eingebunden. Dieses wird mittels dem OneWire Ethernet-Server ausgelesen und die einzelnen Werte (Spannungswerte) in einem XML-File zur weiteren Verarbeitung zur Verfügung gestellt. Einzelne Sensoren werden nicht direkt unterstützt (bsp. Sonne- und UV-Messgerät) sondern müssen mehr oder weniger umständlich direkt über den Bus abgefragt werden. Das XML-File sieht in etwa so aus:

Die einzelnen Spannungswerte werden danach gemäss dem dazugehörigen Datenblatt in den jeweiligen Wetter-Messwert umgerechnet. Das gestaltet sich je nach Sensor mehr oder weniger aufwändig:

TemperaturfühlerIm Prinzip ist keine Umrechnung notwendig, da der Sensor direkt die Temperatur(°C) via XML zurückliefert.

Hinweis: Diese Sensoren haben eine Genauigkeit von 9 Bit, was einer Auflösung von 0.5°C entspricht. Zu Wetterbeobachtungszwecken ist dies etwas ungenau. Aber die Genauigkeit lässt sich mit etwas rechnen auf 1/16 ° steigern. Wie das genau funktioniert steht weiter unten bei den Sensoren im Detail.
BlitzdetektorKeine Umrechnung nötig, da der Sensor direkt die aktuelle Anzahl ermittelter Blitze via XML zurückliefert.

Hinweis: Es werden auch "normale" statische Entladungen gemessen. Der Zählerstand kann daher nicht mit Anzahl Blitzen gleichgesetzt werden. Für die Zuverlässigkeit, resp. nötige Anzahl Entladungen um zuverlässig ein Gewitter zu detektieren fehlen mir noch die Erfahrungswerte.
BarometerDer Sensor liefert mV als Messgrösse zurück.
Luftdruck(hPa) = ((((VAD * slope) + intercept) * 33.864) + 2)

Hinweis: Die Werte "Slope" und "Intercept" basieren auf der Kalibrierung der Höhe von Hobby-Boards. Bei der Bestellung ist daher die Höhe auf welcher der Barometer betrieben werden soll anzugeben. In meinem Fall betragen die Werte bei einer Höhe von 437m ü. M: slope: 0.6954, intercept: 26.6092. Die Addition von 2 basiert auf Vergleichsmessungen und kann von Sensor zu Sensor variieren. VAD entspricht dem gemessenen Spannungswert des Sensors.
FeuchtigkeitDer Sensor liefert mV als Messgrösse zurück. Der Sensor (Honeywell HIH-4021) liefert ein praktisch lineares Ausgangssignal. Gemäss Datenblatt verwende ich folgende Formel für die Berechnung der temperaturkompensierten Luftfeuchtigkeit.
rel. Feuchte(%rH) = ((VAD - 0.958) / 0.0307) / (1.0546 - (0.00216 * Temperatur))

Hinweis:
Der Wert VAD entspricht der gemessenen Spannung des Sensors in Volt.
HelligkeitDer Sensor liefert mv als Messgrösse zurück. Das Ausgangssignal ist ziemlich linear. Ich habe dazu die Werte mit einem genormten Helligkeitsmessgerät gemessen und eine Formel gefunden, welche der Realität ziemlich nahe kommt.
Helligkeit(lux) = (VSense * 641.424783)

Hinweis: VSense entspricht der gemessenen Spannung des Sensors.
SonneneinstrahlungDer Sensor liefert eine der Sonnenintensität proportionale Spannung. Mit quadratischen sowie Funktionen des 4. Grades lässt sich daraus die Sonneneinstrahlung in W/m² berechnen.

Hinweis: An diesem Sensor resp. an dessen Auswertung habe ich mir die Zähne ausgebissen. Siehe unter "Sensoren im Detail" weiter unten wie die Ansteuerung / Berechnung genau erfolgt.
UV-IndexDer OneWire-Ethernet-Server unterstützt dieses Messgerät nicht, daher ist der Messwert nicht in der XML-Datei vorhanden. Via Direktzugriff auf den OneWire-Bus (via TCP-Verbindung auf einen speziellen Port des OneWire-Ethernet-Servers) lässt sich dieser Wert aber ebenfalls abfragen. Er muss nicht gross umgerechnet werden.
UV-Index = (Abfrageresultat / 10)

Hinweis:
Der Messwert entspricht der UV-Strahlung in einem Bereich von 0-16 in 0.1-Schritten.
WindrichtungDer Sensor liefert mV als Messgrösse zurück.
Windrichtung(°) = (400 * (VAD - 0.05 * VDD)) / VDD

Hinweis: VAD entspricht der Messgrösse, VDD der Betriebsspannung(V).
WindgeschwindigkeitDer Sensor liefert Impulse zurück.
Windgeschwindigkeit(km/h) = (4.02336 * Impulse_des_Zählers) / Messzeitraum_in_Sekunden

Achtung: Bei dieser Formel muss der "Messzeitraum" berücksichtigt werden. --> Ausgewertet werden also die Impulse einer gewissen Zeiteinheit. Dabei muss zwischen Spitzen(Böen) und Durchschnitt unterschieden resp. separat berechnet werden.
RegenmengeDer Sensor liefert Impulse zurück
Regenmenge(l/m²) = ((Impulse_des_Zählers * 0.01) * 25.4)

Hinweis: Impulse_des_Zählers bedeutet innerhalb der gewünschten Zeitspanne neuen Impulse. Damit lässt sich dann die Regenmenge innerhalb dieser Zeitspanne berechnen.
RegenerkennungDer Sensor liefert Impulse pro optisch erkannter Regentropfen. Wird innerhalb des Messzyklus ein Regentropfen erkannt, erscheint die Meldung, dass es derzeit regnet.
SchneehöheMit diesem Sensor muss per serieller Schnittstelle kommuniziert werden (via Seriell-Ethernet-Wandler auch per Telnet). Der Sensor liefert direkt die ermittelte Distanz zurück. Eine eingebaute Heizung verhindert Kondenswasserbildung. Die Steuerung der Heizung wird ebenfalls via serieller Kommunikation gesteuert.

Hinweis: Der Sensor ist zwar in ein IP54 Gehäuse eingebaut aber trotzdem nicht wasserdicht. Es ist daher ein zusätzlicher Schutz vor direkter Wasser- (Schnee)einwirkung erforderlich.
GeigerzählerNach langer Suche fand ich in Amerika bei John Giametti einen Anbieter eines kompletten Bausatzes für die Auswerteelektronik. Als Zählrohr verwende ich ein Geiger-Müller Zählrohr des Typs FHZ76V von Ask Jan first in Deutschland.
BlitzortungIch habe mich entschlossen beim TOA-Blitzortungsprojekt von Egon Wanke teilzunehmen. Diese Schaltung empfängt die Frequenzen der Blitze und sendet sich zusammen mit der hochgenauen GPS-Zeit an einen Server. Wenn mehrere Stationen den Blitz empfangen, kann der Standort auf ein paar Kilometer genau lokalisiert werden.
Erdbeben:Ein Beschleunigungssensor misst die Abweichungen von der normalen Erdanziehung und berechnet daraus die Stärke der Erdbewegungen.

Hinweis: Der Sensor ist im Prinzip ein Joystick-Kontroller. Der Anschluss geschieht via USB. Die Daten, welcher der Sensor liefert, werden direkt an das Projekt Quake-Catcher-Projekt der Universität Stanford (USA) gesendet und ausgewertet.
Bewölkung:Der Theorie nach wird bei Bewölkung ein Teil der Wärmestrahlung an den Wolken zurück auf die Erde reflektiert. Ein Infrarot-Thermometer kann diese Wärmestrahlung erfassen und daraus schliessen ob der Himmel bedeckt oder frei ist.

Hinweis: Der Sensor ist noch nicht in Betrieb und über Erfahrungswerte kann ich derzeit auch noch nicht berichten.
Lärm:Ein Messmikrofon zeichnet kontinuierlich den Lärmpegel bei der Wetterstation auf und schickt die Peak-Daten alle 0.6 Sekunden via serieller Verbindung an den Mess-PC.

Hinweis: Der Sensor ist noch nicht in Betrieb und über Erfahrungswerte kann ich derzeit auch noch nicht berichten.

Neben der Erfassung der Messwerte gilt es auch noch verschiedene Messgrössen daraus abzuleiten, resp. zu berechnen

SonneneinstrahlungMithilfe der Helligkeit lässt sich die Sonneneinstrahlung berechnen.
Sonnenenstrahlung(W/m²) = (Helligkeit_in_Lux * 0.001464)

Hinweis: Dieser Wert ist natürlich nur gaaaaanz grosszügig angenähert. Der Helligkeitssensor hat eine Fläche von lediglich 1mm² und wird hochgerechnet auf W/m². Auch die Empfindlichkeit des Sensors ist für professionelle Anwendungen absolut ungeeignet (Das Spektrum der Sonne ist nicht berücksichtigt).
WindchillBasierend auf aktuellem Wind und Temperatur ist die "gefühlte Temperatur" berechenbar.
Gefühlte_Temp(°C) = ((Windgeschwindigkeit / 3.6) > 1.4) ? (13.12 + (0.6215 * Temperatur) - (11.37 * pow(Windgeschwindigkeit, 0.16)) + (0.3965 * Temperatur * pow(Windgeschwindigkeit, 0.16))) : Temperatur
TaupunktAnhand der Temperatur und der Luftfeuchtigkeit lässt sich auch der Taupunkt berechnen.
PHP-Script:
if($Temperature >= 0) { $a = 7.5; $b = 237.3; }
else { $a = 7.6; $b = 240.7; }
$sdd = 6.1078 * pow(10.0, (($a * $Temperatur) / ($b + $Temperatur)));
$dd = ($Luftfeuchtigkeit / 100.0) * $sdd;
$v = 0;
if($dd){
$v = log10(($dd/6.1078));
}
$taupunkt = ($b * $v) / ($a - $v);
WolkenuntergrenzeMit Hilfe des Temperaturunterschiedes zwischen aktueller Temperatur und Taupunkt lässt sich auch grob die Wolkenuntergrenze berechnen. Das Resultat entspricht der Wolkenhöhe über Grund und nicht über Meeresspiegel.
Wolkenuntergrenze(m) = (Temperatur - Taupunkt) * 123
Sonnenaufgang /
Sonnenuntergang
Mittels PHP lässt sich standortbezogen der Sonnenauf- resp. der Sonnenuntergang berechnen.
Sonnenaufgang:
$Sonnenaufgang(time) = date_sunrise(time(), SUNFUNCS_RET_STRING, Latitude, Longitude, 90+5/6, date("O")/100)

Sonnenuntergang:
Sonnenuntergang(time) =date_sunset(time(), SUNFUNCS_RET_STRING, Latitude, Longitude, 90+5/6, date("O")/100)

Hinweis: Die Werte für Latitude resp. Longitude entsprechen der aktuellen Position (via Google-Map zu bestimmen). Diese Funktion gibt es erst ab PHP-Version 5.

 

Speicherung der Daten


Ich habe mich entschieden die Wetterdaten aller Sensoren alle 10 Sekunden in einer MySQL-Datenbank zu speichern. Dies vorallem aus dem Grund des Windes, resp. um WindBöen zu erkennen und zu erfassen. Alle 10 Minuten werden die Daten grob auf Plausibilität geprüft, Minimum / Maximum sowie der Durchschnittswert berechnet und definitiv in einer anderen MySQL-Datenbank gespeichert. Dabei werden lediglich die effektiven Messwerte gespeichert. Allen anderen Daten (wie Wolkenhöhe, Windchill, usw.) können aus den Messwerten jederzeit wieder berechnet werden.

Um die Daten in den erwähnten Intervallen speichern zu können verwende ich zwei Cron-Jobs. Ein Cronjob führt jede Minute den PHP-Code zur Messung der Sensoren und das Abspeichern der Daten alle 10 Sekunden aus. Der Code ist so programmiert, dass der Skript maximal 59 Sekunden läuft, damit er jede Minute neugestartet wird.
Der zweite PHP-Skript wird alle 10 Minuten aufgerufen, prüft und berechnet die vorhandenen 10-Sekunden-Messwerte und sobald sie definitiv in der Ziel-Datenbank abgelegt sind, werden die 10-Sekunden-Messwerte der letzten 10 Minuten gelöscht.

Sensoren im Detail


Schneehöhe

Oben der seriell nach Ethernet-Wandler, in der Mitte die Steuerelektronik und zu unterst der Ultraschallsensor.
 
Die Kommunikation mit dem Sensor geschieht mit einfachen ASCII-Zeichen in Klartext. Folgende Befehle werden dazu verwendet:

AktionSensorbefehl  Sensorantwort  Bedeutung  
Temperatur messen  11000 1 leer leer leer 5 
 1 leer leer 1 5 
Temperatur 5°C
Temperatur 15°C 
Heizung einschalten  16301 1 leer leer leer 1 Heizung eingeschaltet  
Heizung ausschalten  16300 1 leer leer leer 0 Heizung ausgeschaltet  
Distanz messen  12000 1 leer 1 0 7 Distanz 107 cm  

Die Ermittlung der Schneehöhe erfolgt nach nach der Formel:
Schneehöhe(cm) = Sensorhöhe(cm) - gemessene_Höhe(cm)

 
Der Ultraschallsensor wird in ein PVC-Rohr eingebaut
 
Der fertige Sensor von der Seite.
 
Der fertige Sensor von unten (das Holzstück ist mittlerweilen lackiert).

Temperatursensoren

Wie eingangs bereits erwähnt haben die Sensoren eine Grundgenauigkeit von 0.5°. Dieser Wert lässt sich einfach aus dem XML-File des OneWire-Servers auslesen. Wenn jedoch die Genauigkeit auf 1/16° (also 0.0625°) gesteigert werden soll, muss etwas mehr gerechnet werden. Dazu müssen die Register des Sensor ausgelesen und entsprechend berechnet werden. Auch diese Registerdaten stellt der OneWire-Server im XML-file bereit. Dazu kann der RawData-Wert verwendet werden (siehe oben). Die Umrechnung erledigt dann folgender Skript (danke an Bruno für die Hilfe bei der Mathematik).

Wie die Umrechnung genau zu geschehen hat, ist im Datenblatt des Sensors (in Englisch) beschrieben. Das Datenblatt findet sich hier


Messung der LufttemperaturDie Lufttemperatur wird zusammen mit der Luftfeuchte in einer selber hergestellten Wetterhütte gemessen. Die Wetterhütte ist ventiliert und misst zusätzlich auch noch die Helligkeit (siehe weiter unten).
 
Messung der BodentemperaturenDie Bodensensoren sind in einem Plastikrohr eingelassen und in den Boden gesteckt. Es werden die Temperaturen von +5cm über Boden sowie -5cm, -10cm und -20cm im Boden gemessen.

Helligkeits-, Feuchte- und Temperatursensor

Für die Messung der Helligkeit, der Luftfeuchte sowie der Lufttemperatur habe ich mir eine eigene Wetterhütte gebastelt. Als Basis habe ich den Helligkeits-/Feuchtesensor von Hobbyboards genommen und die Sensoren etwas verlängert. Für die Temperatur verwende ich einen DS18S20 Sensor wie oben beschrieben.

Der Sensor von Hobby-Boards mit den angelöteten Sensorkabeln. Oben der Feuchtigkeits- unten der Helligkeitssensor.
 
Der fertig umgebaute Sensor.

Der 1. Sensor

Der Helligkeitssensor wird in einen PVC-Rohrdeckel eingelassen und mit einem Diffusor (Boden eines Actifit-Drinks) sowie einer transparenten Weihnachtskugel vor dem Wetter geschützt.
 
Links: Die Temperatur sowie die Feuchte werden in einem belüfteten Rohr gemessen und sind vor direkter Sonnenbestrahlung geschützt. Sobald ich einen kleinen Lüfter gefunden habe (max 25mm x 25mm bei 5V oder 12V) werden die Sensoren sogar aktiv belüftet.

Rechts: Der fertige Sensor. Die Elektronik befindet sich im grauen PVC-Rohr oben.

Der neue Sensor

Der 1. Sensor war zu anfällig für Sonneneinstrahlung. Ich gehe davon aus, dass die Belüftung wohl nicht allzugut war in dem Rohr. Und da ich keinen so kleinen Lüfter zu einem vernünftigen Preis gefunden habe (ich bezahle doch nicht Fr. 30.- für so einen Lüfter), habe ich mich entschlossen eine "professionelle" Lösung zu verwenden. Ich habe mich für das "Radiation Sield" von Davis entschieden. Zu beziehen beim Meteomarkt von Markus Brotschi.

In diesem Gehäuse sind die selben Sensoren wie oben eingebaut. Einziger Unterschied: Der Hellikeitssensor zeigt nun gegen den Boden und hat damit keine direkte Sonneneinstrahlung mehr.
 

Windrichtung / Windgeschwindigkeit

Die Erfassung der Windrichtung sowie der Windgeschwindigkeit erfolgt mit einem sog. Anemometer. Dies ist ein Schalendrehkreuz und eine Windfahne. Die beiden Sensoren werden an die Auswertelektronik in der Wetterbox angeschlossen. Sowohl das Anemometer als auch die Auswerteelektronik sind von Hobby-Boards.

Links das Anemometer mit der Windfahne, rechts die entsprechende Auswerteelektronik

Grundsätzlich basiert die Auswertung dieser Sensoren auf dem Zählen der Impulse des Anemometers über eine gewisse Zeit zwecks Berechnung der Windgeschwindigkeit sowie das Auslesen des AD-Wandlers für die Ermittlung der Windrichtung.

 


UV-Sensor

Die derzeitige UV-Belastung wird mit dem UV-Index-Meter von Hobby-Boards gemessen. Dieser Sensor misst die UVA und UVB-Strahlung mit der grössten Empfindlichket bei einer Wellenlänge von 365nm. Die Ausgabe erfolgt in einer Skala von 0 - 16 in 0.1 Schritten.

Die Elektronikplatine des Sensors Der fertige Sensor eingebaut in einer Elektrodose

Die Daten dieses Sensors werden nicht von einem Standard OneWire-Chip ermittelt, sondern sind eine Eigenentwicklung von Hobby-Boards. Demzufolge lassen sich die Werte auch nicht aus dem XML-File des OneWire-Servers auslesen. Es ist daher notwendig direkt mit dem Sensor via OneWire zu kommunizieren. Der Sensor unterstützt unter anderem folgende Befehle:

AktionSensorbefehl  
Temperatur messen  0x21
UV-Index messen  0x24

 

Der obige Script nutzt den OneWire-server von EmbeddedDataSystems um direkt mit TCP auf den OneWire Bus zugreifen zu können. Die Angaben der Programmierung sind dem Manual des Sensors zu entnehmen.

 


Sonneneinstrahlung

Dieser Sensor aus dem Hause Reinhardt System- und Messelectronic liefert eine analoge Spannung proportional zur Sonneneinstrahlung zurück. Die Analogspannung wird mittels einem 8-Kanal AD/Wandler von EmbeddedDataSystems gemessen.

Der Globalstrahlung-Sensor Das 8-Kanal AD/Wandlerboard

Die Schwierigkeit bestand zuerst darin, die analoge Spannung mit dem AD/Wandler auslesen zu können. Der 8-Kanal AD/Wandler besitzt einen DS2406-chip (eigentlich ein Zweikanal-Schalter). Dieser Chip lässt sich aber so ansteuern, dass mit weiterer Elektronik "gesprochen" werden kann. Das geschieht mit dem sog. ChannelAccess. Dazu ist eine definierte Zeichenfolge zu senden. Der eigentliche 8-Kanal-Multiplexer, resp. der AD/Wandler messen den gewünschten Kanal und liefern die Daten via ChannelAccess zurück an den DS2406-chip. Anhand von mathematischen Funktionen wie Umwandlung von Hexadezimal nach Binär, Einerkomplementierung, Bitfolge umdrehen sowie Bitfolge verschieben erhält man die effektiv anliegende Analogspannung des Sensors. Klingt das kompliziert ? Ich sag euch was: Das war es auch ! Der notwendige PHP-Code dazu sieht dann auch entsprechend etwas länger aus:

Und das ist erst der Anfang ! :-) Der nächste Punkt ist die Umrechnung der Ausgangsspannung (V) in Sonneneinstrahung (W/m²). Gemäss Datenblatt sind drei Spannungen und die dazugehörigen Strahlungswerte angegeben. Dazu der Hinweis, dass die Offsetspannung ebenfalls zu berücksichtigen sei. Ich habe diese Angaben in ein Diagramm übertragen um mir ein Bild machen zu können.

 
Gegebene Daten aus dem Datenblatt des Globalstrahlung-Sensors:
0 Watt/m²  0.137V 
480 Watt/m²  1.575V 
1230 Watt/m²  3.850V 
-28°C  215 mV
0°C  183 mV
10°C  108 mV
25°C  0 mV
50°C  -131 mV
 
Es ist offensichtlich, dass diese Kurven nicht linear sind. Währe ja auch zu einfach... Daher musste ich anhand dieser Werte nach einer Formel suchen um die Kurve mathematisch abbilden zu können. Schliesslich bin ich mit Hilfe von Google, Arbeits- und Militär-Kollegen auf diese Funktionen gestossen (Danke an Armin und Felix)
 
Diese Formel habe ich hier gefunden. Diese Formel habe ich hier gefunden.

Und nun noch der Endspurt. Von der gemessenen Spannung den Offset abziehen und in Watt/m² umrechnen.

Und fertig. Eine amüsante Art und Weise um einen verregneten Sonntag zu verbringen, nicht ? :-)

 


Regensensor

Ich verwende zwei Sensoren für die Messung des Niederschlages. Einmal ein konventioneller Regenmesser (mit Zählwippe) für Regenmengenerfassung (Auflösung 0.254 mm) und ein optischer Sensor für die Erfassung (Zählung) der Regentropfen. Dies erlaubt die Erkennung von Regen bevor die Zählwippe voll ist und einmal kippt.

Konventioneller ZählwippensensorOpto-elektronsicher Sensor "Raingage RG-11"

Beide Sensoren sind an einen Zählerbaustein angeschlossen. Diese Zähler können einfach via OneWire ausgelesen und ausgewertet werden. Die Konfiguration des RG-11 ist via Dip-Switches schnell und unkompliziert möglich.

 


Blitzzählung

Dieser Teil ist noch in Arbeit. Die Zählung der Blitze basiert auf einem Sensor von Hobby-Boards.

 


Blitzortung

Gewitter sind etwas faszinierendes. Zumindest für mich. Als ich auf das Projekt Blitzortung aufmerksam wurde, war mir klar. Da mache ich mit. Also habe ich mir die Schaltung als Bausatz zugelegt und aufgebaut (vom Projekt kann man nur die Platine beziehen, die elektronischen Bauteile muss man selber besorgen).

Die Bauteile stammen von Reichelt Elektronik, die Ferrit-Antennen von Wolfgang Friese. Der GPS-Empfänger schliesslich stammt vom grossen Auktionshaus mit den 4 Buchstaben.

Die Empfangselektronik mit den Ferrit-Antennen ist in einem separaten Gehäuse untergebracht, die restliche Elektronik findet in meinem "Wetterrack" platz.

Die fertig aufgebaute Auswerteelektronik Die Empfangselektronik mit den Antennen

 


Luftdruck

Der Luftdruck ist wesentlicher Bestandteil des Wetters. In jeder Wetterstation ist diese Messung daher Pflicht ! Mein Sensor stammt von Hobby-Boards.

 


Radioaktivität

Schon lange vor der Katastrophe in Fukushima wollte ich mir einen Geiger-Müller Zähler zulegen. Das Problem dabei: Die Dinger mit PC-Anschluss sind teuer und die "billigen" Teile können nicht oder nur mit viel Gebastel an den PC angeschlossen werden. Also blieb eigentlich nur der Eigenbau übrig. Nach einiger Suche fand ich dann auch einen mir als geeignet erscheinenden Bauplan. Aber auch hier war das Problem, dass die Platine selber hergestellt werden musste. Nichts desto trotz war ich gewillt so ein Teil zu bauen. Nun musste nur noch ein Geiger-Müller Zählrohr organisiert werden. Nach einiger Suche fand ich bei Ask Jan first das Zählrohr FHZ76V.
Auf der Suche nach einem Datenblatt dieses Zährohrs, stellt man sehr schnell fest, dass dies schwierig wird. Wenn man aber weiss, dass dieses Zählrohr eigentlich ein Philipps/Valvo 18550 ist, gibt es auch Datenblätter. Ebenfalls ist das Zählrohr kompatibel mit den folgenden Rohren: Centronics ZP1320, Mullard Mx164 und LND-713. Gemäss des Datenblattes des ZP1320 ist das Rohr "geeicht" auf 9cps/mR/h bei Cs-137 (Cäsium, 540cpm/mR/h)

Und dann war die Fukushima-Katastrophe und das Internet wurde überschwemmt mit Geigerzählern und auch mit entsprechenden Bauanleitungen. Dabei fand ich dann auch das Projekt Do-it-yourself-Geiger-Zähler von John Gimetti aus Amerika. Der Bausatz enthält alle notwendigen Teile (sowie diverses Bonus-Material). John hat sich bei diesem Teil wirklich viel Mühe gegeben. Die Anleitung ist verständlich und behandelt auch den Hochspannungsteil, resp. die Anpassung auf unterschiedliche Zählrohre. Der Aufbau ist problemlos in ein paar Stunden erledigt und hat bei mir auf Anhieb funktioniert.


Der fertig aufgebaute Geigerzähler. Unten die Auswerteelektronik, oben das Zählrohr FHZ76V.


Nach einigem Basteln konnte ich den Impulsausgang der Schaltung doch noch an einen Eingang eines 1-Wire-Zählers anhängen (was so ein simpler Kondensator [klein und gelb, links unten auf dem Laborboard] am Eingang des Zählerchips doch alles bewirkt...). Die fertige Schaltung (Testaufbau) sieht wie folgt aus:



 
Der Geigerzähler fertig mit offenen Gehäuse. Links aufrecht stehend die 1-Wire Platine (Verbindung zur Wetterstation), in der Mitte die Elektronik und rechts das Geiger-Müller-Zählrohr.   Der fertige Geigerzähler von aussen. 

Wie oben schon erwähnt hat das Zählrohr die Eichung auf Cäsium. Wenn wir also die Dosis-Leistung ausrechnen wollen muss für dieses Zählrohr der CPM-Wert mit 0.015625 zu multipliziert (konvertiert CPM zu MikroSievert) werden. Siehe auch hier.

 


Erdbeben

Erdbeben kommen auch in der Schweiz vor, wenn auch nicht so häufig und vorallem nicht so stark. Die meisten Beben werden kaum verspürt. Aber das Interesse daran, diese Beben elektronisch zu erfassen veranlasste mich nach geeigneten Sensoren zu suchen. Dabei bin ich auf das QCN-Projekte (Quake Catcher Network) der Universität Stanford (USA) gestossen. Die Messung erfolgt mit einem USB-Sensor (Beschleunigungssensor) welcher selbstständig bei Code Mercenaries in Deutschland bezogen und zusammengelötet werden muss. Die notwendige Software wird vom QCN-Projekt zur Verfügung gestellt.

 


Wolkensensor

Wolken sind wie eingangs erwähnt etwas fanzinierendes. Nach dem lesen zweier Bücher über Wolken, deren Entstehung und Einfluss auf das Wetter war mir klar: Auch das muss doch irgendwie elektronisch zu erfassen sein. Nun gut, nach einigem Nachforschen im Internet und dem Durchlesen von unzähligen Webseiten fand ich die optimale Lösung. Die Erfassung der Himmelstemperatur mittels einem Infrarot-Temperatursensor. Der Theorie nach reflektieren Wolken einen Teil der Erdwärme wieder zurück auf den Boden. Diese Wärme lässt sich mit einem Sensor erfassen. Ein wolkenloser Himmel ist dagegen ziemlich cool. Einen entsprechenden "Wolkensensor" gibt es fixfertig bei Reinhardt System- und Messelectronic, allerdings war der Sensor zu diesem Zeitpunkt nicht lieferbar (und wird es wohl auch nicht so schnell sein). Ich habe mich mit der Funktionsweise dieser Sensoren (auch "Thermosäule" oder engl. "Thermopile" genannt) befasst und schliesslich ein relativ günstiges Modul von Parallax gefunden. Es handelt sich um das seriell ansteuerbare Parallax-Modul MLX90614.

 
Das Parallax Modul mit dem eigentlichen Infrarotsensor (ganz rechts im Bild)   Der Mikrocontroller BasicStamp BS2sx von Parallax. Programmiert in relativ einfachem PBasic

Leider konnte ich das Modul nicht direkt an einen Seriell-zu-Ethernet-Wandler anschliessen (daran arbeite ich noch). Als workaround habe ich erstmals versucht das Ding zum laufen zu kriegen. Da Parallax auch kleine Mikrocontroller, sog. BasicStamps, vertreibt sind die Beispiele zu diesem Modul natürlich für so eine Briefmarke (engl. Stamp) ausgelegt. Wie es der Zufalls so will, hatte ich aus früheren Tagen bereits so einen Mikrocontroller im Keller "rumliegen". Was liegt also näher als diesen hervorzukramen und mit dem Modul zu vereinen ? Das Beispielprogramm eignet sich hervorragend für einen ersten Test. Im Bild unten ist der Sensor auf einen wolkenlosen Himmel ausgerichtet. Die Temperatur ist wie erwartet kühl bei 3.64°C.

Die erste Messung der Himmelstemperatur geschieht mit einer provisorischen Halterung. Eine "Helping Hand" oder auch "dritte Hand", eigentlich dazu gedacht beim Löten die Platine zu halten, wird kurzerhand etwas zweckentfremdet und hält die Elektronik gegen den Himmel gerichtet.

Derzeit arbeite ich weiter an der Auswertesoftware um den Sensor schliesslich in die automatische Datenerfassung einbinden zu können. Eine ungeklärte Frage bleibt noch: Welches Gehäuse passt um den Sensor wetterfest einbauen zu können ?

 


Lärmsensor

Lärm ist ein Stressfaktor. Was liegt also näher, als diesen Umweltfaktor ebenfalls zu messen ? Verwendet wird dazu das Komplettpaket Lärm der Firma AK Modul-Bus Computer GmbH. Ursprünglich für die Erfassung und Dokumentation von Fluglärm des deutschen Fluglärmdienst e.V. gedacht, "missbrauche" ich es für die Aufzeichnung von Strassen- und sonstigem Lärm.

Das eigentliche Messmodul (Mikrofon und Elektronik) befindet sich dabei draussen, die Auswerteelektronik mit seriellem Anschluss hat eine Verbindung via Seriell/IP-Wandler mit der Steuersoftware. Mehr Infos hierzu folgen, sobald das System installiert ist.

 


Wetterbox

Die Kabel aller Sensoren laufen in der Wetterbox zusammen. Zudem befinden sich hier die elektronischen Schaltungen der Windrichtung sowie Windgeschwindigkeit, die Batteriegestütze Elektronik des Regen und Geigerzählers sowie die Schaltung für die Detektierung der Blitze.

Das "Herzstück" der Wetterstation im Aussenbereich. Die Wetterbox. Links die Elektronik der Windsensoren, in der Mitte der Zähler der Regen- sowie Geigerimpulse rechts die Blitzdetektierungselektronik. An die Leuchtenklemmen werden die restlichen Sensoren sowie die Zuleitung zum Wetterserver angeschlossen.

 


Wetterrack

Das "Herzstück" der Wetterstation, die Steuerung und Verbindung zum Internet. Eingebaut in einem defekten 19" VoIP-Gateway von Patton. Ich nenne es "das Wetterrack". Rechts oben ist die 12V Stromversorgung, links daneben das zweite Netzteil für die 9V Erzeugung. In der Mitte in der grauen Box befindet sich der Barometer.
 
Links die Elektronik des Schneesensors, rechts die Auswerteeinheit der Blitzortung TOA.
 
Links die zusätzliche 9V Stromversorgung Marke "Eigenbau", rechts die Montage der LED von der Blitzortung
Die Anschlüsse des Wetterracks (zugegeben der Leim schmierte etwas --> nicht schön aber zweckmässig).

 


Wetterstation

Es ist soweit, die Station kann zusammengebaut werden. Dazu habe ich alle Sensoren an einen Holzpfosten montiert. Die Kabel werden in der Wetterbox zusammengeführt und angeschlossen. Unten ein paar Bilder während der Verkabelung (links) und wie die eigentliche Messstation nun aussieht (rechts). Der definitive Standort der Station ist gefunden (wenn auch nicht ganz optimal). Aber die Daten werden erfasst, ausgewertet und auf der Webseite veröffentlicht.

Die fertige Station an ihrem definitiven Standort Die Station von oben

 


Geschichtlicher Stationsaufbau

/tr>
  •  
  • Juli 2010Bestellung der ersten Sensoren bei HobbyBoards.com
  •  
  • diverseKontinuierlicher Stationsaufbau. Das genaue Datum ist unbekannt.
  •  
  • Oktober 20102. Bestellung weiterer Sensoren bei HobbyBoards.com
  •  
  • November 2010Bestellung Schneehöhensensor bei Jens Dietrich
  •  
  • Dezember 2010Bestellung und Aufbau der Gewitterortung nach einem Bausatz von blitzortung.de
  •  
  • 29. Januar 2011Meldung meiner Wetterdaten an wetter.com
  •  
  • 18. Februar 2011Bestellung des Sonnensensors bei Reinhardt-Wetterstationen
  •  
  • 2. März 2011Meldung meiner Wetterdaten an Regiowetter
  •  
  • 2. Mai 2011Integration des TOA-Radars (Darstellung der ermittelten Blitze als Radarbild) auf meiner Webseite.
  •  
  • 15. Juni 2011Sonnensensor softwaretechnisch erfolgreich in die Station integriert.
  •  
  • 30. Juni 2011Anfrage von Hydreon für Bilder meiner Wetterstation, resp. der Verwendung des optischen Regensensors. Im Gegenzug erhalte ich einen zweiten Sensor.
  •  
  • 22. Juli 2011Programmcode optimiert und Problem mit Windgeschwindigkeit eliminiert (UV- und Sonnensensor werden nur noch 1x pro Minute abgefragt.
  •  
  • 23. Juli 2011Neues Wettergehäuse für Temperatur, Feuchte und Helligkeit montiert.
  •  
  • 24. Juli 2011GPS-Empfänger für Blitzortung sowie Sonnensensor an definitivem Standort montiert.
  •  
  • 30. Juli 2011Meine Wetterdaten werden nun auch auf der Webseite von wettermelder.sf.tv angezeigt.
  •  
  • Januar 2012Vermehrte Aktivität mit OWFS zwecks 'einfacherer' Datenerhebung. Mithilfe bei Codeverbesserung des T8A in OWFS.
  •  
  • Februar 2012SF Wettermelder hat nie richtig funktioniert. Auch ist von Seiten SF kein Interesse an einer Lösung vorhanden. Mein Kontakt von SF-Meteo meldet sich seit dem Januar 2012 nicht mehr. Habe die Wettermeldung daher eingestellt.
  •  
  • Februar 2012Diverse Code-Optimierungen aufgrund von Fehlermeldungen. Insbesondere mit dem T8A resp. der Offset-Berechnung des Sonnensensors.
  •  
  • 03. März 2012Endlich ist mein lang ersehnter Geigerzähler fertiggestellt und funktioniert. Die Einbindung in die Wetterstation gestaltet sich jedoch schwieriger als gedacht und verzögert sich aufgrund meinen eher "bescheidenen" Elektronik-Kenntnissen ein wenig :-(.
  •  
  • 18. März 2012Codeoptimierung für die Berechnung der Windböen (jetzt sollten Windböen grösser als die Schallgeschwindigkeit nicht mehr auftreten). Danke an Karl Uppiano welcher mich auf die richtige Spur des Fehlers brachte (er hatte das Selbe Problem).
  •  
  • 22. April 2012Mittlerweile ist auch das passende Gehäuse für meinen Geigerzähler eingetroffen.
  •  
  • 29. April 2012Der Geigerzähler ist nun ebenfalls in die Wetterstation eingebunden. Vorerst zählt er lediglich die Impulse, die Umrechung in Dosisleistung (mSv --> milliSievert, resp. mikroSievert) erfolgt später (wenn überhaupt möglich)
  •  
  • 13. Mai 2012Nach Firewallupgrade Probleme mit dem Sonnensensor (TCP-Verbindung zum OneWire Ethernet-Server blieb hängen --> naja wenn mans gefunden hat, ist es schnell behoben. Aber finde das Problem mal ...). Beim Beheben Codeerweiterungen implementiert um das Windproblem endlich beheben zu können.
  •  
  • Februar 2013Station down infolge Umzug. Am neuen Wohnort wird die Station neu zusammengebaut und an einem besseren Standort (Dach) montiert. Auch wird die Datenerfassung/Verarbeitung überarbeitet. Da gewisse Sensoren (insbesondere Wind) immer wieder für Ärger sorgten, wird der Bus weiter aufgeteilt und direkt an OWFS (auf einem Raspberry Pi) angeschlossen.
  •  
  • 30. Juli 2013Der neue Wettermast für die Sensoren über dem Dach ist montiert. Die Höhe über Boden beträgt 6.5m. Der Mast besteht aus einem Alurohr mit 50mm Durchmesser und einer Wandstärke von 5mm. An der Fassade montiert ist er mit stabilen Sat-Halterungen. Die Sensoren für Wind, Sonne, UV-Strahlung sowie der Wolkensensor werden daran montiert. Infolge der andauernden Problemen mit dem "alten" Windsensor, habe ich mich entschieden etwas Geld auszugeben und einen annähernd professionellen Wind-/Windrichtungssensor anzuschaffen. Es handelt sich um den WGWR 1MV - Sensor von Reinhardt, welcher über einen Seriell-zu-IP-Wandler an den Server angeschlossen ist. Die Reinhardt-Software liefert im Moment die Wetterdaten auch gleich an AWEKAS.
  •  
  • Mai 2014Die neue Wetterstation im Garten ist montiert und angeschlossen. Alle Sensoren werden neu via Raspberry Pi (immer noch OneWire) angesprochen und ausgelesen. Im Moment schreibe ich die bestehenden Skripte den Raspberry um. Sobald dies geschehen ist, werden die Werte auch wieder auf der Webseite veröffentlicht.

     


    Diese Seite ist noch in Arbeit.