¿Puedo conectar dos dispositivos 1-Wire diferentes al mismo pin de datos en un Arduino?

8

He usado sensores de temperatura DS18B20 muchas veces y entiendo que pueden conectarse en cadena en el mismo pin de datos. ¿Podrían conectarse dos sensores diferentes de la misma manera?

Por ejemplo, ¿podría usar el mismo pin de datos para leer datos de un DS18B20 y un DS2417 ? ¿Habría alguna limitación con respecto al hardware o al aspecto del código?

Echando un vistazo al código de ejemplo en arduino.cc :

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;
  }

Está claro que hay al menos cierta tolerancia para diferentes dispositivos, sin embargo, el DS18B20 y el DS18S20 son sensores de temperatura y no son tan diferentes

JohnB
fuente

Respuestas:

7

Parece que no hay diferencia en el protocolo para los diversos chips, y generalmente los protocolos de un solo cable le permiten mezclar y combinar. El protocolo de un solo cable aquí básicamente tiene una forma de ciclar entre los dispositivos. Otros dispositivos ignoran todas las comunicaciones hasta que se envía un cierto pulso, que cambia al siguiente dispositivo. Con esto en mente, parece lógico que la conexión en cadena de diferentes circuitos integrados funcione también, ya que solo hay un pequeño momento en el que hay más de un circuito integrado realmente involucrado en la comunicación. Y en ese punto, el protocolo no tiene nada que ver con el dispositivo específico, solo se trata de un pulso de reinicio.

Además, la imagen aquí deja en claro que el protocolo 1 Wire permite encadenar diferentes dispositivos:

ingrese la descripción de la imagen aquí

Manishearth
fuente
1
+1, buena respuesta. El protocolo 1-Wire es de Dallas Semiconductor Corp.
Anindo Ghosh el
@AnindoGhosh: Hm. Pensé que era un 1WP diferente, pero parece que estás en lo correcto :)
Manishearth