- Komponenter krävs
- YFS201 Vattenflödessensor
- Kretsschema
- Arduino Water Flow Sensor Code
- Arduino vattenflödessensor fungerar
Om du någonsin har besökt storskaliga tillverkningsföretag är det första du kommer att märka att de alla är automatiserade. Läskindustri och kemisk industri måste ständigt mäta och kvantifiera vätskor som de hanterar under denna automatiseringsprocess, och den vanligaste sensorn som används för att mäta en vätskeflöde är en flödesgivare. Genom att använda en flödesgivare med en mikrokontroller som Arduino kan vi beräkna flödeshastigheten och kontrollera volymen vätska som har passerat genom ett rör och kontrollera den efter behov. Förutom tillverkningsindustrin finns flödesgivare också inom jordbrukssektorn, livsmedelsbearbetning, vattenhantering, gruvindustri, vattenåtervinning, kaffemaskiner etc. Dessutom kommer en vattenflödesgivare att vara ett bra komplement till projekt som Automatic Water Dispenser och smarta bevattningssystem där vi behöver övervaka och kontrollera vätskeflödet.
I det här projektet ska vi bygga en vattenflödesgivare med Arduino. Vi kommer att ansluta vattenflödesgivaren med Arduino och LCD och programmera den så att den visar volymen vatten som har passerat genom ventilen. För detta specifika projekt kommer vi att använda vattenflödesgivaren YF-S201, som använder en halleffekt för att känna av vätskeflödet.
Komponenter krävs
- Vattenflödessensor
- Arduino UNO
- LCD (16x2)
- Kontaktdon med invändig gängning
- Anslutande ledningar
- Rör
YFS201 Vattenflödessensor
Sensorn har tre ledningar RÖD, GUL och SVART som visas i bilden nedan. Den röda ledningen används för matningsspänning som sträcker sig från 5V till 18V och den svarta ledningen är ansluten till GND. Den gula ledningen används för utgång (pulser), som kan läsas av en MCU. Vattenflödesgivaren består av en pinwheelsensor som mäter den vätskekvantitet som har passerat genom den.
Den bearbetning av YFS201 vattenflödet sensor är enkel att förstå. Vattenflödesgivaren fungerar på principen om halleffekt. Halleffekt är produktionen av potentialskillnaden över en elektrisk ledare när ett magnetfält appliceras i riktningen vinkelrät mot strömmen. Vattenflödessensorn är integrerad med en magnetisk hall-effektgivare, som genererar en elektrisk puls med varje varv. Dess utformning är på ett sådant sätt att halleffektsensorn är tätad från vattnet och gör att sensorn kan hålla sig säker och torr.
Bilden av sensormodulen YFS201 enbart visas nedan.
För att ansluta till rör- och vattenflödesgivaren använde jag två kontakter med en invändig gänga enligt bilden nedan.
Enligt YFS201-specifikationerna är den maximala strömmen den drar vid 5V 15mA och arbetsflödet är 1 till 30 liter / minut. När vätskan strömmar genom sensorn, kommer den i kontakt med fenorna på turbinhjulet, som placeras i den flytande vätskans väg. Turbinhjulets axel är ansluten till en halleffektsensor. På grund av detta genererar pulser när det rinner vatten genom ventilen. Nu är allt vi behöver göra att mäta tiden för plusen eller att räkna antalet pulser på 1 sekund och sedan beräkna flödeshastigheterna i liter per timme (L / Hr) och sedan använda enkel omvandlingsformel för att hitta volymen av vattnet som hade passerat genom det. För att mäta pulserna ska vi använda Arduino UNO. Bilden nedan visar pinout på vattenflödesgivaren.
Kretsschema
Den vattenflödet sensorkretsschema visas nedan för att samverka en vattenflödessensor och LCD (16x2) med Arduino. Om du är ny på Arduino och LCD-skärmar kan du överväga att läsa denna Interfacing Arduino och LCD-artikel.
Anslutningen av vattenflödessensorn och LCD (16x2) med Arduino ges nedan i tabellformat. Observera att potten är ansluten mellan 5V och GND och pottens stift 2 är ansluten till LCD-skärmens V0-stift.
S.NO |
Vattenflödesgivarens stift |
Arduino Pins |
1 |
Röd tråd |
5V |
2 |
Svart |
GND |
3 |
Gul |
A0 |
S. nr |
LCD |
Arduino |
1 |
Vss |
GND (markskena av brödbräda) |
2 |
VDD |
5V (Positiv skena på brödbrädan) |
3 |
För anslutning till V0, se ovanstående anmärkning |
|
4 |
RS |
12 |
5 |
RW |
GND |
6 |
E |
11 |
7 |
D7 |
9 |
8 |
D6 till D3 |
3 till 5 |
Jag använde en brädbräda, och när anslutningen gjordes enligt kretsschemat som visas ovan såg min testuppställning ungefär så här.
Arduino Water Flow Sensor Code
Den kompletta Arduino-koden för vattenflödesgivare ges längst ner på sidan. Förklaringen till koden är som följer.
Vi använder LCD-skärmens rubrikfil, vilket underlättar gränssnittet mellan LCD och Arduino och stiften 12,11,5,4,3,9 är avsedda för dataöverföring mellan LCD och Arduino. Givarens utgångsstift är ansluten till stift 2 på Arduino UNO.
flyktig intflödesfrekvens; // Mäter flödesgivarpulser // Beräknade liter / timme flytvolym = 0,0, l_minute; osignerad rödflödesgivare = 2; // Sensoringång osignerad lång strömtid; osignerad lång cloopTime; #omfatta
Denna funktion är en avbrottsrutin och detta kommer att anropas när det finns en avbrottssignal vid pin2 i Arduino UNO. För varje avbrottssignal kommer antalet variabla flödesfrekvenser att ökas med 1. För mer information om avbrott och hur de fungerar kan du läsa den här artikeln om Arduino-avbrott.
void flow () // Interrupt function { flow_frequency ++; }
I tomrumsuppsättningen säger vi till MCU att stift 2 i Arduino UNO används som INGÅNG genom att ge kommandot pinMode (stift, UTGÅNG). Genom att använda attachInterrupt-kommandot kallas flödesfunktionen närhelst det ökar signalen vid stift 2. Detta ökar antalet i den variabla flödesfrekvensen med 1. Den aktuella tiden och cloopTime används för att koden ska köras var 1: a sekund.
ogiltig installation () { pinMode (flödesgivare, INGÅNG); digitalWrite (flödesgivare, HÖG); Serial.begin (9600); lcd.begin (16, 2); attachInterrupt (digitalPinToInterrupt (flödesgivare), flöde, RISING); // Setup Interrupt lcd.clear (); lcd.setCursor (0,0); lcd.print ("Water Flow Meter"); lcd.setCursor (0,1); lcd.print ("Circuit Digest"); currentTime = millis (); cloopTime = aktuell tid; }
Funktionen if ser till att koden inuti den körs för varje sekund. På detta sätt kan vi räkna antalet frekvenser som produceras av vattenflödesgivaren per sekund. Flödeshastighetspulsegenskaperna från databladet ges att frekvensen är 7,5 multiplicerad med flödeshastigheten. Så flödeshastigheten är frekvens / 7,5. När du har hittat flödeshastigheten i liter / minut, dela den med 60 för att konvertera den till liter / sek. Detta värde läggs till volvariabeln för en sekund.
ogiltig slinga () { currentTime = millis (); // Beräkna och skriv ut liter / timme varje sekund om (currentTime> = (cloopTime + 1000)) { cloopTime = currentTime; // Uppdateringar cloopTime om (flödesfrekvens! = 0) { // Pulsfrekvens (Hz) = 7.5Q, Q är flödeshastighet i L / min. l_minute = (flödesfrekvens / 7,5); // (Pulsfrekvens x 60 min) / 7,5Q = flödeshastighet i L / timme 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"); flödesfrekvens = 0; // Återställ Counter Serial.print (l_minute, DEC); // Skriv ut liter / timme Serial.println ("L / Sec"); }
Den andra funktionen fungerar när det inte finns någon utmatning från vattenflödesgivaren inom den angivna tidsperioden.
annat { lcd.clear (); lcd.setCursor (0,0); lcd.print ("Rate:"); lcd.print (flödesfrekvens); lcd.print ("L / M"); lcd.setCursor (0,1); lcd.print ("Vol:"); lcd.print (vol); lcd.print ("L"); }
Arduino vattenflödessensor fungerar
I vårt projekt kopplade vi vattenflödesgivaren till ett rör. Om rörets utgångsventil är stängd är utflödet från vattenflödesgivaren noll (inga pulser). Det kommer inte att finnas någon avbrottssignal vid stift 2 i Arduino, och antalet flödesfrekvenser kommer att vara noll. I detta tillstånd fungerar koden som är skriven inuti den andra slingan.
Om rörets utgångsventil öppnas. Vattnet rinner genom sensorn som i sin tur roterar hjulet inuti sensorn. I detta tillstånd kan vi observera pulser som genereras från sensorn. Dessa pulser fungerar som en avbrottssignal till Arduino UNO. För varje avbrottssignal (stigande kant) kommer antalet flödesfrekvensvariabler att ökas med en. Den aktuella tiden och cloopTIme-variabeln säkerställer att värdet på flödesfrekvensen för varje sekund tas för beräkning av flödeshastighet och volym. När beräkningen är klar sätts variabeln flow_frequency till noll och hela proceduren startas från början.
Hela arbetet finns också i videon som länkas längst ner på denna sida. Hoppas att du gillade handboken och tyckte om något användbart, om du har några problem, vänligen lämna dem i kommentarsektionen eller använd våra forum för andra tekniska frågor.