MixMaster: Dozator automat de cocktailuri

Introducere

MixMaster este un dozator automat de cocktailuri, conceput pentru a oferi utilizatorilor o experiență unică în prepararea băuturilor. Scopul acestui proiect este de a simplifica prepararea cocktailurilor, eliminând necesitatea manuală de a măsura ingredientele, îmbunătățește eficiența și oferă utilizatorilor o experiență plăcută și interactivă, fie că este vorba de petreceri, întâlniri cu prietenii sau pur și simplu de relaxare acasă.

Ideea a pornit de la dorința de a combina tehnologia cu mixologia pentru a crea un dispozitiv care să facă procesul de preparare a băuturilor mai accesibil și mai distractiv. Dozatorul MixMaster este util nu doar pentru consumatori, ci și pentru organizatori de evenimente. Aceștia pot oferi invitaților o gamă variată de cocktailuri fără a fi nevoie de abilități avansate de pregătire. De asemenea, este o soluție ideală pentru petreceri sau întâlniri, economisind timp și eficientizând procesul de servire.

Descriere generală

Proiectul urmărește realizarea unui sistem automatizat pentru distribuirea controlată a lichidelor din două recipiente distincte, într-un pahar plasat de utilizator. Ansamblul este construit în jurul unui rezervor ce conține două bidoane, fiecare dotat cu robinet propriu, acționat individual de câte un servomotor. Sub cele două robinete este amplasat un suport pentru pahar, prevăzut cu un senzor de proximitate care are rolul de a detecta prezența acestuia.

La momentul în care utilizatorul plasează paharul în suport, senzorul declanșează în mod automat un procesul predefinit. Inițial, pe un display LCD este actualizat mesajul „Gata de preparare” cu „În pregătire”, semnalând începutul procesului de preparare. Apoi, primul servomotor este activat, permițând deschiderea robinetului primului bidon și eliberarea lichidului pentru un timp prestabilit. După această etapă, servomotorul revine în poziția inițială, închizând robinetul, iar sistemul introduce o pauză de câteva secunde pentru stabilitate. Ulterior, al doilea servomotor este activat pentru a deschide robinetul celui de-al doilea bidon, eliberând a doua cantitate de lichid. La finalul acestei etape, robinetul se închide, iar pe ecran este afișat mesajul „Gata de ridicare”, semnalizând utilizatorului că procesul este complet și că paharul poate fi preluat.

După ce paharul este ridicat, senzorul detectează absența acestuia și întregul sistem revine automat în starea inițială, afișând din nou mesajul „Gata de preparare”, pregătit pentru un nou ciclu de funcționare.


Hardware Design


Componenta Link Datasheet
Arduino Uno Optimus Digital Datasheet Arduino UNO
Servo Motoare (x2) Emag Datasheet Servo MG995
Display LCD I2C Optimus Digital Datasheet LCD1602
Senzor ultrasonic Optimus Digital Datasheet Senzor HC-SR04
Modul cu Driver de Motoare Dual L298N Optimus Digital Datasheet Modul L298N

Componente utilizate

  • Arduino UNO
    • Tensiune de alimentare: 5V
    • Interfețe utilizate: digital (PWM), I2C
    • Pini utilizați:
      • D13 → TRIG senzor ultrasonic
      • D12 → ECHO senzor ultrasonic
      • D9 → Control Servo1
      • D10 → Control Servo2
      • A4 (SDA), A5 (SCL) - comunicare I2C cu LCD
  • Senzor ultrasonic (HC-SR04)
    • Conectare:
      • VCC → 5V
      • GND → GND
      • TRIG → D13
      • ECHO → D12
    • Funcție: detectare prezență pahar în zona destinată
  • Servomotoare (x2)
    • Model: MG995
    • Conectare:
      • PWR → OUT1 (Servo1), OUT3 (Servo2)
      • GND → OUT2 (Servo1), OUT4 (Servo2)
      • SIG → D9 (Servo1), D10 (Servo2)
    • Funcție: poziționare precisă (mișcări unghiulare), deschidere/inchidere robineți
  • Display LCD 16×2 cu interfață I2C
    • Conectare:
      • VCC → 5V
      • GND → GND
      • SDA → A4
      • SCL → A5
    • 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
    • Sursă de alimentare pentru Arduino
  • Sursă de alimentare 9V cu stecher
    • Sursă de alimentare pentru motoare

Comunicație între module

  • PWM: folosit pentru controlul celor două servomotoare (D9 și D10)
  • I2C: utilizat pentru comunicarea cu LCD-ul (SDA → A4, SCL → A5)
  • Digital IO: utilizat pentru senzorul ultrasonic (D12, D13)

Implementare concept hardware

Conectare toate modulele simultan

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 16×2 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

Rezultate Obţinute

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

Bibliografie/Resurse

pm/prj2025/vradulescu/ana_maria.persenea.txt · Last modified: 2025/05/26 22:38 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