Posso collegare due diversi dispositivi a 1 filo allo stesso pin dati su un Arduino?


8

Ho usato molte volte i sensori di temperatura DS18B20 e capisco che possono essere collegati in cascata sullo stesso pin dati. È possibile collegare due sensori diversi allo stesso modo?

Ad esempio, è possibile utilizzare lo stesso pin dati per leggere i dati sia da un DS18B20 che da un DS2417 ? Ci sarebbero delle limitazioni relative all'aspetto hardware o del codice?

Dando un'occhiata al codice di esempio su 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;
  }

È chiaro che esiste almeno una certa tolleranza per dispositivi diversi, tuttavia DS18B20 e DS18S20 sono entrambi sensori di temperatura e non sono poi così diversi

Risposte:


7

Non sembra esserci alcuna differenza nel protocollo per i vari chip e in genere i protocolli a un filo consentono di combinare e abbinare. Il protocollo a un filo qui in pratica ha un modo di passare da un dispositivo all'altro. Altri dispositivi ignorano tutte le comunicazioni fino a quando non viene inviato un determinato impulso, che passa al dispositivo successivo. Con questo in mente, sembra logico che funzionino anche diversi IC concatenati, dal momento che c'è solo un piccolo momento nel quale c'è più di un IC realmente coinvolto nella comunicazione. E a quel punto il protocollo non ha nulla a che fare con il dispositivo specifico, è solo una questione di un impulso di reset.

Inoltre, l'immagine qui mostra chiaramente che il protocollo 1 Wire consente di concatenare dispositivi diversi:

inserisci qui la descrizione dell'immagine


1
+1, buona risposta. Il protocollo 1-Wire è di Dallas Semiconductor Corp.
Anindo Ghosh

@AnindoGhosh: Hm. Ho pensato che fosse un 1WP diverso, ma sembra che tu abbia ragione :)
Manishearth
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.