Cuprins:

Interfață senzor de temperatură (LM35) cu ATmega32 și afișaj LCD - Control automat al ventilatorului: 6 pași
Interfață senzor de temperatură (LM35) cu ATmega32 și afișaj LCD - Control automat al ventilatorului: 6 pași

Video: Interfață senzor de temperatură (LM35) cu ATmega32 și afișaj LCD - Control automat al ventilatorului: 6 pași

Video: Interfață senzor de temperatură (LM35) cu ATmega32 și afișaj LCD - Control automat al ventilatorului: 6 pași
Video: Ecran LCD 1602 IIC/I2C 2024, Iulie
Anonim
Interfață senzor de temperatură (LM35) cu ATmega32 și afișaj LCD | Control automat al ventilatorului
Interfață senzor de temperatură (LM35) cu ATmega32 și afișaj LCD | Control automat al ventilatorului

Senzor de temperatură (LM35) Interfață cu ATmega32 și afișaj LCD

Pasul 1:

În acest proiect, veți învăța cum să interfațați un senzor de temperatură (LM35) cu microcontrolerul AVR ATmega32 și afișajul LCD.

Înainte de acest proiect trebuie să aflați mai multe despre următoarele articole

cum se adaugă o bibliotecă lcd în avr studio | tutorial avr microcontroler

introducere în ADC în microcontrolerul AVR | pentru incepatori

Senzorul de temperatură (LM35) este un senzor de temperatură popular și cu costuri reduse. Vcc-ul poate fi de la 4V la 20V conform specificațiilor din foaia tehnică. Pentru a utiliza senzorul, pur și simplu conectați Vcc la 5V, GND la masă și ieșirea la unul dintre ADC (canal analogic la convertor digital).

Producția este de 10MilliVolts pe grad centigrad. Deci, dacă ieșirea este de 310 mV, atunci temperatura este de 31 de grade C. Pentru a face acest proiect, ar trebui să fiți familiarizați cu ADC-ul AVR-urilor și, de asemenea, cu ajutorul LCD-ului. din punct de vedere al tensiunii este

5/1024 = 5,1mV aproximativ

Deci, dacă rezultatul ADC corespunde la 5,1 mV, adică dacă citirea ADC este

10 x 5,1 mV = 51 mV

Puteți obține citirea valorii oricărui canal ADC utilizând funcția adc_result (ch);

Unde ch este numărul canalului (0-5) în cazul ATmega8. Dacă ați conectat ieșirea LM35 la canalul ADC 0, atunci sunați

adc_result0 = adc_read (0);

aceasta va stoca citirea ADC curentă în variabila adc_value. Tipul de date al adc_value ar trebui să fie int deoarece valoarea ADC poate varia de la 0-1023.

După cum am văzut, rezultatele ADC au un factor de 5,1mV și pentru 1 grad C, ieșirea LM35 este de 10mV, deci 2 unități de ADC = 1 grad.

Deci, pentru a obține temperatura, împărțim valoarea adc_value la două

temperature = adc_result0 / 2;

În cele din urmă, microcontrolerul va afișa temperatura în grade centigrade pe ecranul alfanumeric 16X2.

Pasul 2: Diagrama circuitului

Diagrama circuitului
Diagrama circuitului

Pasul 3: Program

#ifndef F_CPU

#define F_CPU 1600000UL

#endif

#include

#include

#includeți „LCD / lcd.h”

anula adc_init ()

{

// AREF = AVcc

ADMUX = (1 <

// Activare ADC și prescaler de 128

ADCSRA = (1 <

}

// citiți valoarea adc

uint16_t adc_read (uint8_t ch)

{

// selectați canalul corespunzător 0 ~ 7

ch & = 0b00000111; // ȘI operațiune cu 7

ADMUX = (ADMUX & 0xF8) | ch;

// pornește o singură conversie

// scrieți „1” la ADSC

ADCSRA | = (1 <

// așteptați finalizarea conversiei

// ADSC devine din nou „0”

în timp ce (ADCSRA & (1 <

returnare (ADC);

}

int main ()

{

DDRB = 0xff;

uint16_t adc_result0;

int temp;

int far;

tampon char [10];

// inițializați adc și lcd

adc_init ();

lcd_init (LCD_DISP_ON_CURSOR); //CURSOR

lcd_clrscr ();

lcd_gotoxy (0, 0);

_delay_ms (50);

în timp ce (1)

{

adc_result0 = adc_read (0); // citiți valoarea adc la PA0

temp = adc_result0 / 2.01; // găsirea temperaturii

// lcd_gotoxy (0, 0);

// lcd_puts ("Adc =");

// itoa (adc_result0, buffer, 10); // afișează valoarea ADC

// lcd_puts (tampon);

lcd_gotoxy (0, 0);

itoa (temp, tampon, 10);

lcd_puts ("Temp ="); // afișează temperatura

lcd_puts (tampon);

lcd_gotoxy (7, 0);

lcd_puts ("C");

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

lcd_gotoxy (9, 0);

itoa (far, tampon, 10);

lcd_puts (tampon);

lcd_gotoxy (12, 0);

lcd_puts ("F");

_delay_ms (1000);

dacă (temp> = 30)

{lcd_clrscr ();

lcd_home ();

lcd_gotoxy (0, 1);

lcd_puts ("FAN ON");

PORTB = (1 <

}

dacă (temp <= 30)

{

lcd_clrscr ();

lcd_home ();

lcd_gotoxy (7, 1);

lcd_puts ("FAN OFF");

PORTB = (0 <

}

}

}

Pasul 4: Explicați codul

Sper că știți că veți ști cum să activați ADC și cum să interfațați LCD-ul cu microcontrolerul Avr în acest cod atunci când temperatura este mai mare de 30 de grade, apoi ventilatorul este pornit și puteți vedea pe afișajul LED FAN ON și când temperatura este mai mică de 30, apoi ventilatorul este oprit și puteți vedea FAN OFF

Pasul 5: Puteți descărca proiectul complet

Click aici

Recomandat: