Tìm theo

Danh mục

Xem tất cả
top banner

Bộ khuếch đại cặp nhiệt điện loại K MAX6675 với ESP32

Bộ khuếch đại cặp nhiệt điện loại K MAX6675 với ESP32

Cặp nhiệt điện MAX6675

Mô-đun MAX6675 đi kèm với cặp nhiệt điện loại K cùng với trình điều khiển và bộ khuếch đại được sử dụng để đo nhiệt độ trong phạm vi từ 0 ° C đến 1024 ° C. Đây là một trong những lựa chọn lý tưởng để đo các chỉ số nhiệt độ cao hơn mà các cảm biến nhiệt độ khác như LM35 và các cảm biến khác. Mô-đun này bao gồm chip MAX6675 đo nhiệt độ thông qua cặp nhiệt điện loại K. Mô-đun sử dụng giao diện SPI để giao tiếp với vi điều khiển và truyền số đọc nhiệt độ đầu ra.

 

Mô-đun cặp nhiệt điện MAX6675

Dưới đây bạn có thể xem thông số kỹ thuật của mô-đun này:

  • Độ phân giải 12 bit

  • Độ chính xác của 8 LSB

  • Độ phân giải 0,25 °C

  • Điện áp hoạt động là 5V

  • Hoạt động hiện tại là 50mA

Cặp nhiệt điện

Cặp nhiệt điện được làm bằng hai dây vật liệu khác nhau. Một đầu của các dây này được kết nối với nhau để tạo ra mối nối. Mối nối này được đặt trong môi trường hoặc đối tượng cụ thể có nhiệt độ mà chúng ta muốn đo. Khi nhiệt độ thay đổi thì hai vật liệu khác nhau bắt đầu biến dạng, kết quả là điện trở bị thay đổi. Trên thực tế, đầu ra của nó là một tín hiệu millivolt có điện áp bị thay đổi khi điện trở thay đổi. Sự thay đổi điện áp này có thể được đo lường dễ dàng với sự trợ giúp của cặp nhiệt điện.

Nguyên tắc làm việc

Nguyên lý hoạt động của Cặp nhiệt điện dựa trên hiệu ứng Seebect. Theo Seebeck, khi hai kim loại khác nhau được kết nối với nhau để tạo ra hai điểm nối thì lực điện động sẽ được phát triển tại hai điểm nối. Lượng lực này sẽ khác nhau với sự kết hợp vật liệu kim loại.

1 Sơ đồ cơ bản của cặp nhiệt điện

Theo hình trên, hai kim loại khác nhau như kim loại A và B được kết nối với nhau để tạo thành hai điểm nối. Chúng được gọi là 'kết thúc đo lường' và 'kết thúc tham chiếu'. Hãy nhớ rằng, hai điểm nối là cần thiết để tạo ra bất kỳ cặp nhiệt điện. Nhiệt độ của đầu tham chiếu đã biết nhưng đầu đo không rõ. Khi nhiệt độ không xác định này kết thúc được đặt tại nơi mà chúng ta muốn đo nhiệt độ. Trong điều kiện này, nếu cả hai đầu sẽ ở cùng một mức nhiệt độ thì sẽ không có EMF nào được tạo ra. Vì vậy, dòng điện ròng trong toàn bộ mạch cũng sẽ bằng không.

Tương tự, nếu cả hai đầu đều ở mức nhiệt độ khác nhau thì EMF sẽ tạo ra và dòng điện cũng sẽ chạy trong toàn bộ mạch. Giá trị của EMF hoặc dòng điện này cũng phụ thuộc vào vật liệu kim loại cặp nhiệt điện cũng như nhiệt độ của cả hai đầu. Bằng cách đo giá trị của dòng điện hoặc EMF này, người dùng có thể dễ dàng tìm ra nhiệt độ của địa điểm cụ thể đó.

Có tám loại cặp nhiệt điện khác nhau hiện có trên thị trường liên quan đến vật liệu của chúng. Chúng tôi sử dụng K Type Thermocouple với mô-đun MAX6675. Những cặp nhiệt điện loại K này (Niken-Crom / Niken-Alumel) ít tốn kém hơn, chính xác hơn, đáng tin cậy hơn và là cặp nhiệt điện loại phổ biến nhất. Nó có một phạm vi nhiệt độ rộng như –454 đến 2,300F.

Sơ đồ chân MAX6675

Sơ đồ dưới đây cho thấy sơ đồ chân của mô-đun MAX6675:

Sơ đồ pinout mô-đun cặp nhiệt điện MAX6675

Nó bao gồm tổng cộng 7 chân trong đó hai chân được sử dụng để kết nối các dây dẫn dương và âm của cặp nhiệt điện, ba cho giao diện SPI và hai cho nguồn điện và mặt đất.

Tên pin

Chức năng

GND ·

Đây là chân nối đất của mô-đun.

VCC

Đây là chân VCC dùng để cấp nguồn cho module trong khoảng 3-5.5V

SCK ·

Đây là chân đồng hồ SPI.

.CS

Đây là pin chọn Chip SPI.

SO

Đây là chân đầu ra nối tiếp (dữ liệu ra).

Cặp nhiệt điện + (TH +)

Đây là nơi chúng tôi sẽ kết nối dây dẫn dương của cặp nhiệt điện.

Cặp nhiệt điện- (TH-)

Đây là nơi chúng tôi sẽ kết nối dây dẫn âm của cặp nhiệt điện.

Cặp nhiệt điện MAX6675 giao diện với ESP32

Chúng tôi sẽ yêu cầu các thành phần sau cho dự án này.

Các thành phần bắt buộc:

  • Bảng phát triển ESP32

  • Mô-đun MAX6675 với cặp nhiệt điện

  • Dây kết nối

Lắp ráp các thiết bị như thể hiện trong sơ đồ sơ đồ dưới đây:

MAX6675 với sơ đồ kết nối ESP32

Chúng tôi sẽ kết nối 5 chân của mô-đun MAX6675 với ESP32. Chúng bao gồm các chân VCC, GND, SCK, CS và SO hiện diện ở cùng một phía. VCC sẽ được kết nối với chân 3.3V từ ESP32. GND của cả hai thiết bị sẽ là điểm chung. Các chân SPI GPIO mặc định của ESP32 đang được sử dụng để kết nối với từng thiết bị đầu cuối SPI còn lại của mô-đun MAX6675. Hình dưới đây cho thấy các chân SPI mặc định của ESP32.

Sơ đồ chân ESP32 SPI cho mô-đun thẻ nhớ microSD

Bảng dưới đây cho thấy các kết nối giữa hai thiết bị:

MAX6675 ·

ESP32 ·

VCC

3.3V

GND ·

GND ·

SCK ·

GPIO18 ·

.CS

GPIO5 ·

SO

GPIO23 ·

Bây giờ hãy làm theo các kết nối giữa hai thiết bị và kết nối chúng cho phù hợp. Chúng tôi đã sử dụng các kết nối tương tự như đã chỉ định ở trên. Tất cả các thiết bị sẽ có căn cứ chung.

Cặp nhiệt điện sẽ được kết nối tại các thiết bị đầu cuối TH + và TH-.

MAX6675 với ESP32

Cài đặt thư viện cặp nhiệt điện MAX6675

Chúng tôi có một thư viện Arduino cho MAX6675 có thể dễ dàng sử dụng để nhận các giá trị nhiệt độ. Bây giờ hãy xem cách cài đặt thư viện MAX6675. Thư viện này được cung cấp bởi Adafruit.

Để cài đặt thư viện, chúng tôi sẽ sử dụng Trình quản lý thư viện Arduino. Mở Arduino IDE của bạn và đi tới Sketch > Bao gồm thư viện > Quản lý thư viện. Nhập 'max6675' vào thanh tìm kiếm và cài đặt phiên bản mới nhất.

Cài đặt Thư viện cặp nhiệt điện MAX6675 trong Arduino IDE

Arduino Sketch: Truy cập các bài đọc nhiệt độ

Mở Arduino IDE của bạn và đi tới Tệp > Mới. Một tệp mới sẽ mở ra. Sao chép mã được cung cấp bên dưới trong tệp đó và lưu nó.

Mã này sẽ sử dụng thư viện max6675.h do Adafruit cung cấp. Chúng tôi sẽ hiển thị nhiệt độ (độ C) trong Màn hình nối tiếp.

#include "max6675.h" 

 

int SO = 23;

int CS = 5;

int sck = 18;

MAX6675 module(sck, CS, SO);

 

void setup() {   

  Serial.begin(115200);

}

 

void loop() {

  float temperature = module.readCelsius(); 

  Serial.print("Temperature: ");

  Serial.print(temperature);

  Serial.println(F("°C "));   

  delay(1000);

}

Mã hoạt động như thế nào?

Chúng tôi sẽ bắt đầu bằng cách bao gồm thư viện MAX6675 mà chúng tôi đã cài đặt trước đó.

#include "max6675.h" 

Sau đó, chúng tôi sẽ tạo ba biến số nguyên, mỗi biến để giữ các chân GPIO được kết nối với các chân SPI: SO, SCK và CS. Chúng tôi đã sử dụng chân SPI mặc định ESP32.

int SO = 23;

int CS = 5;

int sck = 18;

Tiếp theo, chúng ta sẽ tạo một instance của MAX6675 được gọi là module() và truyền các biến sck, CS và SO làm tham số bên trong nó.

MAX6675 module(sck, CS, SO);

Bên trong hàm setup(), chúng ta sẽ khởi tạo giao tiếp nối tiếp với tốc độ truyền là 115200.

void setup() {   

  Serial.begin(115200);

}

Bên trong hàm loop(), trước tiên chúng ta sẽ thu được nhiệt độ bằng phương thức readCelsius() trên instance module và lưu số đọc trong một biến float gọi là 'temperature'. Điều này sẽ được in trong màn hình nối tiếp cùng với thiết bị của nó sau mỗi 1 giây.

void loop() {

  float temperature = module.readCelsius(); 

  Serial.print("Temperature: ");

  Serial.print(temperature);

  Serial.println(F("°C "));   

  delay(1000);

}

Demonstration

Đảm bảo rằng bạn chọn đúng bảng và cổng COM trước khi tải mã của mình lên bảng. Đi tới Bảng > Công cụ và chọn Mô-đun ESP32 Dev. Tiếp theo, đi tới Công cụ > Cổng và chọn cổng thích hợp mà qua đó bảng của bạn được kết nối.

Chọn bảng ESP32

Nhấp vào nút tải lên để tải mã lên bảng.
Sau khi bạn đã tải mã của mình lên bảng phát triển, hãy nhấn nút BẬT của nó.

Nút đặt lại bật ESP32

Bây giờ hãy mở màn hình nối tiếp trong Arduino IDE, bạn sẽ thấy số đọc nhiệt độ được hiển thị sau mỗi giây.

MAX6675 với chỉ số nhiệt độ ESP32 trên màn hình nối tiếp

Hiển thị chỉ số cặp nhiệt điện MAX6675 trên OLED

Trong phần này, chúng ta sẽ xem cách hiển thị số đọc nhiệt độ của MAX6675 trên màn hình OLED 0.96 SSD1306 bằng Arduino IDE và ESP32.

Cài đặt Thư viện OLED SSD1306 trong Arduino IDE

Để sử dụng màn hình OLED trong dự án của chúng tôi, chúng tôi phải cài đặt thư viện OLED Adafruit SSD1306 trong Arduino IDE. Làm theo các bước dưới đây để cài đặt thành công.

Mở Arduino IDE và nhấp vào Sketch > Library > Manage Libraries. Nhập 'SSD1306' vào tab tìm kiếm và cài đặt thư viện Adafruit SSD1306 OLED.

Cài đặt Thư viện OLED SSD1306 Arduino IDE

Chúng tôi cũng sẽ yêu cầu thư viện Adafruit GFX là một phụ thuộc cho SSD1306. Nhập 'Adafruit GFX' vào tab tìm kiếm và cài đặt nó.

Cài đặt thư viện GFX Adafruit

Sơ đồ - OLED với cặp nhiệt điện ESP32 và MAX6675

Phần này hướng dẫn cách kết nối bo mạch ESP32 với MAX6675 và màn hình OLED. Thực hiện theo các kết nối như được mô tả trong hai bảng dưới đây.

Các bảng dưới đây cho thấy các thiết bị đầu cuối của ba thiết bị cần được kết nối với nhau.

Màn hình OLED

ESP32 ·

VCC

3.3V

GND ·

GND ·

SCL

GPIO22 ·

SDA

GPIO21 ·

 

Cặp nhiệt điện loại K MAX6675

ESP32 ·

GND ·

GND ·

VCC

3.3V

.CS

GPIO5 ·

SO

GPIO23 ·

SCK ·

GPIO18 ·

Lắp ráp mạch như thể hiện trong sơ đồ sơ đồ dưới đây:

MAX6675 với sơ đồ kết nối ESP32 và OLED

Chúng tôi sẽ kết nối thiết bị đầu cuối VCC của màn hình OLED với 3.3V, điểm chung với bo mạch ESP32 và MAX6675 VCC. SCL của màn hình sẽ được kết nối với chân SCL của bảng ESP32 và SDA của màn hình sẽ được kết nối với SDA của ESP32.

MAX6675 với ESP32 và OLED

Arduino Sketch để hiển thị các bài đọc MAX6675 trên OLED

Sao chép mã sau vào Arduino IDE của bạn và tải nó lên ESP32 sau khi lắp ráp sơ đồ mạch trên.

#include "max6675.h" 

#include <Wire.h>

#include <Adafruit_GFX.h>

#include <Adafruit_SSD1306.h>

 

int SO = 23;

int CS = 5;

int sck = 18;

MAX6675 module(sck, CS, SO);

Adafruit_SSD1306 display = Adafruit_SSD1306(128, 64, &Wire, -1);

 

void setup() {   

  Serial.begin(115200);

  display.begin(SSD1306_SWITCHCAPVCC, 0x3C);  

if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) { 

  Serial.println(F("SSD1306 allocation failed"));

  for(;;);

}

  delay(2000);

display.clearDisplay();

display.setTextColor(WHITE);

}

 

void loop() {

  float temperature = module.readCelsius(); 

  Serial.print("Temperature: ");

  Serial.print(temperature);

  Serial.println(F("°C "));   

 

  display.setTextSize(1);

  display.setCursor(0,10);

  display.print("Temperature: ");

  display.setTextSize(2);

  display.setCursor(0,30);

  display.print(temperature);

  display.print(" ");

  display.setTextSize(1);

  display.cp437(true);

  display.write(167);

  display.setTextSize(2);

  display.print("C");

  display.display();

  delay(1000);

  display.clearDisplay();

}

Mã hoạt động như thế nào?

Trước tiên, chúng tôi sẽ bao gồm tất cả các thư viện cần thiết cho MAX6675 cũng như màn hình OLED mà chúng tôi vừa cài đặt trước đó.

#include "max6675.h" 

#include <Wire.h>

#include <Adafruit_GFX.h>

#include <Adafruit_SSD1306.h>

Sau đó, chúng tôi sẽ tạo ba biến số nguyên, mỗi biến để giữ các chân GPIO được kết nối với các chân SPI: SO, SCK và CS. Chúng tôi đã sử dụng các chân ESP32 SPI mặc định.

int SO = 23;

int CS = 5;

int sck = 18;

Tiếp theo chúng ta sẽ tạo một instance của MAX6675 được gọi là module() và truyền các biến sck, CS và SO làm tham số bên trong nó.

MAX6675 module(sck, CS, SO);

Bây giờ, chúng ta sẽ tạo một đối tượng có tên là màn hình sẽ xử lý màn hình OLED và chỉ định chiều rộng, chiều cao, phiên bản I2C (&Dây) và -1 làm tham số bên trong nó.' -1 ′ chỉ định rằng màn hình OLED mà chúng ta đang sử dụng không có chân RESET. Nếu bạn đang sử dụng mã pin RESET thì hãy chỉ định GPIO mà qua đó bạn đang kết nối nó với bảng phát triển của mình.

Adafruit_SSD1306 display = Adafruit_SSD1306(128, 64, &Wire, -1);

thiết lập()

Bên trong hàm setup(), chúng ta sẽ khởi tạo giao tiếp nối tiếp với tốc độ truyền là 115200.

Serial.begin(115200);

Hơn nữa, chúng tôi cũng sẽ khởi tạo màn hình OLED bằng cách sử dụng display.begin(). Đảm bảo bạn chỉ định địa chỉ chính xác của màn hình. Trong trường hợp của chúng tôi, nó là 0X3C.

display.begin(SSD1306_SWITCHCAPVCC, 0x3C); 

 

if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) { 

  Serial.println(F("SSD1306 allocation failed"));

  for(;;);

}

  delay(2000);

Sau đó, chúng ta sẽ xóa buffer bằng cách sử dụng clearDisplay() trên đối tượng Adafruit_SSD1306. Ngoài ra, chúng tôi sẽ đặt màu của văn bản là màu trắng.

display.clearDisplay();

display.setTextColor(WHITE);

vòng lặp()

Bên trong hàm loop(), trước tiên chúng ta sẽ thu được nhiệt độ bằng phương thức readCelsius() trên instance module và lưu số đọc trong một biến float gọi là 'temperature'. Điều này sẽ được in trong màn hình nối tiếp cùng với thiết bị của nó sau mỗi 1 giây.

  float temperature = module.readCelsius(); 

  Serial.print("Temperature: ");

  Serial.print(temperature);

  Serial.println(F("°C "));  

Hàm setTextSize() được sử dụng để thiết lập kích thước của phông chữ. Chúng tôi đã sử dụng kích thước thấp cho văn bản đơn giản như "Nhiệt độ" và phông chữ kích thước cao để hiển thị số đọc nhiệt độ thực tế. Phương thức setCursor() được xác định nơi chúng ta muốn hiển thị văn bản của mình trên 128×64 OLED. Cuối cùng, các hàm print() viết văn bản vào vị trí đã xác định. Chúng tôi sẽ hiển thị chỉ số nhiệt độ cập nhật cùng với thiết bị của nó trên màn hình OLED sau mỗi giây.

  display.setTextSize(1);

  display.setCursor(0,10);

  display.print("Temperature: ");

  display.setTextSize(2);

  display.setCursor(0,30);

  display.print(temperature);

  display.print(" ");

  display.setTextSize(1);

  display.cp437(true);

  display.write(167);

  display.setTextSize(2);

  display.print("C");

  display.display();

  delay(1000);

  display.clearDisplay();

Demonstration

Để xem trình diễn đoạn mã trên, hãy tải mã lên ESP32. Tuy nhiên, trước khi tải mã lên, hãy đảm bảo chọn Mô-đun ESP32 Dev từ Bảng > Công cụ và cũng chọn đúng cổng COM mà bo mạch được kết nối từ Công cụ > Cổng.

Chọn bảng ESP32

Sau khi mã được tải lên bảng, OLED sẽ bắt đầu hiển thị các chỉ số nhiệt độ theo độ C sau mỗi giây.

MAX6675 với ESP32 và OLED demo

Bài viết cùng chuyên mục

NHANH

NHANH

Vì Đổi mới liên tục nên Nhanh hơn

ĐÚNG

ĐÚNG

Coi trọng và ưu tiên việc làm Đúng

ĐỦ

ĐỦ

Tìm và mua Đủ Đơn hàng hơn

KỊP THỜI

KỊP THỜI

Hiệu suất tối ưu bởi Kịp Thời hơn