This shows you the differences between two versions of the page.
|
pm:prj2026:farhad_ali.gul:diana_ioana.novac [2026/05/20 17:30] 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 acestora. Sistemul 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ța ș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 configurat, se 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ânii. Display-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 acesteia. Microcontrolerul 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ța 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 apei. După ce animalul părăsește zona de detecție, pompa își micșorează debitul, iar datele colectate sunt stocate în EEPROM pentru a asigura persistența statisticilor. Dacă senzorul de nivel al apei detectează lipsa acesteia sau turbiditatea depășește un prag de siguranță, sistemul blochează pompa pentru a 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 a detecta prezența animalului și verifică constant parametrii critici de siguranță (nivelul apei și TDS). La detectarea prezenței, sistemul 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 animalului, procesul fiind ulterior resetabil prin comanda manuală a butonului dedicat. |
| Line 35: | Line 40: | ||
| * **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_electrica_diana.drawio.png?direct |}} | + | {{ :pm:prj2026:farhad_ali.gul:schema_electr_diana.png?direct&300 |}} |
| === Pinii folosiți pentru fiecare componentă === | === 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. | ||
| ===== 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><a class="media mediafile mf_pdf" href="?do=export_pdf">Export to PDF</a></html> | + | Sistemul determină cu succes prezența unui animal la o distanță sub 30 cm. Am calibrat cu succes pragurile critice. Senzorul de nivel a 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 | ||