Table of Contents

Introducere

Incinta termostatata reprezinta o camera izolata unde temperatura interioara este mentinuta la un nivel constant, ales de catre utilizator. Incinta are doua mecanisme de control a temperaturii: racire si incalzire. Pentru racire este folosit un cooler alimentat la 12 V iar pentru incalzire sunt folosite trei becuri de 20W. Temperatura din interiorul camerei este afisata real-time pe un LCD. Temperatura poate fi setata prin intermediul a doua butoane si a unui contact cu cheie, fara de care butoanele sunt inactive. Odata realizat contactul cu cheie, camera trece in modul de programare a temperaturii, iar pe LCD va fi afisata temperatura curenta ce va putea fi incrementata/decrementata prin intermediul butoanelor. Odata scoasa cheia din contact dispozitivul trece in modul de operare si prin mecanismele de racire/incalzire va obtine temperatura ceruta. Incinta are si un modul de alarma, astfel daca usa incintei este deschisa se va lansa un avertisment sonor.

Dispozitivul este ideal pentru a crea medii controle climateric: incubatoare, camere pentru inmultire in vitro, etc.

Descriere generală

Schema bloc:

Dispozitivul este organizat intr-un minitower din plexiglass pe trei nivele:

Hardware Design

Scheme circuit

Circuitul de comanda

Unde R2 poate fi : buzzer, cooler, 3 becuri de 20W legate in paralel

LCD

Circuitul pentru intrari

schema este folosita pt: butoane, contactul cu cheie microintrerupator

Circuitul pentru statusul placutei

Circuitul pentru senzorul de temperatura

Componente Hardware

Software Design

Software Design

Programul va fi scris folosind limbajul de programare C cu ajutorul mediului de dezvoltare AVR Studio 4.

LCD API

void LCD_init(); // Initializare modul LCD.. trebuie apelata inainte de a se face orice operatie cu LCD-ul. 
                 // Initializarea este facuta considerand o interfatare pe 4 fire !!!.
void LCD_writeInstruction(unsigned char _instruction); // Trimite o instructiune catre lcd (vezi datasheet)
void LCD_writeData(unsigned char _data); // Trimite date catre LCD pentru afisare
void LCD_write(unsigned char _byte); // Trimite un byte catre LCD pe pinii D4-7 in 2 timpi, intai bitii mai semnificativi si apoi cei mai putin semnidifcativi.
void LCD_waitNotBusy(); // Functia asteapta pana cand lcd-ul devine disponibil pt o noua comanda.
void LCD_print(char* _msg); // Afiseaza imformatia pe LCD (doar 1 linie, primele 16 caractere din msg)
void LCD_print2(char* _msg1, char* _msg2); // Afisare pe 2 lini pe LCD. Pe prima linie afiseaza _msg1 si pe a 2-a _msg2.
void LCD_printDecimal2u(unsigned int _n); // Afisare numar in baza 10 pe LCD
void LCD_printHexa(unsigned int _n); // Afisare numar in baza 16 pe LCD
void LCD_waitInstructions(unsigned char _instructions); // Asteapta un numar de cicli de tact.. loop

Senzor Temperatura API

void InitADC(){
ADMUX=(1<<REFS0);// For Aref=AVcc;
ADCSRA=(1<<ADEN)|(7<<ADPS0);
}

uint16_t ReadADC(uint8_t ch) {
   ch=ch&0b00000111;
   ADMUX|=ch;
   ADCSRA|=(1<<ADSC);
   while(!(ADCSRA & (1<<ADIF)));
   ADCSRA|=(1<<ADIF);
   return(ADC);
}

void main(){
	  ....
	  //aflarea temperaturii
      adc_value=ReadADC(0);      	  
      t=adc_value/2;
	  ...
}

Rezultate Obţinute

itab1.jpg itab5.jpg itab3.jpg itab4.jpg itab2.jpg itab6.jpg

Bibliografie/Resurse

Documentatie:

Datasheet: