- Componente
- Modul senzor cu ultrasunete
- Funcționarea controlerului automat al nivelului apei
- Diagrama și explicația circuitului
- Programare
În acest proiect al indicatorului și controlerului automat al nivelului apei bazat pe Arduino, vom măsura nivelul apei utilizând senzori cu ultrasunete. Principiul de bază al măsurării ultrasonice a distanței se bazează pe ECHO. Când undele sonore sunt transmise în mediu, ele se întorc înapoi la origine ca ECHO după ce au lovit orice obstacol. Deci, trebuie să calculăm doar timpul de călătorie al ambelor sunete, înseamnă timpul de ieșire și timpul de revenire la origine după ce am lovit orice obstacol. Și după unele calcule putem obține un rezultat care este distanța. Acest concept este utilizat în proiectul nostru de control al apei în care pompa motorului de apă este pornită automat atunci când nivelul apei din rezervor scade. De asemenea, puteți verifica acest circuit simplu indicator al nivelului apei pentru o versiune mai simplă a acestui proiect.
Componente
- Arduino Uno
- Modul senzor cu ultrasunete
- 16x2 LCD
- Releu 6 Volți
- ULN2003
- 7806
- PVT
- Sârmă de cupru
- Baterie de 9 volți sau adaptor de 12 volți
- Conectarea firelor
Modul senzor cu ultrasunete
Senzorul cu ultrasunete HC-SR04 este utilizat pentru a măsura distanța cuprinsă între 2cm-400cm cu o precizie de 3mm. Modulul senzor este format din emițător cu ultrasunete, receptor și circuitul de comandă.
Modulul senzor cu ultrasunete funcționează pe fenomenul natural al ECHO al sunetului. Un impuls este trimis pentru aproximativ 10us pentru a declanșa modulul. După care modulul trimite automat 8 cicluri de semnal cu ultrasunete de 40 KHz și verifică ecoul acestuia. Semnalul după lovirea cu un obstacol revine înapoi și este capturat de receptor. Astfel, distanța obstacolului față de senzor este calculată pur și simplu prin formula dată ca
Distanță = (timp x viteză) / 2.
Aici am împărțit produsul vitezei și timpului la 2, deoarece timpul este timpul total necesar pentru a ajunge la obstacol și a reveni înapoi. Astfel, timpul pentru atingerea obstacolului este doar jumătate din timpul total luat.
Funcționarea controlerului automat al nivelului apei
Lucrarea acestui proiect este foarte simplă, am folosit un modul senzor cu ultrasunete care trimite undele sonore în rezervorul de apă și detectează reflexia undelor sonore care este ECHO. În primul rând, trebuie să declanșăm modulul senzor cu ultrasunete pentru a transmite semnalul utilizând Arduino și apoi să așteptăm să primim ECHO. Arduino citește timpul dintre declanșare și ECHO primit. Știm că viteza sunetului este de aproximativ 340 m / s. deci putem calcula distanța folosind formula dată:
Distanța = (timpul de deplasare / 2) * viteza sunetului
Acolo unde viteza sunetului este de aproximativ 340m pe secundă.
Prin utilizarea acestor metode obținem distanța de la senzor la suprafața apei. După aceasta, trebuie să calculăm nivelul apei.
Acum trebuie să calculăm lungimea totală a rezervorului de apă. După cum știm lungimea rezervorului de apă, putem calcula nivelul apei prin scăderea distanței rezultate de la ultrasunete din lungimea totală a rezervorului. Și vom obține distanța la nivelul apei. Acum putem converti acest nivel al apei în procente de apă și îl putem afișa pe ecranul LCD. Funcționarea proiectului complet al indicatorului nivelului apei este prezentată în diagrama bloc de mai jos.
Diagrama și explicația circuitului
Așa cum se arată în circuitul de control al nivelului apei prezentat mai jos, pinii „declanșatori” și „ecou” ai modulului senzorului ultrasonic sunt conectați direct la pinii 10 și 11 din arduino. Un LCD 16x2 este conectat cu arduino în modul pe 4 biți. Pinul de control RS, RW și En sunt conectate direct la pinul arduino 7, GND și 6. Și pinul de date D4-D7 este conectat la 5, 4, 3 și 2 al arduino, iar buzzerul este conectat la pinul 12. Releul de 6 volți este conectat, de asemenea, la pinul 8 al arduino prin ULN2003 pentru pornirea sau oprirea pompei motorului de apă. Un regulator de tensiune 7805 este, de asemenea, utilizat pentru furnizarea de 5 volți a releului și a circuitului rămas.
În acest circuit, modulul senzor cu ultrasunete este plasat în partea superioară a cupei (rezervor de apă) pentru demonstrare. Acest modul senzor va citi distanța dintre modulul senzor și suprafața apei și va afișa distanța pe ecranul LCD cu mesajul „Spațiul de apă din rezervor este:”. Înseamnă că prezentăm aici un loc gol de distanță sau volum pentru apă în loc de nivelul apei. Datorită acestei funcționalități putem folosi acest sistem în orice rezervor de apă. Când nivelul apei goale ajunge la o distanță de aproximativ 30 cm, atunci Arduino pornește pompa de apă prin acționarea releului. Și acum LCD va afișa „Nivel scăzut de apă” „Motorul este pornit”, iar LED-ul de stare a releului va începe să aprindă
Acum, dacă spațiul gol ajunge la o distanță de aproximativ 12 cm, arduino oprește releul și ecranul LCD va afișa „Rezervorul este plin” „Motorul este oprit”. De asemenea, buzzer-ul emite un anumit timp și LED-ul de stare a releului se va stinge.
Programare
Pentru a programa Arduino pentru controlerul de nivel al apei, mai întâi definim toți pinii pe care îi vom folosi în proiect pentru interfața dispozitivelor externe precum releu, LCD, buzzer etc.
#define trigger 10 #define echo 11 #define motor 8 #define buzzer 12
Apoi inițializăm toate dispozitivele utilizate în proiect.
lcd.inceput (16,2); pinMode (trigger, OUTPUT); pinMode (ecou, INPUT); pinMode (motor, OUTPUT); pinMode (buzzer, OUTPUT); lcd.print („Nivelul apei”); lcd.setCursor (0,1); lcd.print („Indicator”); întârziere (2000);
Acum inițializați modulul senzor cu ultrasunete și citiți timpul de trimitere și recepție a undelor ultrasonice sau a sunetului utilizând pulseIn (pin). Apoi efectuați calcule și afișați rezultatul pe 16x2 LCD utilizând funcțiile adecvate.
digitalWrite (trigger, HIGH); delayMicroseconds (10); digitalWrite (declanșator, LOW); delayMicroseconds (2); time = pulseIn (ecou, HIGH); distanță = timp * 340/20000; lcd.clear (); lcd.print („Spațiul de apă înăuntru”); lcd.setCursor (0,1); lcd.print ("Rezervorul este:"); lcd.print (distanță); lcd.print ("Cm");
După aceasta, verificăm condițiile dacă rezervorul de apă este plin sau nivelul apei este scăzut și luăm măsuri în consecință.
if (distanță <12 && temp == 0) {digitalWrite (motor, LOW); digitalWrite (buzzer, HIGH); lcd.clear (); lcd.print ("Rezervor de apă plin"); lcd.setCursor (0,1); lcd.print („Motorul OPRIT”); întârziere (2000); digitalWrite (buzzer, LOW); întârziere (3000); temp = 1; } else if (distanță <12 && temp == 1) {digitalWrite (motor, LOW); lcd.clear (); lcd.print ("Rezervor de apă plin"); lcd.setCursor (0,1); lcd.print („Motorul OPRIT”); întârziere (5000); }