Differences

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

Link to this comparison view

pm:prj2026:farhad_ali.gul:antonia_maria.barbu [2026/05/03 20:38]
antonia_maria.barbu created
pm:prj2026:farhad_ali.gul:antonia_maria.barbu [2026/05/19 16:25] (current)
antonia_maria.barbu
Line 9: Line 9:
  
 <note tip> <note tip>
-Proiectul constă într-un sistem automat de dozare, conceput pentru a măsura cantități precise de ingrediente solide (precum boabe de cafea și ceai vrac) pe baza unor rețete predefinite,​ selectate în prealabil de către utilizator. Scopul principal al acestui dispozitiv este automatizarea procesului de dozare individuală necesar în prepararea băuturilor de specialitate,​ sistemul fiind proiectat să asigure o precizie ridicată. Din punct de vedere al utilității,​ aparatul se adresează direct pasionaților de cafea sau ceai. Astfel, se eficientizează procesul de preparare prin economisirea timpuluise previne risipa de ingrediente ​și se menține un gramaj consistent la fiecare utilizare.+Proiectul constă într-un sistem automat de dozare, conceput pentru a măsura cantități precise de ingrediente solide (precum boabe de cafea) pe baza unor rețete predefinite,​ selectate în prealabil de către utilizator. Scopul principal al acestui dispozitiv este automatizarea procesului de dozare individuală necesar în prepararea băuturilor de specialitate,​ sistemul fiind proiectat să asigure o precizie ridicată. Din punct de vedere al utilității,​ aparatul se adresează direct pasionaților de cafea sau ceai. Astfel, se eficientizează procesul de preparare prin economisirea timpului ​și se previne risipa de ingrediente.
 </​note>​ </​note>​
  
Line 17: Line 17:
 Sistemul funcționează pe principiul unei bucle de control închis, folosind microcontrolerul ATmega328P Xplained Mini. Sistemul funcționează pe principiul unei bucle de control închis, folosind microcontrolerul ATmega328P Xplained Mini.
  
-  * **Input:** Utilizatorul selectează băutura dorită (ex. Espresso Simplu, Espresso Dublu, Ceai) folosind butoane fizice. Apăsarea butoanelor este detectată prin întreruperi externe pentru a nu bloca execuția codului principal.+  * **Input:** Utilizatorul selectează băutura dorită (ex. Espresso Simplu, Espresso Dublu) folosind butoane fizice. ​
   * **Procesare și Feedback:** O celulă de sarcină (load cell) conectată la un modul amplificator HX711 monitorizează constant greutatea ingredientului ales. Microcontrolerul citește aceste date prin pini GPIO.   * **Procesare și Feedback:** O celulă de sarcină (load cell) conectată la un modul amplificator HX711 monitorizează constant greutatea ingredientului ales. Microcontrolerul citește aceste date prin pini GPIO.
-  * **Output:** Pe baza rețetei, microcontrolerul generează un semnal PWM pentru a controla ​unul dintre cele două servomotoare ​(unul pentru cafea, altul pentru ceai/alte ingrediente),​ deschizând trapa de dozare. +  * **Output:** Pe baza rețetei, microcontrolerul generează un semnal PWM pentru a controla ​servomotorul ​(pentru cafea sau alte ingrediente),​ deschizând trapa de dozare. 
-  * **Ajustare Dinamică:​** Pe măsură ce greutatea măsurată se apropie de valoarea țintă, lățimea pulsului PWM este ajustată dinamic pentru a încetini mișcarea servomotorului. Acesta începe să lase ingredientele ​să cadă treptat (sub formă de impulsuri), prevenind depășirea gramajului. Greutatea în timp real este afișată pe un ecran LCD 16x2 folosind protocolul I2C. +  * **Ajustare Dinamică:​** Pe măsură ce greutatea măsurată se apropie de valoarea țintă, lățimea pulsului PWM este ajustată dinamic pentru a încetini mișcarea servomotorului. Acesta începe să lase ingredientul ​să cadă treptat (sub formă de impulsuri), prevenind depășirea gramajului. Greutatea în timp real este afișată pe un ecran LCD 16x2 folosind protocolul I2C. 
-{{:  pm:​prj2026:​farhad_ali.gul:​schema_bloc_descriere.png?​700| }}+{{:  pm:​prj2026:​farhad_ali.gul:​schema_bloc_descriere.png?​600| }}
  
  
Line 32: Line 32:
   * **Senzor de greutate:** 1x Celulă de sarcină (Load Cell) cu o limită de 1kg   * **Senzor de greutate:** 1x Celulă de sarcină (Load Cell) cu o limită de 1kg
   * **Amplificator semnal:** 1x Modul amplificator ADC HX711   * **Amplificator semnal:** 1x Modul amplificator ADC HX711
-  * **Actuatoare mecanice:** 2x Servomotoare MG996R ​(pentru acționarea trapelor de ingrediente)+  * **Actuator mecanic:** Servomotor SG90 (pentru acționarea trapelor de ingrediente)
   * **Afișaj:​** 1x Ecran LCD 16x2 cu modul adaptor I2C integrat   * **Afișaj:​** 1x Ecran LCD 16x2 cu modul adaptor I2C integrat
-  * **Interacțiune utilizator:​** ​3x Butoane tip Push +  * **Interacțiune utilizator:​** ​5x Butoane tip Push 
-  * **Componente auxiliare:​** ​Condensator electrolitic,​ breadboard ​și fire de conexiune.+  * **Componente auxiliare:​** ​Breadboard ​și fire de conexiune.
  
 == Schema electrică == == Schema electrică ==
  
-{{:​pm:​prj2026:​farhad_ali.gul:​schema_electrica_hw.png?700|}}+{{:​pm:​prj2026:​farhad_ali.gul:​hw_schema_electrica.png?600|}} 
 + 
 +== Pinii folosiți pentru fiecare componentă == 
 + 
 +  * **Ecranul LCD** (Pinii PC4  și PC5): Ecranul comunică prin protocolul I2C, iar pe arhitectura ATmega328P pinii dedicați hardware pentru magistrala I2C sunt PC4 pentru SDA și PC5 pentru SCL. 
 +  * **Servomotorul** (PB1): Servomotoarele sunt controlate prin semnale PWM. Pinul PB1 este conectat intern la Timer-ul 1 capabil să genereze semnale PWM precise. 
 +  * **Modulul Cântar HX711** (Pinul 4 pentru SCK și Pinul 5 pentru DT): Acestea sunt conexiuni digitale standard (GPIO). Au fost alese pentru a ușura trasarea firelor. Modulul HX711 poate fi conectat la orice pin digital liber. 
 +  * **Butoanele** (Pinii PD6, PD7, PC0, PC1, PC2, PC3): Au fost folosiți ca intrări digitale generale (GPIO). 
 +Pinii PD0 (RX) și PD1 (TX) au fost lăsați liberi deoarece sunt folosiți de interfața UART a plăcii pentru a comunica cu PC-ul prin cablul USB. 
 + 
  
  
Line 45: Line 55:
  
   * **Mediu de dezvoltare:​** PlatformIO.   * **Mediu de dezvoltare:​** PlatformIO.
-  * **Biblioteci și resurse folosite:** Configurările Timerelor pentru PWM și comunicatia I2C vor fi scrise prin accesarea directă a regiștrilor AVR. +  * **Biblioteci și resurse folosite:** Configurările Timerelor pentru PWM și comunicatia I2C sunt scrise prin accesarea directă a regiștrilor AVR. 
-  * **Algoritmi ​și structuri implementate:​** Logica principală a programului este implementată de un **Automat cu Stări Finite (FSM)**. Acesta este împărțit în următoarele stări: +  * **Wire.h** ​și **LiquidCrystal_I2C.h**: Au fost folosite ​pentru ​protocolul ​I2C necesar display-ului ​LCD. 
-    ​* **INIT:** Calibrarea cântarului,​ configurarea Timerelor hardware ​pentru ​PWM, inițializarea magistralei TWI (I2C) pentru ecran și configurarea întreruperilor externe pentru butoane. +  * **HX711.h**: Este necesară pentru comunicația sincronă cu convertorul ADC pe 24 de biți. Biblioteca gestionează impulsurile de ceas (SCK) pentru ​extragerea datelor seriale (DTde la celula de sarcină și oferă funcții integrate pentru mediere ​(averaging) și aducere la zero (tare).
-    * **IDLE:** Sistemul așteaptă inputul utilizatorului prin întreruperi. Meniul de selecție este afișat pe ecranul ​LCD. +
-    * **DISPENSE:** La declanșarea unei rețete, semnalul PWM deschide trapa la 100%. În acest timp, senzorul ​HX711 este citit continuu într-o buclă non-blocantă,​ iar valoarea curentă este actualizată pe ecran. +
-    ​* **FINE-TUNING:** Când ''​greutate_curenta >= greutate_tinta - 2.0g'',​ lățimea pulsului PWM este modificată brusc pentru a închide trapa la o deschidere ​de doar 15% (curgere lentă ​pentru ​precizie)+
-    * **STOP:** Când ''​greutate_curenta >= greutate_tinta'',​ semnalul PWM comandă închiderea totală a trapei ​(0%). Sistemul resetează variabilele curente ​și revine în starea **IDLE**.+
  
 +== Dozarea ingredientelor ==
 +  * **Dozare Bulk:** Trapa se deschide la unghi maxim pentru un debit ridicat atunci când cantitatea rămasă depășește pragul de 5 grame.
 +  * **Dozare Fină:** În apropierea țintei, trapa se întredeschide și se deschide/​închide lent, permițând trecerea individuală a ingredientelor pentru o acuratețe cat mai bună.
  
-=== Rezultate Obţinute ===+== Funcționalități din laborator ​== 
 +  * **Laboratorul 0 (GPIO):** Interfațarea celor 6 butoane a fost realizată prin registre. Am configurat direcția pinilor (''​DDRC'',​ ''​DDRD''​),​ am activat rezistențele interne de pull-up (''​PORTC'',​ ''​PORTD''​) și am citit starea fizică prin mascări pe biți direct pe regiștrii de intrare (''​PINC'',​ ''​PIND''​). 
 +  * **Laboratorul 3 (Timere și Hardware PWM):** Am generat pentru servomotor un semnal Fast PWM de 50Hz (perioadă 20ms) direct prin **Timerul 1** pe 16 biți. Lățimea impulsului (între 1000 și 3000 de tick-uri) este controlată scriind direct în registrul de comparare ''​OCR1A''​. 
 +  * **Laboratorul 6 (I2C):** Controlul display-ului LCD, microcontrolerul transmițând asincron date de interfață pe magistrala cu 2 fire (SDA/SCL).
  
 +== Scheletul proiectului ==
 +Arhitectura se bazează pe un **Automat de Stări Finite (FSM)**:
 +  * **Starea 0 (Meniu):** Sistemul așteaptă input de la utilizator via GPIO (setare gramaj, tara). Microcontrolerul procesează cererile și trimite comenzi I2C pentru actualizarea LCD-ului.
 +  * **Starea 1 (Dozare):** FSM-ul intră în bucla de control. Modulul HX711 trimite constant date către procesor, care calculează eroarea (diferența până la țintă) și ajustează dinamic registrul ''​OCR1A''​.
 +  * **Starea 2 (Finalizat):​** Servomotorul este forțat în poziția închis. Sistemul face o ultimă citire.
  
-=== Concluzii ===+== Calibrarea elementelor de senzoristică ​== 
 +  * **Senzorul de greutate (ADC HX711):** S-a determinat un ''​calibration_factor''​ de 971.64 folosind o greutate etalon. Am implementat o funcție automată de tare apelată la fiecare inițializare a ciclului de dozare.
  
  
-=== Download ​===+{{:​pm:​prj2026:​farhad_ali.gul:​img_5172.png?​200|}} 
 + 
 + 
 +=== Link de Github === 
 +[[https://​github.com/​antoniaa286/​coffee-dispenser | Github proiect]] 
 + 
 + 
 +=== Rezultate Obţinute ​===
  
 +În urma implementării,​ a rezultat un dozator automat funcțional,​ capabil să cântărească și să porționeze cu precizie boabe de cafea sau alte ingrediente solide cu consistență și dimensiuni similare. Sistemul adaptează dinamic deschiderea trapei în timp real, prevenind astfel blocajele mecanice și asigurând o dozare a cantității țintă.
  
-=== Bibliografie/​Resurse === 
  
  
  
pm/prj2026/farhad_ali.gul/antonia_maria.barbu.1777829893.txt.gz · Last modified: 2026/05/03 20:38 by antonia_maria.barbu
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