Dự án ESP32 MAX6675 – Cặp nhiệt điện loại K (Kèm code mẫu)
Trong chủ đề ESP32 MAX6675 này, mời bạn cùng tìm hiểu về bộ khuếch đại cặp nhiệt điện loại K với mạch ESP32. Cặp nhiệt điện này là một loại cảm biến nhiệt độ, có phạm vi đo rất rộng (từ -200 độ C đến 1260 độ C).
Chúng ta sẽ tìm hiểu cách kết nối bộ khuếch đại cặp nhiệt điện loại K với mạch ESP32, cài thư viện và viết code đơn giản để hiển thị giá trị đo được từ cảm biến lên màn hình Serial trên Arduino IDE.
Giới thiệu cặp nhiệt điện loại K
Đây là một thiết bị gồm 2 dây dẫn khác nhau, tạo thành một mối nối điện – mối nối nhiệt.
Sự thay đổi nhiệt độ tại mối nối sẽ tạo ra một điện áp nhỏ (có thể đo được). Chúng ta sẽ đo điện áp này và dựa vào đó tính nhiệt độ.
Các cặp nhiệt điện này có thể được làm từ những kim loại khác nhau. Mỗi loại kim loại này đều sẽ ảnh hưởng đến mức điện áp, độ nhạy khi đo và chi phí sử dụng.
Trong bài hướng dẫn về dự án ESP32 này, IoTZone sử dụng cặp nhiệt điện loại K. Cặp loại K được làm từ dây dẫn có mạ alumel và crom, với dải nhiệt độ từ -200 độ C đến 1260 độ C.
Giới thiệu bộ khuếch đại MAX6675
Để đọc thông tin từ cặp nhiệt điện loại K, chúng ta cần đến bộ khuếch đại. Nhiệt độ đầu ra từ bộ khuếch đại phụ thuộc vào điện áp tạo ra được trên điểm nối tham chiếu. Điện áp này lại phụ thuộc vào sự chênh lệch nhiệt độ giữa điểm nối tham chiếu và điểm nối nhiệt. Do đó, chúng ta cần biết nhiệt độ tại điểm nổi tham chiếu.
Cặp nhiệt điện MAX6675 có kèm sẵn cảm biến nhiệt độ, giúp đo nhiệt độ tại điểm nối tham chiếu và khuếch đại điện áp tạo ra, giúp chúng ta có thể đọc được các giá trị này thông qua vi điều khiển như ESP32.
Bộ khuếch đại MAX6675 giao tiếp với vi điều khiển thông qua chuẩn giao tiếp SPI, dữ liệu đầu ra được xuất dưới độ phân giải 12 bit.
Thông thường, mọi người thường mua cặp nhiệt điện loại K và bộ khuếch đại MAX6675 chung với nhau. Dưới đây là cách thức giao tiếp giữa ESP32 MAX6675:
MAX6675 | vi điều khiển |
SO | MISO |
CS | CS |
SCK | CLK |
VCC | VCC (3.3V hoặc 5V) |
GND | GND |
Bây giờ, chúng ta sẽ viết 1 đoạn code đơn giản để đọc nhiệt độ và hiển thị chúng lên màn hình Serial của Arduino IDE.
Chuẩn bị
- Cặp nhiệt điện loại K kèm theo bộ khuếch đại MAX6675
- ESP32
- Dây Jumper (female to female)
Kết nối ESP32 MAX6675
Cài thư viện Arduino MAX6675
Có khá nhiều thư viện khác nhau để lấy nhiệt độ từ cặp nhiệt điện và MAX6675, nhưng trong phạm vi bài hướng dẫn này, IoTZone sẽ sử dụng thư viện max6675 do Adafbean phát triển.
Để cài thư viện, bạn mở Arduino IDE, đi theo đường dẫn Sketch >> Include Library >> Manage Libraries >> Gõ “Max6675”, sau đó tìm kiếm thư viện do Adafruit (Adafbean) phát triển và cài.
Chương trình lập trình
Dự án ESP32 MAX6675 này rất đơn giản, trong thư viện vừa cài đã có sẵn 1 đoạn code mẫu về cách đo nhiệt độ và hiển thị chúng lên màn hình Serial.
Bạn có thể mở code lên và sử dụng, dưới đây là đoạn code đã được điều chỉnh đôi chút để tương thích với ESP32:
#include "max6675.h" int thermoDO = 19; int thermoCS = 23; int thermoCLK = 5; MAX6675 thermocouple(thermoCLK, thermoCS, thermoDO); void setup() { Serial.begin(9600); Serial.println("MAX6675 test"); // wait for MAX chip to stabilize delay(500); } void loop() { Serial.print("C = "); Serial.println(thermocouple.readCelsius()); Serial.print("F = "); Serial.println(thermocouple.readFahrenheit()); // Chương trình phải delay ít nhất 250ms sau mỗi lần đọc delay(1000); }
Giải thích chương trình
Khai báo thư viện:
#include "max6675.h"
Xác định các chân đã kết nối với MAX6675 (theo sơ đồ kết nối phần cứng):
int thermoDO = 19; int thermoCS = 23; int thermoCLK = 5;
Tạo đối tượng MAX6675 trên các chân đã xác định:
MAX6675 thermocouple(thermoCLK, thermoCS, thermoDO);
Trong setting(), bạn khởi tạo giám sát nối tiếp ở tốc độ 9600:
Serial.begin(9600);
Trong vòng lặp loop(), đọc nhiệt độ và hiển thị lên màn hình Serial. Bạn có thể chọn hiển thị theo độ C hoặc độ F:
- thermocouple.readCelsius(): Hiển thị theo độ C
- thermocouple.readFahrenheit(): Hiển thị theo độ F
Dưới đây là câu lệnh:
Serial.print("C = "); Serial.println(thermocouple.readCelsius()); Serial.print("F = "); Serial.println(thermocouple.readFahrenheit());
Như bạn thấy, việc thực hiện dự án ESP32 này rất đơn giản.
Demo
Bạn hãy upload đoạn code trên vào ESP32, sau đó mở Serial Monitor ở tốc độ 9600 và nhấn nút RST trên mạch ESP32.
Sau đó, trên màn hình Serial sẽ hiển thị nhiệt độ sau mỗi giây:
Lời kết
Trong bài hướng dẫn này, IoTZone đã hướng dẫn cách đọc nhiệt độ thông qua cặp nhiệt độ loại K kết hợp bộ khuếch đại MAX6675, thông qua vi điều khiển ESP32. Cặp nhiệt độ này có dải đo nhiệt độ rất rộng, phù hợp để bạn dùng trong nhiều dự án khác nhau liên quan đến nhiệt độ.
Hy vọng bạn đã hiểu hơn về cách đo nhiệt độ từ ESP32 MAX6675 này! Chúc các bạn thành công. IoTZone cũng có thêm nhiều bài hướng dẫn với các cảm biến phổ biến khác, hy vọng bạn sẽ thích:
- ESP32 với Load Cell: Đo cân nặng
- ESP32 với DS18B20: Đo nhiệt độ
- ESP32 với MPU6050: Đo gia tốc và các trục X, Y, Z
- ESP32 với cảm biến siêu âm: Đo khoảng cách
IoTZone – Chuyên cung cấp thiết bị điện tử & tài liệu cho Makers
- Website: https://www.iotzone.vn/
- Fanpage: https://www.facebook.com/Iotzonemaker
- SDT: 0364174499
- Zalo: https://zalo.me/0364174499