Kann ich zwei verschiedene 1-Draht-Geräte an denselben Daten-Pin eines Arduino anschließen?

8

Ich habe viele Male DS18B20- Temperatursensoren verwendet und verstehe, dass sie auf demselben Daten-Pin verkettet werden können. Könnten zwei verschiedene Sensoren auf dieselbe Weise angeschlossen werden?

Könnte ich zum Beispiel denselben Daten-Pin verwenden, um Daten sowohl von einem DS18B20 als auch von einem DS2417 zu lesen ? Gibt es Einschränkungen hinsichtlich der Hardware oder des Codeaspekts?

Schauen Sie sich den Beispielcode auf arduino.cc an :

if ( addr[0] == 0x10) {
      Serial.print("Device is a DS18S20 family device.\n");
  }
  else if ( addr[0] == 0x28) {
      Serial.print("Device is a DS18B20 family device.\n");
  }
  else {
      Serial.print("Device family is not recognized: 0x");
      Serial.println(addr[0],HEX);
      return;
  }

Es ist klar, dass es zumindest eine gewisse Toleranz für verschiedene Geräte gibt, jedoch sind DS18B20 und DS18S20 beide Temperatursensoren und nicht allzu unterschiedlich

JohnB
quelle

Antworten:

7

Es scheint keinen Unterschied im Protokoll für die verschiedenen Chips zu geben, und im Allgemeinen können Sie mit einem Drahtprotokoll mischen und anpassen. Das Ein-Draht-Protokoll hat hier grundsätzlich eine Möglichkeit, zwischen den Geräten zu wechseln. Andere Geräte ignorieren alle Kommunikationen, bis ein bestimmter Impuls gesendet wird, der zum nächsten Gerät wechselt. Vor diesem Hintergrund erscheint es logisch, dass die Verkettung verschiedener ICs ebenfalls funktioniert, da es nur einen kleinen Zeitpunkt gibt, an dem mehr als ein IC wirklich an der Kommunikation beteiligt ist. Und zu diesem Zeitpunkt hat das Protokoll nichts mit dem spezifischen Gerät zu tun, es ist nur eine Frage eines Rücksetzimpulses.

Außerdem macht das Bild hier sehr deutlich, dass das 1-Draht-Protokoll es ermöglicht, verschiedene Geräte zu verketten:

Geben Sie hier die Bildbeschreibung ein

Manishearth
quelle
1
+1, gute Antwort. Das 1-Draht- Protokoll ist von Dallas Semiconductor Corp.
Anindo Ghosh
@ AnindoGhosh: Hm. Ich dachte, das wäre ein anderes 1WP, aber Sie scheinen richtig zu sein :)
Manishearth