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
#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};