- Komponente
- Ultrazvočni senzorski modul
- Delovanje avtomatskega regulatorja nivoja vode
- Shema vezja in razlaga
- Programiranje
V tem projektu samodejnega indikatorja nivoja vode in krmilnika, ki temelji na Arduinu, bomo izmerili nivo vode z uporabo ultrazvočnih senzorjev. Osnovno načelo ultrazvočnega merjenja razdalje temelji na ECHO. Ko se zvočni valovi prenašajo v okolje, se po naletu na katero koli oviro vrnejo nazaj v izvor kot ECHO. Torej moramo izračunati čas potovanja obeh zvokov, ki pomeni čas odhoda in čas vračanja v izvor po udarcu na katero koli oviro. In po nekaj izračunih lahko dobimo rezultat, ki je razdalja. Ta koncept se uporablja v našem projektu vodnega krmilnika, kjer se vodna motorna črpalka samodejno vklopi, ko nivo vode v rezervoarju postane nizek. Za preprostejšo različico tega projekta lahko preverite tudi to preprosto vezje kazalnika nivoja vode.
Komponente
- Arduino Uno
- Modul ultrazvočnega senzorja
- 16x2 LCD
- Rele 6 Volt
- ULN2003
- 7806
- PVT
- Bakrena žica
- 9-voltna baterija ali 12 Voltadaptor
- Priključne žice
Ultrazvočni senzorski modul
Ultrazvočni senzor HC-SR04 se uporablja za merjenje razdalje med 2 in 400 cm z natančnostjo 3 mm. Senzorski modul je sestavljen iz ultrazvočnega oddajnika, sprejemnika in krmilnega vezja.
Modul ultrazvočnega senzorja deluje na naravni pojav ECHO zvoka. Za sprožitev modula se za približno 10us pošlje impulz. Nato modul samodejno pošlje 8 ciklov 40 KHz ultrazvočnega signala in preveri njegov odmev. Signal po udarcu z oviro se vrne nazaj in ga zajame sprejemnik. Tako se razdalja ovire od senzorja preprosto izračuna po formuli, podani kot
Razdalja = (čas x hitrost) / 2.
Tu smo zmnožek hitrosti in časa razdelili na 2, saj je čas skupni čas, potreben za dosego ovire in vrnitev nazaj. Tako je čas za dosego ovire le polovica celotnega porabljenega časa.
Delovanje avtomatskega regulatorja nivoja vode
Delo tega projekta je zelo preprosto. Uporabili smo ultrazvočni senzorski modul, ki pošilja zvočne valove v rezervoar za vodo in zaznava odsev zvočnih valov, ki je ECHO. Najprej moramo sprožiti modul ultrazvočnega senzorja za prenos signala z uporabo Arduina in nato počakati na sprejem ECHO. Arduino bere čas med sprožitvijo in prejetim ECHO. Vemo, da je hitrost zvoka približno 340 m / s. tako lahko izračunamo razdaljo z uporabo dane formule:
Razdalja = (čas potovanja / 2) * hitrost zvoka
Kjer je hitrost zvoka približno 340 m na sekundo.
Z uporabo teh metod dobimo razdaljo od senzorja do vodne površine. Po njej moramo izračunati nivo vode.
Zdaj moramo izračunati skupno dolžino rezervoarja za vodo. Ker poznamo dolžino rezervoarja za vodo, lahko vodostaj izračunamo tako, da od celotne dolžine rezervoarja odštejemo nastalo razdaljo ultrazvoka. In dobili bomo razdaljo do nivoja vode. Zdaj lahko pretvorimo nivo vode v odstotek vode in ga prikažemo na LCD-prikazovalniku. Delovanje celotnega projekta kazalnika nivoja vode je prikazano v spodnjem blokovnem diagramu.
Shema vezja in razlaga
Kot je prikazano v spodnjem vezju regulatorja nivoja vode, so zatiči "sprožilec" in "odmev" modula ultrazvočnega senzorja neposredno povezani na zatiči 10 in 11 arduina. LCD 16x2 je povezan z arduinom v 4-bitnem načinu. Krmilni zatiči RS, RW in En so neposredno povezani z arduino zatiči 7, GND in 6. In podatkovni zatič D4-D7 je povezan s 5, 4, 3 in 2 arduina, brenčalo pa je priključeno na zatič 12. 6-voltni rele je priključen tudi na zatiču 8 arduina skozi ULN2003 za vklop ali izklop črpalke vodnega motorja. Napetostni regulator 7805 se uporablja tudi za zagotavljanje 5 voltov na rele in preostali krog.
V tem vezju je ultrazvočni senzorski modul nameščen na vrhu vedra (rezervoar za vodo) za predstavitev. Ta senzorski modul odčita razdaljo med senzorskim modulom in vodno površino, razdaljo pa prikaže na LCD zaslonu s sporočilom »Vodni prostor v rezervoarju je:«. To pomeni, da tukaj prikazujemo prazno mesto razdalje ali prostornine za vodo namesto vodostaja. Zaradi te funkcionalnosti lahko ta sistem uporabljamo v vseh rezervoarjih za vodo. Ko nivo prazne vode doseže razdaljo približno 30 cm, Arduino vklopi vodno črpalko s pogonskim relejem. Zdaj se na LCD-prikazovalniku prikaže napis „LOW Water Level“ (Nizek nivo vode), „Motor ON ON“ (LED vklopljen) in lučka stanja releja bo začela sveteti
Zdaj, če prazen prostor doseže razdaljo približno 12 cm, arduino IZKLOPI rele in na LCD-prikazovalniku se izpiše "Rezervoar je poln" "Motor izklopljen". Nekaj časa se oglasi tudi zvočni signal in lučka stanja releja ugasne.
Programiranje
Za programiranje Arduina za regulator nivoja vode najprej določimo vse zatiče, ki jih bomo uporabili v projektu za povezovanje zunanjih naprav, kot so rele, LCD, brenčalo itd.
#define trigger 10 #define echo 11 #define motor 8 #define brenčalo 12
Nato inicializiramo vse naprave, uporabljene v projektu.
lcd.begin (16,2); pinMode (sprožilec, IZHOD); pinMode (echo, INPUT); pinMode (motor, IZHOD); pinMode (brenčalo, IZHOD); lcd.print ("nivo vode"); lcd.setCursor (0,1); lcd.print ("Indicator"); zamuda (2000);
Zdaj inicializirajte modul ultrazvočnega senzorja in preberite čas pošiljanja in sprejemanja ultrazvočnih valov ali zvoka z uporabo pulseIn (pin). Nato izvedite izračune in z ustreznimi funkcijami prikažite rezultat na LCD 16x2.
digitalWrite (sprožilec, VISOKO); delayMicroseconds (10); digitalWrite (sprožilec, LOW); delayMicroseconds (2); čas = pulseIn (odmev, VISOK); razdalja = čas * 340/20000; lcd.clear (); lcd.print ("Water Space In"); lcd.setCursor (0,1); lcd.print ("Rezervoar je:"); lcd.print (razdalja); lcd.print ("Cm");
Po njem preverimo pogoje, ali je rezervoar za vodo poln ali je nivo vode NIZK, in ustrezno ukrepamo.
if (razdalja <12 && temp == 0) {digitalWrite (motor, LOW); digitalWrite (brenčalo, VISOKO); lcd.clear (); lcd.print ("Rezervoar za vodo poln"); lcd.setCursor (0,1); lcd.print ("Motor izklopljen"); zamuda (2000); digitalWrite (brenčalo, LOW); zamuda (3000); temp = 1; } else if (razdalja <12 && temp == 1) {digitalWrite (motor, LOW); lcd.clear (); lcd.print ("Rezervoar za vodo poln"); lcd.setCursor (0,1); lcd.print ("Motor izklopljen"); zamuda (5000); }