Zum Inhalt springen
Arduino DS18B20 Digitaler Temperatursensor

Arduino DS18B20 –Temperaturmessung mit digitalem Sensor

    Arduino DS18B20: In diesem Tutorial geht es um die digitale Temperaturmessung mit Arduino und dem DS18B20. Dabei handelt es sich um einen digitalen Temperatursensor von Maxim Integrated.

    Der Sensor: DS18B20

    Beim DS18B20 handelt es sich um ein Digitalthermometer. Es wird per 1-Wire-Schnittstelle, einem digitalen Protokoll, das nur ein Kabel für die Datenübertragung benötigt, angesprochen.

    Besonderheiten:

    • Messbereich von -55°C bis +125°C
    • ±0.5°C Genauigkeit im Bereich von -10°C bis +85°C
    • 64-Bit-Seriencode, der es ermöglicht, mehrere Sensoren auf dem gleichen 1-Wire-Bus zu betreiben

    Zu den Anwendungen des DS18B20 gehören Umgebungssteuerungen im Bereich der Heizung, Lüftung, Klimatechnik, Temperaturüberwachung in Gebäuden, Anlagen oder Maschinen, sowie Prozessüberwachungs- und -steuerungssysteme.


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


    Der Sensor liegt entweder als TO92-Ausführung oder als konfektionierte Kabelsonde vor. Besonders die Kabelversion eignet sich hervorragend für diverse Anwendungszwecke. Dabei ist der Sensor in eine Edelstahlhülse eingelassen und wasserdicht vergossen.

    Arduino DS18B20 kabelgebundener, wasserdichter Sensor zur Temperaturmessung

    Mehr Informationen finden sich natürlich im Datenblatt.

    Bauteile: Arduino DS18B20

    Schaltplan

    Arduino DS18B20 Schaltung Schaltplan Circuit

    Der DS18B20 wird mit dem linken Bein (TO92-Variante: flache Seite nach vorne, Beinchen nach unten – Kabel-Variante: schwarzes Kabel) an den GND und mit dem rechten (Kabel-Variante: rotes Kabel) an den 5V+ des Arduino-Boards angeschlossen. Das mittlere Beinchen (gelbes Kabel) ist der Datenpin. Er wird an den digitalen Pin 2 des Arduino-Boards und per 4,7kOhm-Pullup-Widerstand mit dem 5V+ verbunden. (Das Datenblatt gibt diesen Widerstandswert vor, aber ich schätze, dass auch andere Werte in diesem Bereich funktionieren sollten.)

    Libraries

    Besonders komfortabel lässt sich der DS18B20 mit den richtigen Bibliotheken auslesen. Dabei handelt es sich erstens um die OneWire-Library von u. a. Paul Stoffregen. Man kann sie hinzufügen, indem man im Arduino Menü > Sketch > Bilbiothek hinzufügen > Bibliotheken verwalten nach »onewire« sucht und die aktuelle Version installiert. (Im Bild ganz oben).

    Arduino DS18B20 Schaltung Schaltplan OneWire Library

    Gleichermaßen kann man vorgehen, um die DallasTemperature-Bibliothek zu installieren. Hier muss man nach DS18B20 suchen. (Im Bild ebenfalls ganz oben).

    Arduino DS18B20 Schaltung Schaltplan DallasTemperature Library

    Code: Arduino DS18B20

    Sind die Bibliotheken installiert, kann man den Beispiel-Sketch unter Arduino>Datei>Beispiele>DallasTemperature>Simple auf das Arduino-Board übertragen.

    // 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");
      }
    }

    Im seriellen Monitor (Baudrate 9600) kann man nun die Temperatur auslesen.

    Arduino DS18B20 Schaltung Schaltplan DallasTemperature Serieller Monitor

    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


    6 Gedanken zu „Arduino DS18B20 –Temperaturmessung mit digitalem Sensor“

    1. 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.

    2. 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

      1. Hallo Antonio,

        schön, dass dir die Newsletter gefallen. Natürlich sind nicht alle Themen für jede:n Einzelne:n neu, das kann ich ja gar nicht leisen. Allerdings habe ich das Tutorial zu dem Newsletter, den du bekommen hast, erst heute geschrieben. Wenn du die Newsletter nicht mehr magst, kannst du sie natürlich jeder Zeit abbestellen. In jedem einzelnen ist ein Abbestellen-Link ganz unten.

        Ich bekomme sehr viele Mails mit Ideen und Anfragen. Wenn ich Zeit habe und Projekte für eine breite Nutzer:innenschaft interessant sein könnten, schreibe ich Tutorials dazu. Dafür bin ich dankbar und bekomme viel positive Rückmeldung dazu.

        Ich muss aber auch sagen, dass ich diese Website in meiner Freizeit betreibe. Projekthilfe für einzelne Personen gebe ich nur in extrem seltenen Ausnahmefällen. Wenn andere das gegen Bezahlung anbieten, klingt das für mich fair. Ich biete so etwas allerdings nicht an.

        Ich hoffe, das beantwortet deine Fragen erstmal.

        Liebe Grüße

        Stefan

    Schreibe einen Kommentar

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

     

    Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.