Cách sử dụng cảm biến cặp nhiệt điện loại K MAX6675 với Arduino
Giới thiệu
Đo nhiệt độ chính xác là yêu cầu cơ bản trong vô số dự án điện tử, từ việc chế tạo lò nung chảy cho hàn PCB đến theo dõi nhiệt độ đầu đùn máy in 3D hoặc lò xông khói BBQ. Trong khi các thermistor tiêu chuẩn và cảm biến kỹ thuật số như DS18B20 hoạt động tốt ở nhiệt độ vừa phải, chúng sẽ hỏng khi gặp nhiệt độ thực sự cao. Đây là lúc cặp nhiệt điện loại K phát huy tác dụng. Đây là cảm biến bền bỉ, giá rẻ có khả năng đo nhiệt độ cực cao, nhưng nó cần một chip giao diện đặc biệt để chuyển đổi tín hiệu điện áp nhỏ của nó thành giá trị kỹ thuật số có thể đọc được.
Hướng dẫn này trình bày cách sử dụng bo mạch mở rộng MAX6675 với cảm biến cặp nhiệt điện loại K và Arduino để đọc và hiển thị nhiệt độ theo cả độ C và độ F trên màn hình nối tiếp (trong video tại 00:00). Mô-đun MAX6675 xử lý việc điều kiện hóa tín hiệu phức tạp và bù điểm nối lạnh cho bạn, xuất dữ liệu kỹ thuật số sạch qua giao thức SPI. Thiết lập này hoàn hảo cho các dự án yêu cầu cảm biến nhiệt độ cao, chẳng hạn như:
- Theo dõi nhiệt độ đầu đùn hoặc bàn gia nhiệt của máy in 3D.
- Chế tạo nhiệt kế kỹ thuật số cho lò nướng BBQ hoặc lò bếp.
- Tạo bộ điều khiển nhiệt độ cho lò nung chảy DIY hoặc trạm hàn.
- Đo nhiệt độ khí thải trong các dự án ô tô hoặc robot.
Linh kiện phần cứng
Để làm theo hướng dẫn này, bạn sẽ cần các linh kiện sau. Việc đấu dây rất đơn giản và mã code tương thích với mọi phiên bản bo mạch Arduino (trong video tại 00:47).
- Bo mạch Arduino (Uno, Mega, Nano, v.v.)
- Mô-đun MAX6675 (bo mạch mở rộng)
- Cảm biến cặp nhiệt điện loại K (bất kỳ kiểu đầu dò nào)
- Dây jumper
Bản thân mô-đun MAX6675 khá nhỏ. Như được hiển thị trong video, kích thước của nó là 32,1mm chiều dài, 15,6mm chiều rộng và 16,3mm chiều sâu (trong video tại 02:35). Mô-đun có một khối đầu nối nhỏ để kết nối cặp nhiệt điện và một hàng chân để cấp nguồn và giao tiếp SPI. Cặp nhiệt điện loại K kết nối với mô-đun theo đúng cực tính; dây màu đỏ (dương) đi vào đầu nối '+' và dây màu vàng (âm) vào đầu nối '-' (trong video tại 01:27).
Thông số kỹ thuật
Trước khi đi sâu vào việc đấu dây, sẽ hữu ích khi hiểu khả năng của chip MAX6675. Theo bảng dữ liệu từ Maxim Integrated, mô-đun có thể đo một phạm vi nhiệt độ rộng, phù hợp cho cả ứng dụng công nghiệp và sở thích (trong video tại 01:44).
- Phạm vi đo: 0°C đến +1024°C
- Độ phân giải: 12-bit (0,25°C)
- Truyền thông: SPI (Giao diện ngoại vi nối tiếp)
- Điện áp hoạt động: 3,0V đến 5,5V
Hướng dẫn đấu dây
Việc đấu dây cho MAX6675 rất đơn giản, chỉ cần kết nối nguồn và ba chân kỹ thuật số cho giao tiếp SPI. Trong ví dụ này, chúng ta sẽ sử dụng các chân Arduino 4, 5 và 6 cho các đường dữ liệu (trong video tại 03:28). Các kết nối như sau:
- VCC (Dây màu cam): Kết nối với chân 5V của Arduino (trong video tại 02:56).
- GND (Dây màu vàng): Kết nối với chân GND của Arduino (trong video tại 02:51).
- SO - Đầu ra nối tiếp (Dây màu xanh lá): Kết nối với chân kỹ thuật số 4 của Arduino (trong video tại 03:01).
- CS - Chọn chip (Dây màu xám): Kết nối với chân kỹ thuật số 5 của Arduino (trong video tại 03:08).
- SCK - Xung nhịp nối tiếp (Dây màu trắng): Kết nối với chân kỹ thuật số 6 của Arduino (trong video tại 03:14).
Giải thích mã code
Mã code được cung cấp trong hướng dẫn này được thiết kế đơn giản và dễ sửa đổi. Nó dựa trên một thư viện có tên max6675.h, mà bạn cần cài đặt trước. Bạn có thể tải thư viện dưới dạng tệp ZIP và thêm nó vào Arduino IDE của mình bằng cách đi tới Sketch -> Include Library -> Add .ZIP Library. Sau khi cài đặt, bạn phải đóng và mở lại Arduino IDE để thư viện được nhận diện (trong video tại 04:14).
Sau khi thư viện được cài đặt, bạn có thể sao chép mã code được cung cấp vào sketch của mình. Bước đầu tiên là bao gồm tệp thư viện, giúp Arduino truy cập các hàm cần thiết để giao tiếp với chip MAX6675 (trong video tại 03:55). Tiếp theo, bạn sẽ định nghĩa các chân mà mô-đun được kết nối. Đây là những dòng mã duy nhất bạn cần thay đổi nếu quyết định sử dụng các chân khác trên Arduino của mình (trong video tại 04:52).
int soPin = 4;// SO=Serial Out
int csPin = 5;// CS = chip select CS pin
int sckPin = 6;// SCK = Serial Clock pin
Sau khi định nghĩa các chân, chúng ta tạo một thể hiện của lớp MAX6675. Thứ tự của các đối số trong dòng này rất quan trọng; chúng phải theo thứ tự sckPin, csPin và soPin. Hoán đổi chúng sẽ khiến cảm biến không hoạt động chính xác (trong video tại 05:21).
MAX6675 robojax(sckPin, csPin, soPin);// create instance object of MAX6675
Trong hàm setup(), chúng ta khởi tạo màn hình nối tiếp ở tốc độ baud 9600 để có thể xem các chỉ số nhiệt độ trên máy tính (trong video tại 05:41). Logic chính nằm trong hàm loop(). Tại đây, chúng ta gọi các phương thức readCelsius() và readFahrenheit() của đối tượng robojax để lấy nhiệt độ và in ra màn hình nối tiếp. Một độ trễ 1000 mili giây (1 giây) được thêm vào cuối vòng lặp để đặt tốc độ làm mới (trong video tại 05:54). Nếu bạn muốn cập nhật nhanh hơn, bạn có thể giảm độ trễ này xuống 100 mili giây hoặc ít hơn (trong video tại 08:44).
Serial.print("C = ");
Serial.print(robojax.readCelsius());
Serial.print(" F = ");
Serial.println(robojax.readFahrenheit());
delay(1000);
Đoạn mã này là một bài kiểm tra đọc cơ bản. Bạn có thể dễ dàng mở rộng nó để kích hoạt các hành động dựa trên ngưỡng nhiệt độ. Ví dụ: bạn có thể sử dụng câu lệnh if để kiểm tra xem nhiệt độ có vượt quá một giá trị nhất định hay không và sau đó bật quạt để làm mát hệ thống, hoặc bật máy sưởi nếu nhiệt độ giảm quá thấp (trong video tại 06:42).
Trình Diễn Dự Án Trực Tiếp
Để minh họa khả năng của cảm biến, video cho thấy cặp nhiệt điện được làm nóng bằng súng nhiệt. Khi nhiệt được áp dụng, chỉ số nhiệt độ trên màn hình nối tiếp tăng nhanh chóng. Trình diễn cho thấy nhiệt độ đạt trên 125 độ C, với giá trị Fahrenheit tương ứng được hiển thị bên cạnh (trong video tại 08:25). Khi rút súng nhiệt ra, bạn có thể thấy nhiệt độ giảm dần, xác nhận độ chính xác và khả năng phản hồi của cảm biến. Phản hồi theo thời gian thực này làm cho mô-đun MAX6675 trở thành lựa chọn tuyệt vời cho bất kỳ dự án nào yêu cầu giám sát nhiệt độ cao chính xác.
Các Chương Trong Video
- [00:00] Giới thiệu và tổng quan dự án
- [01:15] Giải thích phần cứng
- [02:41] Giải thích cách đấu dây
- [03:28] Giải thích mã
- [07:26] Trình diễn đo nhiệt độ
// Original library source:
// www.ladyada.net/learn/sensors/thermocouple
/*
* Arduino code to read temperature using MAX6675 chip and K-type thermocouple
* and display it on the serial monitor
*
* Watch video instructions for this code: https://youtu.be/VGqONmUinqA
* Download this code from Robojax.com
*
* Updated by Ahmad Shamshiri for Robojax.com on Saturday, November 23, 2018
* at 21:25 in Ajax, Ontario, Canada
*
* This code is "AS IS" without warranty or liability. Free to be used as long as you keep this note intact.
* This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
#include "max6675.h" // max6675.h file is part of the library that you should download from Robojax.com
int soPin = 4;// SO=Serial Out
int csPin = 5;// CS = chip select CS pin
int sckPin = 6;// SCK = Serial Clock pin
MAX6675 robojax(sckPin, csPin, soPin);// create instance object of MAX6675
void setup() {
Serial.begin(9600);// initialize serial monitor with 9600 baud
Serial.println("Robojax MAX6675");
}
void loop() {
// Basic readout test, just print the current temperature
// Robojax.com MAX6675 temperature reading on serial monitor
Serial.print("C = ");
Serial.print(robojax.readCelsius());
Serial.print(" F = ");
Serial.println(robojax.readFahrenheit());
delay(1000);
}
Nghĩ bạn có thể cần
-
AliExpressPurchase MAX6675 K-Type from Amazons.click.aliexpress.com
-
BanggoodPurchase MAX6675 K-Type from Banggoodbanggood.com
Tài nguyên & tài liệu tham khảo
-
Bên ngoàiDownload the MAX6675 Library (from GitHub)github.com
-
Bên ngoàiMAX6675 datasheet (PDF)datasheets.maximintegrated.com
Tập tin📁
Các tập tin khác
-
Thư viện MAX6675
robojax-max6675-thermo.zip0.01 MB