- Alkatrészek
- Ultrahangos érzékelő modul
- Az automatikus vízszint-szabályozó működése
- Áramkör diagram és magyarázat
- Programozás
Ebben az Arduino alapú automatikus vízszintjelző és szabályozó projektben ultrahangos érzékelők segítségével fogjuk mérni a vízszintet. Az ultrahangos távolságmérés alapelve az ECHO-n alapul. Amikor a hanghullámok átkerülnek a környezetbe, akkor visszatérnek az origóhoz ECHO-ként, miután bármilyen akadályra ütköztek. Tehát csak azt kell kiszámítanunk, hogy mindkét hang azt jelenti, hogy kimenő és visszatérő idő származik, miután bármilyen akadályba ütközött. Némi számítás után pedig olyan eredményt kaphatunk, amely a távolság. Ezt a koncepciót alkalmazzák vízszabályozó projektünkben, ahol a vízmotor szivattyúja automatikusan bekapcsol, ha a tartályban a vízszint alacsony lesz. Ezt az egyszerű vízszint-jelző áramkört is ellenőrizheti a projekt egyszerűbb változatához.
Alkatrészek
- Arduino Uno
- Ultrahangos érzékelő modul
- 16x2 LCD
- Relé 6 Volt
- ULN2003
- 7806
- PVT
- Rézdrót
- 9 voltos akkumulátor vagy 12 voltos adapter
- Csatlakozó vezetékek
Ultrahangos érzékelő modul
A HC-SR04 ultrahangos érzékelőt a 2–400 cm közötti távolság 3 mm pontossággal történő mérésére használják. Az érzékelő modul ultrahangos adóból, vevőből és a vezérlő áramkörből áll.
Az ultrahangos érzékelő modul az ECHO hang természetes jelenségén dolgozik. Körülbelül 10 us impulzus érkezik a modul elindításához. Ezt követően a modul 8 ciklust küld 40 KHz-es ultrahangjelből, és ellenőrzi annak visszhangját. Az akadálytalanság után a jel visszatér, és a vevő rögzíti. Így az akadály távolságát az érzékelőtől egyszerűen a következő képlettel számoljuk ki
Távolság = (idő x sebesség) / 2.
Itt a sebesség és az idő szorzatát elosztottuk 2-vel, mert az idő az akadály teljes eléréséhez és a visszatéréshez szükséges összes idő. Így az akadály elérésének ideje csak a teljes idő fele.
Az automatikus vízszint-szabályozó működése
Ennek a projektnek a kidolgozása nagyon egyszerű. Olyan ultrahangos érzékelő modult használtunk, amely elküldi a víztartályban lévő hanghullámokat, és érzékeli a hanghullámok reflexióját, amely ECHO. Először is be kell indítanunk az ultrahangos érzékelő modult a jel átvitelére az Arduino használatával, majd várnunk kell az ECHO fogadására. Arduino leolvassa az ECHO kiváltása és fogadása közötti időt. Tudjuk, hogy a hangsebesség 340 m / s körül mozog. így a megadott képlet segítségével kiszámíthatjuk a távolságot:
Távolság = (utazási idő / 2) * hangsebesség
Ahol a hangsebesség kb. 340 m / s.
Ezen módszerek segítségével megkapjuk a távolságot az érzékelőtől a vízfelületig. Utána ki kell számolnunk a vízszintet.
Most ki kell számolnunk a víztartály teljes hosszát. Mivel tudjuk a víztartály hosszát, akkor kiszámíthatjuk a vízszintet úgy, hogy kivonjuk az ultrahangból származó eredő távolságot a tartály teljes hosszából. És megkapjuk a vízszint távolságot. Most ezt a vízszintet átválthatjuk a víz százalékára, és megjeleníthetjük az LCD-n. A teljes vízszint-mutató projekt működését az alábbi blokkvázlat mutatja.
Áramkör diagram és magyarázat
Amint az az alábbiakban megadott vízszintszabályozó áramkörben látható, az ultrahangos érzékelő modul „trigger” és „echo” csapjai közvetlenül csatlakoznak az arduino 10. és 11. érintkezőjéhez. Egy 16x2-es LCD-t 4-bites módban csatlakoztatnak az arduino-hoz. Az RS, RW és En vezérlőcsapok közvetlenül csatlakoznak a 7, GND és 6 arduino csapokhoz. A D4-D7 adatcsatlakozó pedig az arduino 5, 4, 3 és 2, a zümmögő pedig a 12. érintkezőhöz van csatlakoztatva. 6 voltos relé az arduino 8. lábánál is csatlakozik az ULN2003- on keresztül a vízmotor- szivattyú be- vagy kikapcsolásához. A 7805 feszültségszabályozót 5 V-os relé és a fennmaradó áramkör biztosítására is használják.
Ebben az áramkörben az ultrahangos érzékelőmodult a vödör (víztartály) tetejére helyezzük bemutatás céljából. Ez az érzékelő modul leolvassa az érzékelő modul és a vízfelület közötti távolságot, és az LCD képernyőn a „Víztér a tartályban:” üzenetet mutatja. Ez azt jelenti, hogy a vízszint helyett a víz vagy a térfogat üres helyét mutatjuk be a víz számára. E funkció miatt bármilyen víztartályban használhatjuk ezt a rendszert. Amikor az üres vízszint eléri a kb. 30 cm távolságot, az Arduino relével hajtja be a vízszivattyút. Most az LCD kijelzőn az „ALACSONY VÍZszint” felirat jelenik meg, a „Motor be van kapcsolva” felirat, és a relé állapotjelző LED világítani kezd
Ha az üres hely körülbelül 12 cm-re éri el, az arduino kikapcsolja a relét, és az LCD-n a „Tank megtelik” és a „Kikapcsolt motor” felirat jelenik meg. A hangjelző egy ideig sípol, és a relé állapotjelző LED kialszik.
Programozás
Az Arduino programozásához vízszintszabályozóhoz először meg kell határoznunk az összes csapot, amelyet a projektben külső eszközök, például relé, LCD, hangjelző stb. Összekapcsolására fogunk használni.
#define trigger 10 #define echo 11 #define motor 8 #define 12
Ezután inicializáljuk a projektben használt összes eszközt.
lcdbegin (16,2); pinMode (trigger, OUTPUT); pinMode (visszhang, INPUT); pinMode (motor, OUTPUT); pinMode (hangjelző, OUTPUT); lcd.print ("Vízszint"); lcd.setCursor (0,1); lcd.print ("indikátor"); késés (2000);
Most inicializálja az ultrahangos érzékelő modult, és olvassa el az ultrahangos hullámok vagy a hang küldésének és fogadásának idejét a pulseIn (tű) segítségével. Ezután hajtsa végre a számításokat, és a megfelelő funkciók használatával jelenítse meg az eredményt a 16x2 LCD-n.
digitalWrite (trigger, HIGH); késleltetés mikroszekundum (10); digitalWrite (trigger, LOW); késleltetés mikroszekundum (2); idő = impulzusIn (visszhang, HIGH); távolság = idő * 340/20000; lcd.clear (); lcd.print ("Víztér be"); lcd.setCursor (0,1); lcd.print ("A tartály:"); lcd.print (távolság); lcd.print ("Cm");
Utána ellenőrizzük a feltételeket, hogy a víztartály tele van-e, vagy alacsony-e a vízszint, és ennek megfelelően cselekszünk.
if (távolság <12 && temp == 0) {digitalWrite (motor, LOW); digitalWrite (hangjelző, HIGH); lcd.clear (); lcd.print ("Teljes víztartály"); lcd.setCursor (0,1); lcd.print ("Kikapcsolt motor"); késés (2000); digitalWrite (hangjelző, LOW); késés (3000); hőmérséklet = 1; } else if (távolság <12 && temp == 1) {digitalWrite (motor, LOW); lcd.clear (); lcd.print ("Teljes víztartály"); lcd.setCursor (0,1); lcd.print ("Kikapcsolt motor"); késés (5000); }