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)

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ă de alimentare 12V V+ (Plus) - Tensiunea de 12V merge la intrarea IN+ a convertorului Step-Down și la (+) pompei
Sursă de alimentare 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 IN / 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

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

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.txt · Last modified: 2026/05/16 20:15 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