Mục lục:

Bộ điều khiển mạng cảm biến nhiệt độ chịu lỗi: 8 bước
Bộ điều khiển mạng cảm biến nhiệt độ chịu lỗi: 8 bước

Video: Bộ điều khiển mạng cảm biến nhiệt độ chịu lỗi: 8 bước

Video: Bộ điều khiển mạng cảm biến nhiệt độ chịu lỗi: 8 bước
Video: Mạch nhiệt độ EWELLY 2024, Tháng bảy
Anonim
Bộ điều khiển mạng cảm biến nhiệt độ chịu lỗi
Bộ điều khiển mạng cảm biến nhiệt độ chịu lỗi

Có thể hướng dẫn này hướng dẫn bạn cách chuyển đổi bảng Arduino Uno thành bộ điều khiển đa năng cho một bộ cảm biến nhiệt độ DS18B20 có khả năng tự động cô lập các cảm biến bị lỗi.

Bộ điều khiển có thể quản lý tối đa 8 cảm biến với Arduino Uno. (Và hơn thế nữa với Arduino Mega hoặc với một chút sửa đổi phần mềm.)

Bước 1: Câu chuyện đằng sau…

Một vài năm trước, tôi đã thiết lập mạng cảm biến nhiệt độ DS18B20 trong nhà kính của cha tôi cho bộ điều khiển sưởi ấm dựa trên pi của tôi. Thật không may, độ tin cậy của bộ điều khiển kém chủ yếu do cảm biến thường xuyên bị mất điện. Tôi đã thử nhiều thiết lập - nguồn ký sinh, nguồn trực tiếp, kết nối mạng với pi cũng như kết nối nó với bảng tùy chỉnh dựa trên Atmega (mục đích chính là để điều khiển động cơ van).

Điều tồi tệ hơn, độ tin cậy của mạng cảm biến giảm chủ yếu vào các đêm mùa đông trong khi hầu như không có vấn đề gì vào mùa hè! Cái quái gì đang xảy ra ở đây?

Để điều tra cảm biến nào gây ra sự cố, cần phải bật / tắt từng cảm biến hoặc bật bất kỳ sự kết hợp nào giữa chúng.

Bước 2: Cách thức hoạt động

DS18B20 (cảm biến nhiệt độ) sử dụng giao thức 1 dây độc quyền cho phép nhiều cảm biến chia sẻ liên kết dữ liệu chung (một dây đó). Liên kết dữ liệu chung này được kết nối với một trong các chân GPIO của Arduino và đến + 5 V thông qua một điện trở kéo lên - không có gì lạ, nhiều tài liệu hướng dẫn đề cập đến thiết lập này.

Bí quyết là mỗi dây dẫn nguồn của cảm biến được kết nối với các chân GPIO (chuyên dụng) riêng, để chúng có thể được bật và tắt riêng biệt. Ví dụ: nếu một cảm biến có dây dẫn Vcc được kết nối với chân số 3 và GND với chân số 2, việc đặt chân số 3 thành CAO sẽ cung cấp năng lượng cho cảm biến (không có gì ngạc nhiên) trong khi đặt chân số 2 thành THẤP sẽ cung cấp nguồn điện cho tôi). Đặt cả hai chân ở chế độ đầu vào sẽ (gần như) cô lập hoàn toàn cảm biến và hệ thống dây điện của nó - bất kể lỗi gì (ví dụ: phím tắt) xảy ra bên trong nó, nó sẽ không ảnh hưởng đến các chân khác.

(Công bằng mà nói rằng việc kết nối dây dữ liệu với một thứ khác được kết nối bằng cách nào đó với Arduino thực sự sẽ gây ra nhiễu, nhưng nó gần như là không thể trong thiết lập của tôi).

Lưu ý rằng DS18B20 tiêu thụ tới 1, 5 mA trong khi một chân Arduino có thể cấp nguồn / chìm lên đến 40 mA, do đó, hoàn toàn an toàn khi cấp nguồn trực tiếp cho cảm biến bằng chân GPIO.

Bước 3: Vật liệu & Công cụ

Vật liệu

  • 1 bảng Arduino UNO
  • 3 tiêu đề ghim cái: 1 × 4, 1 × 6 và 1 × 6 (hoặc lâu hơn - tôi cắt chúng từ một tiêu đề 1 × 40)
  • một loại keo
  • một đoạn dây cooper trần (ít nhất 10 cm)
  • băng cách nhiệt
  • vật tư tiêu hao hàn (dây, từ thông…)

Công cụ

  • thiết bị hàn (sắt, giá đỡ,…)
  • kìm cắt nhỏ

Bước 4: Khắc phục mọi thứ cùng nhau

Sửa chữa mọi thứ cùng nhau
Sửa chữa mọi thứ cùng nhau

Dán các đầu ghim cái vào các tiêu đề bảng Arduino:

  1. Tiêu đề 1 × 4 bên cạnh tiêu đề chân "tương tự", cạnh nhau với các chân A0 – A4
  2. Tiêu đề 1 × 6 bên cạnh tiêu đề ghim kỹ thuật số đầu tiên, cạnh nhau với các chân 2–7
  3. Tiêu đề 1 × 6 bên cạnh tiêu đề ghim kỹ thuật số thứ hai, cạnh nhau với các chân 8–13

Lưu ý rằng tiêu đề của tôi dài hơn một chút … nó không có khuyết điểm và cũng không có ưu điểm mà tôi cho là.

Bước 5: Kết nối mọi thứ lại với nhau

Kết nối mọi thứ với nhau
Kết nối mọi thứ với nhau
Kết nối mọi thứ với nhau
Kết nối mọi thứ với nhau

Đấu dây cho đường dây bus 1 dây:

  1. Kết nối tất cả các dây dẫn của các tiêu đề được dán ở phía "kỹ thuật số" (tiếp giáp với các chân 2–13) bằng cách hàn một đoạn dây trần vào chúng
  2. Hàn đầu dây này vào dây dẫn chân SCL (kết nối bên trong với A5)
  3. Kết nối tất cả các dây dẫn của tiêu đề được dán ở phía "tương tự" (chân A0 – A3) bằng cách hàn một đoạn dây trần vào chúng
  4. Hàn đầu dây này vào dây dẫn A4 và A5 (Tôi đã sử dụng A5 và A6 vì tôi có một bảng có A6 & A7)
  5. Hàn một điện trở 4k7 giữa đầu kia của dây này và dây dẫn chân +5 V.

Ghi chú:

  • Các chân A0 – A5, mặc dù được đánh dấu là "tương tự", cũng có thể được sử dụng làm chân kỹ thuật số GPIO.
  • Chân SCL ở phía "kỹ thuật số" được kết nối nội bộ với A5 ở phía "tương tự"; được kết nối với các tiêu đề, điều này tạo thành đường dây buýt 1 dây
  • A4 (được sử dụng như đầu vào tương tự) đo điện áp của bus cho mục đích chẩn đoán. Đó là lý do tại sao nó được kết nối trực tiếp với xe buýt.
  • Tôi đã sử dụng A6 thay vì A4 vì tôi có một bảng có A6 & A7; ban đầu tôi muốn sử dụng A7 làm bus chính 1 dây nhưng hai chân này không thể được định cấu hình thành GPIO kỹ thuật số.
  • Để tránh kết nối sai các đầu nối cảm biến, bạn có thể bỏ / cắt phần tiếp xúc không sử dụng (không được kết nối với bất kỳ dây nào) khỏi mỗi đầu nối đực và chèn nó vào lỗ tương ứng trên đầu ghim được dán.

Bước 6: Kết nối các cảm biến

Kết nối các cảm biến
Kết nối các cảm biến

Bạn vừa tạo một mảng tám ổ cắm 2 × 2. Bạn có thể hàn và lắp ráp các đầu nối Dupont 2 × 2 với cáp cảm biến và kết nối chúng với các ổ cắm này. Phần mềm cấu hình các chân để chân chẵn là chân GND và chân lẻ là chân Vcc. Đối với mỗi cảm biến, chân Vcc chỉ là chân GND + 1. Một trong hai chân khác của ổ cắm 2 × 2 (một trong hai chân đó trong tiêu đề được dán & hàn) dành cho dây dữ liệu của cảm biến. Nó không quan trọng mà bạn sử dụng.

Bước 7: Phần mềm điều khiển

Phần mềm điều khiển
Phần mềm điều khiển

Bản phác thảo SerialThermometer chạy bộ điều khiển. Bạn có thể tìm thấy nó trên github. Mở và tải lên bằng Arduino IDE.

Từng bước một:

  1. Mở Arduino IDE của bạn và cài đặt thư viện DallasTempentic và tất cả các phụ thuộc của nó thông qua Sketch | Bao gồm Thư viện | Quản lý Thư viện.
  2. Kho lưu trữ sao chép git. Nếu không quen với git, hãy tải xuống và giải nén zip này ở bất kỳ đâu trên máy tính của bạn.
  3. Mở bản phác thảo SerialThermometer trong Arduino IDE của bạn.
  4. Kết nối bảng Arduino đã sửa đổi của bạn với máy tính bằng cáp USB (cách tiêu chuẩn)
  5. Tải lên bản phác thảo bằng Arduino IDE của bạn
  6. Mở Serial Monitor qua Tools | Màn hình nối tiếp
  7. Bạn sẽ thấy đầu ra chẩn đoán chứa một số phép đo vật lý, sau đó là các kết quả đo nhiệt độ - mỗi ổ cắm cảm biến trên một đường thẳng. Nếu số lượng cảm biến khác nhau khi bật riêng và khi bật tất cả cùng nhau), các vòng chẩn đoán cho đến khi được giải quyết. Nhưng đừng lo lắng, chẩn đoán cũng cung cấp các phép đo nhiệt độ!

Xem hình ảnh chú thích để biết thêm chi tiết về kết quả chẩn đoán.

Bước 8: Kết luận

Tôi có cảm giác chắc chắn rằng lỗi mạng cảm biến của tôi là do điện dung cao của hệ thống dây điện dài của tôi - khoảng 10 m cáp LIYY 314 (3 × 0, 14 mm²) cho mỗi cảm biến. Các thí nghiệm của tôi cho thấy rằng giao tiếp bị ngắt nếu có điện dung xung quanh hoặc cao hơn 0,01 μF giữa xe buýt 1 dây và mặt đất, tôi nghĩ vì điện trở kéo lên 4k7 không thể kéo xe buýt đến + 5 V đủ nhanh để tuân thủ các giới hạn giao thức.

Trong thiết lập của tôi, nó xảy ra khi có hơn 3 cảm biến được kết nối với nhau. Sau đó, bộ điều khiển lặp lại trong chu kỳ chẩn đoán, đo nhiệt độ từng cảm biến (cảm biến cũng mát mẻ…)

Nhưng cảm biến thứ 5 (28: ff: f2: 41: 51: 17: 04: 31) trông khá ốm (có thể là hàn sai), vì vậy tôi có thể điều tra thêm!

Đề xuất: