我可以将两个不同的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都是温度传感器,并没有什么不同

Answers:


7

各种芯片的协议似乎没有什么区别,通常一个线协议可以让您混合搭配。这里的单线协议基本上具有在设备之间循环的方式。其他设备将忽略所有通信,直到发送特定脉冲为止,该脉冲将切换到下一个设备。考虑到这一点,以菊花链方式连接不同的IC也可以正常工作,因为在很小的时间点中,实际上有多个IC真正参与了通信。此时,协议与特定设备无关,这只是复位脉冲的问题。

此外,图像在这里使它非常清楚的是,1层Wire协议允许一个链不同的设备:

在此处输入图片说明


1
+1,好答案。所述的1-Wire协议是由Dallas半导体公司
Anindo戈什

@AnindoGhosh:嗯。我以为那是一个不同的1WP,但您似乎是正确的:)
Manishearth 2013年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.