- Požadované komponenty
- Senzor průtoku vody YFS201
- Kruhový diagram
- Kód snímače průtoku vody Arduino
- Čidlo průtoku vody Arduino pracuje
Pokud jste někdy navštívili velké výrobní společnosti, první věcí, které si všimnete, je, že jsou všechny automatizované. Průmyslová odvětví nealkoholických nápojů a chemický průmysl musí neustále měřit a kvantifikovat kapaliny, se kterými manipulují během tohoto automatizačního procesu, a nejběžnějším snímačem používaným k měření průtoku kapaliny je snímač průtoku. Použitím snímače průtoku s mikrokontrolérem, jako je Arduino, můžeme vypočítat průtok a zkontrolovat objem kapaliny, která prošla potrubím, a podle potřeby jej řídit. Kromě výrobního průmyslu lze snímače průtoku nalézt také v zemědělství, potravinářství, vodohospodářství, těžebním průmyslu, recyklaci vody, kávovarech atd. Dále bude snímač průtoku vody dobrým doplňkem k projektům, jako je automatický dávkovač vody a inteligentní zavlažovací systémy, kde potřebujeme sledovat a kontrolovat tok kapalin.
V tomto projektu budeme stavět snímač průtoku vody pomocí Arduina. Propojíme snímač průtoku vody s Arduinem a LCD a naprogramujeme jej tak, aby zobrazoval objem vody, který prošel ventilem. Pro tento konkrétní projekt použijeme snímač průtoku vody YF-S201, který využívá Hallova jevu ke snímání průtoku kapaliny.
Požadované komponenty
- Senzor průtoku vody
- Arduino UNO
- LCD (16x2)
- Konektor s vnitřním závitem
- Připojovací vodiče
- Trubka
Senzor průtoku vody YFS201
Senzor má 3 vodiče ČERVENÉ, ŽLUTÉ a ČERNÉ, jak je znázorněno na obrázku níže. Červený vodič se používá pro napájecí napětí v rozmezí od 5 V do 18 V a černý vodič se připojuje k GND. Žlutý vodič se používá pro výstup (impulsy), který může číst MCU. Senzor průtoku vody se skládá ze senzoru větrníku, který měří množství kapaliny, které jím prošlo.
Činnost snímače průtoku vody YFS201 je snadno pochopitelná. Čidlo průtoku vody pracuje na principu Hallova jevu. Hallův jev je produkce rozdílu potenciálů napříč elektrickým vodičem, když je magnetické pole aplikováno ve směru kolmém na směr toku proudu. Čidlo průtoku vody je integrováno s magnetickým snímačem Hallova jevu, který generuje elektrický impuls při každé otáčce. Jeho konstrukce je taková, že snímač Hallova jevu je utěsněn před vodou a umožňuje čidlu zůstat v bezpečí a suchu.
Samotný obrázek modulu snímače YFS201 je uveden níže.
Pro připojení k potrubí a senzoru průtoku vody jsem použil dva konektory s vnitřním závitem, jak je znázorněno níže.
Podle specifikací YFS201 je maximální proud, který odebírá při 5 V, 15 mA a pracovní průtok je 1 až 30 litrů za minutu. Když kapalina protéká senzorem, dotýká se žeber turbínového kola, které je umístěno v dráze tekoucí kapaliny. Hřídel kola turbíny je spojena se snímačem Hallova jevu. Proto kdykoli voda protéká ventilem, generuje pulsy. Nyní musíme pouze změřit čas pro plusy nebo spočítat počet pulzů za 1 sekundu a poté vypočítat průtoky v litrech za hodinu (L / Hr) a poté pomocí jednoduchého převodu zjistit objem vody, která jím prošla. K měření pulzů použijeme Arduino UNO. Obrázek níže ukazuje pinout snímače průtoku vody.
Kruhový diagram
Průtok vody Čidlo schéma zapojení je znázorněno níže na rozhraní snímače průtoku vody a LCD (16x2) s Arduino. Pokud s Arduino a LCD začínáte, můžete si přečíst tento článek o propojení Arduina a LCD.
Připojení snímače průtoku vody a LCD (16x2) k Arduino je uvedeno níže v tabulkovém formátu. Pamatujte, že hrnec je zapojen mezi 5V a GND a pin hrotu 2 je spojen s pinem V0 na LCD.
S.NO |
Kolík snímače průtoku vody |
Arduino piny |
1 |
Červený drát |
5V |
2 |
Černá |
GND |
3 |
Žlutá |
A0 |
S.No |
LCD |
Arduino |
1 |
Vss |
GND (zemnice kolejového pole) |
2 |
VDD |
5 V (pozitivní kolej na prkénku) |
3 |
Pro připojení k V0 zkontrolujte výše uvedenou poznámku |
|
4 |
RS |
12 |
5 |
RW |
GND |
6 |
E |
11 |
7 |
D7 |
9 |
8 |
D6 až D3 |
3 až 5 |
Použil jsem prkénko na prkénko a jakmile bylo připojení provedeno podle schématu znázorněného výše, moje testovací nastavení vypadalo nějak takto.
Kód snímače průtoku vody Arduino
Kompletní Arduino kód snímače průtoku vody je uveden v dolní části stránky. Vysvětlení kódu je následující.
Používáme hlavičkový soubor LCD, který usnadňuje naše propojení LCD s Arduino, a kolíky 12,11,5,4,3,9 jsou přiděleny pro přenos dat mezi LCD a Arduino. Výstupní kolík snímače je připojen k kolíku 2 Arduino UNO.
volatile int flow_frequency; // Měří impulzy snímače průtoku // Vypočítané plovoucí objemy litrů / hodinu = 0,0, l_minute; unsigned char Flowensor = 2; // Vstup senzoru bez znaménka long currentTime; nepodepsaný dlouhý cloopTime; #zahrnout
Tato funkce je rutinou přerušení služby a bude vyvolána vždy, když je na pin2 Arduino UNO signál přerušení. U každého signálu přerušení se počet proměnné flow_frequency zvýší o 1. Další podrobnosti o přerušeních a jejich fungování najdete v tomto článku o přerušeních Arduino.
void flow () // Přerušení funkce { flow_frequency ++; }
V nastavení neplatnosti řekneme MCU, že pin 2 Arduino UNO se používá jako INPUT zadáním příkazu pinMode (pin, OUTPUT). Pomocí příkazu attachInterrupt, kdykoli dojde ke zvýšení signálu na pinu 2, je volána funkce toku. Tím se zvyšuje počet v proměnné flow_frequency o 1. Aktuální čas a cloopTime se používají ke spuštění kódu každou 1 sekundu.
void setup () { pinMode (flowensor, INPUT); digitalWrite (flowensor, HIGH); Serial.begin (9600); lcd.begin (16, 2); attachInterrupt (digitalPinToInterrupt (flowensor), flow, RISING); // Přerušení instalace lcd.clear (); lcd.setCursor (0,0); lcd.print ("měřič průtoku vody"); lcd.setCursor (0,1); lcd.print ("Přehled okruhů"); currentTime = millis (); cloopTime = currentTime; }
Funkce if zajišťuje, že každou sekundu běží kód uvnitř. Tímto způsobem můžeme počítat počet frekvencí produkovaných snímačem průtoku vody za sekundu. Charakteristiky pulzů průtoku z datového listu udávají, že frekvence je 7,5 vynásobena průtokem. Průtok je tedy frekvence / 7,5. Po zjištění průtoku v litrech / minutu jej vydělte 60 a převeďte na litr / s. Tato hodnota se přidává do proměnné vol každou sekundu.
void loop () { currentTime = millis (); // Každou sekundu vypočítat a vytisknout litry / hodinu if (currentTime> = (cloopTime + 1000)) { cloopTime = currentTime; // Aktualizuje cloopTime if (flow_frequency! = 0) { // Pulzní frekvence (Hz) = 7.5Q, Q je průtok v L / min. l_minute = (flow_frequency / 7.5); // (frekvence pulzu x 60 min) / 7,5 Q = průtok v L / hod lcd.clear (); lcd.setCursor (0,0); lcd.print ("Sazba:"); lcd.print (l_minute); lcd.print ("L / M"); l_minute = l_minute / 60; lcd.setCursor (0,1); vol = vol + l_minute; lcd.print ("svazek:"); lcd. tisk (obj); lcd.print ("L"); flow_frequency = 0; // Reset Counter Serial.print (l_minute, DEC); // Tisk litrů / hodinu Serial.println ("L / Sec"); }
Funkce else funguje, když ze snímače průtoku vody nevychází v daném časovém rozsahu žádný výstup.
else { lcd.clear (); lcd.setCursor (0,0); lcd.print ("Sazba:"); lcd.print (flow_frequency); lcd.print ("L / M"); lcd.setCursor (0,1); lcd.print ("svazek:"); lcd. tisk (obj); lcd.print ("L"); }
Čidlo průtoku vody Arduino pracuje
V našem projektu jsme připojili snímač průtoku vody k potrubí. Pokud je výstupní ventil potrubí uzavřen, je výstup snímače průtoku vody nulový (žádné impulsy). Na pinu 2 Arduina nebude vidět žádný signál přerušení a počet flow_frequency bude nulový. V tomto stavu bude fungovat kód, který je zapsán do smyčky else.
Pokud je otevřen výstupní ventil potrubí. Voda protéká senzorem, který zase otáčí kolem uvnitř senzoru. V tomto stavu můžeme pozorovat pulsy, které jsou generovány ze snímače. Tyto impulsy budou fungovat jako signál přerušení do Arduino UNO. Pro každý signál přerušení (vzestupná hrana) se počet proměnné flow_frequency zvýší o jednu. Aktuální proměnná času a cloopTIme zajišťuje, že každou jednu sekundu je pro výpočet průtoku a objemu použita hodnota flow_frequency. Po dokončení výpočtu je proměnná flow_frequency nastavena na nulu a celá procedura je spuštěna od začátku.
Kompletní práci najdete také ve videu, na které odkazujete ve spodní části této stránky. Doufám, že se vám výukový program líbil a užil si něco užitečného. Pokud máte nějaké problémy, nechte je prosím v sekci komentářů nebo použijte naše fóra pro další technické dotazy.