- Komponenter, der kræves
- YFS201 Vandmængdesensor
- Kredsløbsdiagram
- Arduino vandstrømsensorkode
- Arduino vandstrømssensor fungerer
Hvis du nogensinde har besøgt store produktionsvirksomheder, er det første, du vil bemærke, at de alle er automatiserede. Sodavandindustrien og den kemiske industri skal konstant måle og kvantificere de væsker, de håndterer under denne automatiseringsproces, og den mest almindelige sensor, der bruges til at måle strømmen af en væske, er en flowmåler. Ved at bruge en strømningssensor med en mikrocontroller som Arduino kan vi beregne strømningshastigheden og kontrollere volumen af væske, der er passeret gennem et rør, og kontrollere det efter behov. Bortset fra fremstillingsindustrien kan flowfølere også findes i landbrugssektoren, fødevareforarbejdning, vandforvaltning, minedrift, vandgenbrug, kaffemaskiner osv. Endvidere vil en vandstrømssensor være en god tilføjelse til projekter som automatisk vanddispenser og Smart Irrigation Systems, hvor vi har brug for at overvåge og kontrollere strømmen af væsker.
I dette projekt skal vi bygge en vandstrømssensor ved hjælp af Arduino. Vi interagerer vandstrømssensoren med Arduino og LCD og programmerer den til at vise vandmængden, der er passeret gennem ventilen. Til dette særlige projekt skal vi bruge YF-S201 -vandstrømssensoren, som bruger en halleffekt til at registrere væskens strømningshastighed.
Komponenter, der kræves
- Vandstrømningssensor
- Arduino UNO
- LCD (16x2)
- Stik med indvendigt gevind
- Tilslutning af ledninger
- Rør
YFS201 Vandmængdesensor
Sensoren har 3 ledninger RØD, GUL og SORT som vist i figuren nedenfor. Den røde ledning bruges til forsyningsspænding, der varierer fra 5V til 18V, og den sorte ledning er forbundet til GND. Den gule ledning bruges til output (impulser), som kan læses af en MCU. Vandstrømsføleren består af en pinwheelsensor, der måler den væskemængde, der har passeret gennem den.
Arbejdet med YFS201-vandstrømssensoren er let at forstå. Vandstrømningssensoren fungerer på princippet om halleffekt. Hall-effekt er produktionen af den potentielle forskel over en elektrisk leder, når et magnetfelt påføres i retningen vinkelret på strømmen. Vandstrømsføleren er integreret med en magnetisk hall-effektføler, der genererer en elektrisk puls med hver omdrejning. Dens design er på en sådan måde, at hall-effektsensoren er forseglet fra vandet og gør det muligt for sensoren at forblive sikker og tør.
Billedet af sensormodulet YFS201 alene er vist nedenfor.
For at forbinde med røret og vandstrømssensoren brugte jeg to stik med en indvendigt gevind som vist nedenfor.
I henhold til YFS201-specifikationer er den maksimale strøm, den trækker ved 5V, 15mA, og arbejdsflowet er 1 til 30 liter / minut. Når væsken strømmer gennem sensoren, kommer den i kontakt med vinderne på turbinehjulet, som placeres i den flydende væskes sti. Turbinhjulets aksel er forbundet med en hall-effektføler. På grund af dette genererer impulser, når der strømmer vand gennem ventilen. Nu er alt, hvad vi skal gøre, at måle tiden for plusene eller at tælle antallet af impulser i 1 sekund og derefter beregne strømningshastighederne i liter i timen (L / Hr) og derefter bruge den enkle konverteringsformel til at finde volumen af vandet, der var passeret igennem det. For at måle impulser skal vi bruge Arduino UNO. Billedet nedenfor viser dig pinout af vandstrømssensoren.
Kredsløbsdiagram
Den sensor kredsløbsdiagram vandstrøm er vist nedenfor at interface en vandstrøm sensor og LCD (16x2) med Arduino. Hvis du er ny med Arduino og LCD-skærme, kan du overveje at læse denne Interfacing Arduino og LCD-artikel.
Forbindelsen af vandstrømssensoren og LCD (16x2) med Arduino er angivet nedenfor i tabelformat. Bemærk, at gryden er tilsluttet mellem 5V og GND, og grydenes pin 2 er forbundet med LCD-skærmens V0-ben.
S.NO |
Vandstrømssensorstift |
Arduino Pins |
1 |
Rød ledning |
5V |
2 |
Sort |
GND |
3 |
Gul |
A0 |
S. nr |
LCD |
Arduino |
1 |
Vss |
GND (jordskinne af brødbræt) |
2 |
VDD |
5V (Positiv skinne på brødbrættet) |
3 |
For forbindelse med V0 skal du kontrollere ovenstående note |
|
4 |
RS |
12 |
5 |
RW |
GND |
6 |
E |
11 |
7 |
D7 |
9 |
8 |
D6 til D3 |
3 til 5 |
Jeg brugte et brødbræt, og når forbindelsen var foretaget som beskrevet i kredsløbsdiagrammet vist ovenfor, så min testopsætning noget sådan ud.
Arduino vandstrømsensorkode
Den komplette Arduino-kode for vandstrømningssensor er angivet nederst på siden. Forklaringen på koden er som følger.
Vi bruger headerfilen på LCD'et, hvilket letter vores grænseflade mellem LCD og Arduino, og stifterne 12,11,5,4,3,9 er tildelt til dataoverførsel mellem LCD og Arduino. Sensorens udgangsstift er forbundet til pin 2 i Arduino UNO.
flygtig int flow_frekvens; // Måler flow sensorimpulser // Beregnet liter / time float vol = 0,0, l_minute; usigneret røgsensor = 2; // Sensorindgang usigneret lang strømtid; usigneret lang cloopTime; #omfatte
Denne funktion er en afbrydelsesrutine, og dette kaldes, når der er et afbrydesignal på pin2 i Arduino UNO. For hvert afbrydelsessignal øges antallet af variabel flow_frekvens med 1. For flere detaljer om afbrydelser og deres funktion kan du læse denne artikel om Arduino-afbrydelser.
ugyldigt flow () // Afbryd funktion { flow_frequency ++; }
I tomrumsopsætningen fortæller vi MCU, at pin 2 i Arduino UNO bruges som INPUT ved at give kommandoen pinMode (pin, OUTPUT). Ved at bruge attachInterrupt-kommandoen kaldes flowfunktionen, når der er en stigning i signalet ved pin 2. Dette øger antallet af variabler flow_frekvens med 1. Den aktuelle tid og cloopTime bruges til koden til at køre hvert 1. sekund.
ugyldig opsætning () { pinMode (flowsensor, INPUT); digitalWrite (flowsensor, HIGH); Serial.begin (9600); lcd.begin (16, 2); attachInterrupt (digitalPinToInterrupt (flowsensor), flow, RISING); // Opsæt afbryd lcd.clear (); lcd.setCursor (0,0); lcd.print ("Water Flow Meter"); lcd.setCursor (0,1); lcd.print ("Circuit Digest"); strømtid = millis (); cloopTime = currentTime; }
Funktionen if sikrer, at koden inde i den kører for hvert sekund. På denne måde kan vi tælle antallet af frekvenser, der produceres af vandstrømssensoren pr. Sekund. Strømningshastighedspulsegenskaberne fra databladet er givet, at frekvensen er 7,5 ganget med strømningshastigheden. Så strømningshastigheden er frekvens / 7,5. Efter at have fundet gennemstrømningshastighed i liter / minut, divideres den med 60 for at konvertere den til liter / sek. Denne værdi føjes til vol-variablen for hvert sekund.
ugyldig sløjfe () { currentTime = millis (); // Hvert sekund beregnes og udskrives liter / time hvis (currentTime> = (cloopTime + 1000)) { cloopTime = currentTime; // Opdateringer cloopTime hvis (flow_frequency! = 0) { // Pulsfrekvens (Hz) = 7.5Q, Q er flowhastighed i L / min. l_minute = (flowfrekvens / 7,5); // (Pulsfrekvens x 60 min) / 7,5Q = strømningshastighed i L / time 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_minute; lcd.print ("Vol:"); lcd.print (vol); lcd.print ("L"); flow_frekvens = 0; // Reset Counter Serial.print (l_minute, DEC); // Udskriv liter / time Serial.println ("L / Sec"); }
Den anden funktion fungerer, når der ikke er noget output fra vandstrømssensoren inden for det givne tidsrum.
ellers { lcd.clear (); lcd.setCursor (0,0); lcd.print ("Rate:"); lcd.print (flow_frequency); lcd.print ("L / M"); lcd.setCursor (0,1); lcd.print ("Vol:"); lcd.print (vol); lcd.print ("L"); }
Arduino vandstrømssensor fungerer
I vores projekt tilsluttede vi vandstrømssensoren til et rør. Hvis rørets udgangsventil er lukket, er udgangen fra vandstrømssensoren nul (Ingen impulser). Der vil ikke være noget afbrydelsessignal ved pin 2 i Arduino, og tællingen af strømningsfrekvensen vil være nul. I denne tilstand fungerer koden, der er skrevet inde i den anden loop.
Hvis rørets udgangsventil åbnes. Vandet strømmer gennem sensoren, som igen drejer hjulet inde i sensoren. I denne tilstand kan vi observere impulser, der genereres fra sensoren. Disse impulser fungerer som et afbrydesignal til Arduino UNO. For hvert afbrydelsessignal (stigende kant) øges antallet af flow_frekvens-variablen med en. Den aktuelle tid og cloopTIme-variabelen sikrer, at værdien af flow-frekvensen for hvert sekund tages til beregning af flowhastighed og volumen. Når beregningen er afsluttet, indstilles variabel flow_frekvens til nul, og hele proceduren startes fra starten.
Det komplette arbejde kan også findes i den linkede video nederst på denne side. Håber du har haft vejledningen og haft noget nyttigt. Hvis du har problemer, skal du lade dem være i kommentarsektionen eller bruge vores fora til andre tekniske spørgsmål.