Vlad BREZAE - Aer Conditionat

Autorul poate fi contactat la adresa: Login pentru adresa

Descriere Proiect

Proiectul consta in preluarea temperaturii de la un senzor si reducerea temperaturii, prin actionarea unui ventilator. Temeperatura care se doreste a fi atinsa este selectata prin interfata usb a placii de pe un PC.

Mod de folosire

O data pornita placa, ea incearca din start mentinerea unei anumite temperaturi setate hardcodat la pornire ( ventilatorul va porni daca temperatura dorita este mai mica decat cea curenta preluata de la senzor ). Prin folosirea unui program de pe un PC conectat prin usb la placa, temperatura dorita de pe placa poate fi modificata. Acest program se numeste powerSwitch si primeste ca parametru temperatura care va fi pusa pe placa.

Descriere Generala

3.1. Motivatie

Parcurgerea mai multor zone din domeniu ( usb, lcd, comunicatie one-wire, pwm ) pentru formarea unei idei generale despre lucrul in mediul embedded.

3.2. Schema Bloc

3.3. Design hardware

3.4. Design software

Proiectul are 2 parti : programul prin care este selectata temperatura ( powerSwitch din folderul commandline ), respectiv programul de pe placa din folderul firmware.

Programul de pe linux foloseste biblioteca libusb pentru a trimite temperatura. Precizia temperaturii este de 0.25 grade Celsius. Astfel o temperatura de 27.3 grade, de exemplu, va fi aproximata la valoarea intreaga 27.3 * 4 = 109, acest numar trimitandu-se printr-un mesaj usb. Pe placa acest numar va fi transformat in temperatura 27.25.

Programul de pe placa are urmatoarele module : main, lcd, onewire si senzor. In modulul lcd se afla functiile pentru comunicarea cu display-ul lcd. In modulul onewire se afla functii ajutatoare pentru comunicarea prin protocolul onewire. In modulul senzor se afla functia de citire de temperatura, care apeleaza functiile din modulul onewire pentru a transmite senzorului comanda de citire si de a prelua ulterior rezultatul. In modulul main, functionalitatea principala se afla in bucla din main in care mai intai se face verificare pentru un mesaj de usb, care, daca apare, va realiza apelul metodei usbFunctionSetup care va prelua temperatura, dupa care se citeste temperatura curenta si, in functie de aceasta, se porneste sau nu ventilatorul printr-un pwm.

3.5 Probleme intampinate

Senzorul de temperatura necesita un interval de cateva sute de milisecunde pentru a finaliza citirea ( prin actualizarea registrilor interni ) si de a fi capabil sa raspunda cererii. Pollingul pe usb trebuie sa fie efectuat la maxim 12 milisecunde insa. Prin urmare, la primele apeluri de citire, temperatura intoarsa va fi invalida, iar ulterior, dupa un numar de pasi, citirea va incepe sa returneze temperaturi valide ( care provin de la o cerere precedenta ).

Circuitul ( prin intermediul tranzistorului care deschide alimentarea ventilatorului ) a fost gandit pentru efectuarea unui pwm. Prin intermediul acestui tranzistor am intentionat sa realizez controlul turatiei ventilatorului in functie de diferenta dintre cele doua temperaturi ( cea dorita si cea masurata ). Din pacate insa, pentru valori mici ale tensiunii generate prin pwm ( valori “mici” chiar de peste 2.5V ), ventilatorul ( care este destul de vechi si am dubii in privinta functionarii corespunzatoare a lui ) nu se invarta incalzindu-se foarte mult. Prin urmare, am hotarat sa raman doar cu 2 moduri de pwm : voltaj 0 pe pin - ventilator oprit, respectiv voltaj 5 pe port - ventilator pornit la maxim.

Costuri

Componente necesare: - Display LCD PC1602A

- Senzor Dallas 18S20

- Ventilator 12V JF0510B1M

- Tranzistor BC 337-25

- Rezistenta * 2

Cost total : 0 RON

Observatii - Toate componentele care au fost adaugate la placa standard provin din propriile resurse.

Concluzii

Dezvoltarea in mediul embedded nu mai este atat de misterioasa si complicata cum parea la inceput, pe alocuri mult mai usoara decat m-as fi asteptat. Cu toate acestea, este in continuare destul de dificil sa obtii ceva functional, in principal datorita celor mai mici greseli care pot aparea la nivel hardware si datorita incapacitatii de a efectua un debugging corespunzator. ( cel putin la nivelul la care am lucrat noi )

Download

Bibliografie/Resurse

Pentru driverul usb de pe placa am folosit biblioteca v-usb. index.html

Ca punct de plecare pentru implementarea comunicarii prin usb m-am folosit de proiectul exemplu PowerSwitch. powerswitch.html

Pentru comunicarea cu display-ul LCD m-am folosit de biblioteca lcd din cadrul laboratorului 4. lab4_schel.zip

Pentru implementarea comunicatiei prin protocolul one-wire cu senzorul, am pornit de la exemplul oferit de arduino. OneWire si m-am folosit si de informatiile din documentul despre one-wire de la adresa doc2579.pdf

pm/prj2013/sstegaru/vlad-brezae-aer-conditionat.txt · Last modified: 2021/04/14 17:07 (external edit)
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0