Differences

This shows you the differences between two versions of the page.

Link to this comparison view

pm:prj2026:farhad_ali.gul:diana_ioana.novac [2026/05/20 17:26]
diana_ioana.novac [Hardware Design]
pm:prj2026:farhad_ali.gul:diana_ioana.novac [2026/05/25 05:52] (current)
diana_ioana.novac [Rezultate]
Line 9: Line 9:
  
 <note tip> <note tip>
-Proiectul ​implementează o fântână inteligentă pentru ​animale ​de companie ​pentru monitorizarea comportamentului de hidratare al acestoraSistemul detectează prezența ​animalului ​prin senzor ultrasonic, îl identifică individual prin RFID, controlează debitul pompei în funcție de prezență și monitorizează calitatea ​și nivelul ​apei în timp real. Frecvențși durata vizitelor sunt stocate în EEPROM și afișate pe un display LCD cu meniu. Ideea a pornit de la nevoia din casele cu mai multe animale ​de companie de a monitoriza individual cât bea fiecare animal. Identificarea prin RFID e inspirată din sistemul de microcipare deja existent la animale de companie.+Proiectul ​reprezintă un sistem ​pentru ​gestionarea apei in fântânile destinate animalelor ​de companie. ​Proiectul monitorizează apropierea ​animalului ​folosind un senzor ultrasonic ​si activează o pompa submersibila la un debit variabil doar in prezenta animalului. De asemenea proiectul implementează si protecții: oprește pompa daca rezervorul ​de apa este gol si monitorizează calitatea apei, oprind sistemul daca impuritățile depășesc un prag de siguranță. Ideea a pornit de la faptul ca fântânile convenționale pentru ​animale ​rulează pompa încontinuu si mi-am dorit sa dezvolt o varianta care sa răspundă nevoii animalelor doar când este necesar.
 </​note>​ </​note>​
  
Line 16: Line 16:
 ===Modulele proiectului=== ===Modulele proiectului===
  
-Modulul de detecție ​și identificare utilizează senzorul de ultrasonic pentru a monitoriza ​zona frontală ​a fântânii. ​La detectarea ​unui obiect la o distanță ​sub pragul ​configuratse activează cititorul RFID pentru a scana prezența unui tag (în proiectul meu tag-urile vor avea scop demonstrativ,​ în realitate identificarea ar fi făcută pe baza microcipului animalului). ATMega328p procesează semnalele și +  * **Modulul de detecție ​(Senzorul Ultrasonic)**:​ monitorizează permanent ​zona din fața fântânii. ​Când senzorul detectează prezența ​unui animal (un obiect ​care se află la o distanță ​mai mică decât ​pragul ​setat)acesta trimite un semnal către microcontroler. 
-generează un semnal PWM către etajul de putere pentru ​controlul pompei. Senzorul de nivel și cel de turbiditate ​a apei funcționează prin ADC și oferă ​date brute despre ​starea fântâniiDisplay-ul LCD funcționează atât ca meniu controlat prin butoane (de ex. pentru ​configurarea pragului de distanță), cât și ca interfață ​unde utilizatorul poate vedea statisticile pentru fiecare animal.+ 
 +  * **Unitatea de control ​(ATMega328P)**: analizează semnalele ​primite de la senzori ​și, în funcție de starea sistemului, decide ce trebuie făcut: fie generează un semnal PWM către etajul de putere pentru ​a porni pompa cu un anumit debit, fie decide să oprească complet fluxul de apă dacă este necesar. 
 + 
 +  * **Modulul de monitorizare a apei (Senzorii de nivel și TDS)**: ​Senzorul de nivel și cel de turbiditate ​(TDS) lucrează prin ADC. Aceștia trimit permanent ​date brute despre ​cantitatea de apă din rezervor și despre puritatea acesteiaMicrocontrolerul interpretează aceste date pentru a preveni ​funcționarea pompei pe uscat sau pentru a detecta dacă apa este prea murdară pentru ​a fi băută. 
 + 
 +  * **Modulul de feedback ​și siguranță**:​ Sistemul include si o interfață ​serială prin care utilizatorul poate monitoriza în timp real ce se întâmplă în fântână. În plus, memoria internă EEPROM păstrează un istoric al utilizării.
  
 ===Schema bloc=== ===Schema bloc===
  
-{{ :​pm:​prj2026:​farhad_ali.gul:​schema_diana.drawio.png?​direct |}}+{{ :​pm:​prj2026:​farhad_ali.gul:​schema_diana_novac.drawio.png?​direct |}}
  
  
 ===Fluxul de funcționare=== ===Fluxul de funcționare===
  
-În starea de repaus, sistemul scanează ​distanțla intervale regulate, iar pompa rulează cu un debit foarte mic. Când senzorul de distanță confirmă ​prezența animalului, sistemul scanează tagul RFID și identifică animalul. Debitul pompei crește progresiv, iar în acest timp microcontrolerul măsoară intern durata vizitei ​și monitorizează calitatea apeiDupă ce animalul părăsește zona de detecțiepompa își micșorează debituliar datele colectate sunt stocate în EEPROM ​pentru a asigura persistența statisticilorDacă senzorul ​de nivel al apei detectează lipsa acesteia ​sau turbiditatea depășește un prag de siguranțăsistemul blochează pompa pentru ​proteja hardware-ul și afișează un mesaj de eroare pe LCD.+Sistemul monitorizează continuu senzorii si e gestionat de o Mașină de Stări Finite (FSM). ​În starea de repaus ​(IDLE), sistemul scanează ​mediul folosind senzorul ultrasonic pentru ​detecta ​prezența animalului și verifică constant parametrii critici de siguranță (nivelul apei și TDS)La detectarea prezențeisistemul trece în starea activă (ATTRACT)activând pompa printr-un semnal PWM pentru a furniza apăÎn cazul în care parametrii apei devin nesiguri, sistemul intră automat într-o stare de eroare (LOW_WATER ​sau ERROR), oprind pompa indiferent ​de apropierea animaluluiprocesul fiind ulterior resetabil prin comanda manuală a butonului dedicat.
  
  
 ===== Hardware Design ===== ===== Hardware Design =====
  
-===**Lista de componente**===+=== Lista de componente ===
  
   * **Microcontroller:​** ATMega328p xplained mini   * **Microcontroller:​** ATMega328p xplained mini
   * **Senzor de distanță:​** Ultrasonic HC-SR04   * **Senzor de distanță:​** Ultrasonic HC-SR04
-  * **Modul RFID RC522** 
   * **Senzor nivel apă**   * **Senzor nivel apă**
   * **Senzor calitatea apei:** TDS (Total Dissolved Solids)   * **Senzor calitatea apei:** TDS (Total Dissolved Solids)
   * **Pompă submersibilă 3-6V**   * **Pompă submersibilă 3-6V**
-  * **Display**: LCD cu modul I2C +  * **Buton de control** 
-  * **Butoane ​de control** +  * **Tranzistor ​NPN**: utilizat pentru a permite microcontrolerului sa gestioneze consumul mai mare de curent al pompei, pe care un pin digital nu l-ar putea susține direct 
-  * **Tranzistor ​MOSFET** +  * **Diodă flyback**: plasata in paralel cu motorul pompei pentru a preveni distrugerea tranzistorului
-  * **Diodă flyback**+
   * **Rezistențe**   * **Rezistențe**
-  * **Sursă breadboard** 
  
-===***Schema electrică***===+=== Schema electrică === 
 + 
 +{{ :​pm:​prj2026:​farhad_ali.gul:​schema_electr_diana.png?​direct&​300 |}} 
 + 
 +=== Pinii folosiți pentru fiecare componentă === 
 + 
 +  ​* **Senzorul ultrasonic HC-SR04**: Senzorul necesită un pin de ieșire pentru Trig și un pin de intrare pentru Echo. Am ales pinii PD2 (Trig) și PD3 (Echo) ca pini GPIO. 
 + 
 +  ​* **Pompa submersibilă**:​ Pinul PB1 (OC1A) a fost ales deoarece este legat de Timer1, permițând generarea unui semnal PWM hardware. Aceasta oferă un control fin asupra turației pompei. 
 + 
 +  * **Senzorul de nivel al apei și senzorul TDS:** Pinii PC0 și PC1 sunt conectați la ADC, permițând măsurarea variațiilor de tensiune cauzate de rezistența apei (în cazul senzorului de nivel) sau de conductivitatea acesteia (în cazul senzorului TDS). 
 + 
 +  * **Butonul de reset**: Butonul e conectat ca intrare digitală și am ales pinul PB0.
  
-{{ :​pm:​prj2026:​farhad_ali.gul:​schema_electrica_diana.drawio.png?​direct |}} 
 ===== Software Design ===== ===== Software Design =====
  
-===== Rezultate Obţinute ​=====+  * **Mediu de dezvoltare:​** VSCode cu PlatformIO 
 + 
 +  * **Biblioteci și resurse folosite:** Controlul pompei este realizat prin configurarea Timer1. Am scris direct în regiștrii TCCR1A, TCCR1B și OCR1A pentru a seta frecvența și duty cycle-ul. chiziția datelor de la senzorul de nivel și TDS se face prin configurarea manuală a registrilor ADMUX (pentru selectarea canalului) și ADCSRA (pentru controlul conversiei și prescaler). Am utilizat biblioteca <​avr/​eeprom.h>​ pentru a accesa memoria nevolatilă,​ salvând statisticile de utilizare în timpul stărilor de tranziție. 
 + 
 +== Mașina de stări ​== 
 + 
 +Sistemul este implementat ca o Mașină de Stări Finite (FSM) non-blocantă,​ definită printr-un enum. Aceasta permite gestionarea logică a sistemului în stările IDLE, ATTRACT_MODE,​ LOW_WATER și ERROR. 
 +  * Tranziții: Deciziile de schimbare a stării sunt luate în funcție de flag-uri logice procesate asincron în sensors_task(). 
 +  * FSM-ul elimină nevoia de delay-uri blocante, permițând sistemului să răspundă instantaneu la o eroare (ex: lipsa apei) chiar și atunci când pompa este activă. 
 + 
 +== Controlul pompei ​==  
 + 
 +Debitul este reglat dinamic prin modificarea registrului OCR1A. La detectarea animalului, valoarea e incrementată la nivelul maxim configurat, iar la plecarea animalului procesul e inversat. 
 + 
 +== Filtrarea ADC == 
 + 
 +Deoarece mediul de funcționare este expus la zgomot electric indus de pompă, citirile brute ADC sunt procesate printr-un Filtru Median și un SMA (Simple Moving Average). 
 + 
 +== Funcționalități din laboratoare ==  
 + 
 +  * **GPIO** - pinul PD2 a fost configurat ca ieșire pentru a genera semnalul de Trigger al senzorului ultrasonic, iar pinul PB0 a fost configurat ca intrare pentru citirea butonului de control 
 +  * **Întreruperi** - Am configurat pinul PD3 ca sursă de întrerupere externă (INT1), activată pe ambele flancuri (Rising și Falling Edge) pentru măsurarea semnalului Echo 
 +  * **PWM** - Am configurat Timer1 în modul PWM (Phase Correct) pentru a genera semnalul de comandă pe pinul PB1 (OC1A). 
 +  * **ADC** - folosit pentru citirea semnalelor analogice ale senzorilor de nivel al apei și cel TDS
  
-===== Concluzii ===== 
  
-===== Download ​=====+===== Rezultate ​=====
  
-===== Jurnal =====+{{ :​pm:​prj2026:​farhad_ali.gul:​proiect_diana_1.png?​300 |}}
  
-===== Bibliografie/​Resurse =====+{{ :​pm:​prj2026:​farhad_ali.gul:​proiect_diana_2.png?​300 |}}
  
-<​html><​class="​media mediafile mf_pdf"​ href="?​do=export_pdf">​Export to PDF</a></​html>​+Sistemul determină cu succes prezențunui animal la o distanță sub 30 cm. Am calibrat cu succes pragurile critice. Senzorul de nivel demonstrat o precizie ridicată în detectarea stării de rezervor gol, iar senzorul TDS a raportat corect starea de „apă neconformă” (peste pragul de 480 ppm), declanșând mecanismele de siguranță programate. Butonul de control permite utilizatorului să reseteze starea de eroare sau să forțeze o pornire manuală a fântânii.
  
 +https://​github.com/​diana-novac/​proiect-pm
pm/prj2026/farhad_ali.gul/diana_ioana.novac.1779287214.txt.gz · Last modified: 2026/05/20 17:26 by diana_ioana.novac
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