Microcontrolere Page 3 Stiati ca o valoare ridicata a umiditatii poate genera conditii favorabile inmultirii agentilor patogeni, alergenilor sau aparitia mucegaiului? Umiditatea este un factor important n meninerea nivelurilor optime de confort i a unei caliti bune a aerului n interior.
O valoarea a umiditatii prea scazuta provoaca o senzatie de frig organismului si uscaciune in gat. Totodata, favorizeaza aparitia acarienilor, virusilor si bacteriilor care pot duce la infectii respratorii.
O valoare a umiditatii prea ridicata provoaca o senzatie de fierbinte, iar organismul nu mai reuseste sa-si elimine surplusul caloric prin transpiratie. Un mediu prea umed reprezinta un mediu de inmultire propice pentru bacterii si paraziti, ceea ce duce implicit la aparitia mucegaiului si a igrasiei.
De aceea,umiditatea este un factor important n meninerea nivelurilor optime de confort i a unei caliti bune a aerului interior, nivelul optim sanatatii fiind cuprins intre 40% - 60%.
Niciodat nu a fost mai simplu s controlai climatul interior i s aveti grija de sanatate!
Umidometrul digital este un dispozitiv versatil folosit pentru determinarea nivelului de apa din aer.
Cu o greutate redusa, usor de utilizat si un design ergonomic, acesta permite determinarea rapida si precisa a umiditatii aerului din dormitor, laborator sau chiar depozit.
Un ecran LCD cu functia de modificare a contrastului permite vizualizarea permanenta a informatiilor despre valoarea umiditatii relative din interior, gama de masurare a acesteia fiind intre 10-95%.
Un toc rezistent pentru acoperirea senzorului, confera performan i via lung.
Beneficiind de o dimesiune redusa si o greutate de 143g, acest dispozitiv cu functii multiple poate fi montat cu usurinta pe un perete sau pozitionat in picioare cu ajutorul suportului integrat. Bateria de alimentare garanteaza o durata lunga de viata a acestui umidometru de calitate excelenta si cu aspect deosebit.
2.1.Descrierea comerciala 2.Prezentare generala
Page 4 Microcontrolere
Umidometrul este un dispozitiv care masoara cantitatea de apa aflata intr-un esantion de aer.
Cel mai cunoscut umidometru este Psychometrul ud si uscat e compus din doua termometre cu mercur, unul avand baza uscata iar celalalt are la baza un recipient cu apa. Apa din recipient se evapora absorbind caldura, deci indicatia termometrului va scadea. Umiditatea relativa se determina pe baza unui tabel de calcul si a indicatiilor celor 2 termometre.
Un alt tip de hidrometru timpuriu este cel cu par uman (blond). Aceste dispozitive mecanice se bazeaza pe principiul ca parul uman isi schimba volumul ca raspuns al umiditatii relative. Contractia si dilatarea parului actioneaza un ac indicand astfel umiditatea.
In 1783, fizicianul elvetian si geolog , Horace Benedict de Saussure a construit primul higrometru cu fir de pr uman.
Leonardo da Vinci a construit primul higrometru brut n 1400 . Francesco Folli a inventat un higrometru mai practic n 1664 .
2.2 Scurt istoric
Microcontrolere Page 5
3.Proiectare conceptuala
Alimentare Convertor Analog Digital Microcontroler Atmega16 Codare
Blocul de alimentare : realizeaza conectarea circuitului la sursa externa de tensiune.
Senzor de umiditate Hch 1000 : este un senzor capacitiv de polimer, cu precizie relativ buna, proiectat pentru masurarea umiditatii in spatii inchise. Un polimer special este folosit ca material detector de umiditate datorita propietatilor acestuia dependenta redusa la temperatura si rezistentei imbunatatite la contaminare.
Convertorul Analog Digital : accepta o mrime analogic (curent, tensiune) la intrare, furniznd la iesire un numr care constituie o aproximare a valorii analogice a semnalului de la intrare.Spre deosebire de o mrime analogic ale crei valori se pot gsi n orice punct din domeniul su de variaie, mrimea numeric (sau digital) posed numai o variaie n trepte. Astfel, ntreg domeniul de variaie este divizat ntr-un numr finit de cuante (trepte elementare) de mrime determinat de rezoluia sistemului, n acest mod, diferena ntre cele mai apropiate valori numerice nu poate fi fcut mai mic dect aceast treapt elementar.
Microcontrolerul AtMega16 : ATmega 16 este un microcontroler CMOS de 8 bii de mic putere bazat pe arhitectura RISC AVR imbunataita.Dispune de un set de 131 instruciuni i 32 de registre de uz general. Cele 32 de registre sunt direct adresabile de Unitatea Logica Aritmetica (ALU), permitand accesarea a doua registre independente intr-o singura instruciune. Se obtine astfel o eficiena sporita in executie (de pana la zece ori mai rapide decat microcontrorelerele conventionale CISC).ATmega16 este un microcontroler RISC pe 8 biti realizat de firma Atmel.
Codarea : Codarea se va face automat de catre microcontrolerul ATMega16 pentru modulul de comunicatie RS232 si va fi transmisa mai departe spre placa de receptie.
Convertorul RS232 Max232 : este un circuit integrat care converteste semnalele de la un port serial RS-232 la semnalele adecvate pentru utilizare n circuite compatibile TTL logice digitale. MAX232 este folosit atat la transmiterea datelor cat si la receptie.
Mufa si mediul de transmisie RS232 : Legatura intre cele doua microcontrolere este realizata cu interfata seriala RS232.Aceasta realizeaza transferul de date punct la punct. Este in mod frecvent utilizata in aplicatiile de 3.2 Descrierea blocurilor
Microcontrolere Page 7 stocare a datelor cat si pentru transferul acestora.
Decodarea : se va face din nou automat de catre microcontrolerul ATMega16.
Convertor Numeric : converteste semnalul primit de la cel de al doilea microcontroler in semnal numeric si il transmite spre afisajul LCD.
Afisajul LCD : este un afisaj electronic cu o gama larga de aplicatii. Un ecran LCD 16x2 este un modul de baza foarte frecvent utilizat n diverse dispozitive si circuite deoarece este economic, usor programabil, avand functii afisare a caracterelor speciale, chiar si a celor personalizate, animatii, samd.
Page 8 Microcontrolere
Proiectul este realizat folosind doua microcontrolere ATMega 16 aflate pe placile de dezvoltare EasyAvr4. Acestea sunt conectate folosind interfata seriala de transmisie RS232.
Placa de dezvoltare EasyAvr4
EasyAVR4 este o placa de dezvoltare realizata de firma Mikroelectronika si permite realizarea de aplicatii cu microcontrolere Atmel.
Placa dispune de urmtoarele resurse hardware : programator cu interfaa USB;
bloc de alimentare a placii cu posibilitatea de a utiliza o sursa de tensiune externa sau tensiunea furnizata de interfata USB;
SW pushbuton conectate la toate porturile microcontrolerului;
LED-uri conectate la toate porturile microcontrolerului;
rezistene externe de pull-up sau pull-down pentru fiecare pin al fiecrui port;
referin extern precis de tensiune pentru utilizarea blocului de ADC cu aceast facilitate;
generator de semnal de tact cu frecvena de 8MHz; modul de afiare cu LED-uri tip 7 segmente; interfa serial RS 232; modul de afiare LCD 2x16 caractere.
4.Prezentare placa de dezvoltare Easy AVR4
Microcontrolere Page 9
ATmega16 este un microcontroler RISC pe 8 bii realizat de firma Atmel.
Caracteristicile principale ale acestuia sunt: - 16KB de memorie Flash reinscriptibil pentru stocarea codului - 1KB de memorie RAM - 512B de memorie EEPROM - dou numrtoare/temporizatoare de 8 bii - un numrtor/temporizator de 16 bii - conine un convertor analog digital cu intrri multiple - conine un comparator analogic - conine un modul USART pentru comunicaie serial - dispune de oscilator intern - ofer 32 de linii I/O organizate n patru porturi.
ATmega16 conine 32 de registre de uz general i 64 de registre speciale pentru modulele I/O. Aceste registre sunt mapate la adrese din memoria RAM cuprinse ntre 0000h i 005Fh. Una din caracteristicile foarte importante pentru orice procesor si in particular pentru microcontrolere este sistemul de intreruperi. O intrerupere reprezinta un semnal generat de un modul extern unitatii centrale de procesare (CPU) pentru a anunta aparitia unui eveniment care trebuie tratat. Utilizarea unui astfel de sistem permite implementarea de module specializate care sa execute operatii n paralel cu CPU si sa solicite interventia acestuia numai la terminarea operatiilor sau in alte cazuri definite. ATmega16 dispune de 21 surse de intrerupere. Atunci cand una dintre ele devine activa se suspenda cursul normal de executie si se face salt automat la o adresa prestabilita din memoria program.
Page 10 Microcontrolere
Componente folosite :
U1 Microcontroler ATMega16 pe 8 biti U2 Convertorul Max232 U3 Senzorul de umiditate HCH - 1000 C1,C3,C4,C5,C6 Condensatoare de 100nF/1uF/1uF/100nF/470uF R1 Rezistenta de 10k J1 Conector USB pentru alimentarea microcontrolerului Jmp1 Jumper P1 Conector RS232 Pushbuton Reset
Circuitul Reset este realizat dintr-un Pushbuton, o rezistenta de 10k si un condensator de 100nF. Rezistenta confera condensatorului timp sa se incarce iar condensatorul e folosit pentru stabilizarea circuitului, la specificatiile producatorului.
Circuitul RS232 este realizat folosind: - Circuitul integrat MAX232 folosit pentru convertirea semnalelor - Condensatoare de 1uF - Mufa COMPIM cu 9 pini specifica RS232
Circuitul este realizat astfel la specificatia producatorului pentru a asigura buna functionare si stabilitate.
Ansamblul de alimentare foloseste tensiunea de la portul USB asigurand un voltaj de 5V.
Condensatoarele C5 si C6 sunt folosite la filtrarea curentului ce intra pe USB, la specificatia producatorului.
Senzor de umiditate Hch 1000 : este un senzor capacitiv de polimer, cu precizie relativ buna, proiectat pentru masurarea umiditatii in spatii inchise.
Page 12 Microcontrolere
Componente folosite : U1 Microcontrolerul ATMega16 pe 8 biti U2 Convertorul Max232 Lcd1 Afisaj LCD 16x2 Rv1 Rezistenta Reglabila C1, C3, C4, C5, C6 Condensatoare de 100nF/1uF/1uF/100nF/470nF J1 Conector USB pentru alimentarea microcontrolerului Jp1 Jumper R1 Rezistenta de 10k P1 Conector Rs232 Pushbuton pentru Reset
5.2 Schema electrica placa receptie
Microcontrolere Page 13
Blocul de afisare LCD e format dintr-un display 16x2. Rezistenta variabila RV1 este conectata pentru a varia contrastul afisajului pentru o mai buna claritate
7.Proiectare software 7.1 Organigrama codului Am primit date de la senzor? Convertire valoare Codare Transmisie START Initializare S-au primit date pe magistrala ? Decodare Conversie numerica Afisare LCD Placa Emisie Placa Receptie DA DA NU NU
void initalize_USART( unsigned int ubrr){ UBRRH = (unsigned char)(ubrr>>8); //seteaza rata de transfer bit h UBRRL = (unsigned char)ubrr; // seteaza rata de transfer bit h UCSRB = (1<<RXEN)|(1<<TXEN); // activeaza transmisia si receptia UCSRC = (1<<URSEL)|(0<<USBS)|(3<<UCSZ0); // Format : 8 biti, 1 bit de stop
void send_byte(unsigned char byt){ // transmite un singur caracter interfetei seriale while (!(UCSRA & (1<<UDRE))); // Asteapta daca nu e pregatit transferul UDR = byt; // trimite bit }
void send_string(char * str) { // trimite un sir interfetei seriale folosind un pointer while(*str) { // cat timp nu am ajuns la sfarsitul pointerului send_byte(*str++); // continua trimiterea bitilor din sir } }
unsigned char read_byte(void) { // functie pentru citirea bitilor while(!(UCSRA & (1<<RXC))); // cat timp inca nu avem date de citit return UDR; }
7.2 Codul sursa placa emisie
Microcontrolere Page 17 void initalize_ADC( void ){ // seteaza CAN ADMUX=(1<<REFS0); // Aref = AVcc; ADCSRA=(1<<ADEN)|(7<<ADPS0); // activeaza CAN }
int read_ADC(char ch){ // citeste CAN int n, av=64; // media can unsigned int average_adc = 0; // variabila pt stocare suma ADMUX |= (ch & 0x07); //seteaza canalul CAN for(n=0; n<av; n++){ // de cate ori citeste ADCSRA |= (1<<ADSC); //Start conversie unica while( !(ADCSRA & (1<<ADIF)) ); //asteapta sa se termine conversia ADCSRA |= (1<<ADIF); //reseteaza ADIF : ADIF=1 average_adc += ADC; //suma tutror adc citite } average_adc /= av; // calcularea mediei adc return (int) average_adc; // converteste la o valoare cu semn }
void zero_counter( void ){ // seteaza numaratorul de 16 biti la 0 unsigned char sreg; sreg = SREG; // salveaza intreruperile globale cli(); TCNT1 = 0; // seteaza registrul de numarare la 0 SREG = sreg; sei(); }
unsigned int read_counter( void ){ // citeste numaratorul de 16 biti unsigned char sreg; unsigned int count; sreg = SREG; cli(); count = TCNT1; // citeste registrul SREG = sreg; sei(); return count; }
Page 18 Microcontrolere int read_humidity( void ){ unsigned int counter_value; int humidity_value; float m = 0.147929; // slope float a = 427.515; // offset
zero_counter(); // numaratorul de 16 biti se seteaza la 0 PORTB &= ~(1<<PB1); TCCR1B |= ((0<<CS12)|(1<<CS11)|(0<<CS10)); // seteaza timerul 1 while((!(PINB & 1)) & (TCNT1<65000)); // asteptam ca iesirea senzorului sa fie in 1 logic TCCR1B &= ~((1<<CS12)|(1<<CS11)|(1<<CS10)); // opreste timerul 1
Page 20 Microcontrolere DDRA=0xff; // portul a e setat ca port de iesire DDRB=0x07; // semnalul de iesire al LDC init_LCD(); _delay_ms(50); // intarziere 50ms usart_init(); // initializare USART while(1) { value=usart_getch(); // functie pentru a primi date din usart LCD_cmd(0xC0); // a doua linie, la inceput a LCD LCD_write(value); // scrie } return 0; }
UBRRL = BAUD_PRESCALE; // incarca bitul inferior rata de transfer UBRRH = (BAUD_PRESCALE >> 8); // incarca bitul superior }
unsigned int usart_getch() { while ((UCSRA & (1 << RXC)) == 0); // nu face nimic pana cand nu s-au primit date la UDR si sunt gata de afisat return(UDR); // returnteaz bit }
Page 22 Microcontrolere
Daca aparatul nu porneste, verificati conexiunea dispozitivului la alimentare.
Daca intampinati probleme in functionarea dispozitivului apasati butonul RESET pentru reinitializare.
Daca afisajul LCD prezinta este dificil de citit verificati contrastul acestuia. Pentru o vizualizare buna a mesajului afisat, modificati valoarea potentiometrului pana la nivelul dorit.
Daca intampinati probleme legate de software, contactati producatorul pentru reprogramarea microcontrolerelor.
Daca aparatul functioneaza necorespunzator si nu puteti remedia problema consultati unul dintre atelierele noastre pentru garantia aparatului.
Aparatul nu este o jucrie, prin urmare, nu se va lsa la ndemna copiilor. Aparatul nu trebuie supus ocului mecanic puternic. Aparatul nu trebuie expus la temperaturi extreme, raze solare directe, vibraii intense. Dac exist dubii cu privire la buna functionare al aparatului, atunci apa ratul trebuie imediat scos din functiune i asigurat mpotriva repornirii neintentionate. Functionarea n siguranta nu mai este posibil dac aparatul: - prezint semne vizibile de deteriorare; - a fost depozitat in conditii nefavorabile - a fost supus socului mecanic puternic in timpul transportului
Evitati temperaturile extreme, vibratiile i ocurile, pentru c acestea pot afecta unitatile si pot conduce la prognoze si date eronate. Nu scufundati aparatul n apa! Nu incercati sa reparati singur unitatea!
Pentru orice alte intrebari/sugestii/reclamatii va stam la dispozitie: pubrel@dupelectronic.ro