This is an old revision of the document!


Sistem de climatizare

Introducere

Sistemul de climatizare implementat este un sistem care menține temperatura sub o anumită valoare. Acesta este asemănător unui termostat, care, în funcție de temperatura înregistrată, știe când să pornească racirea pentru a aduce temperatura la valoarea setată.

Ideea acestui proiect a pornit de la faptul că fiecare dintre noi avem în casele noastre câte un termostat pentru centrală, util în iarnă pentru a ști când să pornim centrala, dar foarte puțini dintre noi au un sistem de climatizare complet și pentru vară. În general, noi doar dăm drumul la aerul condiționat să meargă când ne este cald și când nu ne mai este il oprim. Însă toate acestea se fac manual. Astfel, am considerat că este util un astfel de sistem automat pentru racirea încăperii. De asemenea, acest sistem poate fi implementat nu doar pentru încăperile noastre, ci și pentru locuințele animalelor noastre de companie și menținerea temperaturii acestora.

Descriere generală

Utilizatorul poate seta cu ajutorul unui potențiometru temperatura dorită în cameră, iar aceasta se afișează pe ecranul LCD. Folosind senzorul de temperatură, dacă se detectează că temperatura este peste valoarea setată, ventilatorul va porni până când temperatura ajunge din nou la valoarea corectă. În funcție de diferența de temperatură între cea aflată în încăpere și cea stabilită, ventilatorul va funcționa la o turată mai mare sau mai mică pentru a ajuta la răcirea eficientă a încăperii. În plus, cu ajutorul unei fotodiode, sistemul știe dacă este zi sau noapte, astfel că, dacă este noapte, ventilatorul nu va porni pentru ca utilizatorul să nu răcească în timp ce doarme.

Hardware Design

Lista pieselor utilizate

  • platuca Arduino UNO ATmega328p
  • breadboard
  • LCD cu modul I2C
  • senzor de temperatura si umiditate DHT11
  • ventilator 12V
  • potentiometru
  • MOSFET
  • fotodioda
  • rezistente de 1KOhm si 10KOhm
  • fire dupont tata-tata si mama-tata

Schema electrica (realizata in Autodesk Fusion)

Conexiune intre piese

LCD + Modul I2C: acestea au venit deja lipite si astfel am folosit doar pinii modulului pentru a-i conecta la placuta Arduino in pinii analogici A4 si A5 si de asemenea VCC ul si GND ul pe breadboard in locul special pentru aceste coneziuni. Acesta are rolul de a afisa temperatura curenta si cea setata de utilizator.

Potentiometrul: este legat la VCC si GND si la pinul A1 de pe placuta. Are rolul de a seta temperatura de prag dorita.

Senzotul de temperatuea: acesta are 4 pini dintre care unul nu se foloseste. 2 dintre ei sunt pentru alimentare si masa iar al 3 lea pentru conectarea la pinul digital 7 de pe placuta. s-a folosit de asemenea o rezistenta de 10KOhm. Are rolul de a masura temperatura din incapere.

Fotodioda: este conectata la alimentare si la masa si de asemenea pe placuta arduino pe pinul analogic A1. Rolul ei este de a detecta daca afara este intuneric sau lumina pentru a se hotari daca este zi sau noapte si a sti daca aerul conditionat va merge sau nu.

Ventilator: ventilatorul folosit este unul cu 3 pini (unul si pentru senzorul de viteza). Pentru conectarea ventilatorului si posibilitatea de a controla turatiile lui s-a folosit un MOSFET. Ventilatorul este conectat cu ajutorul sau la intreg circuitul si astfel si la placuta Arduino prin pinul digital 10. Desi ventilatorul are un senzor special ppentru controlul turatiilor (firul galben), eu nu l-am folosit preferand sa folosesc proprietatile MOSFET ului pentru a se putea folosi orice fel de ventilator nu doar unul mai scump. Are rolul de a raci incaperea pana temperatura actuala sa ajunga mai mica sau egala cu cea setata.

Aici puneţi tot ce ţine de hardware design:

Software Design

Mediul de dezvoltare folosit este Arduino IDE versiunea 1.8.19.

Motivația alegerii bibliotecilor folosite

Bibliotecile folosite:

  • Wire.h - este folosită pentru comunicația I2C. Este necesară pentru funcționarea corectă a ecranelor LCD care utilizeaza interfața I2C, astfel gestionează detaliile de nivel scazut ale comunicării I2C, cum ar fi inițializarea și transferul de date intre dispozitive.
  • LiquidCrystal_I2C.h - o bibliotecă specializata pentru controlul ecranelor LCD care folosesc interfața I2C. Biblioteca simplifica utilizarea LCD-urilor, oferind funcții pentru inițializare, scriere de text, controlul iluminarii de fundal și poziționarea cursorului.
  • dht.h - Aceasta este biblioteca pentru senzorul DHT (Digital Humidity and Temperature), care este folosit pentru a citi temperatura și umiditatea din mediul înconjurator. Biblioteca conține funcții specializate pentru inițializarea senzorului și pentru citirea datelor de temperatură și umiditate.

Justificarea utilizării funcționalităților din laborator

I2C (Inter-Integrated Circuit)

I2C a fost utilizat în proiectul meu pentru a simplifica conexiunea între Arduino și LCD, reducând numărul de fire necesare și facilitând adăugarea altor dispozitive I2C în viitor. Acest protocol asigură o comunicare eficientă și fiabilă, oferind un control precis asupra afișării informațiilor pe LCD și permițând o gestionare flexibilă a componentelor conectate.

ADC (Analog-to-Digital Converter)

ADC este un convertor care transformă un semnal analogic continuu într-un semnal digital discret. În cazul Arduino, ADC-ul integrat poate citi tensiuni de la 0V la 5V și le convertește într-o valoare digitală între 0 și 1023. Acesta a fost folosit pentru 2 componente:

  • fotorezistor - Citirea valorii analogice de la fotodiodă se face folosind funcția analogRead(PHOTODIODE_PIN), care convertește nivelul de lumină într-o valoare digitală între 0 și 1023. Această valoare este folosită pentru a determina nivelul de lumină ambientală. Valoarea de lumină este utilizată pentru a ajusta viteza ventilatorului, permițând un control adaptativ în funcție de condițiile de iluminare.
  • potentiometru - Citirea valorii analogice de la potentiometru se face folosind funcția analogRead(POTENTIOMETER_PIN), care convertește poziția potențiometrului într-o valoare digitală între 0 și 1023. Această valoare este mapată la un interval de temperaturi folosind funcția map(). Valoarea obținută de la potentiometru este utilizată pentru a seta temperatura limită, care este comparată cu temperatura curentă pentru a controla viteza ventilatorului.

PVM (Pulse Width Modulation)

PWM a fost utilizat pentru a ajusta turațiile motorului ventilatorului. Aceasta permite controlul precis al vitezei motorului în funcție de temperatura curentă și nivelul de lumină, asigurând un răspuns adaptativ al sistemului la condițiile de mediu. Utilizarea PWM este o metodă eficientă și flexibilă pentru controlul motoarelor în proiectele cu Arduino. In acest proiect s-a folosit pentru 2 lucruri:

  • Controlul Vitezei Motorului - funcția analogWrite() generează un semnal PWM pe pinul specificat. În cazul proiectului meu, analogWrite(GATE, ventilator_speed) ajustează viteza motorului prin modificarea ciclicității semnalului PWM aplicat pe pinul GATE. Valoarea ventilator_speed determină ciclicitatea semnalului PWM, variind între 0 (0% ciclicitate, motor oprit) și 255 (100% ciclicitate, motor la viteza maximă).
  • Calculul Vitezei Ventilatorului - Diferența de Temperatură: Viteza ventilatorului este determinată pe baza diferenței dintre temperatura curentă și temperatura limită setată. Viteza ventilatorului este ajustată și în funcție de valoarea luminii citită de la fotodiodă (light_value > 100). Funcția constrain() asigură că valoarea vitezei ventilatorului se încadrează între MIN_SPEED_THRESHOLD și 255.

Descrierea codului aplicaţiei (firmware):

  • mediu de dezvoltare (if any) (e.g. AVR Studio, CodeVisionAVR)
  • librării şi surse 3rd-party (e.g. Procyon AVRlib)
  • algoritmi şi structuri pe care plănuiţi să le implementaţi
  • (etapa 3) surse şi funcţii implementate

Rezultate Obţinute

Care au fost rezultatele obţinute în urma realizării proiectului vostru.

Concluzii

Download

O arhivă (sau mai multe dacă este cazul) cu fişierele obţinute în urma realizării proiectului: surse, scheme, etc. Un fişier README, un ChangeLog, un script de compilare şi copiere automată pe uC crează întotdeauna o impresie bună ;-).

Fişierele se încarcă pe wiki folosind facilitatea Add Images or other files. Namespace-ul în care se încarcă fişierele este de tipul :pm:prj20??:c? sau :pm:prj20??:c?:nume_student (dacă este cazul). Exemplu: Dumitru Alin, 331CC → :pm:prj2009:cc:dumitru_alin.

Jurnal

Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului.

Bibliografie/Resurse

Resurse software:

Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe Resurse Software şi Resurse Hardware.

Export to PDF

pm/prj2024/sseverin/vladimir.bucur1504.1716720446.txt.gz · Last modified: 2024/05/26 13:47 by vladimir.bucur1504
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