Arduino Cảm biến nhiệt độ Rơ-le

Hướng dẫn này trình bày cách sử dụng Arduino và cảm biến nhiệt độ DS18B20 để điều khiển một rơ-le. Cụ thể, Arduino được lập trình để liên tục đo nhiệt độ bằng cảm biến DS18B20. Rơ-le sau đó được điều chỉnh theo các quy tắc sau:

Rơ-le sau đó có thể kết nối với quạt, phần tử gia nhiệt, phần tử làm mát hoặc các thiết bị khác.

Phần cứng cần chuẩn bị

1×Arduino Uno R3
1×USB 2.0 cable type A/B (for USB-A PC)
1×USB 2.0 cable type C/B (for USB-C PC)
1×DS18B20 Temperature Sensor (WITH Adapter)
1×DS18B20 Temperature Sensor (WITHOUT Adapter)
1×Relay
1×DC Power Jack
1×dây jumper
1×(Khuyến nghị) Screw Terminal Block Shield for Arduino Uno
1×(Khuyến nghị) Breadboard Shield for Arduino Uno
1×(Khuyến nghị) Enclosure for Arduino Uno
1×(Khuyến nghị) Prototyping Base Plate & Breadboard Kit for Arduino UNO

Or you can buy the following kits:

1×DIYables STEM V3 Starter Kit (Arduino included)
1×DIYables Sensor Kit (30 sensors/displays)
1×DIYables Sensor Kit (18 sensors/displays)

Về Rơ-le và cảm biến nhiệt độ

Nếu bạn chưa biết về rơ-le và cảm biến nhiệt độ (bố trí chân, cách hoạt động, cách lập trình ...), hãy tìm hiểu chúng trong các bài hướng dẫn sau đây:

Sơ đồ đấu dây

  • Sơ đồ nối dây với breadboard
sơ đồ nối dây rơ-le cho cảm biến nhiệt độ Arduino

This image is created using Fritzing. Click to enlarge image

  • Sơ đồ nối dây kèm bộ đổi nguồn (khuyến nghị)
sơ đồ nối dây cảm biến nhiệt ds18b20 và rơ le cho Arduino

This image is created using Fritzing. Click to enlarge image

Chúng tôi đề xuất mua một cảm biến DS18B20 đi kèm với một bộ điều hợp dây để dễ kết nối. Bộ điều hợp có một điện trở tích hợp, loại bỏ nhu cầu sử dụng một điện trở riêng trong hệ thống dây dẫn.

Mã Arduino - Cảm biến nhiệt độ kích hoạt rơ-le

/* * Mã Arduino này được phát triển bởi newbiely.vn * Mã Arduino này được cung cấp để sử dụng công khai, không có ràng buộc. * Để xem hướng dẫn chi tiết và sơ đồ kết nối, vui lòng truy cập: * https://newbiely.vn/tutorials/arduino/arduino-temperature-sensor-relay */ #include <OneWire.h> #include <DallasTemperature.h> const int RELAY_PIN = A5; // Arduino pin connected to the relay's pin const int SENSOR_PIN = 2; // Arduino pin connected to DS18B20 sensor's DATA pin const float TEMPERATURE_THRESHOLD = 20; // °C OneWire oneWire(SENSOR_PIN); // setup a oneWire instance DallasTemperature sensor(&oneWire); // pass oneWire to DallasTemperature library float temperature; int relay_state; void setup() { Serial.begin(9600); // initialize serial pinMode(RELAY_PIN, OUTPUT); sensor.begin(); // initialize the sensor } void loop() { sensor.requestTemperatures(); // send the command to get temperatures temperature = sensor.getTempCByIndex(0); // read temperature in Celsius if (temperature > TEMPERATURE_THRESHOLD) relay_state = HIGH; // set relay_state to HIGH else relay_state = LOW; // set relay_state to LOW digitalWrite(RELAY_PIN, relay_state); // control the relay // print to serial Serial.print("Temperature: "); Serial.print(temperature); Serial.print("°C => relay's state: "); Serial.println(relay_state); }

Hướng dẫn từng bước

  • Thực hiện nối dây giữa Arduino, cảm biến nhiệt độ và rơ-le như sơ đồ ở trên.
  • Kết nối Arduino với máy tính bằng cáp USB.
  • Mở Arduino IDE, chọn board và cổng phù hợp.
  • Đi tới biểu tượng Thư viện ở thanh bên trái của Arduino IDE.
  • Tìm kiếm “DallasTemperature”, sau đó tìm thư viện DallasTemperature của Miles Burton.
  • Nhấp nút Cài đặt để cài đặt thư viện DallasTemperature.
thư viện dallas temperature cho Arduino
  • Bạn sẽ được yêu cầu cài đặt các phụ thuộc của thư viện
  • Nhấp vào nút Cài đặt Tất cả để cài đặt thư viện OneWire.
thư viện onewire cho Arduino
  • Sao chép mã ở phía trên và mở bằng Arduino IDE
  • Nhấn nút Tải lên trên Arduino IDE để nạp mã vào Arduino
  • Điều chỉnh nhiệt độ quanh cảm biến nhiệt độ
  • Xem sự thay đổi của rơ-le
  • Xem kết quả trên Serial Monitor, nó trông như dưới đây:
COM6
Send
Temperature: 19.1°C => relay's state: 0 Temperature: 19.3°C => relay's state: 0 Temperature: 19.7°C => relay's state: 0 Temperature: 19.8°C => relay's state: 0 Temperature: 20.1°C => relay's state: 1 Temperature: 20.6°C => relay's state: 1 Temperature: 21.4°C => relay's state: 1
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

Mã Arduino - Cảm biến nhiệt độ kích hoạt rơ-le với sai số

Trong quá trình vận hành, nhiệt độ có thể dao động lên hoặc xuống ngưỡng đã được xác định trước, dẫn đến sự thay đổi trạng thái thường xuyên và đột ngột ở rơ-le, điều này có thể gây ra các vấn đề vận hành ngoài dự tính. Để giải quyết vấn đề này, có thể bao gồm một biên độ dung sai cho ngưỡng. Đoạn mã dưới đây minh họa cách triển khai giải pháp này:

/* * Mã Arduino này được phát triển bởi newbiely.vn * Mã Arduino này được cung cấp để sử dụng công khai, không có ràng buộc. * Để xem hướng dẫn chi tiết và sơ đồ kết nối, vui lòng truy cập: * https://newbiely.vn/tutorials/arduino/arduino-temperature-sensor-relay */ #include <OneWire.h> #include <DallasTemperature.h> const int RELAY_PIN = A5; // Arduino pin connected to the relay's pin const int SENSOR_PIN = 2; // Arduino pin connected to DS18B20 sensor's DATA pin const float TEMPERATURE_THRESHOLD = 20; // °C const float TOLERANCE = 0.5; // °C OneWire oneWire(SENSOR_PIN); // setup a oneWire instance DallasTemperature sensor(&oneWire); // pass oneWire to DallasTemperature library float temperature; int relay_state; void setup() { Serial.begin(9600); // initialize serial pinMode(RELAY_PIN, OUTPUT); sensor.begin(); // initialize the sensor } void loop() { sensor.requestTemperatures(); // send the command to get temperatures temperature = sensor.getTempCByIndex(0); // read temperature in Celsius if (temperature > (TEMPERATURE_THRESHOLD + TOLERANCE)) relay_state = HIGH; // set relay_state to HIGH else if (temperature < (TEMPERATURE_THRESHOLD - TOLERANCE)) relay_state = LOW; // set relay_state to LOW digitalWrite(RELAY_PIN, relay_state); // control the relay // print to serial Serial.print("Temperature: "); Serial.print(temperature); Serial.print("°C => relay's state: "); Serial.println(relay_state); }

Đoạn mã được trình bày ở trên xác định ngưỡng 20°C và độ lệch cho phép 0,5°C. Các điều kiện sau đây áp dụng:

  • Nếu nhiệt độ dưới 19,5°C, rơ le được tắt.
  • Nếu nhiệt độ trên 20,5°C, rơ le được bật.
  • Nếu nhiệt độ nằm giữa 19,5°C và 20,5°C, trạng thái của rơ le được giữ nguyên.