Constantin-Alin UNGUREANU - Fan controller
Autorul poate fi contactat la adresa: Login pentru adresa
Introducere
Proiectul reprezinta un sistem de ventilatie ce este influentat de 3 senzori (temperatura, umiditate, luminozitate).
Acest sistem poate fi folosit de exemplu la baie sau la hota din bucatarie: ventilatorul porneste automat cand detecteaza lumina aprinsa, apoi dupa ce nu mai este lumina mai ramane o perioada pornit la turatie joasa. De asemenea, turatia ventilatorului este influentata de temperatura sau umiditate.
Senzorii nu depind unii de altii, turatia ventilatorului reprezinta MAX (temp, light_on, humidity).
Am ales acest proiect deoarece eu personal uit mereu ventilatorul pornit la baie, fapt ce m-a determinat sa gasesc o solutie automata pentru aceasta problema.
Acest proiect este util atat mie cat si celor care uita ventilatorul pornit la baie, reducand astfel costurile la factura electrica.
}
Descriere generală
Schema Bloc
Senzorii detecteaza modificarea temperaturii/umiditatii/luminozitatii si transmit datele microcontrollerului.
Atmega citeste de pe ADC, pe rand valorile senzorilor de umiditate, lumina si temperatura, pentru fiecare din acestea seteaza o turatie a ventilatorului, dupa care alege turatia maxima dintre cele 3. Apoi, utilizand PWM, seteaza o anumita valoare pentru turatie (timer pe 8 biti, intre 0 si 255). Turatia ventilatorului variaza pe masura ce creste/scade valoarea pe cel putin unul din senzori peste un anumit prag.
Hardware Design
Lista de piese:
1 potentiometru 250 ohmi, tine loc de senzor de umiditate, care este mai greu de procurat
1 senzor de temperatura LM35
1 tranzistor 2N3094<br>
1 rezistenta de 100 de ohmi in baza tranzistorului
1 ventilator de 12 V, 100mA, brushless
1 fotorezistor
1 rezistente de 1K
1 banda de fire + fire din cablu UTP
4 conectori (2 pentru banda de fire, 2 pentru firul de la PD5)
1 incarcator de 16v/32V de la o imprimanta HP inkjet
Software Design
Mediu de dezvoltare: Sublime Text 2, Eagle, Atmel Studio 6.1 Command Prompt
Biblioteci: avr\io.h, avr\interrupt.h, util/delay.h
Surse: proj.c:
- ADC_init()
- ADC_get()
- PWM_init()
- keep_speed(speed) - mentine viteza data ca parametru timp de 200ms
- lights_on() - returneaza True daca senzorul detecteaza lumina
- maintain_humidity() - pastreaza nivelul scazut al umiditatii prin modificarea turatiei ventilatorului
- maintain_temperature() - pastreaza temperatura normala prin modificarea turatiei ventilatorului
- reset_speeds() - reseteaza turatiile setate pentru temperatura, umiditate, luminozitate
- control_fan() - controleaza turatia ventilatorului in functie de cei 3 senzori
Rezultate Obţinute
Proiectul este functional
Se observa conexiunile facute
Ventilatorul functioneaza deoarece senzorul de temperatura a detectat lumina
Placuta auxiliara, cu senzorii
Incarcatorul de 16 V de la o imprimanta HP inkjet
Ventilatorul de 12 V de la o sursa de calculator ATX
Demo
Concluzii
Proiect a fost unul interesant, ce m-a pus la incercare, si din care am invatat multe, printre care multe bug-fixuri hardware, cum sa abordez un asemenea proiect (sa determin ce piese imi trebuie mai din timp, fara a face multe drumuri pe str Maica Domnului, cum sa-mi impart timpul pe un asemenea proiect cu acces limitat la unelte) si ca tot ce-mi trebuie e pe web (cum se foloseste LM35, PWM fan controller, etc).
In ceea ce priveste codul, pot sa zic ca m-a ajutat foarte mult activitatea de laborator, laborantul m-a invatat cum sa caut intr-un datasheet si cum sa gandesc logic o schema.
Download
Jurnal
1 zi: cumparat piese
1 zi: m-am intors pe str Maica Domnului pentru conectorii de banda de fire, tranzistor si potentiometru in loc de senzor de umiditate deoarece era mai dificil de demonstrat ca acesta merge, necesita un mediu umed la prezentare proiect.
1 zi: lipit + testare placuta
1 zi: cod + wiki
Bibliografie/Resurse