- Komponenty
- Ultrazvukový senzorový modul
- Práca s automatickým regulátorom hladiny vody
- Schéma zapojenia a vysvetlenie
- Programovanie
V tomto automatickom projekte indikátora a radiča založenom na Arduine budeme merať hladinu vody pomocou ultrazvukových senzorov. Základný princíp ultrazvukového merania vzdialenosti je založený na ECHO. Keď sa zvukové vlny prenášajú v prostredí, potom sa po náraze na prekážku vrátia späť do pôvodného stavu ako ECHO. Musíme teda vypočítať iba jeho cestovný čas oboch zvukov, čo znamená odchádzajúci čas a čas návratu do pôvodného stavu po náraze na akúkoľvek prekážku. A po nejakom výpočte môžeme získať výsledok, ktorým je vzdialenosť. Tento koncept sa používa v našom projekte regulátora vody, kde sa čerpadlo vodného motora automaticky zapne, keď hladina vody v nádrži klesne. Môžete tiež skontrolovať tento jednoduchý obvod indikátora hladiny vody, aby ste našli jednoduchšiu verziu tohto projektu.
Komponenty
- Arduino Uno
- Modul ultrazvukového snímača
- 16x2 LCD
- Relé 6 voltov
- ULN2003
- 7806
- PVT
- Medený drôt
- 9 voltová batéria alebo 12 voltový adaptér
- Pripojovacie vodiče
Ultrazvukový senzorový modul
Ultrazvukový senzor HC-SR04 sa používa na meranie vzdialenosti v rozmedzí 2 cm - 400 cm s presnosťou 3 mm. Modul snímača sa skladá z ultrazvukového vysielača, prijímača a riadiaceho obvodu.
Modul ultrazvukového snímača pracuje na prirodzenom jave ECHO zvuku. Na spustenie modulu sa vyšle impulz približne 10 sekúnd. Potom modul automaticky pošle 8 cyklov ultrazvukového signálu 40 KHz a skontroluje jeho ozvenu. Signál po náraze do prekážky sa vracia späť a prijímač ho zachytí. Vzdialenosť prekážky od snímača sa teda jednoducho vypočíta podľa vzorca uvedeného ako
Vzdialenosť = (čas x rýchlosť) / 2.
Tu sme rozdelili súčin rýchlosti a času o 2, pretože čas je celkový čas, ktorý trvalo dosiahnutie prekážky a návrat späť. Čas potrebný na dosiahnutie prekážky je teda iba polovičný oproti celkovému času.
Práca s automatickým regulátorom hladiny vody
Práca na tomto projekte je veľmi jednoduchá, použili sme modul ultrazvukového senzora, ktorý vysiela zvukové vlny vo vodnej nádrži a detekuje odraz zvukových vĺn, ktorý je ECHO. Najskôr musíme spustiť modul ultrazvukového snímača tak, aby prenášal signál pomocou Arduina, a potom čakať na príjem ECHO. Arduino číta čas medzi spustením a prijatím ECHO. Vieme, že rýchlosť zvuku je okolo 340 m / s. takže môžeme vypočítať vzdialenosť pomocou uvedeného vzorca:
Vzdialenosť = (doba jazdy / 2) * rýchlosť zvuku
Rýchlosť zvuku je približne 340 metrov za sekundu.
Použitím tejto metódy dostaneme vzdialenosť od senzora k vodnej hladine. Potom musíme vypočítať hladinu vody.
Teraz musíme vypočítať celkovú dĺžku nádrže na vodu. Ako vieme dĺžku nádrže na vodu, môžeme hladinu vody vypočítať tak, že od celkovej dĺžky nádrže odčítame výslednú vzdialenosť pochádzajúcu z ultrazvuku. A dostaneme vzdialenosť od hladiny vody. Teraz môžeme túto hladinu vody prepočítať na percentá vody a zobraziť ju na LCD displeji. Fungovanie celého projektu ukazovateľa hladiny vody je zobrazené v blokovej schéme nižšie.
Schéma zapojenia a vysvetlenie
Ako je znázornené v nižšie uvedenom obvode regulátora hladiny vody, kolíky „spúšťacieho“ a „echo“ modulu ultrazvukového snímača sú priamo spojené s pinmi 10 a 11 arduina. Displej 16x2 LCD je pripojený k arduino v 4-bitovom režime. Ovládací pin RS, RW a En sú priamo pripojené k pinu arduino 7, GND a 6. A dátový pin D4-D7 je pripojený k 5, 4, 3 a 2 arduino a bzučiak je pripojený na pin 12. 6 voltové relé je tiež pripojený na pin 8 arduina cez ULN2003 na zapnutie alebo vypnutie čerpadla vodného motora. Regulátor napätia 7805 sa tiež používa na napájanie 5 voltov do relé a do zvyšného obvodu.
V tomto okruhu je na demonštráciu umiestnený modul ultrazvukového snímača v hornej časti vedra (nádrž na vodu). Tento senzorový modul prečíta vzdialenosť medzi senzorovým modulom a vodnou hladinou a na LCD obrazovke zobrazí vzdialenosť „Water Space in Tank is:“. Znamená to, že tu namiesto hladiny vody ukazujeme prázdne miesto vzdialenosti alebo objemu vody. Vďaka tejto funkcii môžeme tento systém používať v akejkoľvek nádrži na vodu. Keď hladina prázdnej vody dosiahne vo vzdialenosti asi 30 cm, Arduino zapne vodné čerpadlo ovládaním relé. A teraz LCD zobrazí „LOW Water Level“ „Motor ON ON“ a LED stavu relé začne svietiť
Teraz, ak prázdny priestor dosiahne vo vzdialenosti asi 12 cm arduino, vypne relé a na displeji LCD sa zobrazí „Tank je plný“ „Motor je vypnutý“. Bzučiak tiež istý čas pípne a LED stav relé zhasne.
Programovanie
Ak chcete programovať Arduino pre regulátor hladiny vody, najskôr definujeme všetky piny, ktoré v projekte použijeme na prepojenie externých zariadení, ako sú relé, LCD, bzučiak atď.
#define trigger 10 #define echo 11 #define motor 8 #define bzučiak 12
Potom inicializujeme všetky zariadenia použité v projekte.
lcd.začiatok (16,2); pinMode (trigger, OUTPUT); pinMode (echo, INPUT); pinMode (motor, VÝSTUP); pinMode (bzučiak, VÝSTUP); lcd.print ("Hladina vody"); lcd.setCursor (0,1); lcd.print ("Indikátor"); meškanie (2000);
Teraz inicializujte modul ultrazvukového snímača a prečítajte si čas vysielania a prijímania ultrazvukových vĺn alebo zvuku pomocou pulseIn (pin). Potom vykonajte výpočty a pomocou vhodných funkcií zobrazte výsledok na 16x2 LCD.
digitalWrite (spúšťač, VYSOKÝ); delayMicroseconds (10); digitalWrite (trigger, LOW); delayMicroseconds (2); čas = pulseIn (echo, HIGH); vzdialenosť = čas * 340/20000; lcd.clear (); lcd.print ("Water Space In"); lcd.setCursor (0,1); lcd.print („Tank je:“); lcd.print (vzdialenosť); lcd.print ("Cm");
Potom skontrolujeme podmienky, či je nádrž na vodu plná alebo či je hladina vody NÍZKA, a vykonáme príslušné kroky.
if (vzdialenosť <12 && temp == 0) {digitalWrite (motor, LOW); digitalWrite (bzučiak, VYSOKÝ); lcd.clear (); lcd.print („Plná nádrž na vodu“); lcd.setCursor (0,1); lcd.print ("Motor je vypnutý"); meškanie (2000); digitalWrite (bzučiak, LOW); oneskorenie (3 000); teplota = 1; } else if (vzdialenosť <12 && temp == 1) {digitalWrite (motor, LOW); lcd.clear (); lcd.print („Plná nádrž na vodu“); lcd.setCursor (0,1); lcd.print ("Motor je vypnutý"); oneskorenie (5 000); }