Tôi có thể kết nối hai Thiết bị 1 dây khác nhau với cùng một pin dữ liệu trên Arduino không?


8

Tôi đã sử dụng cảm biến nhiệt độ DS18B20 nhiều lần và hiểu rằng chúng có thể bị xiềng xích trên cùng một pin dữ liệu. Hai cảm biến khác nhau có thể được kết nối theo cùng một cách?

Chẳng hạn, tôi có thể sử dụng cùng một pin dữ liệu để đọc dữ liệu từ cả DS18B20 và DS2417 không? Sẽ có bất kỳ hạn chế liên quan đến phần cứng hoặc khía cạnh mã?

Hãy xem mã ví dụ trên 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;
  }

Rõ ràng là có ít nhất một số dung sai cho các thiết bị khác nhau, tuy nhiên DS18B20 và DS18S20 đều là cảm biến nhiệt độ và không có gì khác nhau

Câu trả lời:


7

Dường như không có sự khác biệt trong giao thức cho các loại chip khác nhau và nói chung, một giao thức dây cho phép bạn trộn và kết hợp. Giao thức một dây ở đây về cơ bản có cách đi xe đạp giữa các thiết bị. Các thiết bị khác bỏ qua tất cả các liên lạc cho đến khi một xung nhất định được gửi, chuyển sang thiết bị tiếp theo. Với suy nghĩ này, có vẻ hợp lý rằng các IC khác nhau cũng có thể hoạt động tốt, vì chỉ có một điểm nhỏ trong thời gian có nhiều hơn một IC thực sự tham gia vào giao tiếp. Và tại thời điểm đó, giao thức không liên quan gì đến thiết bị cụ thể, đó chỉ là vấn đề của xung đặt lại.

Ngoài ra, hình ảnh ở đây cho thấy rất rõ rằng giao thức 1 Dây cho phép một chuỗi các thiết bị khác nhau:

nhập mô tả hình ảnh ở đây


1
+1, câu trả lời tốt. Các 1-Wire giao thức là bởi Dallas Semiconductor Corp
Anindo Ghosh

@AnindoGhosh: Hừm. Tôi nghĩ rằng đó là 1WP khác nhau, nhưng bạn có vẻ đúng :)
Manishearth
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.