Đo nhiệt độ bằng Cảm biến LM35 sử dụng Arduino Uno
Hôm nay chúng ta sẽ cùng nhau tìm hiểu về cách sử dụng cảm biến nhiệt độ LM35.
Cảm biến có ưu điểm hoạt động khá chính xác và ít sai số đồng thời kích thước nhỏ, giá thành thấp nên được sử dụng rất nhiều trong các ứng dụng đo nhiệt độ thời gian thực.
Qua bài viết này, các bạn sẽ tìm hiểu thêm một hàm mới là analogRead().
- Đọc bài viết về hàm analogRead(pin).
Cảm biến nhiệt độ LM35
- LM35 là một cảm biến nhiệt độ Analog (A0 đến A5 trên board Arduino Uno).
- LM35 không cần phải canh chỉnh nhiệt độ khi sử dụng.
- LM35 thay đổi nhiệt độ nhanh và chính xác.
Cảm biến nhiệt độ LM35 là bộ cảm biến nhiệt mạch tích hợp chính xác cao mà điện áp đầu ra của nó tỷ lệ tuyến tính với nhiệt độ theo thang độ Celsius.
Thông số kỹ thuật của cảm biến:
- Điện áp hoạt động: 4-20V DC.
- Công suất tiêu thụ: 60uA.
- Khoảng đo nhiệt độ: -55°C đến 150°C.
- Nhiệt độ thay đổi tuyến tính: 10mV/°C.
- Độ chính xác thực tế: 1/4°C ở nhiệt độ phòng và 3/4°C ngoài khoảng 2°C tới 150°C.
Cảm biến 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 độ.
Sơ đồ đấu nối
Arduino Uno | Cảm biến nhiệt độ LM35 |
VCC | +Vs (4 – 20V) |
GND | GND |
A0 | VOUT |
Các linh kiện cần thiết cho dự án
Tên linh kiện | Số lượng | Shopee |
Arduino Uno R3 | 1 | Mua ngay |
Dây cáp nạp | 1 | Mua ngay |
Cảm biến nhiệt LM35 | 1 | Mua ngay |
Breadboard (Bo test) | 1 | Mua ngay |
Dây cắm (Đực – Đực) | 1 | Mua ngay |
Code mẫu
int sensorPin = A0; void setup() { Serial.begin(9600); } void loop() { int reading = analogRead(sensorPin); float voltage = reading * 5.0 / 1024.0; float temp = voltage * 100.0; Serial.println(temp); delay(1000); }
Giải thích Code
reading = analogRead(sensorPin);
Hàm analogRead()
có nhiệm vụ đọc giá trị điện áp từ một chân Analog (ADC), hàm này luôn trả về 1 số nguyên nằm trong khoảng từ 0 đến 1023 tương ứng với thang điện áp (mặc định) từ 0 đến 5V. Hàm analogRead()
cần 100 micro giây để thực hiện.
- Xem bài viết kiểu số nguyên int để hiểu thêm.
Vậy reading = analogRead(sensorPin)
có nghĩa là đọc giá trị điện áp từ cảm biến nhiệt độ LM35.
float voltage = reading * 5.0 / 1024.0;
Công thức tính ra giá trị hiệu điện thế từ giá trị cảm biến (đơn vị Volt) Voltage = giá trị điện áp từ cảm biến chia cho mức analog cao nhất (1024) rồi nhân với mức điện áp 5V.
Như ở trên ta thấy nhiệt độ thay đổi tuyến tính 10mV/°C nên đổi từ Vol sang °C thì ta chỉ cần nhân giá trị điện thế với 100 là ra nhiệt độ.
float temp = voltage * 100.0;