- Szükséges alkatrészek
- YFS201 vízáramlás-érzékelő
- Kördiagramm
- Arduino vízáramlás-érzékelő kód
- Arduino vízáramlás-érzékelő működik
Ha valaha is meglátogatta a nagyüzemi gyártókat, akkor az első dolog, amit észrevesz, hogy mindegyik automatizált. Az üdítőital-iparnak és a vegyiparnak folyamatosan mérnie és számszerűsítenie kell az automatizálási folyamat során kezelt folyadékokat, és a folyadék áramlásának mérésére használt leggyakoribb érzékelő egy áramlásérzékelő. Az Arduino-hoz hasonló mikrovezérlővel ellátott áramlásérzékelő segítségével kiszámíthatjuk az áramlási sebességet, ellenőrizhetjük a csövön áthaladt folyadék térfogatát, és szükség szerint szabályozhatjuk. A feldolgozóiparon kívül áramlásérzékelők találhatók a mezőgazdasági szektorban, az élelmiszer-feldolgozásban, a vízgazdálkodásban, a bányaiparban, a víz újrafeldolgozásában, a kávéfőzőkben stb. és intelligens öntözőrendszerek, ahol figyelnünk és ellenőriznünk kell a folyadékáramlást.
Ebben a projektben vízáramlás-érzékelőt fogunk építeni az Arduino segítségével. Összekapcsoljuk a vízáramlás-érzékelőt az Arduino-val és az LCD-vel, és beprogramozzuk a szelepen áthaladó vízmennyiség megjelenítésére. Ehhez a projekthez az YF-S201 vízáramlás-érzékelőt fogjuk használni, amely hall-effektust használ a folyadék áramlási sebességének érzékelésére.
Szükséges alkatrészek
- Vízáramlás-érzékelő
- Arduino UNO
- LCD (16x2)
- Csatlakozó belső menettel
- Csatlakozó vezetékek
- Pipa
YFS201 vízáramlás-érzékelő
Az érzékelőnek 3 vezetéke van VÖRÖS, SÁRGA és FEKETE, az alábbi ábrán látható módon. A piros vezetéket az 5V és 18V közötti tápfeszültségre használják, a fekete vezetéket pedig a GND-re csatlakoztatják. A sárga vezetéket használják a kimenethez (impulzusok), amelyeket az MCU leolvashat. A vízáramlás-érzékelő egy tengelykapcsoló-érzékelőből áll, amely méri a rajta áthaladó folyadék mennyiségét.
Az YFS201 vízáramlás-érzékelő működése egyszerűen érthető. A vízáramlás-érzékelő a csarnokhatás elvén működik. A Hall-effektus az elektromos vezető potenciálkülönbségének előállítása, amikor a mágneses mező az áram áramlására merőleges irányban hat. A vízáramlás-érzékelő egy mágneses csarnokhatás-érzékelővel van integrálva, amely minden fordulatnál elektromos impulzust generál. Kialakítása olyan, hogy a csarnokhatás-érzékelő el van zárva a víztől, és lehetővé teszi, hogy az érzékelő biztonságos és száraz maradjon.
Csak az YFS201 érzékelőmodul képe látható.
A cső és a vízáramlás-érzékelőhöz való csatlakozáshoz két csatlakozót használtam belső menettel, az alábbiak szerint.
Az YFS201 specifikációk szerint a maximális áram, amelyet 5 V-nál felvesz, 15mA, és a munkaáram 1-30 liter / perc. Amikor a folyadék átfolyik az érzékelőn, kapcsolatba kerül a turbina kerék bordáival, amely az áramló folyadék útjába kerül. A turbinakerék tengelye egy csarnokhatás-érzékelőhöz csatlakozik. Emiatt, amikor a víz átfolyik a szelepen, impulzusokat generál. Most már csak annyit kell tennünk, hogy lemérjük a pluszok idejét, vagy 1 másodperc alatt megszámoljuk az impulzusok számát, majd kiszámoljuk az áramlási sebességet literenként óránként (L / Hr), majd egyszerű konverziós képlettel használjuk a térfogat megtalálását. a rajta áthaladó víz mennyisége. Az impulzusok mérésére az Arduino UNO-t fogjuk használni. Az alábbi képen látható a vízáramlás-érzékelő kihúzása.
Kördiagramm
Az alábbiakban látható a vízáramlás-érzékelő kapcsolási rajza, amely összeköti a vízáramlás-érzékelőt és az LCD-t (16x2) az Arduino-val. Ha még nem ismeri az Arduino és az LCD-ket, fontolja meg az Interfacing Arduino és LCD cikk elolvasását.
A vízáramlás-érzékelő és az LCD (16x2) és az Arduino összekapcsolását az alábbiakban táblázatos formában adjuk meg. Ne feledje, hogy a fazék 5 V és GND közé van csatlakoztatva, a fazék 2 csapja pedig az LCD V0 tűjéhez van csatlakoztatva.
S.NO |
Vízáramlás-érzékelő csap |
Arduino Pins |
1 |
Piros drót |
5V |
2 |
Fekete |
GND |
3 |
Sárga |
A0 |
S.No |
LCD |
Arduino |
1 |
Vss |
GND (kenyérlemez földsínje) |
2 |
VDD |
5V (a kenyérlap pozitív sínje) |
3 |
A V0 csatlakozásához ellenőrizze a fenti megjegyzést |
|
4 |
RS |
12. |
5. |
RW |
GND |
6. |
E |
11. |
7 |
D7 |
9. |
8. |
D6-D3 |
3–5 |
Kenyérlapot használtam, és miután a kapcsolat a fent bemutatott kapcsolási rajz szerint megtörtént, a tesztelési beállításom valami ilyennek tűnt.
Arduino vízáramlás-érzékelő kód
A teljes vízáramlás-érzékelő Arduino kódja az oldal alján található. A kód magyarázata a következő.
Az LCD fejlécfájlját használjuk, amely megkönnyíti az LCD és az Arduino összekapcsolását, és a 12,11,5,4,3,9 érintkezőket az LCD és az Arduino közötti adatátvitelre szánjuk. Az érzékelő kimeneti csatlakozója az Arduino UNO 2. tűjéhez csatlakozik.
volatile int flow_frequency; // Az áramlásérzékelő impulzusait méri // Számított liter / óra úszó térfogat = 0,0, l_perc; előjel nélküli char flowensor = 2; // Érzékelő bemenete előjel nélküli hosszú currentTime; aláíratlan hosszú cloopTime; #include
Ez a funkció egy megszakítási szolgáltatás rutin, és ezt akkor hívják meg, amikor megszakítási jel van az Arduino UNO 2-es érintkezõjénél. Minden megszakítási jelnél a flow_frequency változó száma 1-gyel növekszik. A megszakításokkal és azok működésével kapcsolatos további részletekért olvassa el ezt a cikket az Arduino megszakításokról.
void flow () // Interrupt függvény { flow_frequency ++; }
A void beállításban elmondjuk az MCU-nak, hogy az Arduino UNO 2. tűjét INPUT-ként használják a pinMode (pin, OUTPUT) parancs megadásával. Az attachInterrupt parancs használatával, amikor a 2. tűnél nő a jel, az áramlási függvény meghívásra kerül. Ez 1-vel növeli a flow_frequency változó számát. Az aktuális időt és a cloopTime értéket használják arra, hogy a kód 1 másodpercenként fusson.
void setup () { pinMode (folyamérzékelő, INPUT); digitalWrite (folyamérzékelő, HIGH); Soros kezdet (9600); lcdbegin (16, 2); attachInterrupt (digitalPinToInterrupt (flow-érzékelő), flow, RISING); // Beállítás megszakítása lcd.clear (); lcd.setCursor (0,0); lcd.print ("Víz áramlásmérő"); lcd.setCursor (0,1); lcd.print ("Circuit Digest"); currentTime = millis (); cloopTime = currentTime; }
Az if függvény biztosítja, hogy minden másodpercben a benne lévő kód fusson. Ily módon megszámlálhatjuk a vízáramlás-érzékelő által másodpercenként létrehozott frekvenciák számát. Az adatlapon szereplő áramlási sebesség impulzus-jellemzői megadják, hogy a frekvencia 7,5 szorozva az áramlási sebességgel. Tehát az áramlási sebesség frekvencia / 7,5. Miután megtalálta az liter / perc áramlási sebességet, ossza el 60-val, hogy liter / sec-ra alakítsa. Ez az érték másodpercenként hozzáadódik a vol változóhoz.
void loop () { currentTime = millis (); // Minden másodpercben számítsa ki és nyomtassa ki az liter / órát, ha (currentTime> = (cloopTime + 1000)) { cloopTime = currentTime; // A cloopTime frissítése if (flow_frequency! = 0) { // Impulzus frekvencia (Hz) = 7.5Q, Q az áramlási sebesség L / min-ben. l_perc = (áramlási frekvencia / 7,5); // (impulzus frekvencia x 60 perc) / 7,5Q = áramlási sebesség L / órában lcd.clear (); lcd.setCursor (0,0); lcd.print ("Rate:"); lcd.print (l_perc); lcd.print ("L / M"); l_perc = l_perc / 60; lcd.setCursor (0,1); vol = vol + l_perc; lcd.print ("Vol:"); lcd.print (vol); lcd.print ("L"); áramlási frekvencia = 0; // Visszaállítja a számláló sorszámát. Nyomtatás (l_perc, DEC); // liter / óra nyomtatás Serial.println ("L / Sec"); }
A másik funkció akkor működik, ha a vízáramlás-érzékelőből nincs kimenet a megadott időtartamon belül.
else { lcd.clear (); lcd.setCursor (0,0); lcd.print ("Rate:"); lcd.print (flow_frekvencia); lcd.print ("L / M"); lcd.setCursor (0,1); lcd.print ("Vol:"); lcd.print (vol); lcd.print ("L"); }
Arduino vízáramlás-érzékelő működik
Projektünkben a vízáramlás-érzékelőt egy csőhöz csatlakoztattuk. Ha a cső kimeneti szelepe zárva van, a vízáramlás-érzékelő kimenete nulla (Nincs impulzus). Az Arduino 2-es érintkezőjén nem lesz megszakítási jel, és a flow_frequency száma nulla lesz. Ebben az állapotban az a kód, amelyet az else ciklusba írtak, működni fog.
Ha a cső kimeneti szelepe nyitva van. A víz átfolyik az érzékelőn, amely viszont elforgatja a kereket az érzékelő belsejében. Ebben az állapotban megfigyelhetünk impulzusokat, amelyeket az érzékelő generál. Ezek az impulzusok megszakító jelként fognak működni az Arduino UNO felé. Minden megszakítási jelnél (emelkedő él) az flow_frequency változó száma eggyel növekszik. Az aktuális idő és a cloopTIme változó biztosítja, hogy minden másodpercenként az áramlási frekvencia értékét vegyék figyelembe az áramlási sebesség és a térfogat kiszámításához. A számítás befejezése után a flow_frequency változót nullára állítjuk, és az egész eljárást elölről kezdjük.
A teljes munka megtalálható az oldal alján linkelt videóban is. Remélem, tetszett az oktatóanyag és valami hasznos dolog. Ha bármilyen problémája van, kérjük, hagyja őket a megjegyzés részben, vagy más technikai kérdésekhez használja fórumunkat.