Using the 1 WIRE protocol/de

Aus MCS Wiki AVR
< Using the 1 WIRE protocol(Unterschied zwischen Versionen)
Wechseln zu: Navigation, Suche
(Störungen und CRC)
(Nachteile des 1-wire-Busses)
 
(3 dazwischenliegende Versionen von einem Benutzer werden nicht angezeigt)
Zeile 153: Zeile 153:
  
 
Beim original 1-Wire-Bus spricht DS von einer Geschwindigkeit von 14 Kilobits / Sekunde. Wem das nicht genug ist: Manche Bauteile haben eine Overdrive-Option. Das verzehnfacht die Geschwindigkeit. Das passiert, indem die Time-Slots kleiner gemacht werden (von 60µs auf 6µs), was natürlich die Übertragung störanfälliger macht. Auch CRC-Fehler werden wahrscheinlich häufiger auftreten. Wenn es da keine Probleme gibt, sind 140kb/s erreichbar. Das ist SCHNELL.
 
Beim original 1-Wire-Bus spricht DS von einer Geschwindigkeit von 14 Kilobits / Sekunde. Wem das nicht genug ist: Manche Bauteile haben eine Overdrive-Option. Das verzehnfacht die Geschwindigkeit. Das passiert, indem die Time-Slots kleiner gemacht werden (von 60µs auf 6µs), was natürlich die Übertragung störanfälliger macht. Auch CRC-Fehler werden wahrscheinlich häufiger auftreten. Wenn es da keine Probleme gibt, sind 140kb/s erreichbar. Das ist SCHNELL.
<br>On the original 1-wire bus, DS says the transfer speed is about 14Kbits /second. And, if that was not enough, some devices has an overdrive option. That multiplies the speed by 10. This is issued by making the communication-time-slots smaller (from 60 uS to 6uS ) which naturally will make the devices more sensitive, and CRC-error will probably occur more often. But, if that is not an issue, ~140Kbit is a reachable speed to the devices. So, whatever you thought before, it is FAST.
 
  
 
<span style="font-family: 'Arial';  color: #000000">&nbsp;</span>
 
<span style="font-family: 'Arial';  color: #000000">&nbsp;</span>
  
Die Bascom-Suchroutine findet etwa 50 Geräte pro Sekunde am Bus, Adressieren und lesen einzelner Sensoren geht mit etwa 13 Geräten pro Sekunde
+
Die Bascom-Suchroutine findet etwa 50 Geräte pro Sekunde am Bus, Adressieren und lesen einzelner Sensoren geht mit etwa 13 Geräten pro Sekunde.
<br>The BASCOM scanning of the bus is finds about 50 devices / second , and reading a specific sensors value to a uC should be about 13 devices / second.
+
  
 
<span style="font-family: 'Arial';  color: #000000">&nbsp;</span>
 
<span style="font-family: 'Arial';  color: #000000">&nbsp;</span>
 
 
<span style="font-family: 'Arial';  color: #000000">&nbsp;</span>
 
<span style="font-family: 'Arial';  color: #000000">&nbsp;</span>
  
Zeile 167: Zeile 164:
  
 
Über das 1-wire-Netz kann hier nicht viel erzählt werden. Stern? Bus? Es scheint so, als ob man das mixen kann. Ein Bus-Netz ist nicht so empfindlich. (Anmerkung des Übersetzers: AN148 von Dallas/Maxim beschreibt das Thema ausführlich)
 
Über das 1-wire-Netz kann hier nicht viel erzählt werden. Stern? Bus? Es scheint so, als ob man das mixen kann. Ein Bus-Netz ist nicht so empfindlich. (Anmerkung des Übersetzers: AN148 von Dallas/Maxim beschreibt das Thema ausführlich)
<br>Of the 1w-net - that is an issue we will not cover so much. Star-net, bus-net? It seems like you can mix that. It is a bus-net, but not so sensitive about that.
 
  
 
<span style="font-family: 'Arial';  color: #000000">&nbsp;</span>
 
<span style="font-family: 'Arial';  color: #000000">&nbsp;</span>
 
 
<span style="font-family: 'Arial';  color: #000000">&nbsp;</span>
 
<span style="font-family: 'Arial';  color: #000000">&nbsp;</span>
  
Zeile 176: Zeile 171:
  
 
Jeder Teilnehmer ist einzigartig und man kann über 2 Leitungen kommunizieren. Dennoch kann man jeden Teilnehmer individuell adressieren, wenn man möchte. Es gibt 2^48 einzigartige Identifikationsnummern. Einfach ausprobieren..
 
Jeder Teilnehmer ist einzigartig und man kann über 2 Leitungen kommunizieren. Dennoch kann man jeden Teilnehmer individuell adressieren, wenn man möchte. Es gibt 2^48 einzigartige Identifikationsnummern. Einfach ausprobieren..
<br>Each device is individual - and you can communicate with it over the media of 2 wires. Still, you can address one individual device, if you like. Get its value. There are 64 ^ 2 unique identifications-numbers.
 
  
 
<span style="font-family: 'Arial';  color: #000000">&nbsp;</span>
 
<span style="font-family: 'Arial';  color: #000000">&nbsp;</span>
  
 
Natürlich, wenn viele Kabel unerwünscht sind, dann ist das ein großer Vorteil. Und hier wird nur 1 Prozessorpin gebraucht.
 
Natürlich, wenn viele Kabel unerwünscht sind, dann ist das ein großer Vorteil. Und hier wird nur 1 Prozessorpin gebraucht.
<br>Naturally, if lot of cables are unwanted, this is a big benefit. And you only occupy 1 processor pin.
 
  
 
<span style="font-family: 'Arial';  color: #000000">&nbsp;</span>
 
<span style="font-family: 'Arial';  color: #000000">&nbsp;</span>
  
 
DS liefert die verschiedensten Typen 1-Wire-Bauteile, und alle sind für den direkten Anschluss an einen Mikroprozessor gemacht. Keine extra Hardware. Es gibt Sensoren für Inputs aus der realen Welt und Potentiometer und Relais, mit denen man direkt etwas  bewirken kann. Alles auf dem selben Bus.
 
DS liefert die verschiedensten Typen 1-Wire-Bauteile, und alle sind für den direkten Anschluss an einen Mikroprozessor gemacht. Keine extra Hardware. Es gibt Sensoren für Inputs aus der realen Welt und Potentiometer und Relais, mit denen man direkt etwas  bewirken kann. Alles auf dem selben Bus.
<br>DS supplies with different types of devices, which all are made for interfacing an uC - directly. No extra hardware. There are sensors, so you can get knowledge about the real world, and there are also potentiometers and relays, so you can do something about it. On the very same bus.
 
  
 
<span style="font-family: 'Arial';  color: #000000">&nbsp;</span>
 
<span style="font-family: 'Arial';  color: #000000">&nbsp;</span>
  
 
Und auch der IButten von DS (schon mal gehört?) basiert auf der 1-Wire-Technologie.  
 
Und auch der IButten von DS (schon mal gehört?) basiert auf der 1-Wire-Technologie.  
<br>And the Ibutton approach from DS (ever heard of it?) is based on 1wire technology. Maybe something to pick up.
 
  
 
<span style="font-family: 'Arial';  color: #000000">&nbsp;</span>
 
<span style="font-family: 'Arial';  color: #000000">&nbsp;</span>
  
 
BASCOM verbindet den Mikrocontroller mit 1-wire-Slaves so einfach, daß (ab sofort) das auch als Vorteil zählt - vielleicht sogar als einer der Größten.&nbsp;;-)
 
BASCOM verbindet den Mikrocontroller mit 1-wire-Slaves so einfach, daß (ab sofort) das auch als Vorteil zählt - vielleicht sogar als einer der Größten.&nbsp;;-)
<br>BASCOM let you use an uC with 1wire-devices so easy, that (since now) that also has to count as a benefit - maybe one of the largest.&nbsp;;-)
 
  
 
<span style="font-family: 'Arial';  color: #000000">&nbsp;</span>
 
<span style="font-family: 'Arial';  color: #000000">&nbsp;</span>
 
 
<span style="font-family: 'Arial';  color: #000000">&nbsp;</span>
 
<span style="font-family: 'Arial';  color: #000000">&nbsp;</span>
  
Zeile 215: Zeile 204:
  
 
System engineer
 
System engineer
</div></div>
 
  
  

Aktuelle Version vom 23. Februar 2013, 22:19 Uhr

Inhaltsverzeichnis

Übersicht

Das 1-Wire-Protokoll war eine Erfindung von Dallas Semiconductor (heute Maxim Integrated Products). Es braucht nur eine Leitung für eine 2-Wege-Kommunikation. Natürlich wird noch eine Versorgung und Ground benötigt.

 

Dieser Beitrag wurde von Göte Haluza geschrieben. Er testete die neuen 1-Wire-Suchroutinen beim Bau einer Wetterstation.

 

Dallas Semiconductor (DS) 1-wire. Dies ist eine Kurzbeschreibung des 1-Wire-Busses und dessen Umsetzung in Bascom. Für detailliertere Informationen über 1-Wire besuchen Sie bitte www.maxim-ic.com. Durch Bascom wird 1-wire einfach. Dieser Text beschreibt den Zugang zum Thema aus der Sicht des Bascom-Nutzers.

   

1-Wire-Net ist ein serielles Kommunikationsprotokoll, welches von DS-Geräten benutzt wird. Der Bus kann auf 2 Arten implementiert werden:

   

Mit 2 Leitungen. Dann wird DQ und Ground benutzt. Die 5V-Versorgung erfolgt mit einem Pullup-Widerstand über die DQ-Leitung und lädt einen Kondensator im DS-Baustein. Der Kondensator versorgt das Bauteil während der Kommunikation, wenn die Datenleitung für kurze Pulse auf Ground liegt. Dieser Bus wird 1-Wire genannt.

 

 

Mit 3 Leitungen, wenn Vdd des Bauteils mit +5V versorgt wird und DQ und GND wie oben. Dieser Bus wird 2-Wire genannt.

 

Man sieht, daß die Ground-Leitung von DS nicht mitgezählt wird. Trotzdem benutzen wir die DS-Bezeichnungen weiterhin.

 

Wie es funktioniert.(1-wire)

Der normale Zustand des Busses ist DQ = High. Über DQ wird das Bauteil versorgt und kann seine Aufgabe erfüllen, für die es gebaut wurde.

 

Wenn der Host (Ihr Mikrocontroller(µC) eine Kommunikation starten will, muß er ein Reset-Kommando ausgeben. Das ist eine einfache elektrische Funktion,die die DQ-Leitung für eine Zeit auf Low setzt(480µS beim original DS 1-wire-Bus). Das bringt die DS-Bauteile in Reset-Modus, woraufhin diese einen Präsenz-Puls senden und danach in Bereitschaft gehen.

 

Der Präsenz-Puls ist einfach ein Aktives Low, dieses mal von den Busteilnehmern ausgelöst.

 

Jetzt weiß der Host noch nicht, was am Bus teilnimmt, er weiß nur, daß mindestens 1 Teilnehmer angeschlossen ist.

 

Die gesamte Kommunikation am 1-Wire-bus geht vom Host aus und geschieht über Time-Slots, zeitabhängige aktiv-Low Zustände an der normalerweise auf High liegenden DQ-Leitung. Die Länge der Pulse wird vom Teilnehmer bestimmt, der gerade Daten über den Bus sendet. Während der Low-Pulse wird der DS-Teilnehmer aus dem internen Kondensator versorgt.

 

 

Wie arbeitet man mit dem 1-wire-bus

Nach dem Reset kann auf den Bus geschrieben oder gelesen werden. Wenn nur 1 Sensor angeschlossen ist, oder wenn alle Sensoren gemeinsam angesprochen werden sollen, kann mit dem Kommanso "Skip Rom" begonnen werden. Das heißt: Ignoriere die IDs der Teilnehmer, überspringe diesen Teil der Kommunikation.

 

Ein 1-wire-Reset bringt alle Teilnehmer am Bus in den Status der Bereitschaft. Wenn nur ein Teilnehmer adressiert wird, gibt es von den restlichen keine Aktivität bis nicht ein neuer Reset erfolgt ist.

 

Diese Beschreibung geht nicht auf die Bedeutung der Kommandos ein, die sind meist selbsterklärend. Der Mikrocontroller schreibt Kommandos auf den Bus und liest danach die Antwort ein. Die Kommandos sind abhängig von den Bausteinen, die benutzt werden und was man damit erreichen will. Jeder DS-Baustein hat ein Datenblatt, welches man z.B. unter http://www.dalsemi.com/datasheets/pdfindex.htmlfinden kann. Darin kann man alles über die jeweiligen Kommandos nachlesen.

 

Einige Dinge müssen bei der Entscheidung des Bus-Types beachtet werden.

 

Die Kommandos in Bascom sind dieselben in beiden Fällen. Das ist kein Problem.

 

Bei der 2-wire-Version kommt die Versorgung von einer separaten Quelle. Das kann dieselbe sein, die den Mikroprozessor versorgt. Die Versorgung aus einem Prozessorpin hat bei mir nicht funktioniert.

 

Manche 1-Wire Bausteine brauchen mehr Strom während bestimmter Operationen.. Die DS1820 z.B. brauchen eine Menge beim Konvertieren der Temperatur. Weil die Sensoren wissen, wie sie versorgt werden (diese Information kann man auch auslesen), haben manche Operationen verschiedene Ausführungszeiten. Das Kommando "Temperatur konvertieren" z.B. braucht ~200ms bei 2-wire, aber ~700ms bei 1-wire. Das muß bei der Programmierung berücksichtigt werden.

 

Und der benötigte Strom muß auch irgendwie bereitgestellt werden.

 

Bei der Verwendung von 2-wire kann dieser Teil übersprungen werden. Man kann allen Teilnehmer gleichzeitig das Kommando "Temperatur konvertieren" übermitteln. Das spart Zeit. Dieses Kommando ist das mit dem größtem Energiebedarf, gerade wenn es an mehrere Sensoren gesendet wird, das sollte klar sein.

 

Bei 1-wire müssen ein paar Sachen beachtete werden. Z.B. darf nicht mehr Energie verbraucht werden, als bereitgestellt wird. Wie das geht? Das ist abhängig vom Bauteil (dessen Verbrauch) und was man damit machen will (der Verbrauch bei speziellen Kommandos).

 

Kurz, ungenaue Beschreibung des Strombedarfs, keine Leitungs-Reflexionen

 

Nur den Prozessor-Pin als Stromversorgung funktioniert mit weniger als 5 Sensoren. (AVR, Nutzung der 1-wire Funktionen, interner Pullup. 8051 nicht getestet). An gleichzeitige Kommandos an mehrere Sensoren ist nicht zu denken.

   

Mit +5V durch einen 4k7-Pullup-Widerstand an der DQ-Leitung funktioniert es mit 70 Sensoren. Aber Vorsicht, für den Fall der gleichzeitigen Temperatur-Konvertierung gibt es hier falsche Ergebnisse. Bei ungefähr 15 Sensoren ist hier das Maximum für die gleichzeitige Ausführung. Diese Erklärung gibt DS auf die Verwendung mit Pullup-Widerstand.

 

Auf diese Art wurde ein Bus mit 70 Bauteilen erfolgreich versorgt.

 

Der Widerstand, 4k7, könnte auch kleiner sein. DS sagt mindestens 1k5, ich habe es bis herunter zu 500 Ohm getestet, darunter ist der Bus nicht mehr nutzbar (AVR). Ein geringerer Widerstand braucht mehr Energie - und macht den Bus unempfindlicher gegen Störungen. Aber das Widerstands-Minimum ist abhängig von den elektrischen Eigenschaften des Mikrocontroller-Pins. Bei 4k7 sollte man bleiben, das ist die Standard-Empfehlung.

 

DS empfiehlt einen anderen Ansatz, genannt "Strong Pullup", welcher (kurz) mit einem MOS-FET arbeitet. Der versorgt die Datenleitung mit genug Strom während Operationen mit höherem Bedarf. Das ist nicht getestet, aber es sollte natürlich funktionieren. Eine wirkliche Einschränkung gibt es: Bascom unterstützt diese Variante nicht. Das wird hier erwähnt, damit Sie sich nicht wundern. "Strong Pullup" braucht einen extra Mikrocontroller-Pin um den MOS-FET anzusteuern.

 

Kabellänge

Dieser Bereich ist nur zum Verständnis der Begrenzungen.

Für kurze Leitungen bis 30 Meter ist die Auswahl des Kabels unkritisch. Selbst flache Telefonkabel arbeiten mit einer begrenzten Zahl von 1-Wire-Slaves. Wie auch immer, je länger der 1-wire-Bus, umso mehr unerwünschte Effekte gibt es und und die richtige Auswahl des Kabels bekommt eine größere Bedeutung.

   

Für längere Distanzen empfiehlt DS Twisted-Pair-Kabel (paarweise verdrillte Adern - z.B. CAT5)

 

Das DS Standard-Beispiel spricht von 100 Metern Kabellänge, es ist also kein Problem. Sie zeigen auch Beispiele mit 300 Metern und ich meine, ich habe sowas gesehen mit 600m-Bus, kann es aber gerade nicht finden.

 

Störungen und CRC

Je länger das Kabel und rauher die Umgebung, desto mehr fehlerhafte Bits werden erzeugt. Die Bauteile sind mit einem CRC-Generator ausgestattet, das letzte Byte der Sendung ist immer die Prüfsumme. In den Programmbeispielen kann man lernen, wie die Checksumme vom Mikrocontroller berechnet wird. Wenn man merkt, daß viele falsche Bits gelesen werden, sollte man die Kabel verbessern. ( Abschirmung, geringerer Widerstand)

   

Übertragungsgeschwindigkeit

Beim original 1-Wire-Bus spricht DS von einer Geschwindigkeit von 14 Kilobits / Sekunde. Wem das nicht genug ist: Manche Bauteile haben eine Overdrive-Option. Das verzehnfacht die Geschwindigkeit. Das passiert, indem die Time-Slots kleiner gemacht werden (von 60µs auf 6µs), was natürlich die Übertragung störanfälliger macht. Auch CRC-Fehler werden wahrscheinlich häufiger auftreten. Wenn es da keine Probleme gibt, sind 140kb/s erreichbar. Das ist SCHNELL.

 

Die Bascom-Suchroutine findet etwa 50 Geräte pro Sekunde am Bus, Adressieren und lesen einzelner Sensoren geht mit etwa 13 Geräten pro Sekunde.

   

Topologie

Über das 1-wire-Netz kann hier nicht viel erzählt werden. Stern? Bus? Es scheint so, als ob man das mixen kann. Ein Bus-Netz ist nicht so empfindlich. (Anmerkung des Übersetzers: AN148 von Dallas/Maxim beschreibt das Thema ausführlich)

   

Vorteile des 1-Wire- Busses

Jeder Teilnehmer ist einzigartig und man kann über 2 Leitungen kommunizieren. Dennoch kann man jeden Teilnehmer individuell adressieren, wenn man möchte. Es gibt 2^48 einzigartige Identifikationsnummern. Einfach ausprobieren..

 

Natürlich, wenn viele Kabel unerwünscht sind, dann ist das ein großer Vorteil. Und hier wird nur 1 Prozessorpin gebraucht.

 

DS liefert die verschiedensten Typen 1-Wire-Bauteile, und alle sind für den direkten Anschluss an einen Mikroprozessor gemacht. Keine extra Hardware. Es gibt Sensoren für Inputs aus der realen Welt und Potentiometer und Relais, mit denen man direkt etwas bewirken kann. Alles auf dem selben Bus.

 

Und auch der IButten von DS (schon mal gehört?) basiert auf der 1-Wire-Technologie.

 

BASCOM verbindet den Mikrocontroller mit 1-wire-Slaves so einfach, daß (ab sofort) das auch als Vorteil zählt - vielleicht sogar als einer der Größten. ;-)

   

Nachteile des 1-wire-Busses

Soweit bekannt, ist DS der einzige Hersteller von Sensoren für diesen Bus. Manche Leute meinen, deren Bauteile sind teuer. Bis jetzt war es wirklich schwierig, mit den Bauteilen zu kommunizieren. Insbesondere, wenn mehrere Slaves an einem Bus teilnehmen. Manche Leute sagen, der 1-wire-Bus wäre langsam, ich denke das ist nicht so.

 

 

Göte Haluza

System engineer


Languages   English Deutsch  
Meine Werkzeuge
Namensräume
Varianten
Aktionen
Navigation
In anderen Sprachen
Sprache