Unterrichts- und Lernmaterial für Mikrocontroller
Unterrichts- und Lernmaterial fürMikrocontroller

Bevor man dieses Thema bearbeitet, ist es sehr hilfreich, die vorherigen Kapitel

durchgearbeitet zu haben.

1 - Temperaturmessung mit dem TMP36

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.

2 - Kenndaten des Sensors

3 - Vorversuch

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
  • 1x  Arduino UNO
  • 1x  TMP 36GZ Temperatursensor
  • 1x  Kondensator, 100nF, keramisch
  • 1x  Steckbrett
  • 5x  Steckdraht
  • 1x  Datenblatt des Sensors TMP 36GZ  (im Internet googeln und herunterladen).
Aufgaben
  • Baue die Schaltung nach der Schaltskizze auf.
  • Pin 1 wird mit dem 3,3V Anschluss auf dem Arduino UNO Board verbunden.
  • Pin 2 wird mit A0 auf dem Arduino UNO Board verbunden.
  • Pin 3 wird mit einem GND-Pin auf dem Arduino UNO Board verbunden.
  • Der keramische 100nF-Kondensator wird mit den Polen der Energiequelle (+5V und GND)  verbunden (siehe Datenblatt). Die Zuleitung sollte so kurz wie möglich sein.
  • Gib das Programm xbee_tmp_1.ino in den Editor ein und speichere es ab.
  • Starte das Programm.

Versuchsaufbau

Abbildung 1 - Schaltungsaufbau auf dem Steckbrett und die Verbindungsleitungen zum Arduino UNO

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

Abbildung 2 - Das Programm xbee_tmp1.ino

4 - Wie arbeitet das Programm?

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

Abbildung 3 - Die Temperaturmesswerte werden im Terminal ausgegeben. Durch Berühren des Sensors mit Daumen und Zeigefinger erhöht sich die Temperatur.

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.

5 - Das XBee-USB-Adapter Board

 

 

 

 

 

 

 

 

 

 

 

 

 

Abbildung 4 - XBEE USB Adapter Board der Fa. Parallax Inc. Es werden 22 Anschlüsse herausgeführt; 20 Anschlüsse des XBee-Moduls plus ein zusätzlicher GND- und ein 5V-Anschluss.

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.

Abildung 5 - Anschlussbelegung auf dem XBEE-USB-Adapter Board der Fa. Parallax Inc.

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.

6 - Das Sendermodul aufbauen und konfigurieren

Das Sendermodul aufbauen und konfigurieren
Material
  • 1x  XBee-USB Adapter Board (z. B. von Fa. Parallax)
  • 1x  XBee Modul XB24 802.15.4 PCB Antenne oder ähnlichen (die Produktlinie von XBee ist neu aufgelegt worden; das Nachfolgemodell des XB24 ist der XBee S2C 802.15.4 mit PCB Antenne)
  • 1x  USB-Verbindungskabel zum Computer
  • 1x  Steckbrett
  • 1x  Kondensator, keram., 100nF
  • 1x  TMP36 Sensor
  • 4x  Steckdraht, kurz
Aufgaben
  • Baue die Sender-Schaltung nach Abbildung 1 auf dem Steckbrett auf.
  • Setze das XBee-Module Sender in das XBee-USB-Board ein und schließe das USB-Kabel an.
  • Starte das Programm X-CTU auf dem PC.
  • Setze das Modul mit Default auf die Werkseinstellungen zurück.
  • Ändere im Verzeichnis Networking & Security MY - 16-Bit Source Address in 815
  • Ändere im Verzeichnis Networking & Security DL- Destination Address in 4711
  • Im Verzeichnis I/O Settings ändere DO - DIO0 auf  ADC[2].
  • Im Verzeichnis I/O Settings ändere IT - Samples in TX = 01.
  • Im Verzeichnis I/O Settings ändere Sample Rate in EA60.
  • Übertrage die Änderungen mit dem Befehl Write in das XBee Modul.

Die Samplerate wurde auf 60.000ms oder 1 Minute eingestellt.

7 - Das Empfängermodul aufbauen und konfigurieren

Das Empfängermodul aufbauen und konfigurieren
Material
  • 1x  XBee-Shield
  • 1x  Arduino-UNO Board
  • 1x  Steckernetzteil
  • 1x  USB Verbindungskabel
  • 1x  XBee Modul XB24 802.15.4 PCB Antenne oder ähnlichen (die Produktlinie von XBee ist neu aufgelegt worden; das Nachfolgemodell des XB24 ist der XBee S2C 802.15.4 mit PCB Antenne)
Aufgaben
  • Baue die Sender-Schaltung nach Abbildung 2 auf dem Steckbrett auf.
  • Setze das XBee-Modul Empfänger in das XBee-USB-Board ein und schließe das USB-Kabel an.
  • Starte das Programm X-CTU auf dem PC.
  • Setze das Modul mit Default auf die Werkseinstellungen zurück.
  • Ändere im Verzeichnis Networking & Security MY - 16-Bit Source Address in 4711
  • Ändere im Verzeichnis Networking & Security DL- Destination Address in 0815
  • Im Verzeichnis I/O Line Passing ändere IA I/O Input Address in FFFF.
  • Übertrage die Änderungen mit dem Befehl Write in das XBee Modul.

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.

Abbildung 6 - Die im Konsolenfenster von XCTU angezeigten Datenwerte.

8 - Auswertung der übertragenen Daten

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!

9 - Messwertschwankungen eindämmen

Je nach Schaltungsaufbau mit dem Temperatursensor auf einem Steckbrett haben sich bei mir große Messwertschwankungen ergeben (Abb. 7).

Abbildung 7 - Messwertschwankungen bei der Temperaturmessung mit einem TMP36

Wenn die Schaltung stabil laufen soll, dann MÜSSEN

  • der Kondensator von 100nF zwischen den Polen eingebaut sein und
  • die Verdrahtung des Sensors mit dem XBee Modul mit möglichst kurzen Drähten (kein Litzenkabel, Länge < 8 cm) erfolgen.

10 - Aufzeichnung und Auswertung der Messwerte

Ü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).

Abbildung 8 - Ausschnitt aus einem Messprotokoll mit einem Sensor TMP36

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.

 

 

 

Abbildung 9 - Die Messdaten wurden in eine Excel-Datei übertragen. Das Aufnahmedatum und andere Datenspalten aus dem Messprotokoll wurden nicht übernommen.

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.

Abbildung 10 - Eintragungen der Funktionsargumente beim Funktionsaufruf von =TEIL

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:

Abbildung 11 - Umrechnung des Hexadezimalwertes in Grad Celsius

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.

11 - Mehrere Temperatur-Messstationen

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:

Abbildung 12 - Zwei Temperatursensoren TMP36 übertragen ihre Daten in einem Sternnetzwerk an das Empfängermodul 4711.

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.

Kommentar schreiben

Kommentare

  • olaf (Sonntag, 10. Dezember 2017 08:35)

    wow...die mit Abstand beste Site, die ich bisher zu diesem Thema gesehen habe :-))
    Vielen Dank dafür. Hilft super beim Erklären!!

  • David Eisenblätter (Sonntag, 11. Februar 2018 13:38)

    Sehr schön erklärt, und zufällig heute, wo ich nochmal nach einer detailierten Gedankenstütze diesbezüglich gesucht habe!

    Vielen vielen Dank!

    David.

Bitte geben Sie den Code ein
* Pflichtfelder
Druckversion Druckversion | Sitemap
© Reinhard Rahner - Gettorf