This is an old revision of the document!


Dozator de apă inteligent

Introducere

Proiectul constă într-un dozator de apă inteligent, care detectează volumul curent de apă pe baza unui senzor de greutate și care umple recipientul, cu ajutorul unei pompe și a unui releu. Pentru afișaj, am folosit un ecran LCD și o bară de 10 led-uri pentru progres. LCD-ul va avea mai multe moduri, printre care: progres, timp rămas și statistici (câtă apă am băut în ziua respectivă spre exemplu). Pentru a schimba modurile de afișaj voi folosi niște butoane, iar pentru a măsura timpul precis un RTC.

Scopul proiectului și utilitatea o reprezintă, tocmai, automatizarea procesului, marea majoritate a dozatoarelor fiind manuale, deci incoveniente.

Ideea de la care am pornit a fost creearea unui aparat util, nu foarte scump, de care toată lumea are nevoie.

Descriere generală

1. Microcontroler-ul ATmega328P-XMINI - „creierul”, prelucrează datele primite de la senzor, acționează pompa, realizează statisticile și trimite semnal la LED-uri și LCD pentru afișaj

2. Senzor Greutate 1kg (analogic) - pentru detectarea volumului de apă curent

3. Modul Citire Greutate HX711 - funcționează ca un amplificator și convertește semnalul analogic primit de la senzor într-unul digital pe care îl poate procesa microcontrolerul

4. Sursa 12V - pentru alimentarea pompei

5. Convertor Step-Down 5V - pentru a modifica tensiunea de la 12V la 5V, alimentând microcontrolerul

6. Releu - întrerupător (pornește sau oprește pompa)

7. Pompa - pentru a extrage apa din rezervor

8. RTC - folosit pentru a colecta date pentru statistici. Un avantaj al utilizării unui RTC este acuratețea acestuia, precum și funcționarea independentă de sursa principală de curent datorită bateriei proprii (comunică pe baza protocolului I2C)

9. LCD - folosit pentru afișaj (funcționează pe baza protocolului I2C)

10. Butoane - folosite pentru a porni dozatorul sau a schimba modul de afișaj

11. Bara 10 LED-uri - folosită pentru a afișa progresul. Funcționează folosind PWM pentru a varia intensitatea, în timp ce numărul de LED-uri aprinse se modifică în funcție de progres

Laboratoare folosite:

- Intreruperi (butoanele care: pornesc aparatul, schimba modul de afisaj etc.)

- PWM (intensitatea LED-urilor de progres creste treptat)

- I2C (Afisajul LCD si modulul RTC)

- UART (Pentru calibrarea senzorului de greutate)

Module externe:

- Timere (RTC)

- ADC (modulul HX711, care transforma semnalul analogic primit de la senzor intr-unul digital)

Hardware Design

Lista de piese

Componenta Model Cantitate
Microcontroler ATmega328P-XMINI 1
Modul Cântar Electronic 1kg YZC-133 1
Modul Citire Greutate HX711 1
Display LCD 2×16 I2C 1602 1
Pompă peristaltică mini 12VDC Kamoer CKP-DC-S08 1
Modul Releu 1 canal 5V SRD-05VDC-SL-C 1
Sursă alimentare 12V 2A YDS-WA024 1
Buton 6x6x6 Sunrom 5827 4
Bară leduri cu 10 segmente F2510BH 1
Rezistență 220 Ω 12
Rezistență 1k Ω 4
Rezistență 10k Ω 4
Condensator 0.1µF 4
Modul RTC DS3231 1
Baterie Varta CR2032 1
Breadboard 830 puncte 1
Fire DuPont M-F 10 bucăți 10cm 2
Fire DuPont M-M 10 bucăți 20cm 3
Furtun silicon 1.6m 1
Modul DC-DC Step Down LM2596 1
Mufă alimentare panou DC mamă 5.5mm x 2.1mm 3 pini 1

Pini folosiți

Componentă Pin componentă Pin ATmega328P (Arduino) Explicație
Sursă 12V V+ (Plus) - Tensiunea de 12V merge la intrarea IN+ a convertorului Step-Down și la (+) pompei
Sursă 12V V- (Minus) - Se conectează la IN- (convertor) și la borna COM a releului
Convertor Step-Down LM2596 OUT+ 5V Furnizează 5V către magistrala breadboard-ului și pinul 5V al plăcii
Convertor Step-Down LM2596 OUT- GND Conectat la magistrala de masă (GND) a breadboard-ului
Pompă de apă 12V Minus (-) - Conectat la borna NO a releului
Modul Releu 5V VCC (DC+) 5V Alimentarea părții logice a releului cu 5V
Modul Releu 5V GND (DC-) GND Masă comună
Modul Releu 5V S PC1 Pin configurat ca OUTPUT digital pentru a da comanda de închidere a circuitului
Senzor Greutate 1kg Fir Roșu - Se conectează la borna E+ (Excitation Plus) a modulului HX711 pentru alimentarea cu curent de referință
Senzor Greutate 1kg Fir Negru - Se conectează la borna E- (Excitation Minus) a modulului HX711, reprezentând masa senzorului
Senzor Greutate 1kg Fir Alb - Se conectează la borna A- (Analog Minus) a modulului HX711. Este primul fir de semnal care citește variația de tensiune
Senzor Greutate 1kg Fir Verde - Se conectează la borna A+ (Analog Plus) a modulului HX711. Al doilea fir de semnal - împreună cu cel alb creează diferența de potențial amplificată de modul
HX711 (Senzor Greutate) VCC 5V Modulul este alimentat la 5V de la magistrala breadboard-ului
HX711 (Senzor Greutate) GND GND Toate componentele trebuie să aibă masă comună
HX711 (Senzor Greutate) DT / DAT PC2 Pin analogic folosit ca I/O digital pentru citirea datelor
HX711 (Senzor Greutate) SCK / CLK PC3 Pin analogic folosit ca I/O digital pentru semnalul de clock
LCD 16×2 I2C VCC 5V Display-ul este alimentat la 5V
LCD 16×2 I2C GND GND Masă comună
LCD 16×2 I2C SDA PC4 Pinul hardware standard dedicat pentru date I2C
LCD 16×2 I2C SCL PC5 Pinul hardware standard dedicat pentru clock I2C
RTC DS3231 VCC 5V Modulul ceasului este alimentat la 5V
RTC DS3231 GND GND Masă comună
RTC DS3231 SDA PC4 Conectat în paralel pe magistrala I2C cu LCD-ul
RTC DS3231 SCL PC5 Conectat în paralel pe magistrala I2C cu LCD-ul
Buton 1 (Start/Pauză) Semnal PD2 Pin dedicat pentru întreruperi hardware (INT0). Configurat cu INPUT_PULLUP
Buton 2 (Schimbare Afișaj) Semnal PD3 Pin dedicat pentru întreruperi hardware (INT1). Configurat cu INPUT_PULLUP
Bară 10 LED-uri Anozi (+) PD0, PD1, PD4-PD7, PB0-PB3 Pini digitali folosiți pentru controlul progresului
Bară 10 LED-uri Catozi (-) GND Masă comună, prin intermediul rezistențelor

Software Design

Am terminat partea de software design, integrând toate funcționalitățile menționate mai sus.

Am folosit bibliotecile:

* HX711 pentru a putea conecta senzorul de greutate la breadboard, cat si pentru a putea interpreta datele primite

* LiquidCrystal_I2C pentru a afisa diferite mesaje pe ecranul LCD

* RTClib pentru a putea realiza statisticile mentionate, spre exemplu cata apa am baut in ziua respectiva

* EEPROM pentru a putea salva statisticile si daca dozatorul nu mai este alimentat

* Wire pentru comunicarea I2C

Elementele de noutate ale proiectului sunt reprezentate de functionalitatile diverse:

- utilizatorul poate seta la inceput volumul sticlei folosite (de la 50ml la 1000ml, increment de 50ml)

- dupa ce se aseaza sticla cu apa initiala, senzorul detecteaza exact masa, luand in calcul masa sticlei goale si a furtunului

- la pornirea dozatorului, progresul este afisat atat pe baza ledurilor (acestea se aprind alternativ, variand intensitatea pe masura trecerii timpului), cat si prin intermediul ecranului LCD (afiseaza timpul ramas)

- exista mai multe moduri de afisaj (timpul ramas sau cantitatea de apa consumata in ziua respectiva, acest lucru fiind foarte important in nutritie)

- dupa ce sticla se umple, se poate pune o noua sticla, fara a fi necesara repornirea aparatului

Senzorul de greutate a fost calibrat pe baza unui cod software. Acesta poate fi vizualizat pe git. Am pus pe cantar o sticla cu masa cunoscuta (250 ml), iar apoi am reglat software factorul de calibrare, prin usart.

Ca mediu de dezvoltare am folosit VS Code cu extensia Platformio, framework Arduino.

Descrierea codului aplicaţiei (firmware):

  • mediu de dezvoltare (if any) (e.g. AVR Studio, CodeVisionAVR) DONE
  • librării şi surse 3rd-party (e.g. Procyon AVRlib) DONE
  • algoritmi şi structuri pe care plănuiţi să le implementaţi
  • (etapa 3) surse şi funcţii implementate

Rezultate Obţinute

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

Am terminat montajul hardware, iar partea de software este aproape finalizată.

Bibliografie/Resurse

pm/prj2026/atoader/aureliu.antonie.1779310328.txt.gz · Last modified: 2026/05/20 23:52 by aureliu.antonie
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