Sadržaj:

Senzor temperature (LM35) Interfejs sa ATmega32 i LCD ekranom - Automatsko upravljanje ventilatorom: 6 koraka
Senzor temperature (LM35) Interfejs sa ATmega32 i LCD ekranom - Automatsko upravljanje ventilatorom: 6 koraka

Video: Senzor temperature (LM35) Interfejs sa ATmega32 i LCD ekranom - Automatsko upravljanje ventilatorom: 6 koraka

Video: Senzor temperature (LM35) Interfejs sa ATmega32 i LCD ekranom - Automatsko upravljanje ventilatorom: 6 koraka
Video: Temperature Sensor(LM35 ) Interfacing with ATmega32 and LCD Display| Automatics Fan Controll 2024, Juli
Anonim
Senzor temperature (LM35) Interfejs sa ATmega32 i LCD ekranom | Automatska kontrola ventilatora
Senzor temperature (LM35) Interfejs sa ATmega32 i LCD ekranom | Automatska kontrola ventilatora

Senzor temperature (LM35) Interfejs sa ATmega32 i LCD ekranom

Korak 1:

U ovom projektu ćete naučiti kako spojiti temperaturni senzor (LM35) sa AVR ATmega32 mikrokontrolerom i LCD ekranom.

Prije ovog projekta morate saznati sljedeće članke

kako dodati lcd biblioteku u avr studio | avr mikrokontroler vodič

uvod u ADC u AVR mikrokontroleru | za početnike

Senzor temperature (LM35) popularan je i jeftin senzor temperature. Vcc može biti od 4V do 20V prema specifikaciji. Za korištenje senzora jednostavno spojite Vcc na 5V, GND na uzemljenje i izlaz na jedan od ADC -a (analogno -digitalni kanal pretvarača).

Izlaz je 10 milivolti po stepenu Celzijusa. Dakle, ako je izlaz 310 mV, tada je temperatura 31 stupanj C. Da biste napravili ovaj projekt, trebali biste biti upoznati s ADC -om AVR -a, a također i korištenjem LCD -a. Dakle, rezolucija AVR -ova ADC -a je 10 bita, a za referentni napon koristite 5 V tako da je rezolucija u pogledu napona je

5/1024 = približno 5,1 mV

Dakle, ako rezultat ADC -a odgovara 5.1mV, tj. Ako je očitanje ADC -a

10 x 5,1 mV = 51 mV

Vrijednost bilo kojeg ADC kanala možete pročitati pomoću funkcije adc_result (ch);

Gdje je ch broj kanala (0-5) u slučaju ATmega8. Ako ste spojili izlaz LM35 na ADC kanal 0, tada nazovite

adc_result0 = adc_read (0);

ovo će pohraniti trenutno očitanje ADC -a u varijablu adc_value. Tip podataka adc_value trebao bi biti int jer vrijednost ADC-a može biti u rasponu od 0-1023.

Kao što smo vidjeli, rezultati ADC -a su faktor 5.1mV i za 1 stepen C izlaz LM35 je 10mV, tako da su 2 jedinice ADC -a = 1 stepen.

Dakle, da bismo dobili temperaturu, podijelimo vrijednost adc_value na dva

temperatura = adc_result0 /2;

Konačno, mikrokontroler će prikazati temperaturu u stepenima Celzijusa na alfanumeričkom LCD ekranu 16X2.

Korak 2: Dijagram kola

Dijagram kola
Dijagram kola

Korak 3: Program

#ifndef F_CPU

#define F_CPU 1600000UL

#endif

#include

#include

#include "LCD/lcd.h"

void adc_init ()

{

// AREF = AVcc

ADMUX = (1 <

// Omogućivanje ADC -a i predskaler 128

ADCSRA = (1 <

}

// očitavanje adc vrijednosti

uint16_t adc_read (uint8_t ch)

{

// odabir odgovarajućeg kanala 0 ~ 7

ch & = 0b00000111; // AND operacija sa 7

ADMUX = (ADMUX & 0xF8) | ch;

// pokretanje pojedinačne konverzije

// upisuje '1' u ADSC

ADCSRA | = (1 <

// čekati da se konverzija dovrši

// ADSC ponovo postaje '0'

dok (ADCSRA & (1 <

povrat (ADC);

}

int main ()

{

DDRB = 0xff;

uint16_t adc_result0;

int temp;

int far;

me uspremnik [10];

// inicijaliziramo adc i lcd

adc_init ();

lcd_init (LCD_DISP_ON_CURSOR); // KURSOR

lcd_clrscr ();

lcd_gotoxy (0, 0);

_kašnjenje_ms (50);

dok (1)

{

adc_result0 = adc_read (0); // očitavanje adc vrijednosti na PA0

temp = adc_result0/2.01; // utvrđivanje temperature

// lcd_gotoxy (0, 0);

// lcd_puts ("Adc =");

// itoa (adc_result0, bafer, 10); // prikazuje vrijednost ADC -a

// lcd_puts (bafer);

lcd_gotoxy (0, 0);

itoa (temp, bafer, 10);

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

lcd_puts (bafer);

lcd_gotoxy (7, 0);

lcd_puts ("C");

daleko = (1,8*temp) +32;

lcd_gotoxy (9, 0);

itoa (daleko, tampon, 10);

lcd_puts (bafer);

lcd_gotoxy (12, 0);

lcd_puts ("F");

_dey_ms (1000);

if (temp> = 30)

{lcd_clrscr ();

lcd_home ();

lcd_gotoxy (0, 1);

lcd_puts ("FAN ON");

PORTB = (1 <

}

ako (temp <= 30)

{

lcd_clrscr ();

lcd_home ();

lcd_gotoxy (7, 1);

lcd_puts ("FAN OFF");

PORTB = (0 <

}

}

}

Korak 4: Objasnite kôd

Nadam se da znate da ćete znati kako omogućiti ADC i kako spojiti LCD sa Avr mikrokontrolerom u ovom kodu kada je temperatura veća od 30 stepeni, onda je ventilator uključen i možete vidjeti na LED ekranu VENTILATOR UKLJUČEN, a kada je temperatura manja od 30 onda ventilator je isključen i možete vidjeti da je ventilator isključen

Korak 5: Možete preuzeti cijeli projekt

Kliknite ovdje

Preporučuje se: