Ein einfacher und preisgünstiger Temperatursensor ist der DS18B20. Er arbeitet mit einem sogenannten OneWire-Sytem, zu deutsch etwa „ein Draht-System“, das heißt, neben den Anschlüssen für Masse und die Versorgungsspannung benötigt er nur noch einen zusätzlichen Anschluß um die Temperaturwerte zu übertragen. Durch das Bussystem ist es möglich mehrere Sensoren nebeneinander zu betreiben und auch dieses wird in diesem Tutorial beschrieben.
Die Verdrahtung ist denkbar einfach, wir benötigen zusätzlich jedoch noch einen 4,7kOhm Widerstand, der folgende Plan verdeutlich das Strippenziehen:
mit der Maus über Elemente fahren (oder im Touch-Modus: Elemente antippen)...
Programmcode (Sketch) :
Zur Ansteuerung müssen wir noch zwei zusätzliche Bibliotheken installieren:
- die Arduino-Temperature-Control-Library von Miles Burton
- die OneWire-Bibliothek von Paul Stoffregen.
Ist dies geschehen kopieren wir nur noch folgenden Programmcode in einen neuen Sketch und laden ihn auf den Arduino hoch:
#include <OneWire.h> // OneWire-Bibliothek einbinden #include <DallasTemperature.h> // DS18B20-Bibliothek einbinden #define DS18B20_PIN 2 // Pin für DS18B20 definieren Arduino D2 OneWire oneWire(DS18B20_PIN); // OneWire Referenz setzen DallasTemperature sensors(&oneWire); // DS18B20 initialisieren void setup() { // Serielle Ausgabe starten Serial.begin(9600); Serial.println("Temperaturmessung mit dem DS18B20 - blog.simtronyx.de"); sensors.begin(); // DS18B20 starten Serial.print("Sensoren: "); Serial.println(sensors.getDeviceCount()); } void loop(){ sensors.requestTemperatures(); // Temperatursensor(en) auslesen for(byte i=0;i<sensors.getDeviceCount();i++){ // Temperatur ausgeben show_temperature(i+1,sensors.getTempCByIndex(i)); } delay(5000); // 5s Pause bis zur nächsten Messung } // Temperatur ausgeben void show_temperature(byte num,float temp){ Serial.print("Sensor "); Serial.print(num); Serial.print(": "); Serial.print(temp); Serial.print(" "); // Hier müssen wir ein wenig tricksen Serial.write(176); // um das °-Zeichen korrekt darzustellen Serial.println("C"); }
und starten den seriellen Monitor, welcher uns – wenn alles passt – etwa folgendes anzeigen sollte:
Hierbei wurden die Temperaturschwankungen durch Auflegen eines Fingers auf den Sensor herbeigeführt.
Mehrere DS18B20 Sensoren gleichzeitig
Aber das ist noch längst nicht alles, im folgenden Beispiel verwenden wir 2 Sensoren welche jeweils einzeln mit Strom versorgt werden und an den gemeinsamen Bus angeschlossen werden.
mit der Maus über Elemente fahren (oder im Touch-Modus: Elemente antippen)...
Hier ein Beispiel mit 3 Sensoren:
mit der Maus über Elemente fahren (oder im Touch-Modus: Elemente antippen)...
Der 4,7kOhm Widerstand ist – wie man sieht – nur einmal erforderlich.
Der Sourcecode  ist der gleiche wie beim Beispiel mit einem Sensor. Nach dem Start des Seriellen Monitor, sollte sich etws folgendes Bild ergeben (auch hier wurde ein Sensor durch in die Zange nehmen mit 2 Fingern manipuliert).
Jeder DS18B20-Temperatursensor hat einen eindeutigen 64bit Code, wovon 48bit als eindeutige Identifikationsnummer verwendet werden können.
Na dann – wünsche ich – fröhliches Messen!
Bauteile (Bezugsquellen):
eBay: | Arduino Breadboard Breadboard Kabel DS18B20 Widerstand 4.7k |
Amazon: | Breadboard Breadboard Kabel DS18B20 Widerstand 4.7k |
Gut?











