2つの異なる1-WireデバイスをArduinoの同じデータピンに接続できますか?


8

私はDS18B20温度センサーを何度も使用しており、同じデータピンにデイジーチェーン接続できることを理解しています。2つの異なるセンサーを同じ方法で接続できますか?

たとえば、同じデータピンを使用して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はどちらも温度センサーであり、それほど異なるわけではありません

回答:


7

さまざまなチップのプロトコルに違いはないようで、一般に1線式プロトコルを使用すると、さまざまなチップを組み合わせることができます。ここでの1線式プロトコルには、基本的にデバイス間を循環する方法があります。他のデバイスは、次のデバイスに切り替わる特定のパルスが送信されるまで、すべての通信を無視します。これを念頭に置いて、複数のICが本当に通信に関与しているのはごくわずかな時点であるため、異なるICをデイジーチェーン接続することも同様に機能するのは当然のようです。その時点で、プロトコルは特定のデバイスとは何の関係もありません。それはリセットパルスの問題です。

その上、ここの写真は、1 Wireプロトコルが異なるデバイスをチェーンすることを可能にすることを明確に示しています:

ここに画像の説明を入力してください


1
+1、良い答え。1-Wireのプロトコルは、ダラスセミコンダクタ社である
Anindoゴーシュ

@AnindoGhosh:うーん。それは別の1WPだと思ったが、あなたは正しいようだ:)
Manishearth 2013
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.