Temperatur- und Feuchtigkeitsmessungen mit dem AVR Webserver

ArticleCategory: [Choose a category, do not translate this]

Hardware

AuthorImage:[Here we need a little image from you]

[Photo of the Author]

TranslationInfo:[Author + translation history. mailto: or http://homepage]

original in en Guido Socher

AboutTheAuthor:[A small biography about the author]

Guido likes Linux because it is a really good system to develop your own hardware.

Abstract:[Here you write a little summary]

Der tuxgraphics AVR Webserver hat eine Menge generelle IO Pins, an die externe Hardware wie Sensoren sehr leicht angeschlossen werden können.

In diesem Beispiel benutzen wir den sensirion sht11 Sensor zum All das machen wir mit nur einem Sensor. Es werden keine weiteren Komponenten benötigt.

ArticleIllustration:[This is the title picture for your article]

[Illustration]

ArticleBody:[The article body]

Der sht11

Der sht11 von www.sensirion.com ist ein voll kalibrierter Sensor. Kein einziges externes Bauteil wird gebraucht, um ihn zusammen mit dem AVR Microcontroller zu benutzen. Er hat: Ein Datenblatt ist im Downloadabschnitt von diesem Artikel verfügbar oder von www.sensirion.com.

Es ist Sensor mit sehr guter Qualität, der in der Schweiz entwickelt wurde.

Ein paar Dinge sind etwas irreführend, wenn man das Datenblatt des Sensors liest und ich möchte sie hier erwähnen, um Überraschungen zu vermeiden:

Was man braucht



... und dies ist, was man bekommt:


Feuchtigkeits- und Temperaturdaten sind verfügnar vom jedem Webbrowser. Du kannst sie sogar für dein Handy verfügbar machen, wenn du deinen DSL Router entsprechend konfigurierst.

Was ist der Taupunkt?

Die Taupunkttemperatur ist die Temperatur, zu der die Luft soweot angekühlt ist, dass sie saturiert ist.Wenn die Temperatur auf den Taupunkt abgekühlt ist, können Nebel und Tau auftreten.

Beispiel: In deinem Badezimmer mißt du 23'C Und 61% Humidität (Feuchtigkeit). Der resultierende Taupunkt ist über 15'C. Wenn deine Fenster oder Wandtemperatur 15'C oder weniger betragen würden, dann würde es nass.

Den Sensor verbinden

Der SHT11 Feuchtigkeits- und Temperatursensor kann wie folgt mit dem Atmega Microcontroller verbunden werden. Es werden keine weiteren Bauteile benötigt.

An Pin 1 (oben) und die Pins rechts muß nichts angeschlossen werden. Sie scheinen für Tests und die Kalibration während der Produktion verwendet zu werden.

Du brauchst nur einen IO-Pin mehr pro weiterem Sensor, für den Fall, dass du mehr als einen Sensor anschließen willst. Die sck Zeile kann geteilt werden, aber jeder sensor braucht seine eigene Datenzeile, da die Sensoren alle identisch sind und sonst nicht mit dem Bussystem verbunden werden können.

Das sensirion_protocol.c, das im Downloadabschnitt verfügbar ist, erwartet, dass der Sensor wie folgt angeschlossen ist:
SHT11Webserver board
Vcc 3.3V (available on the analog port)
Data PD1 (available on the digital IO port)
SCK PD0 (available on the digital IO port)
GNDGND (available on the digital IO port)

Man kann dies beliebig ändern. Editiere einfach die Definitionen am Anfang von sensirion_protocol.c.

Der Code, um dies zu machen

Obwohl der Sensor nicht I2C konform ist, ist es trotzdem möglich, ihn mit einem AVR Mikorcontroller zu integrieren mit weniger als 1kb kompiliertem C-code. Alles mit wirklich sehr kleinem Code: Messung, Einheitsumwandlung, Prüfsummenberechnung und Taupunktberechnungen. Du kann den benötigten Code im Download-Abschnitt herunterladen. Er ist Teil des tar-archive des AVR Webservers. Im tar-archive findest du 3 Dateien: sensirion_protocol-NOcrc.c sensirion_protocol-crc.c und sensirion_protocol.h, die für die Schnittstelle mit dem SHT11 Sensor verantwortlich sind. sensirion_protocol-NOcrc.c ist ein kleines bißchen kleiner und führt keine CRC8 Prüfsummenberechnungen durch. sensirion_protocol-crc.c benutzt CRC8. wenn der Sensor nahe beim Microcontroller ist (2-50 cm Kabel), ist es nicht nötig, die Daten gegen Beeinträchtigungen oder Übertragungsfehler zwischen dem Sensor und dem Mikrocontroller zu schützen. Du kannst dann die Datei ohne CRC8 Berechnungen benutzen. Eine der beiden Dateien (sensirion_protocol-NOcrc.c oder sensirion_protocol-crc.c) sollte auf den Namen sensirion_protocol.c kopiert werden und sensirion_protocol.c ist das, was dann durch das Makefile kompiliert wird.

Der tatsächliche Gebrauch des von sensirion_protocol.h zur Verfügung gestellten apis ist dann sehr einfach:
#include "sensirion_protocol.h"

unsigned int humival_raw,tempval_raw;
unsigned char error;
int temp, dew;
unsigned char rh;

//measure temperature
error=s_measure( &tempval_raw,0);
if (error==0){
    error=s_measure( &humival_raw,1); //measure humidity
}

// measurement was OK (you could use error to detect if there
// is no sensor attached of if there is a CRC data integrity problem.
// We don't do this here to keep the example short).
if (error==0){
    temp=calc_sth11_temp(tempval_raw); // calculate temperature
    rh=rhcalc_int(humival_raw); // calculate relative humidity.
    dew=calc_dewpoint(rh,temp); // calculate dew point temperature
}
//
// That's it. Now you have temperature in Celsius * 10 in temp (e.g 251 for
// 25.1'C), dew-point in dew and relative humidity (values 0-100 %) in rh.

Das obige Beispiel ist da für den Fall, dass du den Sensirion Sensor as Teil deiner eigenen Entwicklung verwenden willst. Wenn du den Sensor zusammen mit dem AVR Webserver von tuxgraphics benutzen willst, dann muß nichts geschrieben oder geändert werden. Benutze einfach das tar-archive aus dem Downloadabschnitt so wie es ist und folge der enthaltenen README.htm Datei.

Meien Anwendung

Es gibt sicherlich viele Anwendungen hierfür. Man kann es überall benutzen, wo man einen oder alle der Werte Temperatur, Taupunkt und Feuchtigkeit messen möchste.

Ich möchte hier nur erzählen, was mein Gebrauch dafür ist. Wenn ich in den Urlaub fahre, dann drehe ich normalerweise die Heizung im Haus ab, um Kosten zu sparen. Das Problem dabei ist, dass es entweder zu kalt oder zu feucht im Haus werden kann.Wenn du ein Fenster offen läßt, dann wird es vielleicht zu kalt. Wenn du das Fenster zu läßt, dann kann es sehr tropisch werden (=zu feucht) wegen der Blumen in den Räumen und fehlender Lüftung. Mit diesem Sensor kann ich die Situation beobachten und die Nachbarn bitten, ein Fenster für eine Weile zu öffnen, wenn es nötig ist.

Ich kann das jederzeit von meinem Handy oder einem Computer beobachten.

Viel Spaß und fröhliches Löten!

Referenzen