Trong bài viết này, tôi sẽ hướng dẫn cho các bạn chế tạo một nhiệt kế số dựa trên Arduino để hiển thị nhiệt độ môi trường xung quanh và sự thay đổi của nhiệt độ được hiển thị trên LCD trong thời gian thực. Nó có thể được triển khai trong nhà, văn phòng, các ngành công nghiệp v.v.. để đo nhiệt độ. Dự án này dựa trên Arduino giao tiếp với cảm biến nhiệt độ LM35 và màn hình hiển thị LCD 16×2. Chúng ta có thể phân chia nhiệt kế dựa trên arduino thành ba phần – Đầu tiên cảm nhận nhiệt độ bằng cách sử dụng cảm biến LM35, phần thứ hai chuyển đổi giá trị nhiệt độ thành một số thích hợp trong thang đo độ C được thực hiện bởi Arduino, và phần cuối của hệ thống hiển thị nhiệt độ trên LCD. Sơ đồ khối của nhiệt kế số được thể hiện trong hình bên dưới.
Trong giao tiếp giữa Arduino và LM35 cảm biến nhiệt độ này, Arduino Uno được sử dụng để kiểm soát toàn bộ quá trình. Cảm biến nhiệt độ LM35 được sử dụng để đo nhiệt độ môi trường, đầu ra của cảm biến là tín hiệu điện áp biến đổi theo nhiệt độ, cứ 10mV tương ứng với 1 độ C. Ví dụ, nếu điện áp đầu ra của cảm biến LM35 là 250mV, điều đó có nghĩa là nhiệt độ là khoảng 25 độ C.
Arduino đọc điện áp đầu ra của cảm biến nhiệt độ bằng cách sử dụng chân Analog A0 và thực hiện phép tính để chuyển đổi giá trị Analog này thành giá trị số của nhiệt độ hiện tại. Sau khi tính toán Arduino gửi các tính toán hoặc nhiệt độ này đến màn hình LCD 16×2 bằng cách sử dụng các lệnh thích hợp.
Chuẩn bị
Phần cứng
Tên linh kiện | Số lượng |
Arduino Uno | 1 |
Cảm biến LM35 | 1 |
LCD 16×2 | 1 |
Breadboard | 1 |
Dây cắm breadboard |
Phần mềm: Arduino IDE
Giới thiệu cảm biến LM35
LM35 là loại cảm biến tương tự, hoạt động chính xác, sai số nhỏ, kích thước gọn nhẹ, có giá thành hợp lý nên được ứng dụng nhiều trong đo nhiệt độ ở thời gian thực rất phổ biến. Loại cảm biến nhiệt độ tương tự này cũng rất dễ dàng đọc thông số, giá trị đo bằng các hàm đơn giản.
Cảm biến nhiệt độ LM35 hoạt động bằng cách cho ra một giá trị hiệu điện thế nhất định tại chân Vout (chân giữa) ứng với mỗi mức nhiệt độ. Như vậy, bằng cách đưa vào chân bên trái của cảm biến LM35 hiệu điện thế 5V, chân phải nối đất, đo hiệu điện thế ở chân giữa bằng các pin A0 trên Arduino, bạn sẽ có được nhiệt độ (0-100ºC).
Sơ đồ chân
Số chân | Tên | Chức năng |
1 | Vs | Điện áp nguồn; 5V (+4V đến 30V) |
2 | Vout | Điện áp ra (-1V đến 6V) |
3 | GND | Chân nối đất |
Thông số kỹ thuật
- Điện áp đầu vào từ 4V đến 30V
- Điện áp ra: -1V đến 6V
- Công suất tiêu thụ là 60uA
- Độ phân giải điện áp đầu ra là 10mV/oC
- Độ chính xác cao ở 25 C là 0.5 C
- Trở kháng đầu ra thấp 0.1 cho 1mA tải
- Độ chính xác thực tế: 1/4°C ở nhiệt độ phòng và 3/4°C ngoài khoảng -55°C tới 150°C
Tính toán nhiệt độ đầu ra của LM35
Việc đo nhiệt độ sử dụng LM35 thông thường chúng ta thực hiện bằng cách
Như vậy ta có:
VOUT = t*k
Trong đó:
- VOUT là điện áp đầu ra của cảm biến LM35
- t là nhiệt độ môi trường (oC)
- k là hệ số theo nhiệt độ của LM35 (10mV/oC)
VOUT = t*10mV/oC
Giả sử điện áp cấp cho LM35 là 5V. Bộ chuyển đổi ADC gồm 10 bit tức là 1024 (210) mức.
Vậy mỗi bước thay đổi của LM35 sẽ là n = 5/(210) = 5/1024
Giá trị ADC đo được từ điện áp đầu vào của LM35 là
Giá trị ADC = VOUT/n = (t* 10-2*1024) / 5
Vậy nhiệt độ ta đo được t (oC) = Giá trị ADC/2,048
Tương tự với ADC 11 bit và VCC khác ta cũng tính như trên để được công thức lấy nhiệt độ
Sơ đồ mạch và giải thích
Sơ đồ mạch cho nhiệt kế số sử dụng cảm biến nhiệt độ Arduino LM35, được thể hiện trong hình trên. Ở đây màn hình LCD 16×2 được kết nối trực tiếp với Arduino trong chế độ 4-bit. Chân dữ liệu của LCD là RS, EN, D4, D5, D6, D7 được kết nối với số các chân 7, 6, 5, 4, 3, 2 của arduino. Cảm biến nhiệt độ LM35 cũng được kết nối với chân Analog A0 của Arduino, tạo ra nhiệt độ 1 độ C trên mỗi thay đổi đầu ra 10mV tại chân đầu ra của nó.
Chương trình
/*———–Arduino LM35 Code————-*/
/*———–Do nhiet do dung Arduino————-*/
#include<LiquidCrystal.h>
LiquidCrystal lcd(7,6,5,4,3,2);
#define sensor A0
byte degree[8] =
{
0b00011,
0b00011,
0b00000,
0b00000,
0b00000,
0b00000,
0b00000,
0b00000
};
void setup()
{
lcd.begin(16,2);
lcd.createChar(1,degree);
lcd.setCursor(0,0);
lcd.print(“Do nhiet do dung”);
lcd.setCursor(0,1);
lcd.print(“Cam bien LM35”);
delay(500);
lcd.clear();
lcd.print(“dientuviet.com”);
delay(500);
lcd.clear();
}
void loop()
{
/*———Đo nhiet do——-*/
float reading=analogRead(sensor);
float nhietdo=reading*(5.0/1024.0)*100;
delay(10);
/*——Hien thi ket qua——*/
lcd.clear();
lcd.setCursor(2,0);
lcd.print(“Nhiet do”);
lcd.setCursor(4,1);
lcd.print(nhietdo);
lcd.write(1);
lcd.print(“C”);
delay(1000);
}
Giải thích
Để viết chương trình cho nhiệt kế số, chúng ta cần phải viết code để giao tiếp cho Arduino, cảm biến nhiệt độ LM35 và mô-đun LCD 16×2. Đầu tiên chúng ta include thư viện cho màn hình LCD và sau đó chúng ta định nghĩa dữ liệu và chân điều khiển cho màn hình LCD và cảm biến nhiệt độ.
#include<LiquidCrystal.h>
LiquidCrystal lcd(7,6,5,4,3,2);
#define sensor A0
Sau khi nhận được giá trị tương tự (analog) tại chân A0, Arduino sẽ đọc giá trị đó bằng cách sử dụng hàm đọc Analog và lưu trữ giá trị đó trong một biến. Và sau đó bằng cách áp dụng công thức đã cho để chuyển đổi nó sang nhiệt độ.
float analog_value=analogRead(analog_pin);
float nhietdo=analog_value*factor*100
Trong đó
factor=5/1024
analog_value= giá trị ngõ ra của cảm biến nhiệt độ
float reading=analogRead(sensor);
float nhietdo=reading*(5.0/1023.0)*100;
delay(10);
Ký hiệu độ (o) ở đây được tạo bằng cách sử dụng phương pháp ký tự tùy chỉnh
byte degree[8] =
{
0b00011,
0b00011,
0b00000,
0b00000,
0b00000,
0b00000,
0b00000,
0b00000
};