- Wymagane składniki
- Czujnik przepływu wody YFS201
- Schemat obwodu
- Kod czujnika przepływu wody Arduino
- Czujnik przepływu wody Arduino działa
Jeśli kiedykolwiek odwiedziłeś firmy produkcyjne na dużą skalę, pierwszą rzeczą, którą zauważysz, jest to, że wszystkie są zautomatyzowane. Przemysł napojów bezalkoholowych i przemysł chemiczny muszą stale mierzyć i określać ilościowo płyny, którymi operują podczas tego procesu automatyzacji, a najpowszechniejszym czujnikiem używanym do pomiaru przepływu cieczy jest czujnik przepływu. Używając czujnika przepływu z mikrokontrolerem, takim jak Arduino, możemy obliczyć natężenie przepływu, sprawdzić objętość cieczy, która przeszła przez rurę i kontrolować ją w razie potrzeby. Oprócz przemysłu wytwórczego, czujniki przepływu można również znaleźć w rolnictwie, przetwórstwie żywności, gospodarce wodnej, przemyśle wydobywczym, recyklingu wody, ekspresach do kawy itp. Ponadto czujnik przepływu wody będzie dobrym dodatkiem do projektów takich jak automatyczny dozownik wody. oraz inteligentne systemy nawadniające, w których musimy monitorować i kontrolować przepływ cieczy.
W tym projekcie zamierzamy zbudować czujnik przepływu wody z wykorzystaniem Arduino. Połączymy czujnik przepływu wody z Arduino i wyświetlaczem LCD i zaprogramujemy go tak, aby wyświetlał objętość wody, która przepłynęła przez zawór. W tym konkretnym projekcie użyjemy czujnika przepływu wody YF-S201, który wykorzystuje efekt Halla do wykrywania natężenia przepływu cieczy.
Wymagane składniki
- Czujnik przepływu wody
- Arduino UNO
- LCD (16x2)
- Złącze z gwintem wewnętrznym
- Przewody łączące
- Rura
Czujnik przepływu wody YFS201
Czujnik ma 3 przewody CZERWONE, ŻÓŁTE i CZARNE, jak pokazano na poniższym rysunku. Czerwony przewód służy do zasilania napięciem w zakresie od 5 V do 18 V, a czarny przewód jest podłączony do GND. Żółty przewód służy do wyjścia (impulsy), które mogą być odczytane przez MCU. Czujnik przepływu wody składa się z czujnika wiatraczkowego, który mierzy ilość cieczy, która przez niego przepłynęła.
Działanie czujnika przepływu wody YFS201 jest łatwe do zrozumienia. Czujnik przepływu wody działa na zasadzie efektu Halla. Efekt Halla to wytwarzanie różnicy potencjałów w przewodniku elektrycznym, gdy pole magnetyczne jest przyłożone w kierunku prostopadłym do kierunku przepływu prądu. Czujnik przepływu wody jest zintegrowany z magnetycznym czujnikiem Halla, który generuje impuls elektryczny przy każdym obrocie. Jego konstrukcja jest w taki sposób, że czujnik halla jest odizolowany od wody i pozwala czujnikowi pozostać bezpiecznym i suchym.
Zdjęcie samego modułu czujnika YFS201 pokazano poniżej.
Do połączenia z rurą i czujnikiem przepływu wody użyłem dwóch złączek z gwintem wewnętrznym, jak pokazano poniżej.
Zgodnie ze specyfikacjami YFS201 maksymalny prąd pobierany przy 5 V wynosi 15 mA, a robocze natężenie przepływu wynosi od 1 do 30 litrów / minutę. Przepływająca ciecz przez czujnik styka się z żebrami wirnika turbiny, które znajdują się na drodze przepływającej cieczy. Wał wirnika turbiny jest połączony z czujnikiem Halla. Dzięki temu, ilekroć woda przepływa przez zawór, generuje impulsy. Teraz wszystko, co musimy zrobić, to zmierzyć czas na plusy lub policzyć liczbę impulsów w ciągu 1 sekundy, a następnie obliczyć natężenia przepływu w litrach na godzinę (L / H), a następnie użyć prostego wzoru przeliczeniowego, aby znaleźć objętość wody, która przez nią przeszła. Aby zmierzyć impulsy, użyjemy Arduino UNO. Poniższe zdjęcie pokazuje pinout czujnika przepływu wody.
Schemat obwodu
Schemat elektryczny czujnik przepływu wody jest przedstawiona poniżej interfejs czujnik przepływu wody i LCD (16x2) z Arduino. Jeśli nie masz doświadczenia z Arduino i wyświetlaczami LCD, możesz rozważyć przeczytanie tego artykułu dotyczącego interfejsów Arduino i LCD.
Połączenie czujnika przepływu wody i wyświetlacza LCD (16x2) z Arduino przedstawiono poniżej w formie tabeli. Zwróć uwagę, że potencjometr jest podłączony między 5V a GND, a pin 2 potencjometru jest połączony z pinem V0 wyświetlacza LCD.
S.NO |
Kołek czujnika przepływu wody |
Piny Arduino |
1 |
Czerwony przewód |
5V |
2 |
czarny |
GND |
3 |
Żółty |
A0 |
S.Nr |
LCD |
Arduino |
1 |
Vss |
GND (szyna uziemiająca płytki stykowej) |
2 |
VDD |
5 V (dodatnia szyna płytki stykowej) |
3 |
W przypadku połączenia z V0 sprawdź powyższą uwagę |
|
4 |
RS |
12 |
5 |
RW |
GND |
6 |
mi |
11 |
7 |
D7 |
9 |
8 |
D6 do D3 |
3 do 5 |
Użyłem płytki prototypowej, a po wykonaniu połączenia zgodnie ze schematem obwodu pokazanym powyżej, moja konfiguracja testowa wyglądała mniej więcej tak.
Kod czujnika przepływu wody Arduino
Pełny kod czujnika przepływu wody Arduino jest podany na dole strony. Wyjaśnienie kodu jest następujące.
Używamy pliku nagłówkowego LCD, który ułatwia nam połączenie LCD z Arduino, a piny 12,11,5,4,3,9 są przeznaczone do przesyłania danych między LCD a Arduino. Pin wyjściowy czujnika jest połączony z pinem 2 Arduino UNO.
volatile int flow_frequency; // Mierzy impulsy czujnika przepływu // Obliczone litry / godzinę float vol = 0,0, l_minute; unsigned char flowensor = 2; // Wejście czujnika bez znaku long currentTime; unsigned long cloopTime; #zawierać
Ta funkcja jest procedurą obsługi przerwań i będzie wywoływana za każdym razem, gdy pojawi się sygnał przerwania na pinie 2 Arduino UNO. Dla każdego sygnału przerwania liczba zmiennej flow_frequency zostanie zwiększona o 1. Aby uzyskać więcej informacji na temat przerwań i ich działania, możesz przeczytać ten artykuł na temat przerwań Arduino.
void flow () // Funkcja przerwania { flow_frequency ++; }
W konfiguracji pustej informujemy MCU, że pin 2 Arduino UNO jest używany jako WEJŚCIE, podając polecenie pinMode (pin, OUTPUT). Za pomocą polecenia attachInterrupt, ilekroć występuje wzrost sygnału na pinie 2, wywoływana jest funkcja przepływu. Zwiększa to liczbę w zmiennej flow_frequency o 1. Bieżący czas i czas cloopTime są używane do uruchomienia kodu co 1 sekundę.
void setup () { pinMode (flowensor, INPUT); digitalWrite (flowensor, HIGH); Serial.begin (9600); lcd.begin (16, 2); attachInterrupt (digitalPinToInterrupt (flowensor), przepływ, RISING); // Przerwanie instalacji lcd.clear (); lcd.setCursor (0,0); lcd.print ("Wodomierz"); lcd.setCursor (0,1); lcd.print ("Circuit Digest"); currentTime = millis (); cloopTime = currentTime; }
Funkcja if zapewnia, że kod wewnątrz niej działa co sekundę. W ten sposób możemy policzyć liczbę częstotliwości wytwarzanych przez czujnik przepływu wody na sekundę. W charakterystyce impulsu natężenia przepływu z arkusza danych podano, że częstotliwość wynosi 7,5 pomnożone przez natężenie przepływu. Więc natężenie przepływu to częstotliwość / 7,5. Po znalezieniu natężenia przepływu, które jest w litrach / minutę, podziel je przez 60, aby zamienić na litry / sek. Ta wartość jest dodawana do zmiennej vol co jedną sekundę.
void loop () { currentTime = millis (); // Co sekundę oblicz i wydrukuj litry / godzinę if (currentTime> = (cloopTime + 1000)) { cloopTime = currentTime; // Aktualizuje cloopTime if (flow_frequency! = 0) { // Częstotliwość impulsów (Hz) = 7,5 Q, Q to natężenie przepływu w l / min. l_minute = (flow_frequency / 7,5); // (Częstotliwość impulsów x 60 min) / 7,5Q = natężenie przepływu w l / godzinę lcd.clear (); lcd.setCursor (0,0); lcd.print ("Stawka:"); lcd.print (l_minute); lcd.print ("L / M"); l_minute = l_minute / 60; lcd.setCursor (0,1); vol = vol + l_minute; lcd.print ("Tom:"); lcd.print (vol); lcd.print ("L"); flow_frequency = 0; // Reset licznika Serial.print (l_minute, DEC); // Wydruk litrów / godzinę Serial.println ("L / Sec"); }
Funkcja else działa, gdy czujnik przepływu wody nie ma wyjścia w określonym przedziale czasu.
else { lcd.clear (); lcd.setCursor (0,0); lcd.print ("Stawka:"); lcd.print (flow_frequency); lcd.print ("L / M"); lcd.setCursor (0,1); lcd.print ("Tom:"); lcd.print (vol); lcd.print ("L"); }
Czujnik przepływu wody Arduino działa
W naszym projekcie czujnik przepływu wody podłączyliśmy do rury. Jeśli zawór wyjściowy rury jest zamknięty, wyjście czujnika przepływu wody jest zerowe (brak impulsów). Nie będzie sygnału przerwania widocznego na pinie 2 Arduino, a liczba flow_frequency będzie wynosić zero. W tym stanie zadziała kod zapisany w pętli else.
Jeśli zawór wylotowy rury jest otwarty. Woda przepływa przez czujnik, który z kolei obraca koło wewnątrz czujnika. W tym stanie możemy obserwować impulsy, które są generowane z czujnika. Te impulsy będą działać jako sygnał przerwania dla Arduino UNO. Dla każdego sygnału przerwania (zbocza narastającego) liczba zmiennej flow_frequency zostanie zwiększona o jeden. Bieżący czas i zmienna cloopTIme zapewniają, że co sekundę do obliczenia natężenia przepływu i objętości brana jest wartość flow_frequency. Po zakończeniu obliczeń zmienna flow_frequency jest ustawiana na zero i cała procedura rozpoczyna się od początku.
Całość pracy można również znaleźć w wideo, do którego link znajduje się na dole tej strony. Mamy nadzieję, że spodobał Ci się samouczek i coś pożytecznego. Jeśli masz jakieś problemy, zostaw je w sekcji komentarzy lub skorzystaj z naszych forów, aby uzyskać odpowiedzi na inne pytania techniczne.