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

He usado sensores de temperatura DS18B20 muchas veces y entiendo que pueden conectarse en cadena en el mismo pin de datos. ¿Se pueden conectar 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.

Respuestas (1)

Parece que no hay diferencia en el protocolo para los distintos chips y, en general, los protocolos de un solo cable le permiten mezclar y combinar. El protocolo de un cable aquí básicamente tiene una forma de alternar 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 también funcione, ya que solo hay un pequeño punto en el tiempo 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, es solo cuestión de un pulso de reinicio.

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

ingrese la descripción de la imagen aquí

+1, buena respuesta. El protocolo 1-Wire es de Dallas Semiconductor Corp.
@AnindoGhosh: Mmm. Pensé que era un 1WP diferente, pero parece que tienes razón :)