Могу ли я подключить два разных устройства 1-Wire к одному и тому же контакту данных на Arduino?

8

Я много раз использовал датчики температуры DS18B20 и понимаю, что их можно подключить последовательно к одному контакту данных. Могут ли два разных датчика быть подключены одинаково?

Например, могу ли я использовать один и тот же контакт данных для чтения данных как с DS18B20, так и с DS2417 ? Будут ли какие-либо ограничения в отношении аппаратного обеспечения или аспекта кода?

Взгляните на пример кода на 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;
  }

Понятно, что для разных устройств есть, по крайней мере, некоторый допуск, однако и DS18B20, и DS18S20 являются датчиками температуры и не так уж отличаются

Johnb
источник

Ответы:

7

Кажется, нет разницы в протоколе для различных чипов, и, как правило, протоколы с одним проводом позволяют смешивать и сопоставлять. Однопроводный протокол здесь в основном имеет способ циклического переключения между устройствами. Другие устройства игнорируют все коммуникации до тех пор, пока не будет отправлен определенный импульс, который переключается на следующее устройство. Имея это в виду, кажется логичным, что цепочечные цепочки различных микросхем также будут работать, поскольку существует только небольшой момент времени, когда в коммуникацию действительно вовлечено более одной микросхемы. И в этот момент протокол не имеет ничего общего с конкретным устройством, это всего лишь вопрос импульса сброса.

Кроме того, картина здесь совершенно ясно показывает, что протокол 1 Wire позволяет связывать различные устройства:

введите описание изображения здесь

Manishearth
источник
1
+1, хороший ответ. Протокол 1-Wire от Dallas Semiconductor Corp.
Аниндо Гош
@AnindoGhosh: Хм. Я думал, что это был другой 1WP, но вы, кажется, правы :)
Manishearth