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.
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)
| 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 |
| 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 |
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.
Am terminat montajul hardware, iar partea de software este aproape finalizată.
Resurse Hardware (datasheets)
Modul Cântar Electronic 1kg YZC-133
Pompă peristaltică mini 12VDC Kamoer CKP-DC-S08