- Potrebne komponente
- YFS201 Senzor pretoka vode
- Shema vezja
- Koda senzorja pretoka vode Arduino
- Arduino senzor pretoka vode deluje
Če ste že kdaj obiskali obsežna proizvodna podjetja, boste najprej opazili, da so vsa avtomatizirana. Industrije brezalkoholnih pijač in kemična industrija morajo nenehno meriti in kvantificirati tekočine, s katerimi ravnajo med tem postopkom avtomatizacije, najpogostejši senzor za merjenje pretoka tekočine pa je senzor pretoka. Z uporabo senzorja pretoka z mikrokrmilnikom, kot je Arduino, lahko izračunamo pretok, preverimo količino tekočine, ki je prešla skozi cev, in jo po potrebi nadzorujemo. Poleg predelovalne industrije lahko senzorje pretoka najdemo tudi v kmetijstvu, predelavi hrane, gospodarjenju z vodo, rudarstvu, recikliranju vode, kavnih aparatih itd. Poleg tega bo senzor pretoka vode dober dodatek projektom, kot je samodejni razdeljevalnik vode in pametni namakalni sistemi, kjer moramo spremljati in nadzorovati pretok tekočin.
V tem projektu bomo zgradili senzor pretoka vode z uporabo Arduina. Senzor pretoka vode bomo povezali z Arduino in LCD ter ga programirali tako, da prikaže količino vode, ki je prešla skozi ventil. Za ta posebni projekt bomo uporabili senzor pretoka vode YF-S201, ki s pomočjo Hallovega učinka zazna pretok tekočine.
Potrebne komponente
- Senzor pretoka vode
- Arduino UNO
- LCD (16x2)
- Konektor z notranjim navojem
- Priključne žice
- Cev
YFS201 Senzor pretoka vode
Senzor ima 3 žice RDEČO, RUMENO in ČRNO, kot je prikazano na spodnji sliki. Rdeča žica se uporablja za napajalno napetost, ki se giblje od 5V do 18V, črna žica pa je priključena na GND. Rumena žica se uporablja za izhod (impulze), ki jih lahko odčita MCU. Senzor pretoka vode je sestavljen iz senzorja z vrtljajem, ki meri količino tekočine, ki je šla skozi njega.
Delovanje senzorja pretoka vode YFS201 je enostavno razumeti. Senzor pretoka vode deluje po principu Hallovega učinka. Hallov učinek je ustvarjanje potencialne razlike v električnem vodniku, kadar magnetno polje deluje v smeri, pravokotni na smer toka toka. Senzor pretoka vode je integriran z magnetnim senzorjem Hall Hall, ki z vsakim vrtljajem ustvari električni impulz. Njegova zasnova je takšna, da je senzor Hall-ovega učinka zaprt pred vodo in omogoča, da senzor ostane varen in suh.
Slika samo senzorskega modula YFS201 je prikazana spodaj.
Za povezavo s cevjo in senzorjem pretoka vode sem uporabil dva konektorja z notranjim navojem, kot je prikazano spodaj.
V skladu s specifikacijami YFS201 je največji tok, ki ga porabi pri 5V, 15mA, delovni pretok pa od 1 do 30 litrov / minuto. Ko tekočina teče skozi senzor, pride v stik z rebri turbinskega kolesa, ki je postavljeno na pot tekoče tekočine. Gred turbinskega kolesa je povezana s senzorjem Hall-ovega učinka. Zaradi tega, kadar voda teče skozi ventil, ustvarja impulze. Zdaj moramo le izmeriti čas za pluse ali prešteti število impulzov v 1 sekundi, nato izračunati pretoke v litrih na uro (L / Hr) in nato s pomočjo preproste pretvorbene formule najti prostornino vode, ki je šla skozi to. Za merjenje impulzov bomo uporabili Arduino UNO. Spodnja slika prikazuje izhod senzorja pretoka vode.
Shema vezja
Shema vezja senzorja pretoka vode je prikazana spodaj, da poveže senzor pretoka vode in LCD (16x2) z Arduino. Če še niste seznanjeni z Arduinom in LCD-ji, lahko preberete ta članek o povezovanju Arduino in LCD-jev.
Povezava senzorja pretoka vode in LCD (16x2) z Arduinom je podana spodaj v obliki tabele. Upoštevajte, da je lonec priključen med 5V in GND, zatič lonca 2 pa je povezan z zatičem V0 na LCD-ju.
S.NO |
Zatič senzorja pretoka vode |
Arduino zatiči |
1. |
Rdeča žica |
5V |
2. |
Črna |
GND |
3. |
Rumena |
A0 |
S. Št |
LCD |
Arduino |
1. |
Vss |
GND (talna tirnica iz plošče) |
2. |
VDD |
5V (pozitivna tirnica plošče) |
3. |
Za povezavo z V0 preverite zgornjo opombo |
|
4. |
RS |
12. |
5. |
RW |
GND |
6. |
E |
11. |
7. |
D7 |
9. |
8. |
D6 do D3 |
3 do 5 |
Uporabil sem ploščo in ko je bila povezava izvedena v skladu z zgornjim diagramom, je bila moja preizkusna postavitev videti nekako tako.
Koda senzorja pretoka vode Arduino
Na dnu strani je navedena celotna koda Arduino senzorja pretoka vode. Razlaga kode je naslednja.
Uporabljamo glavo datoteke LCD, ki nam olajša povezovanje LCD-ja z Arduinom, zatiči 12,11,5,4,3,9 pa so namenjeni za prenos podatkov med LCD-jem in Arduinom. Izhodni zatič senzorja je povezan z zatičem 2 Arduino UNO.
hlapna int_frekvenca_toka; // Merjenje impulzov senzorja pretoka // Izračunani litri / ura gibanja vol = 0,0, l_minut; nepodpisani senzor pretoka znaka = 2; // Vhod senzorja unsigned long currentTime; nepodpisan dolg cloopTime; #include
Ta funkcija je prekinitvena rutina in se bo poklicala, kadar bo na pin2 Arduino UNO prisoten signal prekinitve. Za vsak signal prekinitve se bo število spremenljivke flow_frequency povečalo za 1. Za več podrobnosti o prekinitvah in njihovem delovanju lahko preberete ta članek o prekinitvah Arduino.
void flow () // Prekinitvena funkcija { flow_frequency ++; }
Pri nastavitvi praznine MCU sporočimo, da se zatič 2 Arduino UNO uporablja kot INPUT, tako da damo ukaz pinMode (pin, OUTPUT). Z uporabo ukaza attachInterrupt se vsakič, ko pride do dviga signala na zatiču 2, prikliče funkcija pretoka. To poveča število v spremenljivki flow_frequency za 1. Trenutni čas in cloopTime se uporabljata za izvajanje kode v vsaki 1 sekundi.
void setup () { pinMode (senzor pretoka, INPUT); digitalWrite (senzor pretoka, VISOK); Serial.begin (9600); lcd.begin (16, 2); attachInterrupt (digitalPinToInterrupt (senzor pretoka), flow, RISING); // Prekinitev nastavitve lcd.clear (); lcd.setCursor (0,0); lcd.print ("Merilnik pretoka vode"); lcd.setCursor (0,1); lcd.print ("Circuit Digest"); currentTime = milis (); cloopTime = currentTime; }
Funkcija if zagotavlja, da se vsaka sekunda koda znotraj nje izvaja. Na ta način lahko preštejemo število frekvenc, ki jih proizvaja senzor pretoka vode na sekundo. Karakteristike impulzov pretoka iz podatkovnega lista so podane tako, da je frekvenca 7,5 pomnožena s pretokom. Torej je pretok frekvenca / 7,5. Ko ugotovimo pretok v litrih / minuto, ga delimo s 60, da ga pretvorimo v liter / sek. Ta vrednost se doda spremenljivki vol za vsako sekundo.
void loop () { currentTime = milis (); // Vsako sekundo izračunamo in natisnemo litre / uro, če (currentTime> = (cloopTime + 1000)) { cloopTime = currentTime; // Posodobi cloopTime, če (frekvenca_toka! = 0) { // Frekvenca impulzov (Hz) = 7,5Q, Q je pretok v L / min. l_minute = (frekvenca_toka / 7,5); // (frekvenca impulzov x 60 min) / 7,5Q = pretok v L / uro lcd.clear (); lcd.setCursor (0,0); lcd.print ("Stopnja:"); lcd.print (l_minute); lcd.print ("L / M"); l_minute = l_minute / 60; lcd.setCursor (0,1); vol = vol + l_minute; lcd.print ("Vol:"); lcd.print (vol); lcd.print ("L"); frekvenca_toka = 0; // Ponastavi števec Serial.print (l_minute, DEC); // Natisni litre / uro Serial.println ("L / Sec"); }
Funkcija else deluje, če senzor pretoka vode v danem časovnem obdobju ne odda.
else { lcd.clear (); lcd.setCursor (0,0); lcd.print ("Stopnja:"); lcd.print (frekvenca_toka); lcd.print ("L / M"); lcd.setCursor (0,1); lcd.print ("Vol:"); lcd.print (vol); lcd.print ("L"); }
Arduino senzor pretoka vode deluje
V našem projektu smo na cev priključili senzor pretoka vode. Če je izhodni ventil cevi zaprt, je izhod senzorja pretoka vode enak nič (brez impulzov). Na zatiču 2 Arduina ne bo nobenega prekinitvenega signala, število pretokov_frekvenc pa bo nič. V tem stanju bo delovala koda, napisana znotraj zanke else.
Če je izhodni ventil cevi odprt. Voda teče skozi senzor, ki nato zavrti kolo znotraj senzorja. V tem stanju lahko opazujemo impulze, ki jih generira senzor. Ti impulzi bodo delovali kot prekinitveni signal za Arduino UNO. Za vsak signal prekinitve (naraščajoči rob) se bo število spremenljivke pretok_frekvenca povečalo za eno. Trenutni čas in spremenljivka cloopTIme zagotavljata, da se za izračun pretoka in prostornine vsako sekundo vzame vrednost frekvence_toka. Po končanem izračunu je spremenljivka flow_frequency nastavljena na nič in celoten postopek se začne od začetka.
Celotno delo najdete tudi v videoposnetku na dnu te strani. Upam, da vam je bila vadnica všeč in ste imeli kaj koristnega. Če imate kakršne koli težave, jih pustite v oddelku za komentarje ali uporabite tehnična vprašanja na naših forumih.