Arduino DS18B20: Digitaler Temperatursensor anschließen & programmieren

Heute zeige ich dir, wie du mit dem Arduino und dem DS18B20-Sensor präzise Temperaturmessungen durchführst. Der DS18B20 ist ein digitaler Temperatursensor, der sich perfekt für Arduino-Projekte eignet und dir viele Vorteile bietet:

Die digitale Übertragung sorgt für störungsfreie Messwerte, die hohe Genauigkeit macht den Sensor ideal für anspruchsvolle Anwendungen, und die einfache Verkabelung mit nur einem Datenpin spart dir Zeit und Pins am Arduino. Du kannst den Sensor in vielen Bereichen einsetzen: Bau dir eine Wetterstation, überwache die Temperatur in deinem Aquarium oder steuere deine Heizung intelligent.

Den DS18B20 bekommst du in zwei praktischen Varianten: als TO-92-Gehäuse zum direkten Einbau auf dem Breadboard oder als wasserdichte Kabelsonde für Messungen in Flüssigkeiten.


Sieh dir jetzt meinen neuen Arduino-Videokurs an: Jetzt ansehen!


Arduino DS18B20 Temperatursensor in verschiedenen Varianten - TO-92 Gehäuse und wasserdichte Kabelsonde

Diese Bauteile brauchst du

So funktioniert der DS18B20

Der DS18B20 ist ein digitaler Temperatursensor, der mit dem 1-Wire-Protokoll arbeitet. Ich erkläre dir die wichtigsten technischen Merkmale, die du kennen solltest:

Technische Daten:

  • Messbereich von -55°C bis +125°C
  • Auflösung zwischen 9 und 12 Bit (einstellbar)
  • Genauigkeit von ±0,5°C im Bereich -10°C bis +85°C
  • Spannungsversorgung: 3,0V bis 5,5V

Das 1-Wire-Protokoll – warum es so praktisch ist

Das Besondere am DS18B20 ist die Kommunikation über nur eine Datenleitung. Das bedeutet für dich: Du kannst sogar mehrere Sensoren am selben Pin betreiben! Jeder Sensor hat eine eindeutige 64-Bit-Adresse, sodass dein Arduino sie unterscheiden kann. Wichtig ist der Pull-Up-Widerstand mit 4,7 kOhm – er sorgt für eine stabile Kommunikation zwischen Sensor und Arduino.

Pinbelegung des DS18B20 im TO-92-Gehäuse

Wenn du den Sensor mit der flachen Seite zu dir hältst, siehst du drei Pins:

  • Pin 1 (links): GND (Masse)
  • Pin 2 (mitte): DQ (Datenleitung)
  • Pin 3 (rechts): VDD (Spannungsversorgung)

Verkabelung: Arduino DS18B20 anschließen

Jetzt zeige ich dir Schritt für Schritt, wie du den Sensor richtig verkabelst:

Anschluss des TO-92-Gehäuses

  • Stecke den DS18B20 auf dein Breadboard (flache Seite zu dir gedreht)
  • Verbinde den linken Pin (GND) mit Arduino GND
  • Verbinde den mittleren Pin (DQ) mit Arduino Digital Pin 2
  • Verbinde den rechten Pin (VDD) mit Arduino 5V
  • Setze den 4,7 kOhm Widerstand zwischen die Datenleitung (Pin 2) und VDD (5V)

Anschluss der Kabel-Version

Falls du die wasserdichte Kabelsonde verwendest, schließt du sie so an:

  • Rotes Kabel → Arduino 5V
  • Schwarzes Kabel → Arduino GND
  • Gelbes/Weißes Kabel → Arduino Digital Pin 2
  • Pull-Up-Widerstand (4,7 kOhm) zwischen Datenleitung und 5V
Arduino DS18B20 Schaltplan - Verkabelung des Temperatursensors mit Pull-Up-Widerstand

Wichtiger Hinweis: Vergiss auf keinen Fall den Pull-Up-Widerstand! Ohne ihn funktioniert die Kommunikation nicht zuverlässig.

Bibliotheken installieren

Bevor du mit dem Programmieren beginnst, musst du zwei wichtige Bibliotheken installieren. Ich zeige dir, wie es geht:

1. OneWire-Bibliothek installieren

  • Öffne die Arduino IDE
  • Gehe zu Sketch → Bibliothek einbinden → Bibliotheken verwalten
  • Suche nach „OneWire“
  • Klicke auf „Installieren“
OneWire-Bibliothek im Arduino IDE Bibliotheksverwalter installieren

2. DallasTemperature-Bibliothek installieren

  • Im gleichen Fenster suchst du nach „DallasTemperature“
  • Klicke auf „Installieren“
DallasTemperature-Bibliothek im Arduino IDE Bibliotheksverwalter installieren

Der Arduino-Code für den DS18B20

Jetzt kommt der spannende Teil – ich erkläre dir den Code im Detail:

// Include the libraries we need
#include <OneWire.h>
#include <DallasTemperature.h>

// Data wire is plugged into port 2 on the Arduino
#define ONE_WIRE_BUS 2

// Setup a oneWire instance to communicate with any OneWire devices (not just Maxim/Dallas temperature ICs)
OneWire oneWire(ONE_WIRE_BUS);

// Pass our oneWire reference to Dallas Temperature. 
DallasTemperature sensors(&oneWire);

/*
 * The setup function. We only start the sensors here
 */
void setup(void)
{
  // start serial port
  Serial.begin(9600);
  Serial.println("Dallas Temperature IC Control Library Demo");

  // Start up the library
  sensors.begin();
}

/*
 * Main function, get and show the temperature
 */
void loop(void)
{ 
  // call sensors.requestTemperatures() to issue a global temperature 
  // request to all devices on the bus
  Serial.print("Requesting temperatures...");
  sensors.requestTemperatures(); // Send the command to get temperatures
  Serial.println("DONE");
  // After we got the temperatures, we can print them here.
  // We use the function ByIndex, and as an example get the temperature from the first sensor only.
  float tempC = sensors.getTempCByIndex(0);

  // Check if reading was successful
  if(tempC != DEVICE_DISCONNECTED_C) 
  {
    Serial.print("Temperature for the device 1 (index 0) is: ");
    Serial.println(tempC);
  } 
  else
  {
    Serial.println("Error: Could not read temperature data");
  }
}

Was passiert im Code?

Lass mich dir die wichtigsten Teile erklären:

  • Zeilen 1-2: Hier bindest du die beiden Bibliotheken ein, die du vorher installiert hast
  • Zeile 5: Du legst fest, dass der Datenpin an Digital Pin 2 angeschlossen ist
  • Zeilen 8-11: Hier initialisierst du die OneWire- und DallasTemperature-Objekte
  • setup()-Funktion: Startet die serielle Kommunikation mit 9600 Baud und initialisiert den Sensor
  • loop()-Funktion:
    • Fordert eine neue Temperaturmessung an
    • Liest die Temperatur vom ersten Sensor aus (Index 0)
    • Prüft, ob die Messung erfolgreich war
    • Gibt die Temperatur über den seriellen Monitor aus

Code hochladen und testen

  • Kopiere den Code in deine Arduino IDE
  • Wähle dein Board und den richtigen Port aus
  • Klicke auf „Hochladen“
  • Öffne den seriellen Monitor (Werkzeuge → Serieller Monitor)
  • Stelle die Baudrate auf 9600 ein
Arduino DS18B20 Temperaturausgabe im seriellen Monitor der Arduino IDE

Im seriellen Monitor siehst du jetzt kontinuierlich die aktuellen Temperaturwerte. Wenn du den Sensor zwischen deinen Fingern erwärmst, solltest du sehen, wie die Temperatur steigt!

Fazit: Dein Einstieg in die Temperaturmessung

Du hast es geschafft! Der Arduino DS18B20 ist ein präziser und einfach zu verwendender digitaler Temperatursensor, der sich perfekt für deine Projekte eignet. Durch das 1-Wire-Protokoll ist die Verkabelung minimal – du brauchst nur einen Datenpin. Mit den richtigen Bibliotheken ist auch die Programmierung unkompliziert, sodass du dich auf dein eigentliches Projekt konzentrieren kannst.

Probleme? Hier sind die Lösungen

  • Keine Werte oder Error-Meldung: Prüfe den Pull-Up-Widerstand und kontrolliere alle Verbindungen
  • Falsche oder unrealistische Werte: Dein Sensor könnte defekt sein oder ist falsch herum angeschlossen
  • Bibliothek nicht gefunden: Installiere die Bibliotheken noch einmal über den Bibliotheksverwalter

Spannende Erweiterungen für dein Projekt

Jetzt, wo du die Grundlagen beherrschst, kannst du noch viel mehr machen:

  • Betreibe mehrere DS18B20-Sensoren am selben Pin und miss an verschiedenen Stellen
  • Zeige die Temperatur auf einem LCD-Display an
  • Baue eine temperaturabhängige Steuerung, zum Beispiel für einen Lüfter
  • Speichere deine Messwerte auf einer SD-Karte für langfristige Auswertungen

Ich wünsche dir viel Erfolg mit deinem Temperaturmessungs-Projekt! Der DS18B20 ist ein vielseitiger Sensor, der dich in vielen weiteren Projekten begleiten wird.


Wenn dir das Projekt gefallen hat und du von weiteren interessanten Projekten inspiriert werden willst, sieh dir doch mal mein neues E-Book »Arduino Projekte Volume 1« an!

  • Die beliebtesten Arduino-Projekte von StartHardware
  • Inklusive Schaltplan, Beschreibung und Code
  • Arduino-Schnellstart-Kapitel
  • Kompakter Programmierkurs


5 1 vote
Article Rating
Abonnieren
Benachrichtige mich bei
8 Comments
Newest
Oldest Most Voted
Inline Feedbacks
Alle Kommentare anzeigen
Gerd Parnitzke
1 Jahr zuvor

Danke , hat super geklappt

Josef Gunsch
5 Jahre zuvor

Hallo Stefan! Schön für mich, dass Du auch einfache Projekte vorstellst. Ich bin mit 78 Jahren blutiger Anfänger. Die Spielchen mit den LEDs laufen perfekt. Jetzt möchte ich mich mit RGB-LEDs versuchen. Aber da läuft gar nichts. Vielleicht kannst Du mir einen Tipp geben. Beim Händler in meiner Gegend habe ich folgenden Typ gekauft: Die LEDs haben 4 Beinchen, zwei kurze und 2 lange. Wie schließe ich die am Arduino UNO an? Irgend etwas habe ich nicht verstanden.
Bitte, bitte.

josef_love
Antworte an  Josef Gunsch
3 Jahre zuvor

geb auf youtube darude sandstorm ein , da kriegst du hilfe

A. Tommasi
5 Jahre zuvor

Hall Stefan,
danke für deine Info dennoch ich habe schon das Buch gekauft es ist sehr nett von dir das von Zeit zu Zeit kleine Projekte schickst die schon Uralt sind und überall zu finde sind, du fragst immer schreib deine Meinung hiermit due ich es hoffentlich bist Du nicht sauer, Du fragst auch Schreibe deine Idee habe mehr Mals getan keine Antwort es gibt viele Leute sind bereit und mehr Mals schon Geschrieben das bereit sind zu Bezahlen also Überraschen uns sorry wenn ich so direkt gewesen bin.
Lb. Grüße Antonio

8
0
Ich würde mich über deine Meinung freuen.x