Wie entwickelt sich die Temperatur im Tagesverlauf? Um diese Daten zuverlässig zu erfassen, bietet sich ein selbstgebauter Datenlogger auf Basis eines Mikrocontrollers an. In diesem Projekt wird ein DS18B20-Sensor zur Messung der Temperatur verwendet. Die erfassten Werte werden in regelmäßigen Abständen im CSV (Comma Separated Values) Format auf einer SD-Karte gespeichert und können anschließend ausgewertet werden.
Hardware
Um die Daten einfach speichern und im Anschluss an den Computer übertragen zu können, bietet sich eine SD-Karte an. Diese kann mittels der SPI-Schnittstelle angesteuert werden.
Mit folgender Hardware ist die Umsetzung, durch die Verwendung eines Shields, sehr einfach:
Sensor (z.B. DS18B20)
Widerstand 4,7kΩ (Widerstandssortiment)
Im Beispiel verwenden wir den DS18B20 Sensor. Dieser wird über die OneWire Schnittstelle angesteuert und ausgelesen. Sie können aber auch andere beliebige Sensoren verwenden.
Löten Sie den Sensor wie folgt auf das Shield:

Abbildung 1: Sensor auf dem Datenlogger Shield
Software
Sensor
Um mit dem Sensor zu kommunizieren werden folgende externe Bibliotheken benötigt:
OneWire von Paul Stoffregen
DallasTemperature von jmchippa
Diese können Sie über die angegebenen Links von GitHub als .zip heruntergeladen werden und in der Arduino IDE unter
Sketch > include Library > Add .zip Library …
ausgewählt und installiert werden.
Alternativ können Sie die Library auch über die integrierte Bibliotheksverwaltung installieren.
Um den Sensor und den oberen Aufbau zu testen, laden Sie folgendes Programm auf den Mikrocontroller:
|
#include <OneWire.h> |
Erklärung:
Zu Beginn des Programms werden die Objekte der Bibliotheksklassen erstellt. Das oneWire Objekt regelt die Kommunikation über die Schnittstelle. Das sensor Objekt sendet die genauen Befehle des Sensors über diese, mit einem Zeiger übergebene, Schnittstelle.
Das Programm können Sie hier herunterladen.
RTC
Auf dem Shield befindet sich ein Real Time Clock Modul (RTC). Dieses kann mittels der I2C Schnittstelle eingestellt und ausgelesen werden. Ist die Uhrzeit einmal konfiguriert, wird diese durch die kleine Batterie, auch ohne Stromversorgung des Mikrocontrollers, fortlaufend aktualisiert.
Um mit dem RTC-Modul zu kommunizieren wird folgende externe Bibliothek benötigt:
RTClib von Adafruit
Diese können Sie über die angegebenen Links von GitHub als .zip heruntergeladen werden und in der Arduino IDE unter
Sketch > include Library > Add .zip Library …
ausgewählt und installiert werden.
Alternativ können Sie die Library auch über die integrierte Bibliotheksverwaltung installieren.
Folgendes Programm kann zum einstellen der Uhrzeit und testen der Funktion verwendet werden:
|
#include "Wire.h" |
Erklärung:
Nach der üblichen Bibliotheksdatei Einbindung und der Erstellung des Objekts, folgt im setup() das Starten der Kommunikation mit dem RTC-Modul und im Anschluss optional das Einstellen der aktuellen Uhrzeit.
Um diese Uhrzeit einstellen zu können, entfernen Sie die Kommentierung und passen Sie die Uhrzeit an. Achten Sie darauf, dass diese Zeile im Anschluss wieder kommentiert ist, da sonst bei jedem Booten die Uhrzeit überschrieben wird.
Im loop() werden die Uhrzeit und das Datum über die serielle Schnittstelle ausgegeben.
Den Code können Sie hier herunterladen.
Ablauf Datenlogger

Abbildung 2: Ablaufdiagramm des Datenlogger Programms
Datenlogger Code
Laden Sie zum Schluss das vollständige Programm auf den Mikrocontroller:
|
#include <SPI.h> |
Erklärung:
Im Vergleich zu den beiden vorherigen Programmen wurde lediglich die Ausgabe auf die SD-Karte ergänzt. Die Funktion createNewLogFile() legt dabei eine neue Datei an, deren Name automatisch fortlaufend nummeriert wird.
Datenauswertung
Nachdem Sie eine Messreihe erfolgreich mit dem Datenlogger aufgezeichnet haben, sollen die Werte jetzt in einem Tabellenkalkulationsprogramm grafisch dargestellt werden.
In diesem Tutorial wird LibreOffice Calc verwendet, da dieses Opensource und auf allen Betriebssystemen kostenlos erhältlich ist. Sämtliche andere Programme sind aber vom Ablauf und Bedienung ähnlich.
1. Kopieren Sie die .txt Datei, welche vom Datenlogger generiert wurde, von der SD-Karte auf die Festplatte ihres Computers. Klicken Sie danach mit der rechten Maustaste auf die Datei und wählen Sie "umbenennen", hier ändern Sie die Dateiendung von .txt auf .csv.
2. Öffnen Sie die csv Datei mit dem Tabellenkalkulationsprogramm. Hier öffnet sich ein Dialogfenster, in welchem Sie die Abtrennungssymbole auswählen können. Wählen Sie hier “Komma” und bestätigen Sie den Import, nach Überprüfung der Vorschau unten, mit OK.

Abbildung 3: Importfenster
3. Da der Mikrocontroller die Sensorwerte mit einem Punkt als Dezimaltrennzeichen ausgibt, das Programm jedoch ein Komma erwartet, müssen Sie dies nun ersetzen.
Öffnen Sie hierzu mit der Tastenkombination Strg+Alt+F das Suchen und Ersetzen Fenster. Hier können Sie alle Punkte durch Kommas ersetzen.
4. Wählen Sie nun die Spalte mit den Millisekunden und den Sensorwerten, durch gedrückthalten der Strg-Taste und Anklicken der Spaltenbezeichnung, aus und wählen Sie unter Einfügen, Diagramm…
5. In diesem Fenster können Sie jetzt den Diagrammtyp aus hier empfiehlt sich bei einem Sensorwert-Verlauf das XY(Streudiagramm)

Abbildung 4: Diagramm Fenster
Hier können Sie noch die Darstellungsart und den Linientyp einstellen.

Abbildung 5: Finales Diagramm mit Messwerten
Fazit
Der Datenlogger kann noch um einen Taster und eine LED erweitert werden, um Statusanzeigen und einfache Steuerfunktionen wie das Starten und Stoppen zu ermöglichen.
Einsatzmöglichkeiten bieten sich vor allem in der Umweltmessung, bei der Überwachung des Raumklimas oder in ähnlichen Szenarien bei welchen Sensorwerte aufgezeichnet werden müssen.
Mit den gezeigten Schritten haben Sie eine kostengünstige und flexible Grundlage kennengelernt, auf der sich eigene Projekte leicht aufbauen lassen.
Viel Spaß beim Nachbauen :)






