18S20 Sensor Basics

Der digitale Temperatursensor 18S20 (18B20 usw.) ist inzwischen ein Industriestandard-Bauteil und wird oft in der digitalen Messtechnik eingesetzt. Es misst auf etwa +/- 0,5 Grad genau im Bereich von -30 … +120 Grad ohne weiteres Justieren. Seit Beginn der Produktion vor Jahren erhält jedes Bauteil eine individuelle ID-Nummer.  Genaueres findet man im Datenblatt des Herstellers.

Am so genannten 1-wire-Bus-System (eine Signal- und eine Masseleitung) können mehrere Sensoren parallel betrieben werden. Erforderlich ist nur ein Widerstand nach V+ (Pullup), so dass max. 1 mA fließen kann. Die Länge der Anschlussleitung kann bis zu 30m betragen.  Trotzdem können die einzelnen Sensoren (bis zu 10 Stück) an Hand ihrer individuellen Bauteilnummer identifiziert werden. Damit wird die Hardware und Installation einfach, der Rechner muss aber die Teilnehmer auf dem Bus abfragen können (Tx), die Bauteilnummer von den Sensoren empfangen (Rx),  dann die einzelnen Sensoren digital adressieren und die Daten übertragen können.

Zum Glück gibt es für die Software schon Beispiele in C, C++ sowie fertige Treiber für Arduino und Python/micropython. Im Linux-Kernel ist die SW für 18×20-Sensoren bereits eingebaut, so dass nur noch der Anschluss-Pin für den 1-wire-Bus definiert werden muss.

Ein populäres Programm zum Betrieb und zur Auswertung ist „digitemp“ für“WinX“ und Linux. Damit kann man 18×20-Sensoren erkennen und eine oder mehrere Temperaturen messen. Um die Sensoren einfach an die USB-Schnittstelle anschließen zu können, braucht man einen seriell <-> USB Umsetzer mit einem FTDI-232-Baustein.

Der Linux-Kernel von Raspian und Armbian enthält bereits eine Softwarefunktion, bei der man nur noch den 1-wire-Bus an einen definierten GPIO-Pin und einen Pullup-Widerstand nach 3,3V anzuschließen braucht. Das Betriebssystem führt dann die Erkennung der Sensoren und die Messungen selbst durch. Man braucht den zurückgegebenen Zahlenwert nur noch skalieren („33812“ => 33,8 Grad).

Bei größeren Problemen (Kurzschluss, offen, zu lange Leitung, verpolt, ?? ) zeigt das Programm digitemp oftmals gar nichts an, was die Fehlersuche erschwert. Bei leichten Problemen wird oftmals „85“ C übertragen, was z.B. „interner Fehler“ oder „zu wenig Spannung“ bedeuten kann.  In einer neu aufgebauten Schaltung oder Verkabelung muss die verwendete SW zuerst die vorhandenen Sensoren 1..N mit ihren ID-Nummern identifizieren. Wenn das nicht klappt, wird abgebrochen.

Sollte später einmal ein 18×20-Sensor unter mehreren ausfallen und durch einen neuen ersetzt werden müssen, kann das kompliziert werden – das neue Bauteil hat eine neue ID-Nummer. Diese muss dem Programm bekannt gemacht werden, damit die SW das neue Bauteil der vorhandenen Mess-Stelle zuordnen kann. Die ID-Nummer kann nur durch elektronische Abfrage des Bauteils festgestellt werden, ist nicht aufgedruckt.