Neuer Teil, neuer Stoff zum Lernen. Das Bussystem 1-Wire bietet extrem viele Möglichkeiten. Mittlerweile bin ich soweit, dass ich bei einem Neubau auf jeden Fall überall Kabel für 1-Wire mitverlegen würde. Warum das so ist? Weil man extrem kostengünstig Sensoren anschließen kann. Außerdem gibt es sehr viele Möglichkeiten, Sensoren auch mit dem Arduino (oder als einfache Platine mit ein paar Komponenten) selbst zu bauen. Das macht das ganze Thema extrem spannend für mich.
Damit wir ganz am Anfang starten, möchte ich im ersten Teil dieser Reihe auf die Grundlagen rund um das Thema 1-Wire eingehen. Wir sprechen über Topologien, Vorteile, Möglichkeiten, Funktionsweise und Kabeltypen. Nach diesem doch sehr theoretischen Video geht es im nächsten Teil dann schon mehr in die Praxis. Aber jetzt erstmal durchhalten und langsam das System verstehen und aufbauen.
- entwickelt von der Dallas Semiconductor Corp.
- Bus-System (Master/Slave)
- 1 Master
- bis zu 100 Slaves
- Eindeutige Adressen (Laser)
- viel mehr als nur Temperatur-Sensoren
- große Auswahl an Komponenten
- man kann Komponenten auch selber bauen
1-Wire stammt ursprünglich von der Dallas Semiconductor Corp. aus den 1990er-Jahren. Dallas wurde 2001 von Maxim Integrated übernommen, Maxim wiederum 2021 von Analog Devices. Die Bauteile gibt es also alle noch, sie laufen heute nur unter einem anderen Herstellernamen. Für uns ändert sich dadurch nichts: Die Chips sind seit Jahrzehnten dieselben, die Dokumentation ist hervorragend und man bekommt die Komponenten überall.
Der Name ist übrigens leicht irreführend. One Wire bezieht sich nur auf die Datenleitung – eine gemeinsame Masse (GND) braucht man natürlich trotzdem. Es sind also mindestens zwei Adern. Wer die Slaves nicht parasitär versorgen möchte, legt eine dritte Ader für VDD dazu. Der Bus arbeitet typischerweise mit 5 V und einem Pull-up-Widerstand von 4,7 kΩ gegen die Versorgungsspannung. Im Ruhezustand liegt die Leitung also auf High, und jede Kommunikation beginnt damit, dass jemand sie auf Masse zieht.
Jeder 1-Wire-Slave trägt eine 64 Bit lange ROM-ID, die beim Hersteller per Laser eingebrannt wird und sich nicht verändern lässt. Sie setzt sich zusammen aus 8 Bit Family-Code (sagt, um welchen Bauteiltyp es sich handelt), 48 Bit Seriennummer und 8 Bit CRC-Prüfsumme. Diese ID ist gleichzeitig die Adresse auf dem Bus – deshalb muss man auch nichts konfigurieren oder parametrieren.
Die oft genannten bis zu 100 Slaves sind keine Grenze des Protokolls. Mit 48 Bit Seriennummer könnte man rein rechnerisch hunderte Billionen Geräte adressieren. Die Grenze ist rein elektrisch: Jeder Slave und jeder Meter Kabel bringt Kapazität auf den Bus, und irgendwann werden die Flanken so weich, dass das Timing nicht mehr sauber erkannt wird. Analog Devices nennt in der Application Note 148 rund 100 Geräte bei etwa 300 m Leitung als Richtwert für ein gut aufgebautes Netz mit einem guten Busmaster. Mit dem Raspberry Pi und ein paar Metern Klingeldraht bist Du deutlich früher am Ende.
Und es geht wirklich um viel mehr als Temperatur. Ein paar typische Vertreter und ihre Family-Codes:
28– DS18B20: Temperatur, der Klassiker26– DS2438: Spannung, Strom, Temperatur (Basis für viele Feuchte- und Helligkeitssensoren)29– DS2408: 8-fach digitaler Ein-/Ausgang3A– DS2413: 2-fach digitaler Ein-/Ausgang1D– DS2423: Zähler (z. B. für S0-Impulse von Strom- oder Wasserzählern)01– DS1990A: iButton, also die tragbaren Schlüssel
Video: Grundlagen#
Vorteile#
- Nur eine Leitung benötigt (+ GND)
- Komponenten können parasitär mit Strom versorgt werden
- sehr günstige Sensoren
- keine Programmierung der Komponenten notwendig
- automatische Erkennung der Slaves
- digitale Übertragung - keine Messwertverfälschung
Der größte Vorteil ist für mich der Verkabelungsaufwand. Eine einzige Leitung, an der man unterwegs einfach weitere Sensoren anklemmt – das ist im Neubau extrem praktisch. Du musst nicht für jeden Messpunkt separat zum Verteiler zurück.
Die parasitäre Versorgung funktioniert so, dass der Slave sich den Strom aus der Datenleitung zieht und in einem internen Kondensator zwischenspeichert. Das klingt erstmal elegant, hat aber einen Haken: Ein DS18B20 zieht während der Temperaturwandlung bis zu 1,5 mA, und das schafft ein normaler Pull-up-Widerstand nicht. Der Master muss dafür einen strong pull-up schalten können. In einer echten Hausinstallation würde ich deshalb immer drei Adern ziehen und die Sensoren regulär mit VDD versorgen. Parasitär ist super für den schnellen Test auf dem Schreibtisch, aber nichts, worauf man ein Haus aufbaut.
Keine Programmierung: Sensor anklemmen, Bus scannen, fertig – die ROM-ID ist ab Werk eindeutig.
Die automatische Erkennung übernimmt der sogenannte Search-ROM-Algorithmus. Der Master tastet sich Bit für Bit durch einen binären Suchbaum und findet so alle angeschlossenen IDs, ohne vorher wissen zu müssen, was am Bus hängt. Genau deshalb funktionieren auch iButtons so gut: Man hält sie dran, sie tauchen beim nächsten Suchlauf auf, und beim Wegnehmen verschwinden sie wieder.
Der Punkt digitale Übertragung wird gerne unterschätzt. Bei einem analogen Sensor (PT1000, 0–10 V) verfälschen Leitungslänge, Übergangswiderstände und Störeinstrahlung den Messwert – und Du merkst davon nichts, weil eine leicht falsche Spannung eben auch ein plausibler Messwert ist. Bei 1-Wire wird der fertige Zahlenwert digital übertragen und über CRC abgesichert. Ein Übertragungsfehler fällt damit auf und wird verworfen, statt als falscher Temperaturwert in Deiner Visualisierung zu landen.
Ehrlicherweise gehört aber auch dazu: 1-Wire ist langsam, nicht echtzeitfähig und reagiert empfindlich auf eine schlechte Verkabelung. Für Sensorik ist es dennoch ideal und sehr günstig.
Kommunikation#
- Slaves Antworten nur, wenn sie gefragt werden (Kommando)
- die Slaves können nicht untereinander kommunizieren
- Adressierung über Family-Codes und eindeutige Adressen
Auf dem Bus hat immer der Master das Sagen. Er gibt den Takt vor, und die Kommunikation läuft halbduplex – es redet also immer nur einer. Ein typischer Zugriff läuft dabei in drei Schritten ab:
- Reset und Presence: Der Master zieht die Leitung für mindestens 480 µs auf Masse. Danach melden sich alle angeschlossenen Slaves gleichzeitig mit einem Presence-Puls. Der Master weiß damit schon mal, ob überhaupt irgendjemand da ist.
- ROM-Kommando: Jetzt wird festgelegt, mit wem gesprochen wird.
Match ROM(0x55) adressiert genau einen Slave über seine 64-Bit-ID,Skip ROM(0xCC) spricht alle gleichzeitig an (praktisch nur sinnvoll, wenn wirklich nur ein Gerät am Bus hängt),Search ROM(0xF0) startet den Suchlauf undRead ROM(0x33) liest die ID eines einzelnen Slaves aus. - Funktions-Kommando: Erst jetzt kommt das eigentliche Kommando für das Bauteil, also zum Beispiel beim DS18B20
Convert T(Messung starten) und anschließendRead Scratchpad(Ergebnis abholen).
Die einzelnen Bits werden über Zeitschlitze von rund 60 µs übertragen. Der Master zieht die Leitung kurz auf Low, und die Dauer dieses Low-Pegels entscheidet darüber, ob eine 0 oder eine 1 gemeint ist. Daraus ergibt sich im Standard-Modus eine Datenrate von etwa 15,4 kbit/s. Es gibt zusätzlich einen Overdrive-Modus mit bis zu 125 kbit/s, den aber nicht alle Bauteile beherrschen und der auf langen Leitungen ohnehin schnell an Grenzen stößt.
Dass Slaves nicht von sich aus senden können, stimmt – es gibt aber einen kleinen Kniff. Viele Bauteile (etwa der DS18B20 mit seinen Temperatur-Grenzwerten) setzen intern ein Alarm-Flag. Mit dem Kommando Conditional Search (0xEC) antworten dann nur noch die Slaves, bei denen dieses Flag gesetzt ist. Der Master muss also weiterhin fragen, findet den Auslöser aber sehr viel schneller als beim vollständigen Durchsuchen des Busses.
Topologie#
Erlaubt ist alles, was offene Enden hat. Also keine Kreise schließen bzw. Ringe bilden.
- Bus
- Stern
- Linie
- Baum
Die Aufzählung beschreibt, was grundsätzlich funktioniert – sie sagt aber nichts darüber aus, was auch gut funktioniert. Und genau da liegt in der Praxis die häufigste Fehlerquelle bei 1-Wire. Bus und Linie meinen dabei dasselbe: eine durchgehende Leitung, an der die Slaves mit möglichst kurzen Stichleitungen hängen. Das ist die Form, die man anstreben sollte.
Analog Devices beschreibt in der Application Note 148 zwei Kennwerte, mit denen man ein 1-Wire-Netz beurteilt:
- Radius: die Leitungslänge vom Master bis zum am weitesten entfernten Slave
- Weight: die gesamte im Netz verlegte Leitungslänge
Beim reinen Stern sind beide Werte weit auseinander – und genau das ist das Problem. An jeder Verzweigung trifft das Signal auf einen Impedanzsprung und wird reflektiert. Diese Reflexionen laufen dann über eine Strecke, die eher dem Weight als dem Radius entspricht, und landen zeitversetzt wieder beim Master. Das Ergebnis sind CRC-Fehler und Slaves, die mal da sind und mal nicht. In der Application Note wird der ungeschaltete Stern deshalb ausdrücklich nicht empfohlen. Ein Baum ist im Grunde ein abgeschwächter Stern und liegt irgendwo dazwischen.
Ein Ring ist dagegen gar nicht zulässig. Das Signal würde von beiden Seiten am selben Punkt ankommen, der Bus hätte kein definiertes Ende und ließe sich nicht sauber terminieren.
Typische Symptome einer schlechten Topologie sind Sensoren, die sprunghaft aus der Visualisierung verschwinden und wieder auftauchen, häufige CRC-Fehler im Log und beim DS18B20 plötzliche Werte von genau 85 °C. Diese 85 °C sind kein Messwert, sondern der Power-on-Reset-Wert des Registers – der Sensor konnte die Wandlung also nicht abschließen oder wurde kurz nicht richtig versorgt.
1-Wire Master#
- Raspberry Pi GPIO (w1)
- DS9490R
- Professional Busmaster PBM01-USB
- LinkUSB-T
Der Master entscheidet darüber, wie stabil Dein Bus später läuft. Am Master zu sparen ist der Fehler, den ich am häufigsten sehe – und er rächt sich genau dann, wenn die Installation wächst.
Raspberry Pi GPIO (w1)#
Die Kernel-Module w1-gpio und w1-therm erzeugen das Protokoll in Software direkt auf einem GPIO-Pin (Bitbanging). Das kostet nichts außer einem 4,7-kΩ-Widerstand gegen 3,3 V und ist perfekt zum Lernen. Es gibt aber keinen aktiven Pull-up und keine Kontrolle über die Flankensteilheit, und das Timing leidet unter Systemlast. Für ein paar Sensoren an kurzer Leitung super, für die Hausinstallation nicht.
DS9490R#
Ein USB-Adapter mit dem DS2490-Chip von Maxim/Analog Devices. Das Timing wird hier in Hardware erzeugt, unabhängig von der Last auf dem Rechner. Kostet um die 25 Euro, läuft unter Linux problemlos mit OWFS und ist der sinnvolle erste Schritt weg vom GPIO. Genau diesen Adapter schauen wir uns in Teil 3 dieser Reihe im Detail an.
Professional Busmaster PBM01-USB#
Der Busmaster von ElabNET für die Hutschiene. Er bringt drei voneinander unabhängige 1-Wire-Kanäle mit, die sich jeweils wie ein eigener Bus verhalten. Durch die aktive Steuerung der Flankensteilheit schafft er laut Hersteller je Kanal deutlich längere Leitungen und mehr Slaves als ein DS9490R. Damit lässt sich übrigens auch das Stern-Problem von oben elegant lösen: Man verteilt die Stränge einfach auf die Kanäle, statt sie zusammenzuklemmen. Derselbe Busmaster steckt auch im Timberwolf Server.
LinkUSB-T#
Der USB-Master von iButtonLink. Er hat einen eigenen Mikrocontroller, spricht ein einfaches ASCII-Protokoll und gilt ebenfalls als deutlich robuster als der DS9490R. Die Variante mit dem -T bringt den passenden Anschluss für die Busleitung gleich mit.
Verwendbare Leiter#
- Twisted Pair
- J-Y(ST)Y (Telekommunikationskabel)
- KNX-Installationsleitung (grün oder lila)
- Cat 5/6/7
Bei der Leitung kommt es auf zwei Dinge an: eine möglichst geringe Kapazität und verdrillte Adernpaare. Und dann gibt es noch einen Punkt, der bei 1-Wire regelmäßig falsch gemacht wird und mindestens genauso wichtig ist wie der Kabeltyp selbst:
J-Y(St)Y 2x2x0,8 ist der Klassiker für 1-Wire: geschirmt, verdrillt, günstig und in jedem Elektrogroßhandel zu bekommen. Von den elektrischen Werten her ist es praktisch identisch mit der grünen KNX-Installationsleitung, nur mit einer geringeren Prüfspannung. Bei vier Adern hast Du ein Paar für DATA und GND und ein zweites Paar für VDD und GND übrig – genau das, was Du für eine ordentliche, nicht-parasitäre Installation brauchst.
Cat 5/6/7 funktioniert ebenfalls sehr gut und hat sogar eine niedrigere Kapazität je Meter als J-Y(St)Y, was dem Bus entgegenkommt. Oft liegt so ein Kabel im Neubau ohnehin schon. Auch hier gilt: ein Paar für DATA und GND, ein zweites für VDD und GND. Was Du dagegen nicht tun solltest, ist zwei voneinander unabhängige 1-Wire-Busse durch dasselbe Kabel zu schicken – das gibt Übersprechen zwischen den Paaren.
Ein paar Punkte, die in der Praxis über Erfolg und Frust entscheiden:
- Den Schirm nur einseitig auflegen, und zwar am Master. Beidseitig aufgelegt bekommst Du Ausgleichsströme auf dem Schirm.
- 1-Wire-Leitungen nicht parallel zu 230 V und nicht im selben Bündel mit Leistungskabeln verlegen. Mindestabstand einhalten, Kreuzungen möglichst im rechten Winkel.
- Im Neubau lieber eine Leitung zu viel legen als eine zu wenig. Das Kabel kostet fast nichts, das nachträgliche Ziehen dagegen sehr viel.
- Leitungsenden sauber dokumentieren. Spätestens beim zwanzigsten Sensor willst Du wissen, welche ROM-ID in welchem Raum sitzt.
Im nächsten Teil wird es dann praktisch: Wir schließen die ersten Temperatur-Sensoren an und lesen sie mit dem OWFS aus.
Links
Transparenz-Hinweis (Level 1: Komplett selbst finanziert)
An diesem Beitrag ist kein Hersteller beteiligt! Sämtliche Produkte habe ich selber gekauft und trage die kompletten Kosten für diesen Beitrag alleine! Die Inhalte wurden somit von niemandem gesehen oder abgestimmt. Es handelt sich zu 100 Prozent um meine persönliche Meinung und Erfahrung! Danke an die Community, dass ich solche Inhalte für die Allgemeinheit zur Verfügung stellen kann!

