Ein wie ich finde recht interessantes Projekt ist auch der Aufbau einer kleinen Wetterstation. Limitiert wird das ganze im Prinzip nur durch die eigene Vorstellungskraft sowie den Geldbeutel. Wobei der letztere allein schon bei der Auswahl der Sensorik gehörig strapaziert werden kann. Zunächst gilt es zu überlegen, welche Umweltgrößen eigentlich gemessen werden sollen. Hierfür bieten sich an:
Als Zusatzfeature soll die Station natürlich auch die aktuelle Uhrzeit anzeigen können. Die nötigen Informationen dafür finden sich hier.
Für alle oben genannten Größen lassen sich Sensoren in verschiedensten Bauformen und Preisklassen finden. Auch gilt es zu unterscheiden, ob deren Signal eine analoge oder digitale Größe ist.
Für die Temperatur bieten sich beispielsweise die folgenden an:
Für Druckmessungen findet man viele Sensoren, allerdings arbeiten nicht alle im eigentlich gewünschten Druckbereich. Verwenden könnte man beispielsweise:
Zum Messen der Luftfeuchte gibt es:
Zum Messen von Luftfeuchte und Temperatur ist dieser Sensor erhältlich:
Zuletzt noch zur Indikation der Helligkeit:
Wie man sieht, gibt es durchaus genügend verfügbare Sensoren für die gewählte Aufgabenstellung. Die Preise der einzelnen Elemente gehen von wenigen Cent für eine Fotodiode bis zu 25-30€ für einen Drucksensor bzw. den SHT75.
Die Visualisierung der gewonnenen und
ausgewerteten Daten erfolgt über ein 4*20 LCD mit blauer Hintergrundbeleuchtung
und weißer Schrift, denn die Sache soll unterm Strich schon ein "Hingucker"
werden :-)
Allerdings muss ich schon hier darauf hinweisen, dass dieses Display mit dem
Controller KS0073 bestückt ist. Dieser ist alles andere als HD44780 kompatibel,
so dass ich einige Änderungen in der bis hierhin gut funktionierenden
LCD-Bibliothek von Peter Pfleury vornehmen musste. Das Problem liegt darin, dass
man bei der Initialisierung zunächst ein Extension-Bit aktivieren muss, um den
4-Zeilen-Modus aktivieren zu können. Danach muss das Bit wieder gelöscht werden.
Die Anpassung der Display-Adressen (Zeilenbeginn) kann als formal betrachtet werden, da diese
bei fast jedem Display zu ändern sind.
Nun gilt es, eine geeignete Wahl bezüglich des Mikrocontrollers zu treffen:
Für die Temperatursensoren von Dallas reicht im
Prinzip ein Pin. Durch den 1-Wire-Bus ist es ohne Probleme möglich, diverse
Sensoren an einen Pin anzuschließen und getrennt anzusprechen. Der AD592AN wird
mindestens einen AD-Pin benötigen, welcher 10 Bit Auflösung beherrscht. Mit 8
Bit ist meiner Ansicht nach kein Blumentopf zu gewinnen. Es wird sich zeigen, ob
eventuell noch ein externer Wandler mit 12 Bit hinzugezogen werden muss. Auch
gilt es, eine geeignete Beschaltung für den Sensor zu entwickeln. Der SHT75 wird
zwei weitere digitale Ports benötigen.
Der von mir verwendete Drucksensor benötigt einen AD-Pin mit 10 Bit Auflösung.
Auch hier gilt es abzuwägen, ob der Anschluss eines externen AD-Wandlers
nützlich ist.
Die kapazitiven Sensoren zur Messung der Luftfeuchte benötigen je nach gewählter
Beschaltung entweder je einen digitalen Pin bzw. je einen AD-Pin.
Die Helligkeitssensoren benötigen funktionsbedingt auch je einen AD-Pin mit
mind. 10 Bit Auflösung.
Gesamt zeigt sich, dass die Wahl allein aufgrund der AD-Fähigkeiten nicht mehr
auf einen ATMega8 fallen kann. Deshalb werde ich einen ATMega32 (oder ATMega128) verwenden. Da
die Kosten für den MC im Vergleich zu den Sensoren relativ gering sind, fällt
dieser Schritt auch nicht weiter schwer.
Da ein Abhandeln der einzelnen Sensoren in einer HTML-Seite die Übersichtlichkeit doch arg gefährden würde, habe ich jedem eine eigene Seite gewidmet.
Wer der Meinung ist, dass das Verwenden so vieler Sensoren, welche von ihrer Funktion her zum Teil auch redundant sind, ein ziemlicher Overkill ist, der mag recht haben. Allerdings wollte ich möglichst viele gängige Sensoren ausprobieren. So ist auch ein besserer Vergleich der Sensoren untereinander möglich. In der endgültigen Applikation werden nicht alle verbaut, für einen Prototypen ist ein großes Testfeld aber durchaus etwas Feines.
Da zum sinnvollen Auswerten der gewonnenen Daten auch ein gewisses Grundwissen erforderlich ist, habe ich hierzu auch noch ein paar Informationen zusammen gestellt.
Sobald meine Wetterstation in Bezug auf Platinendesign und Gehäuseentwurf fertig ist, werde ich natürlich wieder Bilder hier veröffentlichen. Wie die einzelnen Sensoren anzuschließen sind, wurde ja bereits in deren Einzelseiten behandelt.
Gesamt kann bereits gesagt werden, dass der
SHT75 mein Favorit im "Sensortestfeld" war. Zu ihm sind gute Dokumentationen
verfügbar und seine digital ausgegebenen Messdaten sind mehr als zufrieden
stellend. Ein weiterer Vorteil ist, dass man sich größere Eichungen und
Kennlinienaufnahmen schenken kann.
Auch als gut kann man den Lichtsensor TLS250R bezeichnen. Dieser besitzt vor
allem die Fähigkeit, zwischen düster und dunkel noch unterscheiden zu können.
Dies ist meiner Ansicht nach wichtiger, als wenn er zwischen hell und sehr hell
unterscheiden könnte. Somit eignet er sich gut für Helligkeitsregelungen bei
Anzeigen und ähnliche Sachen. Das ganze klingt zwar komisch, aber wer schon
einmal etwas Ähnliches versucht hat, der weiß was ich meine :-)
Parallel zur Entwicklung auf MC-Ebene habe ich mich noch ein wenig mit der Datenvisualisierung befasst. Diese könnte zum einen mit einem Dotmatrix-LCD erfolgen oder auch über den PC. Ich habe mich zunächst mit der zweiten Variante befasst. Die PC-Schnittstelle wurde mit Hilfe von Visual C++ erstellt. Gute Hilfestellung beim Einarbeiten gaben mir:
www.codeproject.com
http://www.c-plusplus.de
Tutorials zur Programmierung mit den MFC (Microsoft Foundation Classes) findet man zuhauf im Internet. Gute Bücher sind dagegen sehr rar gesät. Es empfiehlt sich vor dem Kauf eines solchen bspw. die Kundenrezensionen bei Amazon zu bemühen.
Genug der Vorrede, heraus gekommen ist das folgende:
Damit in den Grafen auf der rechten Seite überhaupt etwas sichtbar wird, habe ich einmal kurz an den SHT75 gefasst. Der COM-Port kann beinahe frei konfiguriert werden. Mein Wetterstation-Prototyp sendet sekündlich einen kompletten Datensatz, dessen Inhalt auf der linken unteren Seite in blauer Schrift dargestellt wird. Dieser Datensatz wird noch anwachsen.
Ziel wird es einmal sein, dass die Wetterstation von einer externen Platine ständig Daten bekommt (vergl. Rubrik Wireless) und diese zu ihrem eigenen Datensatz hinzufügt. Gespeichert werden die Daten auf einem größeren Speicher (z.B. MMC). An den PC wird ein zusätzlicher Transceiver (Funk) angeschlossen. Startet man nun die Software, so beginnt diese automatisch eine Verbindung zur Wetterstation aufzubauen und diese sendet alle verfügbaren Daten (incl. History). Der PC schreibt diese Daten vorerst in ein Log bevor er dann mit der Auswertung beginnt. Er empfängt nun weiterhin im Sekundentakt zusätzlich die aktuellen Daten.
Der externe Teil wird ungefähr das folgende Layout haben:
Ein Großteil der Schaltung sollte klar sein.
Erwähnenswert sind unten die drei eingezeichneten Batterien, welche die gesamte
Schaltung (3*1,2V=3,6V) versorgen. Rechts oben sieht man zum einen den
Spannungsteiler (Überwachung der Batteriespannung) sowie den SHT75. Rechts neben
dem MC befindet sich zusätzlich eine Stiftleiste, in die das Funkmodul gesteckt
wird. Die Spannungsversorgung des Moduls erfolgt über den AVR. So kann es
einfach zum Energie sparen abgeschaltet werden.
Der MC befindet sich im Normalfall ständig in einem Energiesparmodus. Er wird
regelmäßig durch Timer2 reaktiviert, sendet einen Datensatz (Temperatur,
Luftfeuchte, Batteriestatus) und legt sich wieder schlafen.
Inwieweit das alles zusammenspielen wird, kann nur ein Langzeittest zeigen.
Eine pdf-Datei des obigen Schaltplans kann hier herunter geladen werden. Ich habe oben aus Ladezeitgründen mit Absicht nur ein kleines Bild verwendet. Ein Vorgehen, dass nur Modemnutzer wie ich nachvollziehen können :-)
Der Schaltplan für die "Zentrale" wurde mit Absicht einfach gehalten. Sie wird mit einem ATmega128 arbeiten, um eine parallele Kommunikation mit dem PC sowie dem externen Sensor zu ermöglichen. Sie beinhaltet einen Drucksensor, Luftfeuchtesensor sowie einen Temperatursensor. Zusätzlich wird ein LCD, ein DCF77-Empfänger, ein MAX232 (PC-Schnittstelle) sowie ein weiteres Funkmodul verwendet. Ein Batteriebetrieb ist nicht vorgesehen.
Eine PDF-Datei des Schaltplans kann natürlich herunter geladen werden, auch wenn nicht viel dazu ist. Es wird ein externer AD-Wandler verwendet, um die Signale des Lichtsensors sowie des Drucksensors auszuwerten. An den angedeuteten I²C-Bus wird der Temperatursensor LM75 sowie ein paar EEPROMs angeschlossen, um die Daten des externen Sensors puffern zu können. Diese Variante wird später einmal durch eine MMC bzw. CF-Card abgelöst. Zusätzlich wird noch der Temperatursensor DS18S20 verwendet. An Port A wird ein LCD zur Visualisierung angeschlossen.