Arduino Cảm biến nhiệt độ

Có nhiều loại cảm biến nhiệt độ có thể hoạt động với Arduino như LM35, TH02, HDC1000 hoặc HTS221... Trong bài hướng dẫn này, chúng ta sẽ học cách sử dụng cảm biến nhiệt độ DS18B20 chống nước với Arduino. Cảm biến này rẻ, dễ sử dụng và trông gọn gàng.

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×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ề cảm biến nhiệt độ One-Wire - DS18B20

Bố trí chân

Cảm biến nhiệt độ DS18B20 có ba chân:

  • Chân GND: cần được kết nối với GND (0V)
  • Chân VCC: cần được kết nối với VCC (5V hoặc 3.3V)
  • Chân DATA: là bus dữ liệu 1-Wire. Nó nên được kết nối với một chân kỹ thuật số trên Arduino.

Cảm biến thường có hai dạng: vỏ TO-92 (trông giống một transistor) và đầu dò chống nước. Chúng tôi sử dụng dạng đầu dò chống nước trong bài hướng dẫn này.

bố trí chân cảm biến nhiệt độ ds18b20

Kết nối cảm biến nhiệt độ DS18B20 với Arduino yêu cầu một điện trở kéo lên, điều này có thể gây phiền toái. Tuy nhiên, một số nhà sản xuất đơn giản hóa quá trình bằng cách cung cấp một bộ ghép dây có sẵn điện trở kéo lên và một khối đầu nối vít, giúp mọi việc dễ dàng hơn nhiều.

Sơ đồ đấu dây

  • Sơ đồ mạch với breadboard
sơ đồ đấu dây cảm biến nhiệt độ Arduino

This image is created using Fritzing. Click to enlarge image

  • Sơ đồ nối dây kèm adapter (được khuyến nghị)
sơ đồ nối dây ds18b20 với Arduino

This image is created using Fritzing. Click to enlarge image

  • Sơ đồ đấu dây thực với bộ chuyển đổi
sơ đồ nối dây adapter ds18b20 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 để kết nối dễ dàng. Bộ điều hợp có một điện trở tích hợp, giúp loại bỏ nhu cầu sử dụng một điện trở riêng trong dây dẫn.

Cách Lập Trình Cho Cảm Biến Nhiệt DS18B20

  • Bao gồm thư viện:
#include <OneWire.h> #include <DallasTemperature.h>

*Khai báo đối tượng OneWire và DallasTemperature tương ứng với chân được kết nối với chân DATA của cảm biến

OneWire oneWire(SENSOR_PIN); // setup a oneWire instance DallasTemperature sensors(&oneWire); // pass oneWire to DallasTemperature library
  • Khởi tạo cảm biến:
sensors.begin(); // initialize the sensor
  • Gửi lệnh để lấy nhiệt độ:
sensors.requestTemperatures();
  • Đọc nhiệt độ ở độ C:
tempCelsius = sensors.getTempCByIndex(0);
  • (Tùy chọn) Chuyển đổi từ độ C sang độ F:
tempFahrenheit = tempCelsius * 9 / 5 + 32;

Mã Arduino

/* * 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 */ #include <OneWire.h> #include <DallasTemperature.h> const int SENSOR_PIN = 13; // Arduino pin connected to DS18B20 sensor's DQ pin OneWire oneWire(SENSOR_PIN); // setup a oneWire instance DallasTemperature tempSensor(&oneWire); // pass oneWire to DallasTemperature library float tempCelsius; // temperature in Celsius float tempFahrenheit; // temperature in Fahrenheit void setup() { Serial.begin(9600); // initialize serial tempSensor.begin(); // initialize the sensor } void loop() { tempSensor.requestTemperatures(); // send the command to get temperatures tempCelsius = tempSensor.getTempCByIndex(0); // read temperature in Celsius tempFahrenheit = tempCelsius * 9 / 5 + 32; // convert Celsius to Fahrenheit Serial.print("Temperature: "); Serial.print(tempCelsius); // print the temperature in Celsius Serial.print("°C"); Serial.print(" ~ "); // separator between Celsius and Fahrenheit Serial.print(tempFahrenheit); // print the temperature in Fahrenheit Serial.println("°F"); delay(500); }

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

  • Kết nối Arduino với PC bằng cáp USB
  • Mở Arduino IDE, chọn bảng và cổng đúng
  • Đ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ấn 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ấn 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ấp nút Tải lên trên Arduino IDE để tải mã lên Arduino
  • Đặt cảm biến vào nước nóng và nước lạnh, hoặc nắm cảm biến bằng tay của bạn
  • Xem kết quả trên Serial Monitor.
COM6
Send
Temperature: 26.31°C ~ 79.36°F Temperature: 26.44°C ~ 79.59°F Temperature: 26.50°C ~ 79.70°F Temperature: 26.56°C ~ 79.81°F Temperature: 27.06°C ~ 80.71°F Temperature: 27.75°C ~ 81.95°F Temperature: 28.37°C ~ 83.07°F Temperature: 29.00°C ~ 84.20°F Temperature: 29.56°C ~ 85.21°F Temperature: 30.00°C ~ 86.00°F Temperature: 30.31°C ~ 86.56°F Temperature: 30.62°C ~ 87.12°F Temperature: 30.87°C ~ 87.57°F
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

Video Tutorial

Việc sản xuất video tốn rất nhiều thời gian. Nếu video hướng dẫn hữu ích cho việc học của bạn, hãy đăng ký kênh YouTube để ủng hộ. Nếu nhu cầu đủ cao, chúng tôi sẽ cố gắng làm thêm nhiều video.