This shows you the differences between two versions of the page.
pm:prj2023:fstancu:flood-alarm [2023/05/29 19:07] alexandra.chiper [Lipituri] |
pm:prj2023:fstancu:flood-alarm [2023/05/30 08:07] (current) alexandra.chiper [Jurnal] |
||
---|---|---|---|
Line 9: | Line 9: | ||
<note> | <note> | ||
**Pentru cine poate fi util acest proiect?** \\ | **Pentru cine poate fi util acest proiect?** \\ | ||
- | Acest proiect poate fi util în casele construite în zone ușor inundabile sau pentru cazurile în care nivelul pânzei de apă freatică este fluctuant și apare o defecțiune la flotorul de acționare al pompei din bașă. | + | Acest proiect poate fi util în casele construite în zone ușor inundabile sau pentru cazurile în care nivelul pânzei de apă freatică este fluctuant și apare o defecțiune la flotorul de acționare al pompei de evacuare din bașă. |
</note> | </note> | ||
Line 15: | Line 15: | ||
* https://all3dp.com/2/most-useful-arduino-projects/ | * https://all3dp.com/2/most-useful-arduino-projects/ | ||
===== Descriere generală ===== | ===== Descriere generală ===== | ||
- | Când apa atinge nivelul de alertă este pornită pompa de serviciu din bașă. Dacă nivelul apei continuă să crească și ajunge la nivelul de pericol este pornită și a doua pompă de siguranță, cu debit mai mare. Cele două praguri de alertă sunt citite cu ajutorul a doi senzori de nivel al apei plasați la înălțimi diferite. | + | Când apa atinge nivelul de alertă este pornită pompa de serviciu din bașă. Dacă nivelul apei continuă să crească și ajunge la nivelul de pericol este pornită și a doua pompă de siguranță, cu debit mai mare. Cele două praguri de alertă sunt citite cu ajutorul a doi senzori de nivel al apei, plasați la înălțimi diferite. |
Starea curentă a nivelului apei va fi afișată pe un ecran LCD și abstractizată vizual printr-un LED RGB astfel: | Starea curentă a nivelului apei va fi afișată pe un ecran LCD și abstractizată vizual printr-un LED RGB astfel: | ||
Line 21: | Line 21: | ||
* 1 cm deasupra nivelului pardoselii - **LOW** și ledul este **ALBASTRU** | * 1 cm deasupra nivelului pardoselii - **LOW** și ledul este **ALBASTRU** | ||
* 2.5 cm deasupra nivelului pardoselii - **MEDIUM** și ledul este **GALBEN** | * 2.5 cm deasupra nivelului pardoselii - **MEDIUM** și ledul este **GALBEN** | ||
- | * 4 cm deasupra nivelului pardoselii - **HIGH** și ledul este **ROSU** | + | * 4 cm deasupra nivelului pardoselii - **HIGH** și ledul este **ROȘU** |
- | * peste 30 de cm - se afișează intermitent **DANGER** și ledul este **ROȘU intermitent** | + | * peste 30 de cm - se afișează intermitent **DANGER** și ledul este **ROȘU** |
<note>Dacă imaginile apar prea mici, faceți click pe ele.</note> | <note>Dacă imaginile apar prea mici, faceți click pe ele.</note> | ||
Line 56: | Line 56: | ||
| Ecran LCD cu interfață I2C | 1 | | | Ecran LCD cu interfață I2C | 1 | | ||
| Releu cu comandă high-level 5V | 2 | | | Releu cu comandă high-level 5V | 2 | | ||
- | | Baterie 9V | 2 | | + | | Baterie 9V | 1 | |
- | | Power bank | 1 | | + | | Power bank 5V | 2 | |
| Cablu USB | 1 | | | Cablu USB | 1 | | ||
| Conector rapid 3x1 și 5x1 pini | 2 | | | Conector rapid 3x1 și 5x1 pini | 2 | | ||
Line 144: | Line 144: | ||
void config_adc() { | void config_adc() { | ||
ADMUX = 0; | ADMUX = 0; | ||
- | |||
- | /* ADC1 - channel 1 */ | ||
- | ADMUX |= (1 << MUX0); | ||
/* AVCC with external capacitor at AREF pin */ | /* AVCC with external capacitor at AREF pin */ | ||
Line 179: | Line 176: | ||
===== Concluzii ===== | ===== Concluzii ===== | ||
Proiectul a fost interesant de realizat, fiind primul proiect de acest fel, care să implice și partea de design și realizare hardware. | Proiectul a fost interesant de realizat, fiind primul proiect de acest fel, care să implice și partea de design și realizare hardware. | ||
- | * Cea mai dificilă parte a fost calibrarea senzorilor (stabilirea pragurilor) deoarece pare că sunt mai sensibili spre vârf și mai puțin sensibili spre partea superioară. | + | * A fost mai dificilă parte de calibrare a senzorilor (stabilirea pragurilor) deoarece pare că sunt mai sensibili spre vârf și mai puțin sensibili spre partea superioară și a durat ceva până să mă prind. |
- | * O alta problemă întâlnită a fost comportamentul diferit al proiectului atunci când alimentam arduino de la o baterie de 9V față de ce făcea când era conectat prin usb la calculator. Probloema era de la ADC, și mai exact de la faptul că AVcc este legat la supply voltage și nu la 5V de pe arduino => rezultatele senzorilor erau raportate fie la 5V fie la 9V și pragurile stabilite nu mai corespundeau. | + | * O alta problemă întâlnită a fost comportamentul diferit al proiectului atunci când alimentam arduino de la o baterie de 9V față de ce făcea când era conectat prin usb la calculator. Probloema era de la ADC, și mai exact de la faptul că AVcc este legat la supply voltage și nu la 5V de pe arduino => rezultatele senzorilor erau raportate fie la 5V fie la 9V și pragurile stabilite nu mai corespundeau 8-o. |
* **Soluție**: Dacă vreau ca arduinoi să nu mai fie conectat la laptop îl alimentez de la un power bank la 5V. | * **Soluție**: Dacă vreau ca arduinoi să nu mai fie conectat la laptop îl alimentez de la un power bank la 5V. | ||
- | * Tot legat de ADC, inițial intenționam ca ADC să aibă auto-trigger pe timer1 match A, dar am descoperit in datasheet ca pentru timer1 nu are decat la overflow sau la match B. | + | * Tot legat de ADC, inițial intenționam ca ADC să aibă auto-trigger pe timer1 match A, dar am descoperit în datasheet că pentru timer1 nu are event decât la overflow sau la match B. |
* **Soluție**: în rutina de tratarea a întreruperii timer-ului 1 de match A pornesc "manual" conversia ADC. | * **Soluție**: în rutina de tratarea a întreruperii timer-ului 1 de match A pornesc "manual" conversia ADC. | ||
+ | * Față de schema electrică, senzorii de nivel al apei sunt acum alimentați direct la 5V și nu la pinii 7 si 8 (erau inițial conectați așa pentru că senzorii se corodeaza mai repede dacă stau mult alimentați și în contact cu apa, și, inițial, le dădeam drumul doar când voiam să le citesc valoarea și așteptam 10 ms înainte de analogRead ca să nu apară rezultate eronate -> problema a fost că în momentul când am trecut la varianta cu timer și ADC cu regiștrii trebuia să aștept acele 10 ms în ISR și cum la laborator am învățat că nu e bine să faci delay în ISR am renunțat la acel delay prin faptul că acum senzorii sunt permanent powered on). | ||
+ | A fost overall o experiență nouă (lipit fire, sertizat cbluri, înghesuit și organizat cabluri în cutie, etc) care ar fi putut fi foart plăcută dacă nu erau atâtea deadline-uri în perioada aceasta :( | ||
===== Jurnal ===== | ===== Jurnal ===== | ||
* ''7 mai 2023'' | * ''7 mai 2023'' | ||
Line 199: | Line 197: | ||
- ADC cu regiștrii | - ADC cu regiștrii | ||
- analogRead cu regiștrii | - analogRead cu regiștrii | ||
+ | * ''28-30 mai 2023'' | ||
+ | - adăugat și completat documentația la partea de rezultate și concluzii | ||
+ | - adăugat mai multe poze | ||
===== Bibliografie/Resurse ===== | ===== Bibliografie/Resurse ===== |