Arduino UNO R3 mit DS18B20 Sensor & Relais

In diesem Beitrag möchte ich dir zeigen, wie du am Arduino UNO R3 den Temperatursensor DS18B20 auslesen und temperaturabhängig ein Relais steuern kannst.

Schalten eines Relais am Arduino UNO R3 mit Temperatursensor DS18B20
Dieses Video ansehen auf YouTube.

Den Temperatursensor DS18B20 habe ich dir bereits in diversen Beiträgen vorgestellt, vor allem für die Arduino Familie habe ich dir gezeigt wie dieser programmiert wird.

Hier soll es nun darum gehen wie du die Temperatur auslesen kannst du bei einem bestimmten Wert ein Relais aktivierst und bei Erreichen einem anderen Wert das Relais wieder deaktivierst.

Die Idee dazu kam von einem Leser meines Blogs und diesem möchte ich den Beitrag widmen.

Benötigte Ressourcen für dieses Projekt

Für dieses kleine Projekt benötigst du:

Für den Temperatursensor DS18B20 gibt es auch eine passende Adapterplatine auf welchen du den Sensor einfach stecken kannst und somit die kleine Schaltung mit dem 4,7 kOhm Widerstand entfällt.

Pinout des Temperatursensor DS18B20

Der hier verwendete Sensor vom Typ DS18B20 verfügt über 3 Beinchen, welche wie folgt belegt sind:

Aufbau der Schaltung – Temperatursensor DS18B20 mit Relais am Arduino UNO R3

Die Schaltung am Arduino UNO R3 ist recht übersichtlich, denn der Sensor und das Relais belegen jeweils einen digitalen Pin und werden mit GND und 5V am Arduino verbunden.

BauteilArduino UNO R3
Sensor DS18B20
GNDGND
DATAdigitaler Pin D3
VCC5V
Relais
VCC5V
IN1digitaler Pin D4
GNDGND

Die Schaltung sieht in meinem Fall wie folgt aus:

Schaltung - Arduino UNO R3 mit Temperatursensor DS18B20 und einfach Relaisplatine
Schaltung – Arduino UNO R3 mit Temperatursensor DS18B20 und einfach Relaisplatine

Programmieren des Sensors und des Relais

Kommen wir nun dazu, das Programm zu erstellen. Wie am Anfang erwähnt wollen wir die Temperatur messen und bei einem bestimmten minimalen Wert soll ein Relais geschaltet werden, bei Erreichen eines höheren maximalen Wertes soll das Relais wieder deaktiviert werden.

Installieren der benötigten Bibliothek für den Temperatursensor DS18B20

Zum einfachen Auslesen der Temperatur benötigen wir eine kleine Bibliothek. Diese installieren wir über den Bibliotheksverwalter der Arduino IDE, welchen du über das Hauptmenü „Sketch“ > „Bibliothek einbinden“ > „Bibliotheken verwalten…“

Im geöffneten Bibliotheksverwalter suchen wir zunächst nach „ds18b20“ (1) und wählen in den Suchergebnissen am Eintrag „DallasTemperature by Miles Burton“ die Schaltfläche „Installieren“ (2) wenn alles installiert ist können wir den Dialog über die Schaltfläche „Schließen“ schließen.

Bibliotheksverwalter der Arduino IDE - installieren der Bibliothek für den Sensor DS18B20
Bibliotheksverwalter der Arduino IDE – installieren der Bibliothek für den Sensor DS18B20

Für die installierte Bibliothek wird zusätzlich die Bibliothek OneWire benötigt hier müssen wir die Schaltfläche „Install all“ betätigen.

installieren der zusätzlich benötigten Bibliothek "OneWire"
Installieren der zusätzlich benötigten Bibliothek „OneWire“

Wenn alles installiert ist, wird dieses über den kleinen, grünen Text „INSTALLED“ angezeigt.

erfolgreich installierte Bibliothek für den Sensor DS18B20
Erfolgreich installierte Bibliothek für den Sensor DS18B20

Quellcode

//Bibliotheken für die Kommunikation mit dem Sensor
//DS18B20
#include <OneWire.h>
#include <DallasTemperature.h>

//der digitale Temperatursensor vom Typ DS18B20
//ist am digitalen Pin D3 angeschlossen
#define SENSOR 3

//die einfach Relaisplatine ist am
//digitalen Pin D4 angeschlossen
#define RELAIS 4

//minimale Temperatur
const int MIN_TEMP = 26;
//maximale Temperatur
const int MAX_TEMP = 30;

//initialisieren der Kommunikation über OneWire
OneWire oneWire(SENSOR);
DallasTemperature sensors(&oneWire);

void setup(void) {
  //beginn der seriellen Kommunikation mit 9600baud
  //diese wird nur benötigt um die Sensordaten
  //auf der seriellen Schnittstelle auszugeben
  Serial.begin(9600);

  //beginn der Kommunikation mit den Sensoren
  sensors.begin();

  //definieren das der digitale Pin des Relais
  //als Ausgang dient
  pinMode(RELAIS, OUTPUT);
}

void loop(void) {
  //Anfordern der Temperaturwerte
  sensors.requestTemperatures();
  //Auslesen der Temperatur des ersten Sensors
  //da die Sensoren über eigene Adressen verfügen, können wir mehrere
  //Sensoren des Typs DS18B20 über eine Schnittstelle anschließen
  float tempC = sensors.getTempCByIndex(0);

  //Wenn erfolgreich eine Temperatur gelesen wurde, dann...
  if (tempC != DEVICE_DISCONNECTED_C) {
    //Ausgeben der Temperatur auf der seriellen Schnittstelle
    Serial.print("Temperatur des Sensors mit ID 0 ist: ");
    Serial.println(tempC);
  } else {
    //andernfalls soll eine Fehlermeldung ausgegeben werden
    Serial.println("Fehler: Es konnten keine Daten ermittelt werden!");
    //verlassen der Loop Funktion
    return;
  }

  //Wenn die gelesene Temperatur kleiner / gleich als der Wert der Konstante MIN_TEMP ist,
  //dann soll das Relais aktiviert werden.
  if (tempC <= MIN_TEMP) {
    digitalWrite(RELAIS, LOW);
  } else if (tempC >= MAX_TEMP) {
    //Ist der gelesene Wert jedoch größer / gleich als der Wert der Konstante MAX_TEMP so
    //soll das Relais deaktiviert werden.
    digitalWrite(RELAIS, HIGH);
  }
}

Ein Kommentar

Kommentar hinterlassen

Deine E-Mail-Adresse wird nicht veröffentlicht.