Temperaturmessung mit einem oder mehreren DS18B20 und einem Arduino

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.

Temperaturmessung mit einem oder mehreren DS18B20 und einem Arduino - blog.simtronyx.de

Temperaturmessung mit einem oder mehreren DS18B20 und einem Arduino

Die Verdrahtung ist denkbar einfach, wir benötigen zusätzlich jedoch noch einen 4,7kOhm Widerstand, der folgende Plan verdeutlich das Strippenziehen:

Schaltplangröße:

1afbgchdie1j55101015152020252530afbgchdie30j
Für weitere Informationen (z.B. Pinbelegungen von Bauteilen oder genaue Kabelverbindungen)
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:

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

Download Source Code

und starten den seriellen Monitor, welcher uns – wenn alles passt – etwa folgendes anzeigen sollte:

Temperaturmessung mit einem oder mehreren DS18B20 und einem Arduino - Serieller Monitor 1 Sensor - blog.simtronyx.de

Serieller Monitor mit einem Sensor

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.

Schaltplangröße:

1afbgchdie1j55101015152020252530afbgchdie30j
Für weitere Informationen (z.B. Pinbelegungen von Bauteilen oder genaue Kabelverbindungen)
mit der Maus über Elemente fahren (oder im Touch-Modus: Elemente antippen)...

Hier ein Beispiel mit 3 Sensoren:

Schaltplangröße:

1afbgchdie1j55101015152020252530afbgchdie30j
Für weitere Informationen (z.B. Pinbelegungen von Bauteilen oder genaue Kabelverbindungen)
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).

Temperaturmessung mit einem oder mehreren DS18B20 und einem Arduino - Serieller Monitor 3 Sensoren - blog.simtronyx.de

Ausgabe serieller Monitor mit 3 Sensoren

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: Arduino
Breadboard
Breadboard Kabel
DS18B20
Widerstand 4.7k

Gut?

FacebooktwitterredditpinterestlinkedinmailFacebooktwitterredditpinterestlinkedinmail