- Komponente
- Modul ultrazvučnog senzora
- Rad automatskog regulatora razine vode
- Kružni dijagram i objašnjenje
- Programiranje
U ovom projektu automatskog indikatora i kontrolera razine vode temeljenog na Arduinu mjerit ćemo razinu vode pomoću ultrazvučnih senzora. Osnovni princip ultrazvučnog mjerenja udaljenosti temelji se na ECHO. Kada se zvučni valovi prenose u okolišu, vraćaju se natrag u ishodište kao ECHO nakon udara na bilo koju prepreku. Stoga moramo izračunati vrijeme putovanja oba zvuka, znači vrijeme odlaska i vrijeme povratka u ishodište nakon udara na bilo koju prepreku. I nakon nekog izračuna možemo dobiti rezultat koji je udaljenost. Ovaj koncept koristi se u našem projektu vodenog regulatora, gdje se pumpa za vodu motora automatski uključuje kada razina vode u spremniku postane niska. Također možete provjeriti ovaj jednostavni krug indikatora razine vode za jednostavniju verziju ovog projekta.
Komponente
- Arduino Uno
- Modul ultrazvučnog senzora
- LCD 16x2
- Relej 6 Volt
- ULN2003
- 7806
- PVT
- Bakrene žice
- 9-voltna baterija ili 12 Voltadaptor
- Spajanje žica
Modul ultrazvučnog senzora

Ultrazvučni senzor HC-SR04 koristi se za mjerenje udaljenosti u rasponu od 2 cm do 400 cm s točnošću od 3 mm. Modul senzora sastoji se od ultrazvučnog odašiljača, prijamnika i upravljačkog kruga.

Modul ultrazvučnog senzora radi na prirodnom fenomenu zvuka ECHO. Za pokretanje modula šalje se impuls oko 10us. Nakon čega modul automatski šalje 8 ciklusa ultrazvučnog signala od 40 KHz i provjerava njegov odjek. Signal se nakon udara preprekom vraća natrag i primatelj prima. Tako se udaljenost prepreke od senzora jednostavno izračunava prema formuli danoj kao
Udaljenost = (vrijeme x brzina) / 2.
Ovdje smo umnožak brzine i vremena podijelili s 2 jer je vrijeme ukupno vrijeme potrebno za dosezanje prepreke i povratak natrag. Stoga je vrijeme za dosezanje prepreke samo polovica ukupnog vremena koje je potrebno.
Rad automatskog regulatora razine vode
Rad na ovom projektu je vrlo jednostavan, koristili smo ultrazvučni senzorski modul koji šalje zvučne valove u spremnik za vodu i otkriva refleksiju zvučnih valova koji je ECHO. Prije svega moramo pokrenuti modul ultrazvučnog senzora za prijenos signala pomoću Arduina, a zatim pričekati da primimo ECHO. Arduino očitava vrijeme između aktiviranja i primanja ECHO-a. Znamo da je brzina zvuka oko 340 m / s. tako da možemo izračunati udaljenost pomoću dane formule:
Udaljenost = (vrijeme putovanja / 2) * brzina zvuka
Gdje je brzina zvuka približno 340 m u sekundi.
Korištenjem ovih metoda dobivamo udaljenost od senzora do vodene površine. Nakon nje moramo izračunati razinu vode.
Sada moramo izračunati ukupnu duljinu spremnika za vodu. Kako znamo duljinu spremnika za vodu, tada možemo izračunati razinu vode oduzimajući rezultirajuću udaljenost ultrazvuka od ukupne duljine spremnika. I dobit ćemo udaljenost razine vode. Sada možemo pretvoriti ovaj nivo vode u postotak vode i možemo ga prikazati na LCD-u. Rad kompletnog projekta pokazatelja razine vode prikazan je u donjem blok dijagramu.

Kružni dijagram i objašnjenje
Kao što je prikazano u donjem krugu regulatora razine vode, pinovi i okidači modula ultrazvučnog senzora izravno su povezani na pin 10 i 11 arduina. LCD 16x2 povezan je s arduinom u 4-bitnom načinu. Upravljački pin RS, RW i En izravno su povezani s arduino pinom 7, GND i 6. A podatkovni pin D4-D7 spojen je na 5, 4, 3 i 2 arduina, a zujalo je spojen na pin 12. 6-voltni relej je također spojen na pinu 8 arduina kroz ULN2003 za uključivanje ili isključivanje pumpe vodenog motora. Regulator napona 7805 također se koristi za pružanje 5 volta releju i preostalom krugu.

U ovom krugu ultrazvučni senzorski modul postavljen je na vrh kante (spremnik za vodu) za demonstraciju. Ovaj senzorski modul očitat će udaljenost između senzorskog modula i vodene površine, a na LCD zaslonu će se prikazati udaljenost s porukom "Prostor vode u spremniku je:". Znači da ovdje pokazujemo prazno mjesto udaljenosti ili zapremine vode umjesto razine vode. Zbog ove funkcionalnosti ovaj sustav možemo koristiti u bilo kojem spremniku vode. Kada razina prazne vode dosegne oko 30 cm, Arduino UKLJUČUJE pumpu za vodu pokretačkim relejem. A sada će se na LCD-u prikazati „NISKA razina vode“ „Motor je UKLJUČEN“, a LED status releja počet će svijetliti
Ako prazan prostor dosegne na udaljenosti od oko 12 cm, arduino ISKLJUČI relej i LCD će prikazati "Spremnik je pun", "Motor isključen". Zujalica će također neko vrijeme oglašavati zvuk i lampica statusa releja će se ugasiti.
Programiranje
Da bismo programirali Arduino za regulator razine vode, prvo definiramo sve igle koje ćemo koristiti u projektu za povezivanje vanjskih uređaja poput releja, LCD-a, zujalice itd.
#define okidač 10 #define echo 11 #define motor 8 #define zujalica 12
Zatim inicijaliziramo sve uređaje koji se koriste u projektu.
lcd.početak (16,2); pinMode (okidač, IZLAZ); pinMode (eho, INPUT); pinMode (motor, IZLAZ); pinMode (zujalica, IZLAZ); lcd.print ("Razina vode"); lcd.setCursor (0,1); lcd.print ("Indicator"); kašnjenje (2000);
Sada inicijalizirajte modul ultrazvučnog senzora i pročitajte vrijeme slanja i primanja ultrazvučnih valova ili zvuka pomoću pulseIn (pin). Zatim izvedite izračune i prikažite rezultat na LCD zaslonu 16x2 pomoću odgovarajućih funkcija.
digitalWrite (okidač, VISOKO); delayMicroseconds (10); digitalWrite (okidač, LOW); delayMicroseconds (2); vrijeme = pulseIn (eho, HIGH); udaljenost = vrijeme * 340/20000; lcd.clear (); lcd.print ("Prostor vode"); lcd.setCursor (0,1); lcd.print ("Spremnik je:"); lcd.print (udaljenost); lcd.print ("Cm");
Nakon toga provjeravamo uvjete je li spremnik za vodu pun ili je nivo vode NISAK, i prema tome poduzimamo mjere.
if (udaljenost <12 && temp == 0) {digitalWrite (motor, LOW); digitalWrite (zujalica, VISOKO); lcd.clear (); lcd.print ("Spremnik za vodu pun"); lcd.setCursor (0,1); lcd.print ("Motor isključen"); kašnjenje (2000); digitalWrite (zujalica, LOW); kašnjenje (3000); temp = 1; } else if (udaljenost <12 && temp == 1) {digitalWrite (motor, LOW); lcd.clear (); lcd.print ("Spremnik za vodu pun"); lcd.setCursor (0,1); lcd.print ("Motor isključen"); kašnjenje (5000); }
