Posso conectar dois dispositivos de 1 fio diferentes ao mesmo pino de dados em um Arduino?

8

Eu usei sensores de temperatura DS18B20 muitas vezes e entendo que eles podem ser encadeados no mesmo pino de dados. Dois sensores diferentes podem ser conectados da mesma maneira?

Por exemplo, eu poderia usar o mesmo pino de dados para ler dados de um DS18B20 e DS2417 ? Haveria alguma limitação quanto ao hardware ou ao aspecto do código?

Dando uma olhada no código de exemplo no 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;
  }

É claro que há pelo menos alguma tolerância para dispositivos diferentes, no entanto, o DS18B20 e o DS18S20 são ambos sensores de temperatura e não são tão diferentes

JohnB
fonte

Respostas:

7

Parece não haver diferença no protocolo para os vários chips, e geralmente os protocolos de um fio permitem misturar e combinar. O protocolo de um fio aqui basicamente tem uma maneira de alternar entre os dispositivos. Outros dispositivos ignoram todas as comunicações até que um determinado pulso seja enviado, que muda para o próximo dispositivo. Com isso em mente, parece lógico que diferentes CIs em cadeia funcionem também, pois existe apenas um pequeno momento no qual há mais de um IC realmente envolvido na comunicação. E, nesse ponto, o protocolo não tem nada a ver com o dispositivo específico, é apenas uma questão de um pulso de reset.

Além disso, a imagem aqui deixa bem claro que o protocolo 1 Wire permite a cadeia de dispositivos diferentes:

insira a descrição da imagem aqui

Manishearth
fonte
1
+1, boa resposta. O 1-Wire protocolo é por Dallas Semiconductor Corp.
Anindo Ghosh
@AnindoGhosh: Hm. Eu pensei que era um 1WP diferente, mas você parece ser correta :)
Manishearth