- Tarvittavat komponentit
- YFS201 vesivirta-anturi
- Piirikaavio
- Arduino-vesivirta-anturin koodi
- Arduino-vesivirta-anturi toimii
Jos olet koskaan käynyt suurissa tuotantoyrityksissä, huomaat ensin, että ne kaikki ovat automatisoituja. Virvoitusjuomateollisuuden ja kemianteollisuuden on jatkuvasti mitattava ja kvantifioitava nesteitä, joita ne käsittelevät tämän automaatioprosessin aikana, ja yleisin nesteen virtauksen mittaamiseen käytetty anturi on virtausanturi. Käyttämällä virtausanturia mikro-ohjaimen kanssa, kuten Arduino, voimme laskea virtausnopeuden, tarkistaa putken läpi kulkeneen nesteen määrän ja ohjata sitä tarpeen mukaan. Valmistusteollisuuden lisäksi virtausantureita löytyy myös maataloudesta, elintarviketeollisuudesta, vedenkäsittelystä, kaivosteollisuudesta, veden kierrätyksestä, kahvinkeittimistä jne. Lisäksi veden virtausanturi on hyvä lisä sellaisiin projekteihin kuin automaattinen vesiannostelija ja älykkäät kastelujärjestelmät, joissa meidän on seurattava ja hallittava nesteiden virtausta.
Tässä hankkeessa aiomme rakentaa veden virtausanturin Arduinolla. Yhdistämme veden virtausanturin Arduinon ja LCD: n kanssa ja ohjelmoimme sen näyttämään venttiilin läpi kulkeneen vesimäärän. Tässä projektissa aiomme käyttää vesivirta-anturia YF-S201, joka käyttää halli-ilmiötä nesteen virtausnopeuden tunnistamiseen.
Tarvittavat komponentit
- Veden virtausanturi
- Arduino UNO
- LCD (16x2)
- Liitin sisäkierteellä
- Johtojen liittäminen
- Putki
YFS201 vesivirta-anturi
Anturissa on 3 johtoa PUNAINEN, KELTAINEN ja MUSTA alla olevan kuvan mukaisesti. Punaista johtoa käytetään syöttöjännitteelle, joka vaihtelee välillä 5 V - 18 V ja musta johto on kytketty GND: hen. Keltaista johtoa käytetään lähtöön (pulsseihin), jotka MCU voi lukea. Veden virtausanturi koostuu väkipyörän anturista, joka mittaa sen läpi kulkeneen nestemäärän.
Toiminnan kannalta YFS201 veden virtaus-anturi on helppo ymmärtää. Veden virtausanturi toimii hall-ilmiön periaatteella. Hall-vaikutus on potentiaalieron tuottaminen sähköjohtimessa, kun magneettikenttä kohdistetaan kohtisuoraan virran virtaukseen nähden. Vesivirta-anturi on integroitu magneettiseen hall-efektianturiin, joka tuottaa sähköpulssin jokaisella kierroksella. Sen muotoilu on sellainen, että halli-anturi on suljettu vedestä ja antaa anturin pysyä turvallisena ja kuivana.
Pelkästään YFS201-anturimoduulin kuva näkyy alla.
Yhdistääksesi putken ja veden virtausanturin, käytin kahta liitintä, joissa on sisäkierre, kuten alla on esitetty.
Mukaan YFS201 Tekniset, suurin virta se vetää 5V on 15 mA, ja työ virtausnopeus on 1-30 litraa / minuutti. Kun neste virtaa anturin läpi, se joutuu kosketuksiin turbiinipyörän evien kanssa, joka asetetaan virtaavan nesteen tielle. Turbiinipyörän akseli on kytketty halli-anturiin. Tämän vuoksi aina kun vesi virtaa venttiilin läpi, se tuottaa pulsseja. Nyt meidän tarvitsee vain mitata plus-aika tai laskea pulssien määrä 1 sekunnissa ja laskea sitten virtausnopeudet litroina tunnissa (L / Hr) ja käyttää sitten yksinkertaista muuntokaavaa tilavuuden löytämiseen sen läpi kulkeutuneesta vedestä. Pulssien mittaamiseksi aiomme käyttää Arduino UNO: ta. Alla oleva kuva näyttää veden virtausanturin pinoutin.
Piirikaavio
Veden virtaus-anturi piirikaavio on esitetty alla rajapinta veden virtausanturi ja LCD (16x2) Arduino. Jos olet uusi Arduino ja LCD-näytöt, voit harkita tämän Interfacing Arduino- ja LCD-artikkelin lukemista.
Veden virtausanturin ja nestekidenäytön (16x2) kytkentä Arduinoon on esitetty alla taulukon muodossa. Huomaa, että potti on kytketty 5 V: n ja GND: n väliin ja potin nasta 2 on kytketty nestekidenäytön V0-nastaan.
S.NO |
Veden virtausanturin tappi |
Arduino-nastat |
1 |
Punainen lanka |
5 V |
2 |
Musta |
GND |
3 |
Keltainen |
A0 |
S. ei |
LCD-näyttö |
Arduino |
1 |
Vss |
GND (leipälautanen kisko) |
2 |
VDD |
5V (leipälautan positiivinen kisko) |
3 |
Tarkista yllä oleva huomautus yhteyden muodostamiseksi V0: een |
|
4 |
RS |
12 |
5 |
RW |
GND |
6 |
E |
11 |
7 |
D7 |
9 |
8 |
D6 - D3 |
3-5 |
Käytin leipälevyä, ja kun liitäntä oli tehty yllä olevan piirikaavion mukaisesti, testausasetukseni näytti tältä.
Arduino-vesivirta-anturin koodi
Koko veden virtausanturin Arduino-koodi on sivun alaosassa. Koodi selitetään seuraavasti.
Käytämme nestekidenäytön otsikkotiedostoa, joka helpottaa LCD-näytön liittämistä Arduinoon, ja nastat 12, 11, 5, 4, 3, 9 on varattu tiedonsiirtoon LCD: n ja Arduinon välillä. Anturin ulostulotappi on kytketty Arduino UNO: n tapaan 2.
haihtuva int virtausnopeus; // Mittaa virtausanturin pulsseja // Laskettu litraa / tunti kelluva tilavuus = 0,0, l_minuutti; allekirjoittamaton char-virtausanturi = 2; // Anturin tulo allekirjoittamaton pitkä currentTime; allekirjoittamaton pitkä cloopTime; #sisältää
Tämä toiminto on keskeytyspalvelurutiini ja sitä kutsutaan aina, kun Arduino UNO: n pin2: ssa on keskeytyssignaali. Jokaisen keskeytyssignaalin kohdalla muuttuvan virtauksen_taajuuden määrää lisätään 1: llä. Lisätietoja keskeytyksistä ja niiden toiminnasta voit lukea tämän artikkelin Arduino-keskeytyksistä.
void flow () // Keskeytysfunktio { flow_frequency ++; }
Tyhjässä asennuksessa kerromme MCU: lle, että Arduino UNO: n nastaa 2 käytetään INPUT: na antamalla komento pinMode (tappi, OUTPUT). Käyttäen attachInterrupt-komentoa, kun signaali nousee nastassa 2, virtaustoiminto kutsutaan. Tämä lisää muuttujan flow_frequency määrää 1: llä. Nykyistä aikaa ja cloopTime-aikaa käytetään koodin suorittamiseen sekunnin välein.
void setup () { pinMode (virtausanturi, INPUT); digitalWrite (virtausanturi, HIGH); Sarjan alku (9600); lcd.begin (16, 2); attachInterrupt (digitalPinToInterrupt (virtausanturi), virtaus, RISING); // Setup Interrupt lcd.clear (); lcd.setCursor (0,0); lcd.print ("veden virtausmittari"); lcd.setCursor (0,1); lcd.print ("Piirin yhteenveto"); currentTime = millis (); cloopTime = currentTime; }
If-toiminto varmistaa, että sen sisällä oleva koodi toimii sekunnin välein. Tällä tavoin voimme laskea vesivirta-anturin tuottamien taajuuksien määrän sekunnissa. Datalehden virtausnopeuspulssiominaisuuksille annetaan taajuus 7,5 kerrottuna virtausnopeudella. Joten virtausnopeus on taajuus / 7,5. Kun olet löytänyt virtausnopeuden, joka on litraa / minuutti, jaa se 60: llä muuntaaksesi sen litraan / sek. Tämä arvo lisätään vol-muuttujaan sekunnin välein.
void loop () { currentTime = millis (); // Laske ja tulosta joka sekunti litraa / tunti, jos (currentTime> = (cloopTime + 1000)) { cloopTime = currentTime; // Päivittää cloopTime if (virtausnopeus! = 0) { // Pulssitaajuus (Hz) = 7,5Q, Q on virtausnopeus L / min. l_minute = (virtaustaajuus / 7,5); // (pulssitaajuus x 60 min) / 7,5 Q = virtausnopeus L / tunti lcd.clear (); lcd.setCursor (0,0); lcd.print ("Rate:"); lcd.print (l_minuutti); lcd.print ("L / M"); l_minute = l_minute / 60; lcd.setCursor (0,1); vol = vol + l_minuutti; lcd.print ("Voi:"); lcd.print (tilavuus); lcd.print ("L"); virtaustaajuus = 0; // Reset Counter Serial.print (l_minute, DEC); // Tulosta litraa / tunti Serial.println ("L / Sec"); }
Muu-toiminto toimii, kun vesivirta-anturista ei tule lähtöä annetulla aikavälillä.
else { lcd.clear (); lcd.setCursor (0,0); lcd.print ("Rate:"); lcd.print (virtausnopeus); lcd.print ("L / M"); lcd.setCursor (0,1); lcd.print ("Voi:"); lcd.print (tilavuus); lcd.print ("L"); }
Arduino-vesivirta-anturi toimii
Projektissamme yhdistimme veden virtausanturin putkeen. Jos putken ulostuloventtiili on suljettu, vesivirta-anturin lähtö on nolla (ei pulsseja). Arduinon nastassa 2 ei näy keskeytyssignaalia, ja virtausnopeuden määrä on nolla. Tässä tilassa muu silmukkaan kirjoitettu koodi toimii.
Jos putken ulostuloventtiili avataan. Vesi virtaa anturin läpi, mikä puolestaan kiertää pyörää anturin sisällä. Tässä tilassa voimme havaita pulsseja, jotka syntyvät anturista. Nämä pulssit toimivat keskeytyssignaalina Arduino UNO: lle. Jokaisella keskeytyssignaalilla (nouseva reuna) virtaustaajuusmuuttujan määrää lisätään yhdellä. Nykyinen aika- ja cloopTIme-muuttuja varmistavat, että jokaiselle sekunnille virtausnopeuden arvo otetaan virtausnopeuden ja tilavuuden laskemiseksi. Kun laskenta on valmis, flow_frequency-muuttuja asetetaan nollaksi ja koko menettely aloitetaan alusta.
Koko työ löytyy myös tämän sivun alaosassa olevasta linkitetystä videosta. Toivottavasti pidit opetusohjelmasta ja nautit jotain hyödyllistä. Jos sinulla on ongelmia, jätä ne kommenttiosioon tai käytä foorumeitamme muihin teknisiin kysymyksiin.