1 Wire Technik

Die 1 Wire Technik wurde von Dallas Semiconductor, jetzt Maxim, entwickelt. Siehe Wikipedia.

Es gibt ziemlich viele Möglichkeiten, 1 Wire Peripherie einzubinden, u.a. :

  • HW
    • Raspi I/O Pins direkt (wie im obigen Bild vorgeschlagen)
    • USB zu 1-Wire Konverter (Favorit)
      • RS232 zu 1-Wire Konverter (im einfachsten Fall eine Zener-Diode und "Hühnerfutter")
    • 1-Wire TCP/IP Server (teuer, vielleicht auch gut ?)
    • spezielle 1Wire Interfaces zum Aufstecken auf den Raspi
  • SW
    • "zu Fuß" mit generischem C/C++, oder mit Lazarus/Delphi, oder ...
    • Digitemp
    • OWFS 1-Wire File System (Favorit)
    • Diverse 1-Wire Debian Pakete

Als Temperatursensoren werden die bewährten 1 Wire Sensoren, wie etwa der DS18S20, benutzt. Da geht aber noch viel mehr: Ausgaben, Speicher, ID-Module, ....

Wer sich auf der Maxim Seite unter den 1-Wire Produkten umschaut, sollte sich die Kategorie "Memory (EPROM, EEPROM, ROM, NV SRAM)" anschauen. Dort sind die Digital I/O Bausteine DS2408 (8 Kanal) und DS2413 (2 Kanal) versteckt. Sehr nette Bausteine für digitale Ein-/Ausgabe. Es gibt eine Reihe fertiger Baugruppen, z.B. http://www.hobby-boards.com/store/products.php?product=8-Channel-I%7B47%7DO-(8-Relay-Version)

Bislang erprobt sind die seriellen und die USB Interfaces (HW) und als SW Digitemp, Lazarus/Delphi und OWFS. An einer stabilen Einbindung von OWFS in CCU.IO wird gearbeitet.

Die 1 Wire Sensoren können im "Parasite Mode" (Parasiten-Modus) angeschlossen werden. Dies ist der eigentliche "1 Wire" Modus, da dafür nur ein Draht (1 Wire) und Masse benutzt wird. Normalerweise reicht das auch. Für größere Netzwerke gibt es die Möglichkeit, die Sensoren mit einem zusätzlichen Draht mit einer Versorgungsspannung zu versehen, und den "1 Wire" exklusiv für den Datenverkehr, und nicht auch zur Stromversorgung einzusetzen.

Echte "1 Wire" Temperatur Sensoren mit Klingeldraht verkabelt können so aussehen :

Die kleinen schwarzen Gehäuse (TO-92) sind die Sensoren, die mit etwas Schrumpfschlauch mit dem Klingeldraht verbunden sind. Aderendhülsen am Ende des Klingeldrahtes erleichtern die spätere Verkabelung.

Bei der Zusammenführung der Verkabelung ist man frei. Lüsterklemmen reichen :

Viel edler sieht es natürlich aus, wenn alles mit RJ45 Steckern und Verteilern verdrahtet wird. Funktional kann man allerdings keinen Unterschied feststellen. Für eine Büroumgebung ist RJ45 nett, dauerhafter dürften Klingeldraht, Schrumpfschlauch, Aderendhülsen und Lüsterklemmen sein.

Eine gemischte Installation von Sensoren im "Parasite Mode" und solchen, die mit eigener Versorgung versehen sind, funktioniert auch.

Die gängigen 1 Wire Adapter benutzen Standard RJ45 Verbindungen. Ein billiges Standard Netzwerk Patchkabel kann aufgeschnitten werden und als Anschluss dienen. Dann braucht man noch nicht einmal eine Crimpzange. Weiterer Vorteil : In einem Patchkabel sind 4 verdrillte Aderpärchen mit insgesamt 8 Adern drin. Das macht die Versorgung der Sensoren mit der Versorgungsspannung einfach. Denn eine Versorgungsspannung ist bei einigen Adaptern schon mit auf dem RJ45 Stecker aufgelegt. Ein Patch-Kabel ist allerdings auch dicker als ein Klingeldraht. Und das normale RJ45 ist eigentlich nur für Büroumgebung ausgelegt.

Installation

Eine probate Methode bei der Installation von 1Wire Komponenten ist es, erst einmal die Hardware zu installieren. Wenn dann die Software die Sensoren erkannt hat, können die einzelnen Sensoren dadurch identifiziert werden, dass ihre Temperatur mit Heissluftföhn oder Kältespray gezielt verändert wird. Geht natürlich auch anders, ;-) .

1Wire serielles Protokoll

In den Datenblättern wird genau erklärt, wie das Protokoll funktioniert. Vereinfacht gesehen ist es ein "ganz normales" serielles Protokoll, das auch über die Schnittstellen COMn (Windows) oder ttyUSBn (Linux) abgewickelt werden kann. Die Telegramme sind mit einer CRC-Checksumme gesichert. Diese Checksumme sollte man auch auswerten, wenn man die Kommunikation selber programmiert. Anhand der Telegramme, die als fehlerhaft erkannt werden, läßt sich die Qualität der gesamten 1Wire Installation sehr gut abschätzen. Im Internet sind verschiedene 1Wire Programmpakete im Quelltextformat verfügbar.

Das OWFS Server Projekt ist eines der allerbesten 1Wire Programmpakete. Dort findet man die Fehler-Statistik leicht hier :

http://<Raspi-IP-Adresse>:2121/statistics/errors

1Wire Bustopologie

Wird das Interface LinkUSB benutzt, so sorgt die dort verbaute Interface-Elektronik für sehr schnelle Erfolgserlebnisse. Werden eigene Interfaces gebaut, oder die 1Wire Bausteine tatsächlich einfach direkt an einen E/A angeschlossen, sollte man etwas genauere Überlegungen anstellen. Es gibt sehr viel Information dazu auf den Herstellerseiten, z.B. https://www.maximintegrated.com/en/app-notes/index.mvp/id/148 .

Welchen 1Wire Temperatursensor ?

Der Unterschied zwischen den Sensoren DS 18S20 und DS 18B20 besteht in der programmierbaren Auflösung des DS 18B20 : DS18B20 Programmable Resolution 1-Wire Digital Thermometer . Einfacher zu programmieren ist der DS 18S20. Für die Benutzung als reine Temperaturfühler sollten diese beiden Sensoren gleichwertig sein.

Einfaches elektrisches RS232 Interface zum 1Wire Bus

Wie geschrieben : Es reicht ein bischen "Hühnerfutter", um 1Wire Sensoren mit der seriellen RS232 Schnittstelle zu verbinden : Zener Dioden, Dioden, Kondensatoren, Widerstände. Im Netz gibt es ziemlich viele Bauvorschläge für ein solches Interface. Weil sich die Seiten und die Vorschläge relativ schnell ändern, wird eine entsprechende Google Suche empfohlen. Elf Lösungen mit Schaltplänen wurden am 2017-03-25 mal angeschaut. Die Lösung an sich wird nicht unbedingt empfohlen, weil es so viele unterschiedlich ausgelegte RS232 Schaltungen in den Rechnern gibt. LinkUSB ist in der Regel sehr viel zuverlässiger und besser.

Spezialitäten - 85 Grad

Die Aussage in der Spezifikation "The power-on reset value of the temperature register is +85°C" suggeriert, dass man nur nach einem Power-On Reset diesen Wert lesen wird. Aber auch wenn eine Temperaturwandlung der Sensoren DS 18x20 fehlschlägt (falsches Timing, Probleme mit der Spannungsversorgung, ...), wird eine Temperatur von 85 Grad ausgegeben. Das ist nicht unbedingt sehr elegant, wenn Temperaturen von 85 Grad tatsächlich auch gemessen werden können. Diese Fehlmessungen könnten per Software mit verschiedenen Maßnahmen abgefangen werden. OWFS lässt diese Fehlmessung leider als Temperatur von 85 Grad durch :

Der Wert 85 Grad sollte per Software abgefangen werden ! Am einfachsten wäre es, wenn in der Software Werte von 85 Grad generell ignoriert werden. Benutzt werden stattdessen die zuletzt gelesenen Werte. Das sollte auch funktionieren, wenn tatsächlich Temperaturen um 85 Grad gemessen werden.