Differences

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

Link to this comparison view

pm:prj2026:victor.stoica0203:robert.predeleanu [2026/05/24 23:08]
robert.predeleanu [Software Design]
pm:prj2026:victor.stoica0203:robert.predeleanu [2026/05/24 23:18] (current)
robert.predeleanu [Jurnal]
Line 67: Line 67:
 | Referință (GND) | GND | Power | Închide circuitul pentru toate componentele | | Referință (GND) | GND | Power | Închide circuitul pentru toate componentele |
 ===== Software Design ===== ===== 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. 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.
Line 73: Line 72:
 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). 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:+**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.+  ​* **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 =====
  
-  * 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.+A fost realizat un prototip electromecanic funcțional și autonom ​al unui dozator ​de hrană pentru animale de companie, echipat cu o interfață utilizator pe un display LCD 1602. Sistemul permite programarea orelor de masă folosind 3 butoane tactile, care controlează precis un mecanism elicoidal (sfredel Arhimedic) acționat de un servomotor de rotație continuă.
  
-     * Activează rezistențele interne de Pull-Up direct din hardware.+Sistemul include un meniu complex și multiple funcționalitățhardware ​și software, precum:
  
-     Oferă un control mult mai curat asupra buzzer-ului ​pentru ​feedback-ul ​acustic.+  ​**Monitorizare în timp real** a orei exacte cu ajutorul modulului hardware RTC DS3231 (comunicație I2C); 
 +  * **Meniu interactiv tip „State Machine”** ce permite navigarea și programarea independentă a 3 mese distincte;​ 
 +  * **Mecanism de dozare DIY complet funcțional**,​ construit din carton laminat ranforsat, capabil să transporte hrana uscată fără blocaje mecanice; 
 +  * **Control temporizat prin semnal PWM** pentru ​servomotorul MG995, incluzând rotire inversă pentru eliberarea porțiilor și frânare electronică (punct neutru); 
 +  * **Feedback ​acustic ​(buzzer)** pentru atenționarea animalului în momentul declanșării mesei; 
 +  * **Filtrare software (debounce)** bazată pe temporizarea millis() pentru eliminarea citirilor false ale butoanelor;​ 
 +  * **Gestionarea eficientă a memoriei** prin stocarea orelor de masă în vectori de date (arrays).
  
-  * Control Mecanic Temporizat: Codul generează semnale PWM precise cu ajutorul bibliotecii Servo.h pentru ​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 prezentsetat la 10 secunde de rotire inversă).+Implementarea finală a proiectului demonstrează o arhitectură software hibridă: utilizează biblioteci standard pentru comunicația I2C și generarea semnalelor PWM, combinate cu **configurarea directă a registrelor hardware ​(PORTBPORTD, DDRB, DDRD, PIND)** pentru citirea rapidă a butoanelor cu rezistențe interne de Pull-Up și controlul pinilor GPIO. 
 +===== Concluzii =====
  
-  * 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 =====+Realizarea acestui proiect a demonstrat cu succes integrarea conceptelor de electronică,​ programare la nivel coborât și mecanică DIY într-un dispozitiv practic, autonom și util. Dozatorul automat de hrană își îndeplinește cu precizie scopul, oferind un sistem stabil pentru programarea meselor animalelor de companie.
  
-<note tip> +Una dintre cele mai mari provocări, dar și realizări, a fost proiectarea și asamblarea mecanismului de dozare (sfredelul Arhimedic) folosind exclusiv materiale reciclabile (carton laminat). Această etapă a dovedit că limitările de resurse materiale pot fi depășite prin inginerie creativă. Din punct de vedere software, tranziția de la funcțiile Arduino standard la manipularea directă a registrelor ATmega328P a oferit o perspectivă valoroasă asupra arhitecturii hardware și a optimizării performanței.
-Care au fost rezultatele obţinute în urma realizării ​proiectului vostru. +
-</​note>​ +
- +
-===== Concluzii =====+
  
 +Pe viitor, proiectul poate fi extins prin modelarea și printarea 3D a ansamblului mecanic pentru o rezistență sporită la uzură, sau prin integrarea unui modul Wi-Fi (ex. ESP8266) pentru controlul și monitorizarea hrănirii de la distanță printr-o aplicație mobilă.
 ===== Download ===== ===== Download =====
  
-<note warning>​ +Arhiva atașată pe OCW conține codul sursă complet al proiectului ​realizat pentru Arduino UNO R3.
-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**. +Fișier: 
-</​note>​+  ​{{:pm:prj2026:victor.stoica0203:pet_feeder.zip|}}
  
 ===== Jurnal ===== ===== Jurnal =====
  
-<note tip> +  * **29.04.2026** - Alegerea temei: Dozator Automat de Hrană. 
-Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul ​proiectului. +  * **06.05.2026** - Crearea paginii wiki și definirea structurii ​proiectului. 
-</​note>​ +  * **06.05.2026** - Adăugarea descrierii generalea scopului proiectului și a schemei bloc. 
- +  * **11.05.2026** ​Stabilirea configurației hardwareidentificarea pinilor și conectarea componentelor ​pe breadboard. 
-===== Bibliografie/​Resurse ===== +  ​* **16.05.2026** - Integrarea display-ului LCD 1602 prin protocol I2C șa modulului de timp real RTC DS3231. 
- +  ​* **16.05.2026** - Proiectarea și asamblarea mecanismului de dozare DIY (sfredelul Arhimedic din carton laminat și componentele mecanice)
-<​note>​ +  * **19.05.2026** - Dezvoltarea sistemului de meniu (State Machine) pentru programarea celor 3 mese și calibrarea semnalului PWM pentru servomotor. 
-Listă cu documentedatasheet-uriresurse Internet folosite, eventual grupate ​pe **Resurse Software** şi **Resurse Hardware**. +  * **19.05.2026** - Optimizarea finală a codului prin trecerea la manipularea directă a registrelor hardware (PORTB, PORTD) și testarea ansamblului electromecanic.
-</​note>​+
  
-<​html><​a class="​media mediafile mf_pdf"​ href="?​do=export_pdf">​Export to PDF</​a></​html>​ 
  
pm/prj2026/victor.stoica0203/robert.predeleanu.1779653325.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