- Būtini komponentai
- YFS201 vandens srauto jutiklis
- Grandinės schema
- „Arduino“ vandens srauto jutiklio kodas
- „Arduino“ vandens srauto jutiklis veikia
Jei kada nors lankėtės didelio masto gamybos įmonėse, pirmiausia pastebėsite, kad jos visos yra automatizuotos. Gaiviųjų gėrimų pramonė ir chemijos pramonė turi nuolat matuoti ir kiekybiškai įvertinti skysčius, kuriuos jie tvarko šio automatizavimo proceso metu. Dažniausias jutiklis, naudojamas skysčio srautui matuoti, yra srauto jutiklis.. Naudodami srauto jutiklį su mikrovaldikliu, tokiu kaip „Arduino“, galime apskaičiuoti srauto greitį, patikrinti skysčio kiekį, kuris praėjo per vamzdį, ir valdyti jį pagal poreikį. Be gamybos pramonės, srauto jutiklius taip pat galima rasti žemės ūkio sektoriuje, maisto perdirbime, vandens tvarkyme, kasybos pramonėje, vandens perdirbime, kavos aparatuose ir kt. Be to, vandens srauto jutiklis bus geras priedas prie tokių projektų kaip automatinis vandens dozatorius ir išmaniosios drėkinimo sistemos, kuriose turime stebėti ir kontroliuoti skysčių srautus.
Šiame projekte mes ketiname pastatyti vandens srauto jutiklį naudodami „Arduino“. Mes sujungsime vandens srauto jutiklį su „Arduino“ ir LCD ir užprogramuosime rodyti vandens kiekį, kuris praėjo per vožtuvą. Šiam konkrečiam projektui naudosime vandens srauto jutiklį YF-S201, kuris naudoja salės efektą skysčio srauto greičiui suvokti.
Būtini komponentai
- Vandens srauto jutiklis
- „Arduino UNO“
- LCD (16x2)
- Jungtis su vidiniu sriegiu
- Jungiamieji laidai
- Vamzdis
YFS201 vandens srauto jutiklis
Jutiklis turi 3 laidus RED, YELLOW ir BLACK, kaip parodyta paveikslėlyje žemiau. Raudona viela naudojama maitinimo įtampai, kuri svyruoja nuo 5 V iki 18 V, o juoda viela yra prijungta prie GND. Geltona viela naudojama išėjimui (impulsams), kurią gali nuskaityti MCU. Vandens srauto jutiklis susideda iš rato jutiklio, kuris matuoja per jį praleisto skysčio kiekį.
Iš YFS201 vandens srauto daviklio darbo yra paprasta suprasti. Vandens srauto jutiklis veikia salės efekto principu. Hall efektas yra potencialo skirtumo susidarymas elektros laidininkui, kai magnetinis laukas yra nukreiptas statmena srovės srauto krypčiai. Vandens srauto jutiklis yra integruotas su magnetiniu salės efekto jutikliu, kuris kiekvienu apsisukimu sukuria elektrinį impulsą. Jo dizainas yra toks, kad salės efekto jutiklis yra uždarytas nuo vandens ir leidžia jutikliui išlikti saugiam ir sausam.
Vien tik YFS201 jutiklio modulio paveikslėlis parodytas žemiau.
Norėdami prisijungti prie vamzdžio ir vandens srauto jutiklio, aš naudoju dvi jungtis su vidiniu sriegiu, kaip parodyta žemiau.
Pagal YFS201 specifikacijas, didžiausia srovė, kurią jis ištraukia esant 5 V, yra 15 mA, o darbinis srautas yra nuo 1 iki 30 l / min. Kai skystis teka per jutiklį, jis kontaktuoja su turbinos rato pelekais, kurie dedami į tekančio skysčio kelią. Turbinos rato velenas sujungtas su salės efekto jutikliu. Dėl šios priežasties, kai vanduo teka per vožtuvą, jis generuoja impulsus. Dabar viskas, ką turime padaryti, yra išmatuoti pliusų laiką arba suskaičiuoti impulsų skaičių per 1 sekundę, tada apskaičiuoti srauto greitį litrais per valandą (L / Hr) ir tada naudoti paprastą konversijos formulę, kad surastumėte tūrį pro jį tekėjusio vandens. Norėdami išmatuoti impulsus, ketiname naudoti „Arduino UNO“. Žemiau pateiktame paveikslėlyje parodyta vandens srauto jutiklio kištukas.
Grandinės schema
Vandens srauto jutiklis jungimo schema yra parodyta žemiau sąsajos vandens srauto daviklį ir LCD (16x2) su Arduino. Jei dar nesinaudojote „Arduino“ ir LCD ekranais, galite apsvarstyti galimybę perskaityti šį „Interfacing Arduino“ ir „LCD“ straipsnį.
Vandens srauto jutiklio ir skystųjų kristalų (16x2) sujungimas su „Arduino“ pateiktas lentelės formatu. Atkreipkite dėmesį, kad puodas yra prijungtas tarp 5 V ir GND, o puodo kaištis 2 - su LCD ekrano V0 kaiščiu.
S.NO |
Vandens srauto jutiklio kaištis |
„Arduino“ smeigtukai |
1 |
Raudona viela |
5V |
2 |
Juoda |
BND |
3 |
Geltona |
A0 |
S.No |
LCD ekranas |
Arduino |
1 |
Vss |
GND (duonos lentos antžeminis bėgis) |
2 |
VDD |
5V (teigiamas kartono bėgis) |
3 |
Norėdami susisiekti su V0, patikrinkite aukščiau pateiktą pastabą |
|
4 |
RS |
12 |
5 |
RW |
BND |
6 |
E |
11 |
7 |
D7 |
9 |
8 |
D6 - D3 |
Nuo 3 iki 5 |
Aš naudojau skydą ir, kai ryšys buvo atliktas pagal aukščiau pateiktą grandinės schemą, mano bandymų sąranka atrodė maždaug taip.
„Arduino“ vandens srauto jutiklio kodas
Pilnas vandens srauto jutiklio „Arduino“ kodas pateikiamas puslapio apačioje. Kodas paaiškinamas taip.
Mes naudojame LCD antraštės failą, kuris palengvina sąsają su LCD su „Arduino“, o kaiščiai 12, 11, 5, 4, 3, 3 yra skirti duomenims perduoti tarp LCD ir „Arduino“. Jutiklio išvesties kaištis yra prijungtas prie „Arduino UNO“ 2 kaiščio.
volatile int flow_frequency; // Matuoja srauto jutiklio impulsus // Apskaičiuoti litrai / valanda plūdės tūris = 0,0, l_minutė; nepasirašytas anglies srauto jutiklis = 2; // Jutiklio įvestis nepasirašyta ilgoji currentTime; nepasirašytas ilgas cloopTime; # įtraukti
Ši funkcija yra pertraukimo tarnybos rutina ir ji bus iškviesta, kai „Arduino UNO“ 2 kontakte bus pertraukimo signalas. Kiekvieno pertraukimo signalo atveju kintamojo srauto dažnio skaičius bus padidintas 1. Norėdami gauti daugiau informacijos apie pertraukimus ir jų veikimą, galite perskaityti šį straipsnį apie „Arduino“ pertraukimus.
void flow () // pertraukimo funkcija { flow_frequency ++; }
Tuščioje sąrankoje mes sakome MCU, kad „Arduino UNO“ 2 kaištis naudojamas kaip įvestis, suteikiant komandą „pinMode“ (kaištis, OUTPUT). Naudojant komandą „attachInterrupt“, kai tik kaištis 2 padidėja, iškviečiama srauto funkcija. Tai padidina kintamojo „flow_frequency“ skaičių 1. Dabartinis laikas ir „cloopTime“ naudojami kodui paleisti kas 1 sekundę.
void setup () { pinMode (srauto jutiklis, INPUT); digitalWrite (srauto jutiklis, HIGH); Serijos pradžia (9600); lcd.begin (16, 2); attachInterrupt (digitalPinToInterrupt (srauto jutiklis), srautas, RISING); // Sąranka nutraukti lcd.clear (); lcd.setCursor (0,0); lcd.print („vandens srauto matuoklis“); lcd.setCursor (0,1); lcd.print („Grandinės santrauka“); currentTime = milis (); cloopTime = currentTime; }
Funkcija „if“ užtikrina, kad kiekvienos sekundės metu jos kodas veiktų. Tokiu būdu galime suskaičiuoti vandens srauto jutiklio sukurtų dažnių skaičių per sekundę. Duomenų lapo srauto greičio impulsų charakteristikoms nurodoma, kad dažnis yra 7,5 padaugintas iš srauto. Taigi srauto greitis yra dažnis / 7,5. Radę srautą, kuris yra litrais per minutę, padalykite iš 60, kad paverstumėte litrais / sek. Ši vertė pridedama prie vol kintamojo kas sekundę.
void loop () { currentTime = milis (); // Kas sekundę apskaičiuokite ir atspausdinkite litrus per valandą, jei (currentTime> = (cloopTime + 1000)) { cloopTime = currentTime; // Atnaujina cloopTime if (srauto dažnis! = 0) { // Pulso dažnis (Hz) = 7.5Q, Q yra srauto greitis L / min. l_minute = (srauto dažnis / 7,5); (Pulso dažnis x 60 min.) / 7,5 Q = srauto greitis L / val. Lcd. Aiškus (); 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 ("Tomas:"); lcd.print (tomas); lcd.print ("L"); srauto dažnis = 0; // Reset Counter Serial.print (l_minute, DEC); // Spausdinti litrus per valandą Serial.println ("L / Sec"); }
Kita funkcija veikia, kai per nustatytą laiką nėra vandens srauto jutiklio išvesties.
else { lcd.clear (); lcd.setCursor (0,0); lcd.print ("Rate:"); lcd.print (srauto dažnis); lcd.print ("L / M"); lcd.setCursor (0,1); lcd.print ("Tomas:"); lcd.print (tomas); lcd.print ("L"); }
„Arduino“ vandens srauto jutiklis veikia
Savo projekte vandens srauto jutiklį sujungėme su vamzdžiu. Jei vamzdžio išleidimo vožtuvas yra uždarytas, vandens srauto jutiklio išėjimas yra nulis (be impulsų). „Arduino“ 2 kaište nebus matomas pertraukimo signalas, o srauto dažnio skaičius bus lygus nuliui. Esant tokiai būklei, veiks kodas, kuris yra parašytas „loop“ viduje.
Jei vamzdžio išleidimo vožtuvas atidarytas. Vanduo teka per jutiklį, kuris savo ruožtu pasuka ratą jutiklio viduje. Esant tokiai būklei, galime stebėti impulsus, kuriuos generuoja jutiklis. Šie impulsai veiks kaip pertraukimo signalas „Arduino UNO“. Kiekvienam pertraukimo signalui (kylančiam kraštui) srauto dažnio kintamojo skaičius bus padidintas vienu. Dabartinis laikas ir grupių kintamasis užtikrina, kad kiekvienai sekundei srauto dažnio vertė būtų naudojama srauto greičiui ir tūriui apskaičiuoti. Baigus skaičiavimą, srauto_dažnis kintamasis nustatomas į nulį ir visa procedūra pradedama nuo pradžių.
Visą darbą taip pat galite rasti vaizdo įraše, susietame šio puslapio apačioje. Tikiuosi, kad jums patiko pamoka ir patiko kažkas naudingo. Jei turite kokių nors problemų, palikite jas komentarų skiltyje arba naudokitės mūsų forumais kitiems techniniams klausimams.