
Cảm biến nhiệt độ Arduino tự làm (Hướng dẫn sử dụng nhiệt điện trở)
Trong bài viết này, tôi sẽ giải thích cách hoạt động của nhiệt điện trở.
Nhiệt điện trở là linh kiện đơn giản, rẻ tiền và chính xác giúp bạn dễ dàng thu thập dữ liệu nhiệt độ cho các dự án của mình. Trạm thời tiết từ xa Tự động hóa nhà ở Và mạch điều khiển và bảo vệ là một số ứng dụng mà nhiệt điện trở phù hợp nhất. Nhiệt điện trở là một cảm biến tương tự. Vì vậy, mã này khá đơn giản so với các cảm biến nhiệt độ kỹ thuật số đòi hỏi các thư viện đặc biệt và rất nhiều mã.
Trong bài viết này, tôi sẽ giải thích cách hoạt động của nhiệt điện trở. Sau đó, tôi sẽ chỉ cho bạn cách thiết lập mạch nhiệt điện trở cơ bản với Arduino để gửi tín hiệu nhiệt độ đến màn hình nối tiếp hoặc màn hình LCD.
Nhiệt điện trở hoạt động như thế nào?
Nhiệt điện trở là một loại điện trở thay đổi giá trị điện trở tùy thuộc vào nhiệt độ. Được phân loại theo đặc tính phản ứng với những thay đổi nhiệt độ trong loại nhiệt điện trở Hệ số nhiệt độ âm (NTC), điện trở giảm khi nhiệt độ tăng trong nhiệt điện trở. Loại hệ số nhiệt độ dương (PTC): Điện trở tăng khi nhiệt độ tăng.
Nhiệt điện trở NTC là loại nhiệt điện trở phổ biến nhất. Và chúng ta sẽ sử dụng loại nhiệt điện trở này trong hướng dẫn này. Nhiệt điện trở NTC được làm từ vật liệu bán dẫn (như oxit kim loại hoặc gốm) được nung nóng và nén để tạo ra vật liệu dẫn điện nhạy cảm với nhiệt độ.
Vật liệu dẫn điện chứa các hạt mang điện cho phép dòng điện chạy qua chúng. Nhiệt độ cao khiến vật liệu bán dẫn giải phóng nhiều chất mang điện hơn. Trong nhiệt điện trở NTC được làm bằng oxit sắt (III). Electron đóng vai trò là hạt mang điện tích. Trong nhiệt điện trở niken oxit NTC, các hạt mang điện là lỗ trống electron.

Mạch nhiệt điện trở cơ bản
Chúng ta hãy xây dựng một mạch nhiệt điện trở cơ bản để xem nó hoạt động như thế nào. Để bạn có thể áp dụng vào các dự án khác sau này.
Vì nhiệt điện trở là một điện trở thay đổi, do đó, chúng ta cần đo giá trị điện trở trước khi có thể tính toán nhiệt độ. Tuy nhiên, Arduino không thể đo trực tiếp giá trị điện trở. Nhưng nó chỉ có thể đo điện áp.
Arduino sẽ đo điện áp tại điểm giữa nhiệt điện trở và một điện trở đã biết. Đây được gọi là bộ chia điện áp. Phương trình của bộ chia điện áp là:

Về mặt bộ chia điện áp trong mạch nhiệt điện trở Các biến trong phương trình trên là:

Phương trình này có thể được sắp xếp lại và đơn giản hóa để giải cho R2, điện trở của nhiệt điện trở:

Cuối cùng, phương trình Steinhart-Hart sẽ được sử dụng để chuyển đổi giá trị điện trở nhiệt điện trở thành giá trị nhiệt độ.
Kết nối mạch
Kết nối nhiệt điện trở và điện trở với Arduino của bạn như sau:
Giá trị của điện trở phải bằng giá trị điện trở của nhiệt điện trở. Trong trường hợp này, giá trị điện trở của nhiệt điện trở của tôi là 100K ohm, do đó điện trở của tôi cũng là 100K ohm.
Nhà sản xuất nhiệt điện trở có thể cho bạn biết giá trị điện trở. Nhưng nếu không phải vậy, bạn có thể sử dụng đồng hồ vạn năng để tìm giá trị điện trở. Nếu bạn không có đồng hồ vạn năng Bạn có thể tạo một đồng hồ đo ôm bằng Arduino bằng cách làm theo hướng dẫn về đồng hồ đo ôm Arduino của chúng tôi. Tất cả những gì bạn cần biết là kích thước của nhiệt điện trở. Ví dụ, nếu điện trở của nhiệt điện trở của bạn là 34.000 ohm thì đó là nhiệt điện trở 10K. Nếu là 340.000 ohm thì đó là nhiệt điện trở 100K.
Mã để hiển thị số đọc nhiệt độ theo chuỗi
int ThermistorPin = 0;
int Vo;
float R1 = 10000;
float logR2, R2, T;
float c1 = 1.009249522e-03, c2 = 2.378405444e-04, c3 = 2.019202697e-07;
void setup() {
Serial.begin(9600);
}
void loop() {
Vo = analogRead(ThermistorPin);
R2 = R1 * (1023.0 / (float)Vo - 1.0);
logR2 = log(R2);
T = (1.0 / (c1 + c2*logR2 + c3*logR2*logR2*logR2));
T = T - 273.15;
T = (T * 9.0)/ 5.0 + 32.0;
Serial.print("Temperature: ");
Serial.print(T);
Serial.println(" F");
delay(500);
}
Để hiển thị nhiệt độ theo độ C Chỉ cần chú thích dòng 18 bằng cách chèn hai dấu gạch chéo ("//") vào đầu dòng.
Chương trình này sẽ hiển thị độ C và độ F cùng một lúc:
int ThermistorPin = 0;
int Vo;
float R1 = 10000;
float logR2, R2, T, Tc, Tf;
float c1 = 1.009249522e-03, c2 = 2.378405444e-04, c3 = 2.019202697e-07;
void setup() {
Serial.begin(9600);
}
void loop() {
Vo = analogRead(ThermistorPin);
R2 = R1 * (1023.0 / (float)Vo - 1.0);
logR2 = log(R2);
T = (1.0 / (c1 + c2*logR2 + c3*logR2*logR2*logR2));
Tc = T - 273.15;
Tf = (Tc * 9.0)/ 5.0 + 32.0;
Serial.print("Temperature: ");
Serial.print(Tf);
Serial.print(" F; ");
Serial.print(Tc);
Serial.println(" C");
delay(500);
}
Mã hiển thị nhiệt độ trên màn hình LCD
Để xuất giá trị nhiệt độ ra màn hình LCD 16X2, hãy thiết lập màn hình LCD trên Arduino, sau đó tải đoạn mã này lên bo mạch:
#include <LiquidCrystal.h>
int ThermistorPin = 0;
int Vo;
float R1 = 10000;
float logR2, R2, T;
float c1 = 1.009249522e-03, c2 = 2.378405444e-04, c3 = 2.019202697e-07;
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
void setup() {
Serial.begin(9600);
}
void loop() {
Vo = analogRead(ThermistorPin);
R2 = R1 * (1023.0 / (float)Vo - 1.0);
logR2 = log(R2);
T = (1.0 / (c1 + c2*logR2 + c3*logR2*logR2*logR2));
T = T - 273.15;
T = (T * 9.0)/ 5.0 + 32.0;
lcd.print("Temp = ");
lcd.print(T);
lcd.print(" F");
delay(500);
lcd.clear();
}