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.
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.
Mehr Informationen finden sich natürlich im Datenblatt.
Bauteile: Arduino DS18B20
- 1x DS18B20-Sensor TO92
- oder DS10B20-Sensor als Kabel-Version
- 1x Widerstand 4,7 kOhm
Schaltplan
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).
Gleichermaßen kann man vorgehen, um die DallasTemperature-Bibliothek zu installieren. Hier muss man nach DS18B20 suchen. (Im Bild ebenfalls ganz oben).
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.
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
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.
Hi Josef, da helfe ich doch gerne. Guck dir mal die Seite an, da hab ich das mal alles beschrieben: Arduino RGB LEDs. Liebe Grüße Stefan
geb auf youtube darude sandstorm ein , da kriegst du hilfe
Haha! :-D Stimmt eigentlich für jede Lebenslage.
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
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