This is an old revision of the document!


Pet Feeder

Introducere

Proiectul constă în realizarea unui sistem mecatronic capabil să elibereze porții de hrană uscată pentru animalele de companie la intervale de timp prestabilite de utilizator. Sistemul monitorizează ora exactă și acționează un mecanism de dozare mecanic pentru a automatiza procesul de hrănire.

Scopul principal este crearea unui dispozitiv fiabil care să asigure nutriția animalelor de companie chiar și atunci când stăpânii nu sunt acasă, eliminând stresul legat de programul fix de masă.

Consider că acest proiect este util deoarece îmi oferă posibilitatea de a aplica practic noțiunile studiate în laborator într-un dispozitiv interactiv și vizual, care rezolvă o problemă reală de automatizare. Proiectul demonstrează cum, folosind resurse hardware limitate specifice sistemelor embedded, se poate crea un produs de tip „Smart Home” capabil să gestioneze sarcini critice în timp real, oferind în același timp un beneficiu direct utilizatorilor prin asigurarea unui regim alimentar controlat pentru animalele de companie.

Descriere generală

Proiectul este organizat în trei paliere principale care interacționează bidirecțional:

  • Modulul de Intrare (Interfața):

Cuprinde butoanele de control și senzorul de timp (RTC). Acestea furnizează microcontrolerului datele necesare pentru programare și referința temporală precisă.

  • Unitatea Centrală (ATmega328P):

Reprezintă nucleul software. Gestionează logica meniului, stochează setările în memoria permanentă (EEPROM) și decide momentul declanșării hrănirii prin compararea timpului curent cu cel programat.

  • Modulul de Ieșire (Execuția):

Include ecranul LCD pentru feedback vizual, buzzer-ul pentru alertă sonoră și servomotorul care acționează mecanismul fizic de distribuție a hranei.

Hardware Design

Bill of Materials

Componentă Cantitate Link Preț unitar (RON)
Placă dezvoltare Arduino UNO 1 Link30.93
Display LCD SPI 1 Link 13.99
Modul interfață I2C 1 Link 9.99
Buzzer pasiv 1 Link 2.99
Condensator electrolitic 1000µF 2 Link 5.08
Condensator ceramic 0.1uF 2 Link 6.30
Servomotor MG995 1 Link 44,53
Modul RTC DS3231 1 Link14,74
Set fire Jumper 1 Link11,72
Preț total 140.02 RON

Funcționalitatea Componentelor

Componentă Rol în proiect
LCD 1602 Afișează instrucțiunile, feedback-ul pentru cod și rezultatul accesului
Butoane push Îți permit să navighezi prin meniu, să schimbi orele de hrănire sau să dai o porție la cerere
Buzzer Pasiv Scoate un sunet scurt înainte de eliberarea hranei și în timpul setărilor
Servomotor MG995 Învârte axul pentru a împinge bobițele de mâncare afară din rezervor
Modul RTC Ține minte ora exactă (oră, minut, secundă) chiar și când aparatul este scos din priză
Condensator Stochează energie și o eliberează rapid atunci când servomotorul pornește brusc
Adaptor Sursă 5V/2A Transformă curentul de la priză în curent continuu sigur de 5V pentru tot circuitul

Schema Electrică

Pinout

Componentă Pin Arduino Tip Pin Utilitate
LCD 1602 A4 (SDA) Date I2C Transmite datele text către ecran
LCD 1602 A5 (SCL) Clock I2C Sincronizează transmisia datelor între Arduino și LCD
Buton UP 3 Digital Crește valoarea orelor/minutelor în meniul de setare
Buton DOWN 4 Digital Scade valoarea orelor/minutelor în meniul de setare
Buton MENU 2 PCINT Schimbă starea programului (afișare oră / setare mese)
Servomotor MG995 9 PWM Controlează unghiul și mișcarea precisă a spiralei de hrană
Modul RTC A4 (SDA) Date I2C Transmite datele de timp (oră, minut) către Arduino
Modul RTC A5 (SCL) Clock I2C Sincronizează citirea timpului de la cipul de ceas
Buzzer pasiv 8 Digital Trimite semnalul sonor
Linie de Tensiune 5V Power Distribuie tensiunea de 5V către magistrala de alimentare pozitivă a componentelor
Referință (GND) GND Power Închide circuitul pentru toate componentele

Software Design

Codul sursă al acestui proiect, scris în C++ pentru mediul Arduino, acționează ca centrul de comandă al întregului sistem. Nu este doar un simplu temporizator, ci un sistem integrat care gestionează precis timpul, interfața utilizatorului și controlul electromecanic.

Pentru a asigura un timp de răspuns instantaneu și o amprentă redusă în memorie, codul a fost optimizat folosind tehnici de programare la nivel coborât (Direct Port Manipulation).

Funcționalități și Tehnici Cheie:

* Sincronizare Precisă (I2C & RTC): Sistemul preia timpul real de la un modul hardware DS3231 prin protocolul I2C. Aceasta garantează că orele de masă sunt respectate la secundă, independent de funcționarea microcontrolerului.

* Sistem de Meniu tip „State Machine”: Logica meniului folosește o mașină de stări (modMeniu) pentru a gestiona tranzițiile dintre ecranul principal și ecranele de editare. Utilizatorul poate naviga și salva setări pentru 3 mese distincte, folosind doar 3 butoane tactile.

* Optimizare Hardware prin Regiștri: O caracteristică distinctivă a acestui cod este renunțarea la funcțiile standard (precum digitalRead sau pinMode) în favoarea manipulării directe a regiștrilor microcontrolerului ATmega328P (DDRD, PORTD, PIND, DDRB). Această abordare:

  • Scade timpul de reacție al butoanelor la nivel de microsecunde.
  • Activează rezistențele interne de Pull-Up direct din hardware.
  • Oferă un control mult mai curat asupra buzzer-ului pentru feedback-ul acustic.

* Control Mecanic Temporizat: Codul generează semnale PWM precise cu ajutorul bibliotecii Servo.h pentru a controla un motor de rotație continuă (360°). Hrănirea este transformată dintr-o mișcare fixă într-una bazată pe un interval de timp customizabil (în prezent, setat la 10 secunde de rotire inversă).

* Filtrare Software (Debouncing): Citirea butoanelor este protejată de un algoritm de debouncing bazat pe funcția millis(), eliminând declanșările multiple cauzate de zgomotul mecanic al contactelor.

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

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

Export to PDF

pm/prj2026/victor.stoica0203/robert.predeleanu.1779653297.txt.gz · Last modified: 2026/05/24 23:08 by robert.predeleanu
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