Lập trình giao tiếp cảm biến LM35 với board mạch Arduino

Đây là bài 13/17 bài của series môn học Lập trình Arduino cơ bản

1. Đặc điểm của cảm biến LM35

Cảm biến LM35 là một cảm biến đo nhiệt độ của môi trường. Nhiệt độ được xác định bằng cách đo hiệu điện thế ngõ ra (Vout) của LM35. Nhiệt độ lấy ra từ cảm biến LM35 thay đổi theo hiệu điến thế, khoảng 10mV/°C. Cảm biến LM35 có thể lấy ra nhiệt độ ở đơn vị °C hoặc đổi sang °F.

Cảm biến LM35

Nhiệt độ nhận được từ LM35 có thể chênh lệch với thực tế 0.25°C ở nhiệt độ phòng và 0.75°C ngoài trời. LM35 có thể đo nhiệt độ trong khoảng -55°C tới 150°C.

Ưu điểm của LM35 là có hiệu năng cao, công suất tiêu thụ là 60µA. LM35 có khả năng nhận được sự thay đổi nhiệt độ nhanh và tương đối chính xác.

2. Thiết kế sơ đồ mạch giao tiếp với LM35

Mạch giao tiếp LM35 với Arduino gồm 1 board Arduino và 1 cảm biến LM35. Chân 1 của LM35 được cấp nguồn dương (+), chân 3 của LM35 được cấp nguồn âm (-), chân 2 (Vout) của LM35 nối với 1 chân analog của Arduino để gửi tín hiệu nhiệt độ cho Arduino.

Sơ đồ LM35 với Arduino

Có thể sử dụng mạch giao tiếp giả lập trên Proteus.

Sơ đồ mạch Proteus giao tiếp LM35 với Arduino

3. Chương trình lấy giá trị nhiệt độ từ LM35 hiển thị lên LCD

Bằng cách cấp vào chân 1 của cảm biến LM35 một hiệu điện thế 5V, chân 3 nối đất, lấy hiệu điện thế ở chân 2 bằng cách lấy tín hiệu tại chân analog (ví dụ chân A0) trên Arduino. Từ đó, ta sẽ có được nhiệt độ ở đơn vị °C bằng công thức:

float tempCelsius = (5.0*analogRead(A0)*100.0/1024.0);

Nếu muốn đổi từ °C sang °F thì áp dụng công thức:

float tempFahrenheit = (tempCelsius * 1.8)+32;

Sau đó, chúng ta sử dụng hàm print() để in giá trị nhiệt độ lên LCD.

#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
int lm35 = A0;//chân analog kết nối LM35 với Arduino
void setup() {
  lcd.begin(16, 2);
}
void loop() {
  float tempCelsius = (5.0*analogRead(lm35)*100.0/1024.0);//độ C
  float tempFahrenheit =(tempCelsius * 1.8)+32;//độ F
  lcd.setCursor(0, 0);
  lcd.print("TEMP ");
  lcd.print(char(223));
  lcd.print("C:");
  lcd.print(tempCelsius);
  lcd.print(char(223));
  lcd.print("C");
  lcd.setCursor(0, 1);
  lcd.print("TEMP ");
  lcd.print(char(223));
  lcd.print("F:");
  lcd.print(tempFahrenheit);
  lcd.print(char(223));
  lcd.print("F");
  delay(1000);
  lcd.clear();
}
Kết quả

4. Bài tập

Bài tập 1: Thiết kế mạch gồm 1 đèn led và 1 LM35. Nếu nhiệt độ môi trường >30 °C thì cho phép đèn sáng lên.

Bài tập 2: Thiết kế mạch gồm 1 LCD và 1 LM35. Viết chương trình hiển thị nhiệt độ lên LCD (hiển thị theo °C).

Bài tập 3: Thiết kế mạch gồm 1 LCD và 1 LM35, 2 nút nhấn. Viết chương trình tương tự như bài 2 nhưng có thêm phần xử lý nút nhấn, một nút nhấn cho phép hiển thị theo °C, một nút nhấn cho phép hiển thị độ F.

Bài tập 4: Làm tương tự như bài tập 3 với một nút nhấn. Nhấn lần 1 thì hiển thị °C, nhấn lần 2 thì hiển thị °F.

Bài tập 5: Thiết kế mạch gồm 1 LCD, 1 LM35, 1 nút nhấn, 1 đèn xanh, 1 đèn đỏ, 1 đèn vàng. Các thiết bị có các chức năng sau:

– LCD hiển thị nhiệt độ cho LM35.

– Nút nhấn cho phép chuyển chế độ hiển thị độ đo (độ F sang °C và ngược lại).

– Đèn xanh sáng khi nhiệt độ dưới 17 °C, đèn vàng sáng khi nhiệt độ từ 17 °C – 30 °C và đèn đỏ sáng khi nhiệt độ lớn hơn 30 °C.

5/5 - (1 bình chọn)
Bài trước và bài sau trong môn học<< Tạo thêm các ký tự mới trên LCD với board mạch ArduinoLập trình giao tiếp cảm biến LDR với board mạch Arduino >>
Chia sẻ trên mạng xã hội:

Tác giả Vinh Lê

Vinh Lê hiện đang là biên tập viên tại Góc Học IT.

Bài viết của Vinh Lê

Trả lời

Lưu ý:

1) Vui lòng bình luận bằng tiếng Việt có dấu.

2) Khuyến khích sử dụng tên thật và địa chỉ email chính xác.

3) Mọi bình luận trái quy định sẽ bị xóa bỏ.