Kazalo:

Temperaturni senzor (LM35) v vmesniku z ATmega32 in LCD zaslonom - Samodejni nadzor ventilatorja: 6 korakov
Temperaturni senzor (LM35) v vmesniku z ATmega32 in LCD zaslonom - Samodejni nadzor ventilatorja: 6 korakov

Video: Temperaturni senzor (LM35) v vmesniku z ATmega32 in LCD zaslonom - Samodejni nadzor ventilatorja: 6 korakov

Video: Temperaturni senzor (LM35) v vmesniku z ATmega32 in LCD zaslonom - Samodejni nadzor ventilatorja: 6 korakov
Video: LDmicro 20: решен вопрос жидкокристаллического дисплея I2C (программирование ПЛК микроконтроллера с помощью LDmicro) 2024, Julij
Anonim
Temperaturni senzor (LM35) v vmesniku z ATmega32 in LCD zaslonom | Samodejno upravljanje ventilatorja
Temperaturni senzor (LM35) v vmesniku z ATmega32 in LCD zaslonom | Samodejno upravljanje ventilatorja

Temperaturni senzor (LM35) Vmesnik z ATmega32 in LCD zaslonom

Korak 1:

V tem projektu se boste naučili, kako povezati temperaturni senzor (LM35) z mikrokontrolerjem AVR ATmega32 in LCD zaslonom.

Pred tem projektom boste morali izvedeti več o naslednjih člankih

kako dodati knjižnico LCD v avr studio | vadnica mikrokrmilnika avr

uvod v ADC v mikrokrmilniku AVR | za začetnike

Senzor temperature (LM35) je priljubljen in poceni temperaturni senzor. Vcc je lahko od 4V do 20V, kot je določeno v podatkovnem listu. Za uporabo senzorja preprosto priključite Vcc na 5V, GND na ozemljitev in Out na enega od ADC (analogno -digitalni kanal pretvornika).

Izhodna moč je 10 milivoltov na stopinj Celzija. Torej, če je izhod 310 mV, potem je temperatura 31 stopinj C. Za ta projekt se morate seznaniti z ADC -jem AVR -jev in tudi z uporabo LCD -ja. Ločljivost ADC -jev AVR -jev je 10 -bitna, za referenčno napetost pa uporabljate 5V, zato je ločljivost 5V. glede na napetost je

5/1024 = približno 5,1 mV

Torej, če rezultat ADC ustreza 5,1 mV, to je, če je odčitek ADC

10 x 5,1 mV = 51 mV

Vrednost katerega koli kanala ADC lahko preberete s funkcijo adc_result (ch);

Kjer je ch številka kanala (0-5) v primeru ATmega8. Če ste izhod LM35 priključili na kanal ADC 0, pokličite

adc_result0 = adc_read (0);

to bo shranilo trenutni odčitek ADC -ja v spremenljivko adc_value. Podatkovni tip adc_value mora biti int, saj se lahko vrednost ADC giblje od 0-1023.

Kot smo videli, so rezultati ADC faktorja 5,1 mV in za 1 stopinjo C je izhod LM35 10 mV, torej sta 2 enoti ADC = 1 stopinja.

Torej, da dobimo temperaturo, delimo vrednost adc_value za dva

temperatura = adc_result0 /2;

Končno bo mikrokrmilnik prikazal temperaturo v stopinjah Celzija na alfanumeričnem LCD -prikazovalniku 16X2.

2. korak: Shema vezja

Shema vezja
Shema vezja

3. korak: Program

#ifndef F_CPU

#define F_CPU 1600000UL

#endif

#vključi

#vključi

#include "LCD/lcd.h"

void adc_init ()

{

// AREF = AVcc

ADMUX = (1 <

// Omogočanje ADC in prednastavitev 128

ADCSRA = (1 <

}

// prebere vrednost adc

uint16_t adc_read (uint8_t ch)

{

// izberite ustrezen kanal 0 ~ 7

ch & = 0b00000111; // AND delovanje s 7

ADMUX = (ADMUX & 0xF8) | ch;

// začni enojno pretvorbo

// napiši '1' v ADSC

ADCSRA | = (1 <

// počakajte, da se pretvorba dokonča

// ADSC spet postane '0'

medtem ko (ADCSRA & (1 <

vračilo (ADC);

}

int main ()

{

DDRB = 0xff;

uint16_t adc_result0;

int temp;

int daleč;

medpomnilnik char [10];

// inicializiramo adc in lcd

adc_init ();

lcd_init (LCD_DISP_ON_CURSOR); // KURZOR

lcd_clrscr ();

lcd_gotoxy (0, 0);

_dey_ms (50);

medtem ko (1)

{

adc_result0 = adc_read (0); // prebere vrednost adc pri PA0

temp = adc_result0/2.01; // ugotavljanje temperature

// lcd_gotoxy (0, 0);

// lcd_puts ("Adc =");

// itoa (adc_result0, medpomnilnik, 10); // prikaže vrednost ADC

// lcd_puts (vmesnik);

lcd_gotoxy (0, 0);

itoa (temp, pufer, 10);

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

lcd_puts (vmesnik);

lcd_gotoksi (7, 0);

lcd_puts ("C");

daleč = (1,8*temp) +32;

lcd_gotoksi (9, 0);

itoa (daleč, pufer, 10);

lcd_puts (vmesnik);

lcd_gotoksi (12, 0);

lcd_puts ("F");

_dey_ms (1000);

če (temp> = 30)

{lcd_clrscr ();

lcd_home ();

lcd_gotoksi (0,1);

lcd_puts ("FAN ON");

PORTB = (1 <

}

če (temp <= 30)

{

lcd_clrscr ();

lcd_home ();

lcd_gotoksi (7, 1);

lcd_puts ("FAN OFF");

PORTB = (0 <

}

}

}

4. korak: Pojasnite kodo

Upam, da veste, da boste vedeli, kako v tej kodi omogočiti ADC in kako povezati vmesnik LCD z mikrokrmilnikom Avr, ko je temperatura večja od 30 stopinj, potem je ventilator vklopljen, na LED zaslonu pa vidite VKLOP VKLOPLJENO in ko je temperatura nižja od 30, nato ventilator je izklopljen in lahko vidite FAN OFF

5. korak: Lahko prenesete celoten projekt

Klikni tukaj

Priporočena: