Kann ich zwei verschiedene 1-Wire-Geräte mit demselben Datenpin auf einem Arduino verbinden?

Ich habe DS18B20- Temperatursensoren viele Male verwendet und verstehe, dass sie auf demselben Datenpin verkettet werden können. Könnten zwei verschiedene Sensoren auf die gleiche 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 irgendwelche Beschränkungen bezüglich 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, aber der DS18B20 und der DS18S20 sind beide Temperatursensoren und unterscheiden sich nicht allzu sehr

Antworten (1)

Es scheint keinen Unterschied im Protokoll für die verschiedenen Chips zu geben, und im Allgemeinen können Sie mit One-Wire-Protokollen mischen und anpassen. Das One-Wire-Protokoll hier hat im Grunde eine Möglichkeit, zwischen den Geräten zu wechseln. Andere Geräte ignorieren alle Kommunikationen, bis ein bestimmter Impuls gesendet wird, der auf das nächste Gerät umschaltet. Vor diesem Hintergrund erscheint es logisch, dass auch die Reihenschaltung verschiedener ICs funktionieren wird, da es nur einen kleinen Zeitpunkt gibt, an dem mehr als ein IC wirklich an der Kommunikation beteiligt ist. Und an diesem Punkt hat das Protokoll nichts mit dem spezifischen Gerät zu tun, es handelt sich nur um einen Reset-Impuls.

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

Geben Sie hier die Bildbeschreibung ein

+1, gute Antwort. Das 1-Wire- Protokoll stammt von Dallas Semiconductor Corp.
@AnindoGhosh: Hm. Ich dachte, das wäre ein anderes 1WP, aber Sie scheinen Recht zu haben :)