Temperatursensor mittels Arduino auslesen

Ziel des Projektes ist es nun, mittels eines einfachen Aufbaus die aktuelle Temperatur zu erfassen und seriell am Rechner auszugeben. Dafür verwenden wir einen Arduino UNO, für den alle benötigten Bibliotheken vorhanden sind, und einen einfachen Sensor.

Hardware

Benötigte Hardware (die Preise dahinter sind von Watterott):

  • Arduino UNO – 23,80 €
  • DS18B20 (OneWire-Temperature Sensor von Dallas) – 2,- €
  • 4,7k Ohm Widerstand
  • 4 Steckkabel
  • Breadboard

Den einfachen Schaltplan hat man in wenigen Sekunden zusammengesteckt:

Schaltplan Temperatur Sensor Einfach

Software

Um den Sensor via Arduino ansprechen zu können, benötigen wir noch die entsprechenden Libary für die Arduino IDE. Hier wird auf der Arduino Seite ein paar Hintergrund Infos und Beispiele zum OneWire System gegeben. Wir brauchen aber zum einen die OneWire Library und zum anderen die Dallas Library für den Sensor (auf der Seite gibt es auch genügend Beispiel-Code).
Anschließend die beiden Libraries in die Arduino IDE importieren.

Der Code ist kurz und übersichtlich (nur die Ausgabe der Temperatur). Am Anfang werden die beiden heruntergeladenen Libs eingebunden (OneWire.h und DallasTemperature.h), um dann die Verbindung mit dem Sensor aufzubauen. Da ich die Ausgabe im Arduino Monitor sehen möchte, wird noch Serial.begin(9600) aufgerufen. Das eigentliche Auslesen ist dann in der loop Methode genau so einfach wie der Verbindungsaufbau zum Sensor. Erst wird vom Sensor der Wert angefordert sensor.requestTemperatures(), um ihn dann in Celsius auszulesen sensor.getTempCByIndex(0) – der Index steht für den Index im OneWire Bus, also hier 0, da es nur einen Sensor gibt.

#include <OneWire.h>
#include <DallasTemperature.h>

#define ONE_WIRE_BUS 2

OneWire wire(ONE_WIRE_BUS);
DallasTemperature sensor(&wire);

void setup() {
  delay(1000);
  Serial.begin(9600);
  delay(1000);

  sensor.begin();

  Serial.println("Temperaturen:");
}

void loop() {
  sensor.requestTemperatures();

  Serial.print(sensor.getTempCByIndex(0)); 
  Serial.println(" Grad Celius");
  delay(1000);
}

Das Programm anschließend kompilieren und auf den Arduino laden. Um es nun zu testen, öffnet man in der Arduino IDE „Tools -> Serial Monitor“ und stellt dort die Baudrate auf 9600. Danach sollte es schon sofort losgehen.
Jedes mal wenn man den Monitor neu öffnet, wird ein Neustart des Programms auf dem Arduino getriggert (quasi ein Reset).

Die Ausgabe des Programms:

Temperaturen:
22.94 Grad Celius
22.94 Grad Celius
22.94 Grad Celius

Was macht das Programm nun, es baut eine Verbindung zum Sensor via dem OneWire Bus auf, startet den Sensor und fragt jede Sekunde nach der aktuellen Temperatur.
Es gibt noch ein paar zusätzliche Optionen, die ich hier aber nicht weiter verfolge (siehe dazu die entsprechenden Seite der Libs).

Was ist noch zu dem Temperatursensor zu sagen? Für die 2,- € bekommt man einen Sensor, der Temperaturen zwischen -55°C und +125°C erfassen kann. Im Bereich von -10°C bis +85°C hat er dabei eine Toleranz von +/-0,5°C.

Ein Gedanke zu „Temperatursensor mittels Arduino auslesen“

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.