Bevor man dieses Thema bearbeitet, ist es sehr hilfreich, die vorherigen Kapitel
durchgearbeitet zu haben.
Für dieses Thema werden Temperatursensoren vom Typ TMP36 eingesetzt. Der Grund, warum auf dieses Bauteil zurückgegriffen wird, ist der günstige Preis und der einfache Schaltungsaufbau. Kalibrierungsarbeiten sind nicht notwendig und die Genauigkeit der Temperaturmessung reicht für unsere Belange vollständig aus.
Die Ausgangsspannung Ua des Temperatursensor TMP36GZ ist proportional zur Temperatur in Grad Celsius, bei einer Genauigkeit von +/-2° C im Bereich zwischen -40°C und +125°C.
Die Anschlussbelegung des Sensors zeigt das nachfolgende Bild.
Die wichtigsten Kenndaten des Sensors TMP36 sind dem Datenblatt zu entnehmen. Einige Größen listet die folgende Tabelle auf.
Bevor es an den Aufbau eines kleinen XBee-Netzwerkes geht, über das dann Temperaturen abgefragt werden können, schauen wir uns erst einmal den Sensor TMP36, einen möglichen Schaltungsaufbau und sein Verhalten in der Schaltung genauer an.
Vorversuch Temperaturmessung mit dem TMP 36 | |
Material |
|
Aufgaben |
|
Versuchsaufbau
Im Versuchsaufbau ist der Temperatursensor an 3,3V angeschlossen. In meinem eigenen Versuch habe ich den 5V Anschluss benutzt und darauf beziehen sich im Programm xbee_tmp1.ino dann auch die benutzte Formel und Umwandlung.
Das Programm xbee_tmp1.ino
Die Funktion getSpannung(tmp) liest den an A0 anliegenden und vom 10-Bit ADC ausgegebenen Messwert ein. Dieser Zahlenwert liegt zwischen 0 und 1023; er muss anschließend auf einen Spannungswert umgerechnet werden; dabei ist entscheidend, welcher maximale Spannungsbereich dem Sensor zur Verfügung steht. Die Versorgungsspannung des Arduino UNO liegt nach Herstellerangaben bei 5V. Eine Messung mit dem Oszilloskop an meinem Arduino UNO ergab, dass die Klemmenspannung bei 4,77V liegt. Damit ergibt sich für die Umrechnungsformel (klassischer Dreisatz):
In Programmzeile 22 taucht der Umrechnungsfaktor von 0,0046627566 auf; er muss individuell angepasst werden, da die Klemmspannung der Arduino UNO Boards unterschiedlich ausfallen.
Wenn auf dem Steckbrett alles richtig verkabelt ist und das Programm gestartet wurde, öffne über Werkzeuge - Serieller Monitor im Hauptmenü des Arduino Editor das Terminalfenster. In ihm erscheinen jetzt die Temperaturmesswerte.
Terminalausgabe
Wie der Temperatursensor TMP 36 arbeitet, ist uns jetzt bekannt. In einem nächsten Schritt soll dieser Sensor über einen XBee abgefragt und die ausgelesenen Daten an einen PC übertragen werden.
Die Pinbelegung des XBEE-USB-Adapter Boards der Firma Parallax Inc. stellt die Spannungen +5V und +3,3V auf dem Board bereit. 5Volt liegen am Pin 12 (VDD) an; 3,3V am Pin 2 (VCC). Der GND Anschluss liegt an Pin 1 (VSS) und zusätzlich an Pin 11.
Etwas verwirrend beim Parallax Board ist, dass ein XBee-Modul 20 Anschlüsse hat, während das Adapter Board über 22 Anschlüsse verfügt. Das verleitet zu falschen Anschlussbelegungen. Deshalb:
Achtung bei der Verdrahtung der Bauteile. Eine falsche Spannungsversorgung macht einen XBee-Modul kurzfristig zur Heizung und das war´s;-)
Die Pinbelegung des Adapter Boards zeigt die folgende Abbildung.
Mit Hilfe von vier LEDs werden vier unterschiedliche Statussituationen angezeigt. Die gelbe LED leuchtet, sobald über die USB-Verbindung oder durch eine externe Quelle 5V an VDD anliegt. Die grüne LED zeigt an, dass das Modul eingeschaltet und nicht im Stand-by Modus ist. Die blaue LED ist mit dem RSSI Pin und die rote mit dem Associate Pin des XBees verbunden.
Das Sendermodul aufbauen und konfigurieren | |
Material |
|
Aufgaben |
|
Die Samplerate wurde auf 60.000ms oder 1 Minute eingestellt.
Das Empfängermodul aufbauen und konfigurieren | |
Material |
|
Aufgaben |
|
Das Empfängermodul auf dem Arduino UNO XBee-Shield bleibt über das USB-Kabel mit dem PC verbunden. Von der Konfigurationsansicht wird im Programm XCTU jetzt auf die Konsolenansicht umgeschaltet. Die übertragenen Daten zeigt die folgende Abbildung.
Die Aktivsignal-Bytes lassen sich über die nachfolgende Tabelle dechiffrieren. In HighA steht die Zahl 2 (binär 0b00000010) und in LowA die Zahl 0 (binär 0b00000000).
Aus der Tabelle ist zu entnehmen, dass nur der analoge Port A0 als Eingang aktiv ist, und alle digitalen I/O Ports D0 - D7 inaktiv sind. Es werden somit keine digitalen Signale vom Sender übertragen. An den Empfänger wird mit jeder Übertragung eine 10-Bit Messprobe gesendet. In dem hier vorliegenden Beispiel ist es 00 E9 (0x00E9 oder 0b0000 0000 1110 1001).
Informationen aus den Datenpaket-Bytes ziehen
Der binären Zahl 0b1110 1001 entspricht im Dezimalsystem die Zahl 233. Da ein 10-Bit AD-Wandler 1024 verschiedene Zustände zwischen 0 und 3,3V annehmen kann, entspricht einem Wert von 233 bei einer Referenzspannung von 3,3V ein Spannungswert von 233/1023 * 3,3Volt. Das ergibt einen Spannungswert von 0,75161 Volt. Die Temperatur in Grad Celsius errechnet sich dann über die Formel
Der errechnete Temperaturwert liegt bei 25,2° C. Das entspricht der Temperatur in meinem Büro!
Je nach Schaltungsaufbau mit dem Temperatursensor auf einem Steckbrett haben sich bei mir große Messwertschwankungen ergeben (Abb. 7).
Wenn die Schaltung stabil laufen soll, dann MÜSSEN
Über das Programm XCTU lassen sich die im Terminal angezeigten Messwerte in einer Datei auf der Festplatte eines Rechners abspeichern und anschließend weiter verarbeiten. Im Messprotokoll sind neben den aufgezeichneten Messdaten auch der Tag, die Einstellungen der Messeinrichtung und zu jeder Messung der Tag und die Zeit eingetragen (Abb. 8). Tagesdatum und Zeit werden vom angeschlossenen PC übernommen (Systemdaten).
Zur Verarbeitung der Daten wird das Programm EXCEL aufgerufen. Über das Hauptmenü Daten - Externe Daten importieren - Daten importieren wird die Datenquelle ausgewählt.
Im Schritt 1 des sich öffnenden Textkonvertierungs-Assistent wird bei Import beginnen in Zeile der Wert 3 (im hier vorliegenden Fall) eingestellt und als Ursprünglicher Datentyp Getrennt markiert. Im Schritt 2 wird als Trennzeichen Komma eingestellt und in Schritt 3 werden die Spalten 2 und 3 (Nummerierung und RECV) von der Übertragung ausgeschlossen, indem als Datenformat der Spalten der Auswahlknopf Spalten nicht importieren (überspringen) aktiviert wird. Wird die Zeitangabe ebenfalls nicht benötigt, kann auch sie von der Übertragung nach gleichem Muster übersprungen werden.
Mit einem Klick auf den Button Fertig stellen, werden die Daten in das Excel Datenblatt übertragen und lassen sich weiter verarbeiten.
Aus Abschnitt 8 und 9 wissen wir, dass sich die Temperaturdaten ganz am Ende der Datensequenz befinden, vor der Prüfsumme.
Mit Hilfe des Excel-Befehlsaufrufs Einfügen - Funktion... - TEIL - OK lassen sich jetzt die Temperaturwerte aus der Datenreihe isolieren.
An der 25. und 26. Position der Datensequenz befindet sich die Temperaturinformation. Die beiden Zeichen werden durch die Funktion =TEIL(b3;25;2) isoliert und in diesem Beispiel in der Spalte C meines Spreadsheets ausgegeben.
Die isolierten hexadezimal dargestellten Temperaturwerte müssen in Dezimalwerte konvertiert und anschließend entsprechend in Temperaturwerte in der Einheit °Celsius umgerechnet werden. Dies leistet die folgende Umrechnungsformel im Excel-Spreadsheet:
Am Ende erhält man die isolierten Temperaturwerte und kann sie über Excel grafisch darstellen. Für meine Messungen ergab sich die folgende Darstellung:
Wenn die Funktion HEXINDEZ in Excel nicht verfügbar ist, muss sie im Menü Extras - Add-Ins über Verfügbare Add-Ins und aktivieren von Analyse-Funktionen nachinstalliert werden. Dazu ist im allgemeinen die Installations-CD der Software notwendig und sollte bereit gehalten werden.
Bis hierher wurde gezeigt, wie man die Temperatur über einen MC automatisch aufzeichnen lassen und anschließend auswerten kann. Das gelingt natürlich auch mit mehreren Sensoren.
Dazu müssen ein oder mehrere Temperatursensor(en) mit je einem XBee-Sendermodul - wie in Abschnitt 6 beschrieben - verbunden und konfiguriert werden.
Alternativ lassen sich an einem XBee-Modul bis zu sechs analoge Sensoren auswerten; er verfügt ja über sechs ADCs. In diesem Beispiel befindet sich der zweite Temperatursensor in einem weit entfernten Raum, deshalb muss ein zweites XBee-Modul her.
Die Konfiguration ist identisch zu der in Abschnitt 6 beschriebenen, mit der einen Ausnahme, dass jeder neue Sensor eine neue MY-Adresse erhält. Jeder Sender schickt seine Daten an das Empfänger-Modul 4711, wo die Daten gesammelt und anschließend ausgewertet werden.
In diesem Beispiel mit insgesamt zwei Sensoren, werden die MY-Adressen 0815 und 0816 vergeben.
Nach der Konfiguration kann jedes Modul innerhalb des Sendebereiches (maximal 100m im Freifeld, ca. 30m innerhalb von Gebäuden) platziert werden und überträgt seine Daten an den Empfänger 4711. Das Sendeprotokoll für die beiden Temperatursensoren zeigt die folgende Abbildung:
Im Terminalfenster (Konsolenfenster) von XCTU werden die einlaufenden Daten angezeigt. Beide XBee-Module übertragen alle 60s den vom jeweiligen TMP36 gemessenen Temperaturwert an die Basisstation 4711. Die Auswertung der Daten kann, wie in Abschnitt 10 beschrieben, erfolgen.
240309