Differences

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

Link to this comparison view

pm:prj2025:vradulescu:ana_maria.persenea [2025/05/18 22:34]
ana_maria.persenea [Hardware Design]
pm:prj2025:vradulescu:ana_maria.persenea [2025/05/26 22:38] (current)
ana_maria.persenea [Download]
Line 18: Line 18:
 ===== Hardware Design ===== ===== Hardware Design =====
  
-{{ :​pm:​prj2025:​vradulescu:​circuit_amp.png?​nolink&​700 |}}+{{ :​pm:​prj2025:​vradulescu:​circuit_componente_amp.png?​nolink&​650 |}}
 {{ :​pm:​prj2025:​vradulescu:​cablaj_amp.png?​nolink&​700 |}} {{ :​pm:​prj2025:​vradulescu:​cablaj_amp.png?​nolink&​700 |}}
 <​html>​ <​html>​
Line 48: Line 48:
     <​td><​a href="​https://​www.optimusdigital.ro/​ro/​senzori-senzori-ultrasonici/​2328-senzor-ultrasonic-de-distana-hc-sr04-compatibil-33-v-i-5-v.html">​Optimus Digital</​a></​td>​     <​td><​a href="​https://​www.optimusdigital.ro/​ro/​senzori-senzori-ultrasonici/​2328-senzor-ultrasonic-de-distana-hc-sr04-compatibil-33-v-i-5-v.html">​Optimus Digital</​a></​td>​
     <​td><​a href="​https://​www.handsontec.com/​dataspecs/​HC-SR04-Ultrasonic.pdf">​Datasheet Senzor HC-SR04</​a></​td>​     <​td><​a href="​https://​www.handsontec.com/​dataspecs/​HC-SR04-Ultrasonic.pdf">​Datasheet Senzor HC-SR04</​a></​td>​
 +  </tr>
 +  <tr>
 +    <​td>​Modul cu Driver de Motoare Dual L298N</​td>​
 +    <​td><​a href="​https://​www.optimusdigital.ro/​ro/​drivere-de-motoare-cu-perii/​145-driver-de-motoare-dual-l298n.html?​search_query=modul+tensiune&​results=660.html">​Optimus Digital</​a></​td>​
 +    <​td><​a href="​https://​www.handsontec.com/​dataspecs/​L298N%20Motor%20Driver.pdf">​Datasheet Modul L298N</​a></​td>​
   </tr>   </tr>
 </​table>​ </​table>​
Line 58: Line 63:
     * Interfețe utilizate: digital (PWM), I2C     * Interfețe utilizate: digital (PWM), I2C
     * Pini utilizați:     * Pini utilizați:
-      * D2 - TRIG senzor ultrasonic +      * D13 -TRIG senzor ultrasonic 
-      * D3 - ECHO senzor ultrasonic +      * D12 -ECHO senzor ultrasonic 
-      * D9 - Control Servo1 +      * D9 -Control Servo1 
-      * D10 - Control Servo2+      * D10 -Control Servo2
       * A4 (SDA), A5 (SCL) - comunicare I2C cu LCD       * A4 (SDA), A5 (SCL) - comunicare I2C cu LCD
  
   * **Senzor ultrasonic (HC-SR04)**   * **Senzor ultrasonic (HC-SR04)**
     * Conectare:     * Conectare:
-      * VCC → 5V +      * VCC -> 5V 
-      * GND → GND +      * GND -> GND 
-      * TRIG → D2 +      * TRIG -> D13 
-      * ECHO → D3+      * ECHO -> D12
     * Funcție: detectare prezență pahar în zona destinată     * Funcție: detectare prezență pahar în zona destinată
  
Line 75: Line 80:
     * Model: MG995     * Model: MG995
     * Conectare:     * Conectare:
-      * PWR → 5V +      * PWR -> OUT1 (Servo1), OUT3 (Servo2) 
-      * GND → GND +      * GND -> OUT2 (Servo1), OUT4 (Servo2) 
-      * SIG → D9 (Servo1), D10 (Servo2)+      * SIG -> D9 (Servo1), D10 (Servo2)
     * Funcție: poziționare precisă (mișcări unghiulare),​ deschidere/​inchidere robineți     * Funcție: poziționare precisă (mișcări unghiulare),​ deschidere/​inchidere robineți
  
   * **Display LCD 16x2 cu interfață I2C**   * **Display LCD 16x2 cu interfață I2C**
     * Conectare:     * Conectare:
-      * VCC → 5V +      * VCC -> 5V 
-      * GND → GND +      * GND -> GND 
-      * SDA → A4 +      * SDA -> A4 
-      * SCL → A5+      * SCL -> A5
     * Funcție: afișare stare automat     * Funcție: afișare stare automat
 +
 +  * **Modul cu Driver de Motoare Dual L298N**
 +    * Conectare:
 +      * ENA, ENB -> VCC 
 +      * IN1 -> D7
 +      * IN2 -> D6
 +      * IN3 -> D5
 +      * IN4 -> D4
 +      * OUT1 -> VCC Servo1
 +      * OUT2 -> GND Servo1
 +      * OUT3 -> VCC Servo2
 +      * OUT4 -> GND Servo2
 +      * 9V -> V+ Mufă alimentare tată
 +      * GND -> V- Mufă alimentare tată
 +    * Funcție: Sursă alimentare servomotoare
  
   * **Baterie 9V**   * **Baterie 9V**
     * Sursă de alimentare pentru Arduino     * Sursă de alimentare pentru Arduino
 +
 +  * **Sursă de alimentare 9V cu stecher**
 +    * Sursă de alimentare pentru motoare
  
 === Comunicație între module === === Comunicație între module ===
Line 95: Line 118:
   * **PWM**: folosit pentru controlul celor două servomotoare (D9 și D10)   * **PWM**: folosit pentru controlul celor două servomotoare (D9 și D10)
   * **I2C**: utilizat pentru comunicarea cu LCD-ul (SDA → A4, SCL → A5)   * **I2C**: utilizat pentru comunicarea cu LCD-ul (SDA → A4, SCL → A5)
-  * **Digital IO**: utilizat pentru senzorul ultrasonic (D2D3)+  * **Digital IO**: utilizat pentru senzorul ultrasonic (D12D13)
  
-==== Implementare concept hardware==== +=== Implementare concept hardware === 
-* Conectare Arduino cu LCD și senzorul ultrasonic\\ + 
-    {{ :​pm:​prj2025:​vradulescu:​test_senzor_1.jpg?​nolink&​200 |}} {{ :​pm:​prj2025:​vradulescu:​test_senzor_2.png?​nolink&​200 |}}+{{ :​pm:​prj2025:​vradulescu:​arduino_amp.jpg?​nolink&​300 |}} {{ :​pm:​prj2025:​vradulescu:​motoare_amp.jpg?​nolink&​300 |}} ^ 
 +== Conectare toate modulele simultan ==  
 +{{ :​pm:​prj2025:​vradulescu:​complet_amp.jpg?​nolink&​700 |}}
  
-  * Conectare Arduino cu cele două servomotoare\\ 
-    {{ :​pm:​prj2025:​vradulescu:​test_motor_1.jpg?​nolink&​250 |}} {{ :​pm:​prj2025:​vradulescu:​test_motor_1.2.jpg?​nolink&​250 |}} 
  
-  * Conectare toate modulele simultan\\ 
-  * Conectare Arduino cu LCD și senzorul ultrasonic 
-{{ :​pm:​prj2025:​vradulescu:​test_senzor_1.jpg?​nolink&​200 |}}{{ :​pm:​prj2025:​vradulescu:​test_senzor_2.png?​nolink&​200}} 
-  * Conectare Arduino cu cele două servomotoare 
-{{ :​pm:​prj2025:​vradulescu:​test_motor_1.jpg?​nolink&​300 |}}{{ :​pm:​prj2025:​vradulescu:​test_motor_1.2.jpg?​nolink&​300}} 
-  * Conectare toate modulele simultan 
-{{ :​pm:​prj2025:​vradulescu:​test_complet_1.jpg?​nolink&​300 |}}{{ :​pm:​prj2025:​vradulescu:​test_complet_2.jpg?​nolink&​300}} 
  
 ===== Software Design ===== ===== Software Design =====
 +
 +Implementarea software este complet funcțională și a fost testată cu succes pe circuitul hardware. Sistemul detectează prezența unui pahar folosind un senzor ultrasonic HC-SR04, declanșează o secvență automată de mișcare a două servomotoare pentru pornirea și oprirea robinetelor,​ afișează mesaje pe un ecran LCD pentru a înștiința utilizatorul în vederea procesului de preparare și revine în modul standby după finalizare. Logica este temporizată precis cu un timer hardware (Timer2) și un sistem de stare (servoState).
 +
 +=== Motivele alegerii bibliotecilor folosite === 
 +  * <​Servo.h>​ - Folosită pentru controlul simplu și precis al servomotoarelor. Am aleas-o deoarece oferă o interfață rapidă și sigură pentru comenzi PWM pe pinii digitali ai Arduino-ului.
 +
 +  * <​LiquidCrystal_I2C.h>​ - Utilizată pentru afișajul LCD 16x2 cu interfață I2C. Am utilizat-o pentru afișarea clară a mesajelor doritei.
 +
 +  * <​Wire.h>​ - Necesară pentru comunicarea I2C între Arduino și ecranul LCD.
 +
 +=== Elemente de noutate al proiectului ===
 +  * Utilizarea unui sistem de stare (servoState) temporizat cu un timer hardware ISR, ceea ce oferă mai multă precizie și fiabilitate decât metodele bazate pe delay.
 +
 +  * Afișaj inteligent care reflectă starea sistemului în timp real, rămânând pe mesajul "​Done"​ până când paharul este efectiv retras — asigurând un feedback natural pentru utilizator.
 +
 +=== Justificarea utilizării funcționalităților din laborator ===
 +În cadrul implementării proiectului am folosit următoarele elemente studiate la laborator:
 +
 +  * Întreruperi,​ Timere (Laboratorul 2) - Am configurat Timer2 în modul CTC, generând întreruperi la fiecare 1 ms, ceea ce a permis controlul precis al secvenței de mișcare a servomotoarelor fără a bloca execuția principală a programului,​ eliminând complet utilizarea funcției delay() și asigurând un comportament eficient al sistemului.
 +
 +  * PWM (Laboratorul 3) - Am folosit un semnal PWM generat prin biblioteca Servo.h pentru a controla automat mișcarea servomotoarelor,​ implementând acțiuni precise în funcție de detecția senzorului.
 +
 +  * I2C (Laboratorul 6) - Am folosit comunicația I2C pentru a controla LCD-ul și a realiza o interfață clară om-mașină.
 +
 +=== Structura proiectului și interacțiunea funcționalităților ===
 +Scheletul logic:
 +
 +  * loop() verifică constant distanța unui posibil obiect față de senzor. Dacă este detectat un pahar și sistemul este inactiv, setează:
 +    * isRunningSequence = true
 +    * servoState = 1
 +
 +  * ISR-ul Timer2:
 +    * Rulează la fiecare 1ms.
 +    * Incrementă timerCounter.
 +    * Controlează trecerile între stări (servo1 -> servo2 -> finalizare).
 +
 +  * LCD-ul afișează mesaje în funcție de starea sistemului:
 +    * "Glass detected"​ când senzorul detectează prezența unui pahar.
 +    * "​Preparing…"​ când începe secvența și mișcarea servomotoarelor.
 +    * "​Done"​ când e finalizată prepararea.
 +    * "Ready for use" după îndepărtarea paharului.
 +=== Arhivă cod ===
 +{{:​pm:​prj2025:​vradulescu:​mix_master_code.zip|}}
  
  
-<note tip> 
-Descrierea codului aplicaţiei (firmware): 
-  * mediu de dezvoltare (if any) (e.g. AVR Studio, CodeVisionAVR) 
-  * librării şi surse 3rd-party (e.g. Procyon AVRlib) 
-  * algoritmi şi structuri pe care plănuiţi să le implementaţi 
-  * (etapa 3) surse şi funcţii implementate 
-</​note>​ 
  
 ===== Rezultate Obţinute ===== ===== Rezultate Obţinute =====
 +
 +^ {{ :​pm:​prj2025:​vradulescu:​rez_4_amp.jpg?​nolink&​400 |}} ^ {{ :​pm:​prj2025:​vradulescu:​rez_6_amp.jpg?​nolink&​400 |}} ^
 +^ {{ :​pm:​prj2025:​vradulescu:​rez_1_amp.jpg?​nolink&​400 |}} ^ {{ :​pm:​prj2025:​vradulescu:​rez_3_amp.jpg?​nolink&​400 |}} ^
  
 <note tip> <note tip>
-Care au fost rezultatele obţinute în urma realizării proiectului vostru.+Video Demo: https://​youtube.com/​shorts/​NtXiDtzjC6U
 </​note>​ </​note>​
  
 ===== Concluzii ===== ===== Concluzii =====
  
 +A fost un proiect interesant, care la început părea simplu, dar pe parcurs am descoperit că implică mai multe provocări decât anticipasem. Una dintre dificultățile întâmpinate a fost legată de controlul servomotoarelor:​ inițial am folosit modelul SG90, însă acesta s-a dovedit prea slab pentru a acționa robineții. Am fost nevoita să trec la modele MG995, mai puternice, ceea ce a implicat și adăugarea unui driver pentru motoare și a unei surse externe de alimentare, pentru a le face să funcționeze corect. De asemenea, montarea întregului ansamblu a fost o provocare, fiind un proiect voluminos, atât din cauza componentelor electronice,​ cât și a dimensiunii rezervoarelor de lichid. Per total, a fost o experiență foarte interesantă,​ cu seri mai bune și altele mai putin bune, dar din care am învățat multe.
 ===== Download ===== ===== Download =====
- 
-<note warning> 
-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**. 
-</​note>​ 
- 
-===== Jurnal ===== 
  
 <note tip> <note tip>
-Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului.+Arhiva finala: {{:​pm:​prj2025:​vradulescu:​arhiva_finala_mixmaster.zip|}}
 </​note>​ </​note>​
 +
  
 ===== Bibliografie/​Resurse ===== ===== Bibliografie/​Resurse =====
  
-<​note>​ +**Resurse Software** 
-Listă cu documente, datasheet-uri,​ resurse Internet folosite, eventual grupate pe **Resurse Software** ​şi **Resurse Hardware**. +  * https://​projecthub.arduino.cc/​dsanmart/​smart-dispenser-6b125b 
-</note>+  * https://​github.com/​Labrahmi/​water-dispenser-system 
 +  * https://​circuitdigest.com/​microcontroller-projects/​arduino-automatic-water-dispenser 
 +  * https://​www.tiktok.com/​@arduinowithzen/​video/​7458840164228402439 
 + 
 +**Resurse Hardware** 
 +  * https://www.optimusdigital.ro/​ro/​placi-avr/​4561-placa-de-dezvoltare-compatibila-cu-arduino-uno-r3-atmega328p-atmega16u2-cablu-50-cm.html?​search_query=arduino+uno&​results=129 
 +  * https://​docs.arduino.cc/​resources/​datasheets/​A000066-datasheet.pdf 
 +  * https://​www.emag.ro/​motor-servo-mg995-11kg-180grade-ai209-s296/​pd/​DZSHBRBBM 
 +  * https://​www.electronicoscaldas.com/​datasheet/​MG995_Tower-Pro.pdf 
 +  * https://​www.optimusdigital.ro/​ro/​optoelectronice-lcd-uri/​2894-lcd-cu-interfata-i2c-si-backlight-albastru.html 
 +  * https://​www.handsontec.com/​dataspecs/​module/​I2C_1602_LCD.pdf 
 +  * https://​www.optimusdigital.ro/​ro/​senzori-senzori-ultrasonici/​2328-senzor-ultrasonic-de-distana-hc-sr04-compatibil-33-v-i-5-v.html 
 +  * https://​www.handsontec.com/​dataspecs/​HC-SR04-Ultrasonic.pdf 
 +  * https://​www.optimusdigital.ro/​ro/​drivere-de-motoare-cu-perii/​145-driver-de-motoare-dual-l298n.html?​search_query=modul+tensiune&​results=660.html 
 +  * https://​www.handsontec.com/​dataspecs/​L298N%20Motor%20Driver.pdf
  
 <​html><​a class="​media mediafile mf_pdf"​ href="?​do=export_pdf">​Export to PDF</​a></​html>​ <​html><​a class="​media mediafile mf_pdf"​ href="?​do=export_pdf">​Export to PDF</​a></​html>​
  
pm/prj2025/vradulescu/ana_maria.persenea.1747596898.txt.gz · Last modified: 2025/05/18 22:34 by ana_maria.persenea
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