Talaan ng mga Nilalaman:

Temperature Sensor (LM35) Interfacing Sa ATmega32 at LCD Display - Awtomatikong Pagkontrol ng Fan: 6 na Hakbang
Temperature Sensor (LM35) Interfacing Sa ATmega32 at LCD Display - Awtomatikong Pagkontrol ng Fan: 6 na Hakbang

Video: Temperature Sensor (LM35) Interfacing Sa ATmega32 at LCD Display - Awtomatikong Pagkontrol ng Fan: 6 na Hakbang

Video: Temperature Sensor (LM35) Interfacing Sa ATmega32 at LCD Display - Awtomatikong Pagkontrol ng Fan: 6 na Hakbang
Video: LM35 Temperature sensor and LCD connection with ATmega32 2024, Nobyembre
Anonim
Temperature Sensor (LM35) Interfacing Sa ATmega32 at LCD Display | Awtomatikong Pagkontrol ng Fan
Temperature Sensor (LM35) Interfacing Sa ATmega32 at LCD Display | Awtomatikong Pagkontrol ng Fan

Temperature Sensor (LM35) Pag-interfacing sa ATmega32 at LCD Display

Hakbang 1:

Sa proyektong ito, Malalaman mo Kung paano i-interface ang isang Temperature Sensor (LM35) sa AVR ATmega32 Microcontroller at LCD display.

Bago ang Proyekto na ito kailangan mong malaman ang tungkol sa mga sumusunod na artikulo

kung paano magdagdag ng lcd library sa avr studio | tutorial ng avr microcontroller

pagpapakilala sa ADC sa AVR Microcontroller | para sa mga nagsisimula pa lamang

Temperatura Sensor (LM35) ay isang tanyag at mababang presyo ng sensor ng temperatura. Ang Vcc ay maaaring mula sa 4V hanggang 20V tulad ng tinukoy ng datasheet. Upang magamit ang sensor ay ikonekta lamang ang Vcc sa 5V, GND sa Ground at ang Out sa isa sa ADC (analog sa digital converter channel).

Ang output ay 10MilliVolts bawat degree centigrade. Kaya't kung ang output ay 310 mV kung gayon ang temperatura ay 31 degree C. Upang gawin ang proyektong ito dapat ay pamilyar ka sa ADC ng AVRs at gumagamit din ng LCD Kaya Ang resolusyon ng AVRs ADC ay 10bit at para sa sanggunian boltahe ay gumagamit ka ng 5V kaya ang resolusyon sa mga tuntunin ng boltahe ay

5/1024 = 5.1mV humigit-kumulang

Kaya't kung ang resulta ng ADC ay tumutugma sa 5.1mV ibig sabihin kung ang pagbabasa ng ADC ay

10 x 5.1mV = 51mV

Maaari mong mabasa ang halaga ng anumang ADC channel gamit ang function adc_result (ch);

Kung saan ang ch ay numero ng channel (0-5) sa kaso ng ATmega8. Kung nakakonekta mo ang LM35's out ilagay sa ADC channel 0 pagkatapos ay tumawag

adc_result0 = adc_read (0);

maiimbak nito ang kasalukuyang pagbabasa ng ADC sa variable adc_value. Ang uri ng data ng adc_value ay dapat na int bilang ang halaga ng ADC ay maaaring saklaw mula 0-1023.

Tulad ng nakita namin ang mga resulta ng ADC ay nasa kadahilanan ng 5.1mV at para sa 1 degree C ang output ng LM35 ay 10mV, Kaya 2 yunit ng ADC = 1 degree.

Kaya upang makuha ang temperatura hinati natin ang adc_value ng dalawa

temperatura = adc_result0 / 2;

Sa wakas ang microcontroller ay magpapakita ng temperatura sa degree centigrade sa 16X2 alphanumeric LCD.

Hakbang 2: Diagram ng Circuit

Diagram ng Circuit
Diagram ng Circuit

Hakbang 3: Programa

#ifndef F_CPU

# tukuyin ang F_CPU 1600000UL

#tapusin kung

# isama

# isama

# isama ang "LCD / lcd.h"

walang bisa adc_init ()

{

// AREF = AVcc

ADMUX = (1 <

// ADC Paganahin at prescaler ng 128

ADCSRA = (1 <

}

// basahin ang halaga ng adc

uint16_t adc_read (uint8_t ch)

{

// piliin ang katumbas na channel 0 ~ 7

ch & = 0b00000111; // AT operasyon na may 7

ADMUX = (ADMUX & 0xF8) | ch;

// simulan ang solong conversion

// isulat ang '1' sa ADSC

ADCSRA | = (1 <

// hintaying makumpleto ang conversion

// ADSC ay naging '0' muli

habang (ADCSRA & (1 <

bumalik (ADC);

}

int main ()

{

DDRB = 0xff;

uint16_t adc_result0;

int temp;

int malayo;

char buffer [10];

// ipasimula ang adc at lcd

adc_init ();

lcd_init (LCD_DISP_ON_CURSOR); // CURSOR

lcd_clrscr ();

lcd_gotoxy (0, 0);

_delay_ms (50);

habang (1)

{

adc_result0 = adc_read (0); // basahin ang halaga ng adc sa PA0

temp = adc_result0 / 2.01; // paghahanap ng temperatura

// lcd_gotoxy (0, 0);

// lcd_puts ("Adc =");

// itoa (adc_result0, buffer, 10); // ipakita ang halaga ng ADC

// lcd_puts (buffer);

lcd_gotoxy (0, 0);

itoa (temp, buffer, 10);

lcd_puts ("Temp ="); // display temperatura

lcd_puts (buffer);

lcd_gotoxy (7, 0);

lcd_puts ("C");

malayo = (1.8 * temp) +32;

lcd_gotoxy (9, 0);

itoa (malayo, buffer, 10);

lcd_puts (buffer);

lcd_gotoxy (12, 0);

lcd_puts ("F");

_delay_ms (1000);

kung (temp> = 30)

{lcd_clrscr ();

lcd_home ();

lcd_gotoxy (0, 1);

lcd_puts ("FAN ON");

PORTB = (1 <

}

kung (temp <= 30)

{

lcd_clrscr ();

lcd_home ();

lcd_gotoxy (7, 1);

lcd_puts ("FAN OFF");

PORTB = (0 <

}

}

}

Hakbang 4: Ipaliwanag ang Code

Inaasahan kong malalaman mo malalaman Kung paano paganahin ang ADC at Paano i-interface ang LCD sa Avr Microcontroller sa code na ito kapag ang temperatura ay higit pa sa 30 degree pagkatapos ang fan ay nasa at maaari mong makita sa humantong Display FAN ON at kung ang Temperatura Mas mababa sa 30 pagkatapos ay fan naka-off at makikita mo ang FAN OFF

Hakbang 5: Maaari kang Mag-download ng Buong Project

Pindutin dito

Inirerekumendang: