Đo nhiệt độ dùng cảm biến LM35 và Arduino

0
8386
Đo nhiệt độ dùng LM35 và Arduino

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.

Sơ đồ khối mạch đo nhiệt độ dùng cảm biến LM35

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

 Mạch đo nhiệt độ dùng cảm biến LM35 và Arduino

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

BÌNH LUẬN

Vui lòng nhập bình luận của bạn
Vui lòng nhập tên của bạn ở đây