Cảm biến nhiệt độ (LM35) Giao diện với ATmega32 và màn hình LCD - Điều khiển quạt tự động: 6 bước
Cảm biến nhiệt độ (LM35) Giao diện với ATmega32 và màn hình LCD - Điều khiển quạt tự động: 6 bước
Anonim
Cảm biến nhiệt độ (LM35) Giao tiếp với ATmega32 và màn hình LCD | Điều khiển quạt tự động
Cảm biến nhiệt độ (LM35) Giao tiếp với ATmega32 và màn hình LCD | Điều khiển quạt tự động

Cảm biến nhiệt độ (LM35) Giao diện với ATmega32 và Màn hình LCD

Bước 1:

Trong dự án này, Bạn sẽ học Cách giao diện Cảm biến nhiệt độ (LM35) với Vi điều khiển AVR ATmega32 và màn hình LCD.

Trước khi có Dự án này, bạn phải Tìm hiểu về các bài viết sau

cách thêm thư viện LCD trong avr studio | hướng dẫn vi điều khiển avr

giới thiệu về ADC trong Vi điều khiển AVR | cho những người mới bắt đầu

Cảm biến nhiệt độ (LM35) là một cảm biến nhiệt độ phổ biến và chi phí thấp. Vcc có thể từ 4V đến 20V theo quy định của biểu dữ liệu. Để sử dụng cảm biến, chỉ cần kết nối Vcc với 5V, GND với Ground và Out với một trong các ADC (kênh chuyển đổi tương tự sang kỹ thuật số).

Đầu ra là 10MilliVolts trên một độ C. Vì vậy, nếu đầu ra là 310 mV thì nhiệt độ là 31 độ C. Để thực hiện dự án này, bạn nên làm quen với ADC của AVR và cũng sử dụng màn hình LCD Vì vậy, độ phân giải của AVRs ADC là 10bit và đối với điện áp tham chiếu, bạn đang sử dụng 5V vì vậy độ phân giải về điện áp là

5/1024 = 5,1mV xấp xỉ

Vì vậy, nếu kết quả của ADC tương ứng với 5.1mV, tức là nếu đọc ADC là

10 x 5,1mV = 51mV

Bạn có thể đọc giá trị của bất kỳ kênh ADC nào bằng cách sử dụng hàm adc_result (ch);

Trong đó ch là số kênh (0-5) trong trường hợp của ATmega8. Nếu bạn đã kết nối đầu ra của LM35 với kênh ADC 0 thì hãy gọi

adc_result0 = adc_read (0);

điều này sẽ lưu trữ số đọc ADC hiện tại trong biến adc_value. Kiểu dữ liệu của adc_value phải là int vì giá trị ADC có thể nằm trong khoảng từ 0-1023.

Như chúng ta đã thấy kết quả ADC có hệ số là 5,1mV và đối với 1 độ C, đầu ra của LM35 là 10mV, Vì vậy, 2 đơn vị ADC = 1 độ.

Vì vậy, để có được nhiệt độ, chúng tôi chia adc_value cho hai

nhiệt độ = adc_result0 / 2;

Cuối cùng bộ vi điều khiển sẽ hiển thị nhiệt độ theo độ C. trên màn hình LCD chữ và số 16X2.

Bước 2: Sơ đồ mạch

Sơ đồ mạch
Sơ đồ mạch

Bước 3: Chương trình

#ifndef F_CPU

#define F_CPU 1600000UL

#endif

#bao gồm

#bao gồm

#include "LCD / lcd.h"

void adc_init ()

{

// AREF = AVcc

ADMUX = (1 <

// Kích hoạt ADC và tính toán trước của 128

ADCSRA = (1 <

}

// đọc giá trị adc

uint16_t adc_read (uint8_t ch)

{

// chọn kênh tương ứng 0 ~ 7

ch & = 0b00000111; // Phép toán AND với 7

ADMUX = (ADMUX & 0xF8) | ch;

// bắt đầu một chuyển đổi

// ghi '1' vào ADSC

ADCSRA | = (1 <

// đợi quá trình chuyển đổi hoàn tất

// ADSC lại trở thành '0'

trong khi (ADCSRA & (1 <

trở lại (ADC);

}

int main ()

{

DDRB = 0xff;

uint16_t adc_result0;

int tạm thời;

int xa;

đệm char [10];

// khởi tạo adc và lcd

adc_init ();

lcd_init (LCD_DISP_ON_CURSOR); //CON TRỎ

lcd_clrscr ();

lcd_gotoxy (0, 0);

_delay_ms (50);

trong khi (1)

{

adc_result0 = adc_read (0); // đọc giá trị adc tại PA0

temp = adc_result0 / 2.01; // tìm nhiệt độ

// lcd_gotoxy (0, 0);

// lcd_puts ("Adc =");

// itoa (adc_result0, buffer, 10); // hiển thị giá trị ADC

// lcd_puts (bộ đệm);

lcd_gotoxy (0, 0);

itoa (tạm thời, bộ đệm, 10);

lcd_puts ("Nhiệt độ ="); // nhiệt độ hiển thị

lcd_puts (bộ đệm);

lcd_gotoxy (7, 0);

lcd_puts ("C");

xa = (1,8 * nhiệt độ) +32;

lcd_gotoxy (9, 0);

itoa (xa, đệm, 10);

lcd_puts (bộ đệm);

lcd_gotoxy (12, 0);

lcd_puts ("F");

_delay_ms (1000);

if (temp> = 30)

{lcd_clrscr ();

lcd_home ();

lcd_gotoxy (0, 1);

lcd_puts ("QUẠT BẬT");

PORTB = (1 <

}

if (temp <= 30)

{

lcd_clrscr ();

lcd_home ();

lcd_gotoxy (7, 1);

lcd_puts ("TẮT QUẠT");

PORTB = (0 <

}

}

}

Bước 4: Giải thích mã

Tôi hy vọng bạn Biết bạn sẽ biết Cách bật ADC và Cách giao diện LCD với Vi điều khiển Avr trong đoạn mã này khi nhiệt độ cao hơn 30 độ thì quạt bật và bạn có thể thấy trên màn hình LED BẬT QUẠT và khi Nhiệt độ thấp hơn 30 thì quạt tắt và bạn có thể thấy QUẠT TẮT

Bước 5: Bạn có thể tải xuống toàn bộ dự án

Bấm vào đây

Đề xuất: