- Súčasti sú povinné
- Senzor prietoku vody YFS201
- Schéma zapojenia
- Kód snímača prietoku vody Arduino
- Čidlo prietoku vody Arduino pracuje
Ak ste niekedy navštívili veľké výrobné spoločnosti, prvá vec, ktorú si všimnete, je, že všetky sú automatizované. Odvetvie nealkoholických nápojov a chemický priemysel musia neustále merať a kvantifikovať kvapaliny, s ktorými manipulujú počas tohto automatizačného procesu, a najbežnejším snímačom používaným na meranie prietoku kvapaliny je snímač prietoku. Použitím snímača prietoku s mikrokontrolérom, ako je Arduino, môžeme vypočítať prietok, skontrolovať objem kvapaliny, ktorá prešla potrubím, a podľa potreby ju ovládať. Okrem výrobného priemyslu možno snímače prietoku nájsť aj v poľnohospodárstve, potravinárstve, vodohospodárstve, ťažobnom priemysle, recyklácii vody, kávovaroch atď. Ďalej bude snímač prietoku vody dobrým doplnkom k projektom, ako je automatický dávkovač vody. a inteligentné zavlažovacie systémy, kde potrebujeme monitorovať a riadiť tok tekutín.
V tomto projekte budeme vyrábať snímač prietoku vody pomocou Arduina. Prepojíme snímač prietoku vody s Arduinom a LCD a naprogramujeme ho tak, aby zobrazoval objem vody, ktorá prešla ventilom. Pre tento konkrétny projekt použijeme snímač prietoku vody YF-S201, ktorý využíva Hallov efekt na snímanie prietoku kvapaliny.
Súčasti sú povinné
- Senzor prietoku vody
- Arduino UNO
- LCD (16x2)
- Konektor s vnútorným závitom
- Pripojovacie vodiče
- Rúra
Senzor prietoku vody YFS201
Snímač má 3 vodiče ČERVENÉ, ŽLTÉ a ČIERNE, ako je to znázornené na obrázku nižšie. Červený vodič sa používa na napájacie napätie v rozmedzí od 5 V do 18 V a čierny vodič sa pripája na GND. Žltý vodič sa používa na výstup (impulzy), ktoré možno načítať z MCU. Senzor prietoku vody sa skladá zo senzora veterného kolesa, ktorý meria množstvo kvapaliny, ktoré ním prešlo.
Činnosť snímača prietoku vody YFS201 je ľahko pochopiteľná. Senzor prietoku vody pracuje na princípe Hallovho efektu. Hallov jav je produkcia rozdielu potenciálov na elektrickom vodiči, keď sa magnetické pole aplikuje v smere kolmom na smer prúdenia prúdu. Snímač prietoku vody je integrovaný s magnetickým snímačom Hallovho efektu, ktorý generuje elektrický impulz pri každej otáčke. Jeho konštrukcia je taká, že snímač s Hallovým efektom je utesnený pred vodou a umožňuje snímaču zostať v bezpečí a suchu.
Obrázok samotného modulu snímača YFS201 je uvedený nižšie.
Na pripojenie k potrubiu a snímaču prietoku vody som použil dva konektory s vnútorným závitom, ako je to znázornené nižšie.
Podľa špecifikácií YFS201 je maximálny prúd, ktorý odoberá pri 5 V, 15 mA a pracovný prietok od 1 do 30 litrov / minútu. Keď kvapalina preteká snímačom, prichádza do styku s rebrami turbínového kolesa, ktoré sú umiestnené v dráhe prúdiacej kvapaliny. Hriadeľ turbínového kolesa je spojený so snímačom Hallovho efektu. Z tohto dôvodu vždy, keď voda preteká ventilom, generuje impulzy. Teraz musíme iba zmerať čas plusov alebo spočítať počet impulzov za 1 sekundu a potom vypočítať prietoky v litroch za hodinu (L / Hr) a potom pomocou jednoduchého konverzného vzorca zistiť objem vody, ktorá ním prešla. Na meranie impulzov použijeme Arduino UNO. Obrázok nižšie zobrazuje pinout snímača prietoku vody.
Schéma zapojenia
Prietok vody Snímač schéma zapojenia je znázornené nižšie na rozhraní snímača prietoku vody a LCD (16x2) s Arduino. Ak ste v oblasti Arduina a LCD nováčikov, môžete si prečítať tento článok o rozhraní Arduino a LCD.
Pripojenie snímača prietoku vody a LCD (16x2) k Arduinu je uvedené nižšie v tabuľkovom formáte. Upozorňujeme, že hrniec je pripojený medzi 5 V a GND a pin 2 hrnca je pripojený k pólu V0 na LCD displeji.
S.NO |
Kolík snímača prietoku vody |
Arduino piny |
1 |
Červený drôt |
5V |
2 |
čierna |
GND |
3 |
žltá |
A0 |
S.No |
LCD |
Arduino |
1 |
Vss |
GND (zemnica koľajnice) |
2 |
VDD |
5 V (kladná lišta kontaktného poľa) |
3 |
Pre spojenie s V0 si pozrite vyššie uvedenú poznámku |
|
4 |
RS |
12 |
5 |
RW |
GND |
6 |
E |
11 |
7 |
D7 |
9 |
8 |
D6 až D3 |
3 až 5 |
Použil som nepájivú dosku a akonáhle bolo pripojenie vykonané podľa schémy zapojenia zobrazenej vyššie, moje testovacie nastavenie vyzeralo asi takto.
Kód snímača prietoku vody Arduino
Kompletný Arduino snímač prietoku vody je uvedený v spodnej časti stránky. Vysvetlenie kódu je nasledovné.
Používame hlavičkový súbor LCD, ktorý uľahčuje naše prepojenie LCD s Arduino, a kolíky 12,11,5,4,3,9 sú pridelené na prenos dát medzi LCD a Arduino. Výstupný pin snímača je pripojený k pinu 2 Arduino UNO.
volatile int flow_frequency; // Meria impulzy snímača prietoku // Vypočítané plaváky v litroch za hodinu vol = 0,0, l_minute; unsigned char Flowensor = 2; // Vstup senzora nepodpísaný long currentTime; nepodpísaný dlhý čas cloopTime; #include
Táto funkcia je rutinou prerušenia služby a bude sa volať vždy, keď je na kolíku 2 Arduino UNO signál prerušenia. Pre každý signál prerušenia sa počet premenných flow_frequency zvýši o 1. Podrobnejšie informácie o prerušeniach a ich fungovaní nájdete v tomto článku o prerušeniach Arduino.
void flow () // Funkcia prerušenia { flow_frequency ++; }
V nastavení neplatnosti povieme MCU, že pin 2 Arduino UNO sa používa ako INPUT zadaním príkazu pinMode (pin, OUTPUT). Použitím príkazu attachInterrupt, kedykoľvek dôjde k zvýšeniu signálu na kolíku 2, je vyvolaná funkcia toku. To zvyšuje počet v premennej flow_frequency o 1. Aktuálny čas a cloopTime sa používajú na to, aby sa kód spustil každú 1 sekundu.
void setup () { pinMode (flowensor, INPUT); digitalWrite (flowensor, HIGH); Serial.begin (9600); lcd.začiatok (16, 2); attachInterrupt (digitalPinToInterrupt (FlowSensor), flow, RISING); // Prerušenie nastavenia lcd.clear (); lcd.setCursor (0,0); lcd.print ("Merač prietoku vody"); lcd.setCursor (0,1); lcd.print ("Prehľad okruhov"); currentTime = millis (); cloopTime = currentTime; }
Funkcia if zabezpečuje, že každú sekundu beží kód vo vnútri. Týmto spôsobom môžeme počítať počet frekvencií produkovaných snímačom prietoku vody za sekundu. Charakteristiky impulzov prietoku z údajového listu udávajú, že frekvencia je 7,5 vynásobená prietokom. Takže prietok je frekvencia / 7,5. Po zistení prietoku v litroch / minútu ho vydelte číslom 60 a prepočítajte na liter / s. Táto hodnota sa pridáva do premennej vol každú každú sekundu.
void loop () { currentTime = millis (); // Každú sekundu vypočítajte a vytlačte litre / hodinu, ak (currentTime> = (cloopTime + 1000)) { cloopTime = currentTime; // Aktualizuje cloopTime if (flow_frequency! = 0) { // Frekvencia impulzov (Hz) = 7.5Q, Q je prietok v L / min. l_minute = (flow_frequency / 7.5); // (Frekvencia impulzu x 60 min) / 7,5 Q = prietok v L / hod lcd.clear (); lcd.setCursor (0,0); lcd.print ("Sadzba:"); lcd.print (l_minute); lcd.print ("L / M"); l_minute = l_minute / 60; lcd.setCursor (0,1); vol = vol + l_minute; lcd.print („Zväzok:“); lcd.tlač (objem); lcd.print ("L"); flow_frequency = 0; // Reset Counter Serial.print (l_minute, DEC); // Tlač litrov / hodinu Serial.println ("L / Sec"); }
Funkcia else funguje, keď zo snímača prietoku vody nevychádza v danom časovom rozmedzí žiadny výstup.
else { lcd.clear (); lcd.setCursor (0,0); lcd.print ("Sadzba:"); lcd.print (flow_frequency); lcd.print ("L / M"); lcd.setCursor (0,1); lcd.print („Zväzok:“); lcd.tlač (objem); lcd.print ("L"); }
Čidlo prietoku vody Arduino pracuje
V našom projekte sme pripojili snímač prietoku vody k potrubiu. Ak je výstupný ventil potrubia zatvorený, výstup snímača prietoku vody je nulový (bez impulzov). Na kolíku 2 Arduina nebude viditeľný žiadny signál prerušenia a počet parametrov flow_frequency bude nulový. V tomto stave bude fungovať kód napísaný vo vnútri cyklu else.
Ak je otvorený výstupný ventil potrubia. Voda prúdi cez snímač, ktorý následne otáča kolesom vo vnútri snímača. V tomto stave môžeme pozorovať impulzy, ktoré sú generované snímačom. Tieto impulzy budú pôsobiť ako signál prerušenia pre Arduino UNO. Pre každý signál prerušenia (stúpajúca hrana) sa počet premennej flow_frequency zvýši o jednu. Aktuálna premenná času a cloopTIme zaisťuje, že každú jednu sekundu sa pre výpočet prietoku a objemu použije hodnota flow_frequency. Po dokončení výpočtu sa premenná flow_frequency nastaví na nulu a celá procedúra sa spustí od začiatku.
Celú prácu nájdete tiež vo videu, na ktoré odkazujete v dolnej časti tejto stránky. Dúfam, že sa vám návod páčil a potešilo vás niečo užitočného. Ak máte nejaké problémy, nechajte ich prosím v sekcii komentárov alebo použite ďalšie technické otázky na našich fórach.