Der Temperatursensor DS18B20
Der DS18B20 ist ein digitaler Temperatursensor mit einer einstellbaren Auflösung von 9 Bit bis 12 Bit und einer Messungenauigkeit von \( \pm0,5\,\mathrm{°C}\) in einem Temperaturbereich von \(-10\,\mathrm{°C}\) bis \(+85\,\mathrm{°C}\). Außerhalb dieses Temperaturbereiches sinkt die Genauigkeit wieder. Entwickelt und vertrieben wurde der DS18B20 von dem Unternehmen Dallas Semicontuctors, welches mittlerweile von Maxim Integrated aufgekauft wurde.
Abbildung: Schema DS18B20
Quelle: BBS2 Wolfsburg
Die Bezeichnung "digital" bedeutet, dass der Sensor über Datenwörter mit dem ESP32 kommuniziert. Vorteilhaft daran ist, das beispielswiese direkt der richtige Temperaturwert zuzüglich der Einheit übertragen werden kann. Die Einstellung der Auflösung des Temperaturwertes entscheidet dabei darüber, wie lange ein Mess- und Konvertierungsvorgang dauert. Der Maximalwert liegt bei 750 ms.
Angesteuert wird der DS18B20 über den sogenannten OneWire-Bus. Der Begriff OneWire entstammt dem sogenannten "parasite Mode" des Sensors, welcher sich dadurch auszeichnet, dass dem Sensor die Versorgungsspannung über die Datenleitung zugeführt wird und somit nur die Anschlüsse "Data" und "GND" aus der obigen Grafik benutzt werden. Auf diese Weise könnten die zwei für den Sensor relevanten Ressourcen, also Daten und Versorgungsspannung, über eine einzige Leitung transportiert werden. Dies erwies sich aber vor allem bei mehreren Sensoren und längeren Leitungen als problematisch, weshalb der DS18B20 standardgemäß mit seinen drei Anschlüssen wie im folgenden Bild betrieben wird.
Abbildung: Verschaltung des DS18B20
Quelle: BeeLogger
Als Versorgungsspannung kann dabei eine Spannung im Bereich zwischen 3 V und 5,5 V verwendet werden. Der in der obigen Grafik dargestellte 4,7 kΩ Widerstand dient als sogenannter Pull-Up-Widerstand. Er sorgt dafür, dass das Potential an dem Datenpin, über welchen die Kommunikation zwischen ESP32 und DS18B20 stattfindet, auf High liegt. Dies ist nötig, da sowohl der ESP32 als auch der DS18B20 das Potential an dem Pin auf Low ziehen, um entweder Daten anzufordern (ESP32) oder Daten zu senden (DS18B20). Dieser Widerstand muss nicht zwingend 4,7 kΩ betragen, sollte diesen Wert aber keinesfalls unterschreiten. Wir verwenden für das Projekt einen 5,1 kΩ Widerstand, wobei alle Werte zwischen 4,7 kΩ und 10 kΩ in Ordnung sind.
Wie es der obigen Grafik ebenfalls entnommen werden kann, hat die Definition des OneWire-Buses noch einen anderen Ursprung. Es können nämlich mehrere Sensoren an ein und die selbe Datenleitung angeschlossen werden. Da jeder DS18B20 seine eigene individuelle 64 Bit lange Seriennummer besitzt, sind in der Theorie bis zu \(2^{64}=18\,446\,744\,073\,709\,551\,616\approx\infty\) Sensoren an einer Leitung anschließbar. Dabei muss darauf geachtet werden, dass der Pull-Up-Widerstand für jeden weiteren angeschlossenen Sensor etwas verkleinert werden muss. Da wir in diesem Projekt nur einen Sensor verwenden ist dies für uns allerdings irrelevant.
Das Gehäuse des verwendeten DS18B20 ist das, sehr stark einem Transistor ähnelnde, T0-92-Gehäuse. Den DS18B20 gibt es auch noch in anderen Ausführungen, wie beispielsweise einem Wasserdichten Gehäuse mit Kabel.
Falls du dich für den DS18B20 interessierst kannst du dir hier das Datenblatt herunterladen und selbst etwas forschen.