Thể loại: Mạch vi điều khiển
Số lượt xem: 9996
Bình luận về bài viết: 0

Đo nhiệt độ và độ ẩm trên Arduino - một cách lựa chọn

 

Để tạo một trạm thời tiết hoặc nhiệt kế gia đình, bạn cần học cách ghép bảng Arduino và thiết bị để đo nhiệt độ và độ ẩm. Đo nhiệt độ có thể được xử lý bằng cách sử dụng nhiệt điện trở hoặc cảm biến kỹ thuật số DS18B20, nhưng để đo độ ẩm sử dụng các thiết bị phức tạp hơn - cảm biến DHT11 hoặc DHT22. Trong bài viết này, chúng tôi sẽ chỉ cho bạn cách đo nhiệt độ và độ ẩm bằng cách sử dụng Arduino và các cảm biến này.

Đo nhiệt độ và độ ẩm trên Arduino - một cách lựa chọn

Đo nhiệt điện trở

Cách dễ nhất để xác định nhiệt độ là sử dụng nhiệt điện trở. Đây là một loại điện trở có điện trở phụ thuộc vào nhiệt độ môi trường. Có các nhiệt điện trở có hệ số nhiệt độ dương và âm của điện trở - PTC (còn gọi là nhiệt điện trở) và nhiệt điện trở NTC, tương ứng.

Trong biểu đồ dưới đây, bạn thấy sự phụ thuộc nhiệt độ của điện trở. Đường đứt nét cho thấy sự phụ thuộc đối với nhiệt điện trở TCS âm (NTC) và đường liền mạch đối với nhiệt điện trở TCS dương (PTC).

Sự phụ thuộc nhiệt độ của điện trở

Chúng ta thấy gì ở đây? Điều đầu tiên khiến bạn chú ý là lịch trình của nhiệt điện trở PTC bị hỏng và sẽ khó hoặc không thể đo được một số giá trị nhiệt độ, nhưng lịch trình cho nhiệt điện trở NTC ít nhiều đồng nhất, mặc dù rõ ràng là không tuyến tính. Điều này có nghĩa là gì? Sử dụng nhiệt điện trở NTC dễ dàng hơn để đo nhiệt độ, bởi vì dễ dàng hơn để tìm ra chức năng mà giá trị của nó thay đổi.

Để chuyển đổi nhiệt độ thành điện trở, bạn có thể tự lấy các giá trị, nhưng điều này khó thực hiện ở nhà và bạn cần một nhiệt kế để xác định giá trị thực của nhiệt độ của môi trường. Trong bảng dữ liệu của một số thành phần, ví dụ, một bảng như vậy được đưa ra cho một loạt các nhiệt kế NTC từ Vishay.

Bình giữ nhiệt Datashit Vishay TC

Sau đó, bạn có thể tổ chức dịch thông qua các nhánh bằng cách sử dụng chức năng nếu ... khác hoặc tổng đài. Tuy nhiên, nếu không có bảng như vậy trong bảng dữ liệu, bạn phải tính toán hàm theo đó điện trở thay đổi khi nhiệt độ tăng.

Để mô tả sự thay đổi này, phương trình Steinhart-Hart tồn tại.

Phương trình Steinhart-hart

Trong đó A, B và C là hằng số nhiệt điện trở được xác định bằng cách đo ba nhiệt độ với chênh lệch ít nhất 10 độ C. Đồng thời, các nguồn khác nhau chỉ ra rằng đối với một nhiệt điện trở 10 kΩ NTC điển hình, chúng bằng:

Hằng số nhiệt điện trở

B - hệ số beta, nó được tính dựa trên phép đo điện trở cho hai nhiệt độ khác nhau. Nó được biểu thị hoặc trong biểu dữ liệu (như minh họa bên dưới) hoặc được tính toán độc lập.

Hệ số B - beta từ biểu dữ liệu

Trong trường hợp này, B được chỉ định dưới dạng:

tỷ lệ beta

Điều này có nghĩa là hệ số được tính toán dựa trên dữ liệu thu được khi đo điện trở ở nhiệt độ 25 và 100 độ C, và đây là tùy chọn phổ biến nhất. Sau đó, nó được tính theo công thức:

B = (ln (R 1) - ln (R2)) / (1 / T1 - 1 / T2)

Một sơ đồ kết nối điển hình của nhiệt điện trở với vi điều khiển được hiển thị bên dưới.

Sơ đồ kết nối của nhiệt điện trở với vi điều khiển

Ở đây, R1 là một điện trở không đổi, nhiệt điện trở được kết nối với nguồn điện và dữ liệu được lấy từ điểm giữa giữa chúng, sơ đồ chỉ ra một cách có điều kiện rằng tín hiệu được đưa đến cực A0 - đầu vào tương tự Arduino.

Sơ đồ kết nối của nhiệt điện trở với vi điều khiển

Để tính toán điện trở của nhiệt điện trở, bạn có thể sử dụng công thức sau:

R của nhiệt điện trở = R1⋅ ((Vcc / Voutput) 1)

Để dịch sang ngôn ngữ dễ hiểu đối với arduino, bạn cần nhớ rằng arduino có ADC 10 bit, do đó, giá trị kỹ thuật số tối đa của tín hiệu đầu vào (điện áp 5V) sẽ là 1023. Sau đó, có điều kiện:

  • Dmax = 1023;

  • D là giá trị thực của tín hiệu.

Sau đó:

R của nhiệt điện trở = R1⋅ ((Dmax / D) 1)

Bây giờ chúng ta sử dụng điều này để tính toán điện trở và sau đó tính toán nhiệt độ của nhiệt điện trở bằng phương trình beta trong một ngôn ngữ lập trình cho Arduino. Bản phác thảo sẽ như thế này:

Phác thảo

DS18B20

Thậm chí phổ biến hơn để đo nhiệt độ với.Arduino tìm thấy một cảm biến kỹ thuật số DS18B20. Nó giao tiếp với vi điều khiển thông qua giao diện 1 dây, bạn có thể kết nối một số cảm biến (tối đa 127) với một dây và để truy cập chúng, bạn sẽ cần tìm ra ID của từng cảm biến.

Lưu ý: bạn nên biết ID ngay cả khi bạn chỉ sử dụng 1 cảm biến.

Cảm biến kỹ thuật số DS18B20

Sơ đồ kết nối của cảm biến DS18b20 với Arduino trông như thế này:

Sơ đồ kết nối của cảm biến DS18b20 với Arduino
Sơ đồ kết nối của cảm biến DS18b20 với Arduino

Ngoài ra còn có một chế độ năng lượng ký sinh - sơ đồ kết nối của nó trông như thế này (bạn cần hai dây thay vì ba):

Sơ đồ kết nối cảm biến Arduino

Ở chế độ này, hoạt động chính xác không được đảm bảo khi đo nhiệt độ trên 100 độ C.

Cảm biến nhiệt độ kỹ thuật số DS18B20 bao gồm một tập hợp các nút, giống như bất kỳ SIMS nào khác. Bạn có thể xem thiết bị nội bộ của nó bên dưới:

Cảm biến nhiệt độ kỹ thuật số DS18B20

Để làm việc với nó, bạn cần tải xuống thư viện Onewire cho Arduino và đối với chính cảm biến, nên sử dụng thư viện DallasTem Nhiệt độ.

Phác thảo

Ví dụ mã này cho thấy những điều cơ bản khi làm việc với 1 cảm biến nhiệt độ, kết quả tính bằng độ C là đầu ra thông qua cổng nối tiếp sau mỗi lần đọc.


DHT11 và DHT22 - cảm biến độ ẩm và nhiệt độ

DHT11 và DHT22 - cảm biến độ ẩm và nhiệt độ

Những cảm biến này là phổ biến và thường được sử dụng để đo độ ẩm và nhiệt độ môi trường. Trong bảng dưới đây, chúng tôi chỉ ra sự khác biệt chính của họ.

 
DHT11
DHT22
Xác định độ ẩm trong phạm vi
20-80%
0-100%
Đo chính xác
5%
2-5%
Xác định nhiệt độ
0 ° C đến + 50 ° C
-40 ° C đến + 125 ° C
Đo chính xác
2,5%
cộng hoặc âm 0,5 độ C
Tần suất bỏ phiếu
1 lần mỗi giây
1 lần trong 2 giây
Sơ đồ kết nối cảm biến độ ẩm với arduino

Sơ đồ kết nối khá đơn giản:

  • 1 kết luận - dinh dưỡng;

  • 2 kết luận - dữ liệu;

  • 3 kết luận - không được sử dụng;

  • 4 kết luận - dây chung.

Nếu cảm biến của bạn được chế tạo dưới dạng mô-đun, nó sẽ có ba đầu ra, nhưng không cần điện trở - nó đã được hàn vào bảng.

Sơ đồ kết nối của cảm biến độ ẩm ở dạng mô-đun với arduino

Để làm việc, chúng ta cần thư viện dht.h, nó không có trong bộ tiêu chuẩn, vì vậy nó cần được tải xuống và cài đặt trong thư mục thư viện trong thư mục với IDE arduino. Nó hỗ trợ tất cả các cảm biến trong gia đình này:

  • ĐẠI SỐ 11;

  • DHT 21 (AM2301);

  • DHT 22 (AM2302, AM 2321).

Ví dụ sử dụng thư viện:

Ví dụ sử dụng thư viện

Kết luận

Ngày nay, việc tạo trạm riêng để đo nhiệt độ và độ ẩm rất đơn giản nhờ nền tảng Arduino. Chi phí của các dự án như vậy là 3-4 trăm rúp. Đối với tuổi thọ pin, và không xuất ra máy tính, có thể được sử dụng hiển thị ký tự (chúng tôi đã mô tả chúng trong một bài viết gần đây), sau đó bạn có thể xây dựng một thiết bị di động để sử dụng cả ở nhà và trong xe hơi. Viết trong các ý kiến ​​những gì bạn muốn tìm hiểu về thủ công tự chế đơn giản trên arduino!

Xem thêm về chủ đề này:Các cảm biến phổ biến cho Arduino - kết nối, sơ đồ, phác thảo

Xem thêm tại bgv.electricianexp.com:

  • Các cảm biến phổ biến nhất cho Arduino
  • Kết nối cảm biến analog với Arduino, đọc cảm biến
  • Việc sử dụng cầu Wheatstone để đo lượng không điện
  • Cảm biến nhiệt độ. Phần thứ hai Bình giữ nhiệt
  • Cảm biến độ ẩm - cách chúng được sắp xếp và làm việc

  •