- Komponente potrebne
- YFS201 Osjetnik protoka vode
- Kružni dijagram
- Arduino kod osjetnika protoka vode
- Arduino osjetnik protoka vode radi
Ako ste ikada posjetili velike proizvodne tvrtke, prvo što ćete primijetiti je da su sve automatizirane. Industrije bezalkoholnih pića i kemijska industrija moraju stalno mjeriti i kvantificirati tekućine s kojima rade tijekom ovog procesa automatizacije, a najčešći senzor koji se koristi za mjerenje protoka tekućine je senzor protoka. Korištenjem senzora protoka s mikrokontrolerom poput Arduina možemo izračunati brzinu protoka i provjeriti količinu tekućine koja je prošla kroz cijev i kontrolirati je prema potrebi. Osim u proizvodnoj industriji, senzori protoka mogu se naći i u poljoprivrednom sektoru, preradi hrane, gospodarenju vodom, rudarskoj industriji, recikliranju vode, aparatima za kavu itd. Nadalje, senzor protoka vode bit će dobar dodatak projektima poput Automatskog dozatora vode i pametni sustavi za navodnjavanje gdje moramo nadzirati i kontrolirati protok tekućina.
U ovom ćemo projektu izgraditi senzor protoka vode pomoću Arduina. Povezati ćemo senzor protoka vode s Arduinom i LCD-om i programirati ga tako da prikazuje količinu vode koja je prošla kroz ventil. Za ovaj određeni projekt upotrijebit ćemo YF-S201 senzor protoka vode, koji koristi Hallov efekt za određivanje protoka tekućine.
Komponente potrebne
- Osjetnik protoka vode
- Arduino UNO
- LCD (16x2)
- Konektor s unutarnjim navojem
- Spajanje žica
- Cijev
YFS201 Osjetnik protoka vode
Senzor ima 3 žice CRVENU, ŽUTU i CRNU, kao što je prikazano na donjoj slici. Crvena žica koristi se za napon napajanja koji se kreće od 5V do 18V, a crna žica je spojena na GND. Žuta žica koristi se za izlaz (impulsi), koji može očitati MCU. Osjetnik protoka vode sastoji se od senzora zupčanika koji mjeri količinu tekućine koja je prošla kroz njega.

Rad senzora protoka vode YFS201 jednostavan je za razumjeti. Osjetnik protoka vode radi na principu Hall efekta. Hallov efekt je stvaranje razlike potencijala u električnom vodiču kada se magnetsko polje primijeni u smjeru okomitom na tok protoka struje. Senzor protoka vode integriran je s magnetskim senzorom efekta Hall-a, koji generira električni impuls pri svakoj revoluciji. Njegov je dizajn na takav način da je senzor Hall efekta zatvoren od vode i omogućuje senzoru da ostane siguran i suh.
Slika samo modula osjetnika YFS201 prikazana je u nastavku.

Da bih se spojio s cijevi i senzorom protoka vode, koristio sam dva konektora s unutarnjim navojem kao što je prikazano dolje.

Prema YFS201 specifikacijama, maksimalna struja koju vuče pri 5V je 15mA, a radni protok je od 1 do 30 litara u minuti. Kad tekućina teče kroz senzor, on dolazi u kontakt s rebrima turbinskog kotača koji je postavljen na putu tekuće tekućine. Osovina turbinskog kotača povezana je s Hallovim senzorom učinka. Zbog toga, kad god voda teče kroz ventil, ona generira impulse. Sada sve što moramo učiniti je izmjeriti vrijeme za pluseve ili izbrojiti broj impulsa u jednoj sekundi, zatim izračunati brzine protoka u litri na sat (L / Hr), a zatim pomoću jednostavne formule za pretvorbu pronaći volumen vode koja je kroz njega prošla. Za mjerenje impulsa koristit ćemo Arduino UNO. Slika u nastavku prikazuje vam pinout osjetnika protoka vode.
Kružni dijagram
Shematski prikaz senzor protoka vode je prikazano u nastavku sučelje senzor protoka vode i LCD (16x2) s Težak. Ako ste novi u Arduinu i LCD-ima, možete razmisliti o čitanju ovog članka o povezivanju Arduina i LCD-a.

Veza senzora protoka vode i LCD-a (16x2) s Arduinom data je u nastavku u tabličnom formatu. Imajte na umu da je lonac spojen između 5V i GND, a pin 2 lonca povezan je s V0 pinom LCD-a.
|
S.NO |
Osigurač osjetnika protoka vode |
Arduino pribadače |
|
1 |
Crvena žica |
5V |
|
2 |
Crno |
GND |
|
3 |
Žuta boja |
A0 |
|
S.Br |
LCD |
Arduino |
|
1 |
Vss |
GND (uzemljena ploča od ploče) |
|
2 |
VDD |
5V (pozitivna šina ploče) |
|
3 |
Za vezu s V0 provjerite gornju napomenu |
|
|
4 |
RS |
12 |
|
5 |
RW |
GND |
|
6 |
E |
11 |
|
7 |
D7 |
9 |
|
8 |
D6 do D3 |
3 do 5 |
Koristio sam ploču za jedrenje, a nakon što je veza bila izvedena prema shemi shema prikazanoj gore, moja postavka za testiranje izgledala je otprilike ovako.

Arduino kod osjetnika protoka vode
Kompletna šifra Arduino osjetnika protoka vode data je na dnu stranice. Objašnjenje koda je sljedeće.
Koristimo zaglavnu datoteku LCD-a, koja nam olakšava povezivanje LCD-a s Arduinom, a igle 12,11,5,4,3,9 dodijeljene su za prijenos podataka između LCD-a i Arduina. Izlazni pin senzora spojen je na pin 2 Arduina UNO.
hlapljiv int protok_frekvencija; // Mjeri impulse osjetnika protoka // Izračunati litre / sat zaplata vol = 0,0, l_minute; nepotpisani senzor protoka znaka = 2; // Ulaz senzora unsigned long currentTime; nepotpisano dugo vrijeme zatvaranja; #include
Ova je funkcija rutina usluge prekida i ona će se pozivati svaki put kad se na pin2 Arduino UNO-a pojavi signal prekida. Za svaki signal prekida, broj varijable flow_frequency povećat će se za 1. Za više detalja o prekidima i njihovom radu možete pročitati ovaj članak o Arduino prekidima.
void flow () // Funkcija prekida { flow_frequency ++; }
U postavljanju praznine, MCU-u kažemo da se pin 2 Arduino UNO koristi kao INPUT davanjem naredbe pinMode (pin, OUTPUT). Korištenjem naredbe attachInterrupt, kad god dođe do porasta signala na pin 2, poziva se funkcija protoka. To povećava broj u varijabli flow_frequency za 1. Trenutno vrijeme i cloopTime koriste se da bi se kôd izvodio svake 1 sekunde.
void setup () { pinMode (senzor protoka, INPUT); digitalWrite (senzor protoka, HIGH); Serial.begin (9600); lcd.begin (16, 2); attachInterrupt (digitalPinToInterrupt (senzor protoka), protok, RISING); // Prekid postavljanja lcd.clear (); lcd.setCursor (0,0); lcd.print ("Mjerač protoka vode"); lcd.setCursor (0,1); lcd.print ("Circuit Digest"); currentTime = milis (); cloopTime = currentTime; }
Funkcija if osigurava da se svake sekunde kôd unutar nje izvodi. Na taj način možemo računati broj frekvencija koje stvara senzor protoka vode u sekundi. Karakteristike impulsa brzine protoka iz podatkovnog lista daju se da je frekvencija 7,5 pomnožena s brzinom protoka. Dakle, protok je frekvencija / 7,5. Nakon što nađete brzinu protoka u litrama / minuti, podijelite je sa 60 da biste je pretvorili u litru / sek. Ova se vrijednost dodaje varijabli vol svake sekunde.
void loop () { currentTime = milis (); // Svake sekunde izračunajte i ispišite litre / sat if (currentTime> = (cloopTime + 1000)) { cloopTime = currentTime; // Ažurira cloopTime ako (frekvencija_toka! = 0) { // Frekvencija impulsa (Hz) = 7,5Q, Q je protok u L / min. l_minuta = (frekvencija_toka / 7,5); // (učestalost impulsa x 60 min) / 7,5Q = protok u L / sat lcd.clear (); lcd.setCursor (0,0); lcd.print ("Rate:"); lcd.print (l_minute); lcd.print ("L / M"); l_minute = l_minute / 60; lcd.setCursor (0,1); vol = vol + l_minuta; lcd.print ("Vol:"); lcd.print (vol); lcd.print ("L"); frekvencija_toka = 0; // Resetiranje brojača Serial.print (l_minute, DEC); // Ispis litara / sat Serial.println ("L / Sec"); }
Funkcija else radi kada iz određenog vremenskog raspona nema izlaza iz senzora protoka vode.
else { lcd.clear (); lcd.setCursor (0,0); lcd.print ("Rate:"); lcd.print (frekvencija_toka); lcd.print ("L / M"); lcd.setCursor (0,1); lcd.print ("Vol:"); lcd.print (vol); lcd.print ("L"); }
Arduino osjetnik protoka vode radi
U našem projektu povezali smo senzor protoka vode na cijev. Ako je izlazni ventil cijevi zatvoren, izlaz osjetnika protoka vode je nula (nema impulsa). Na pinu 2 Arduina neće se vidjeti signal prekida, a broj protoka_frekvencija bit će nula. U ovom će stanju raditi kod koji je napisan unutar else petlje.

Ako se otvori izlazni ventil cijevi. Voda teče kroz senzor, koji zauzvrat okreće kotačić unutar senzora. U tom stanju možemo promatrati impulse koji se generiraju od senzora. Ti će impulsi djelovati kao signal prekida za Arduino UNO. Za svaki signal prekida (rastući rub), broj varijable flow_frequency povećat će se za jedan. Trenutno vrijeme i varijabla cloopTIme osiguravaju da se za svaku sekundu uzima vrijednost frekvencije_toka za izračunavanje brzine i volumena protoka. Nakon završetka izračuna, varijabla flow_frequency postavlja se na nulu i cijeli postupak započinje od početka.
Kompletni rad također se može naći u videozapisu na dnu ove stranice. Nadam se da ste uživali u vodiču i uživali u nečemu korisnom, ako imate problema, ostavite ih u odjeljku za komentare ili upotrijebite naše forume za druga tehnička pitanja.
