Raspberry Pi

Unterschätzte One-Wire-Schnittstelle

26. Mai 2021, 14:00 Uhr | von Klaus Dembowski
Diesen Artikel anhören

Fortsetzung des Artikels von Teil 1

One-Wire-Schnittstelle Teil 2

Pullups und Slew Rate

Um den  auf High-Pegel zu ziehen, reicht in der Regel ein gewöhnlicher Widerstand als Pullup aus. Mit steigender last durch die Knotenanzahl oder die Leitungslänge sinkt mit dem passiven Pullup die Flankensteilheit. Das kann dazu führen, dass der Pegel nicht mehr schnell genug ansteigt und eine gesendete Eins als Null erkennt. Um das zu verhindern, kann ein Entwickler einen stärkeren Pullup verwenden, indem er den Widerstand reduziert. Jedoch darf er den Widerstand nicht beliebig verkleinern – die Grenze ist bei 1000 bis 1500 Ω erreicht. Ein weiteres Verkleinern würde dazu führen, dass der minimale Low-Pegel des Systems immer weiter ansteigt, weil die Knoten den  nicht mehr auf 0 V ziehen können.

passend zum Thema

Schaltung Flankensteilheit
Bild 4: Schaltung für das Steuern der Flankensteilheit mit aktivem Pullup.
© Dembowski nach Dallas Semiconductor


Neben den Logikpegeln ist die Impulsform – die notwendige Flankensteilheit der Pulse – ausschlaggebend. Die Flankensteilheit (Slew Rate) der Pulse bestimmt sich über die Gesamtlänge des Kabels (vom Master bis zum letzten Slave) inklusive der Anschlüsse und Abzweigungen der angeschlossenen Knoten. Grundsätzlich verhindern Leitungskapazitäten steile Flanken auf einem Bus, sodass sich die Zeit mit größerer länge für einen Pegelwechsel erhöht, was letztendlich die Übertragungsrate reduziert. Je höher die Datenübertragungsrate ist, desto kürzer liegen die Signale am  an: Die Zeit, an der das Signal am  anliegt, darf nicht kürzer sein als die Zeit, die das Signal braucht, um sich über die Leitung auszubreiten.

Flankenverlauf
Bild 5: Flankenverlauf bei 1 bis 300 Knoten mit aktivem Pullup.
© Dembowski nach Dallas Semiconductor

Mit Verringern des Abstandes zum Pegel, der noch als logische Null interpretierbar ist, sinkt die Toleranz gegenüber Störungen. Aus diesem Grund setzt man für umfassendere One-Wire-Netze einen sogenannten aktiven Pullup ein, der die Flankensteilheit aktiv steuert.

Ein aktiver Pullup ist folgendermaßen zu realisieren: Neben dem stets aktiven Pullup-Widerstand (1 kΩ in Bild 4) ist eine gesteuerte Pulldown-Schaltung (high auf low) hinzuzufügen. Hiermit sind sogar Leitungslängen von 300 m mit bis zu 500 Slaves möglich. Jedoch erfordert das eine kleine Zusatzschaltung (Bild 4), die vom Mastercontroller zu steuern ist. Einige Maxim-Mastercontroller (DS2480B, DS2482) enthalten diese Schaltungseinheit bereits. Sie sind demnach ebenso für größere One-Wire-Netze zu verwenden. Ein aktiver Pullup unterstützt in der Phase des Flankenanstiegs (Bild 5) den passiven Pullup und schaltet sich danach wieder ab, damit der  bei Bedarf wieder auf Low gezogen werden kann.

Anschluss des DS18B20
Bild 6: Anschluss des DS18B20 an den GPIO-Port eines Raspberry Pi.
© Dembowski nach Dallas Semiconductor

One-Wire-Controller mit Temperatursensor

Um den Raspberry Pi als One-Wire-Controller [3] einsetzen zu können, ist mit »raspi-config« unter den Interfacing-Options lediglich »1-Wire« zu aktivieren. Ebenso lässt sich das über den Desktop (Einstellungen – Raspberry-Pi-Konfiguration – Schnittstellen) und »Eindraht aktiviert« bewerkstelligen. Nach dem Aktivieren ist ein Neustart empfehlenswert. Mit der Einstellung wird standardmäßig der GPIO-Port 4 (Pin 7) für One-Wire reserviert. Grundsätzlich ist es ebenso möglich, einen anderen Port hierfür zu bestimmen, was dann manuell in der Datei »/boot/config.txt« über die Zeile »dtoverlay=w1-gpio, gpiopin=x« einzutragen ist, wobei der gewünschte Port für das x einzusetzen ist.

Bild 7: Kommunikation mit dem One-Wire-Temperatursensor.
Bild 7: Bild 7: Kommunikation mit dem One-Wire-Temperatursensor.
© Dembowski

Als One-Wire-Chip wird ein Temperatursensor vom Typ DS18B20 (Bild 6) mit dem DQ-Pin an den Pin 7 (GPIO 4) der Raspberry-Pi-GPIO-Leiste angeschlossen. Maxim Integrated bietet den DS18B20 in verschiedenen Gehäuseformen an. Praktisch ist die Version im 3-Pin-TO92-Gehäuse, weil sie sich gut an der Messstelle positionieren lässt. Die Versorgung von 3,3   ist mit Pin 1 der Leiste über einen Pullup-Widerstand (4,7 kΩ) ebenfalls mit DQ zu verbinden und nicht etwa mit VDD, sonst wäre keine parasitäre Spannungsversorgung gegeben. Stattdessen ist der VDD-Anschluss des DS18B20 zusammen mit dem Masseanschluss (GND) an den Pin 9 der GPIO-Leiste zu schalten, was somit den One-Wire-Betrieb ermöglicht.

Python-Programm
Bild 8: Ein einfaches Python-Programm, das die gemessene Temperatur alle 10 s mit einem formatierten Messwert in °C sowie mit einem Zeitstempel ausgibt.
© Dembowski

Ein Überprüfen der Funktion lässt sich im Terminal (Bild 7) mit »ls« im Verzeichnis »/sys//w1/devices« durchführen. Hier muss der Sensor mit seiner spezifischen Adresse auftauchen, über die er selektierbar ist. Nötig ist das für das spätere Programmieren. Wie in Bild 7 zu erkennen ist, lassen sich mit dem cat-Befehl daraufhin die Daten auslesen. Ein einfaches Python-Programm, das die gemessene Temperatur alle 10 s mit einem formatierten Messwert in °C sowie mit einem Zeitstempel ausgibt, ist in Bild 8 dargestellt.

Sie finden den Artikel ebenso im E-Paper der Design&Elektronik ab Seite 17.

Dembowski Klaus
Klaus Dembowski ist wissenschaftlicher Angestellter am Institut für Mikrosystemtechnik an der TU Hamburg.
© Dembowski

Literatur

[1] Dembowski, K.: Computerschnittstellen und Bussysteme. 3. Auflage 2013. VDE-Verlag. ISBN 978-3-8007-3448-1.https://www.vde-verlag.de/buecher/483448/computerschnittstellen-und-bussysteme.html.
[2] Maxim Integrated. Übersicht One Wire-Komponenten.2020. https://www.maximintegrated.com/en/pl_list.cfm/filter/21.
[3] Dembowski, K.: Raspberry Pi – Das technische Handbuch. 3. Auflage 2020. Springer Verlag. ISBN 978-3-658-27492-4. https://www.springer.com/de/book/9783658274924#aboutBook.


  1. Unterschätzte One-Wire-Schnittstelle
  2. One-Wire-Schnittstelle Teil 2

Lesen Sie mehr zum Thema


Das könnte Sie auch interessieren

Jetzt kostenfreie Newsletter bestellen!

Weitere Artikel zu elektroniknet

Weitere Artikel zu Maker-Boards

Weitere Artikel zu Industrie-Computer / Embedded PC

Weitere Artikel zu SBCs / CPU-Boards / CoM / SoM

Weitere Artikel zu Sensoren & -systeme