Prosty obwód cyfrowego miernika przepływu wody wykorzystujący Arduino

Wypróbuj Nasz Instrument Do Eliminowania Problemów





W tym poście skonstruujemy cyfrowy wodomierz wykorzystujący Arduino i wyświetlacz LCD 16 x 2. Przyjrzymy się czujnikowi przepływu wody YF-S201, jego budowie i działaniu oraz temu, jak połączyć się z Arduino, aby uzyskać przydatne odczyty.

W proponowanym projekcie można zmierzyć natężenie przepływu wody w litrach / minutę oraz całkowity przepływ wody w litrach.



Przyjrzyjmy się czujnikowi przepływu wody YF-S201.

Ilustracja YF-S201:

YF-S201 to Oparty na efekcie Halla czujnik wody. Posiada trzy zaciski 5V (nominalne napięcie robocze), GND i wyjście. +5 V to przewód w kolorze czerwonym, czarny to GND, a żółty to przewód wyjściowy.



Czujnik podaje częstotliwość wprost proporcjonalną do przepływu wody. Czujnik YF-S201 może mierzyć od 1 litra / minutę do 30 litrów / minutę. Ciśnienie wody powinno być mniejsze lub równe 1,75 MPa.

Woda może być wtryskiwana z jednego końca, a woda przepływa przez drugi koniec.

Czujnik można umieścić za zasuwą główną zbiornika, jeśli chcemy zmierzyć przepływ wody w sieci wodociągów lub tuż przed kranem, aby zmierzyć przepływ wody z pojedynczego kranu.

Czujnik można umieścić w dowolnym miejscu, w zależności od potrzeb użytkownika, ale należy uważać, aby nie dopuścić do wycieku wody.

Czujnik ma magnes i czujnik Halla jeśli spojrzymy na boki czujnika przepływu wody, możemy zobaczyć plastikową turbinę na torze przepływu wody.

Okrągły magnes jest osadzony w środku turbiny, a czujnik Halla jest uszczelniony i chroniony przed wilgocią i umieszczony nad magnesem. Czujnik Halla wytwarza impuls przy każdym obrocie turbiny.

Przebieg przepływu wody na ploterze szeregowym

Widzimy impulsy generowane przez czujnik przepływu wody na ploterze szeregowym arduino IDE, pokazanym poniżej (Korzystanie z oscyloskopu jednokanałowego Arduino).

Przedmuchaliśmy powietrze przez czujnik do obrócić turbinę jako test, a wygenerowany przebieg pokazano powyżej. Gęstszy przebieg po lewej stronie oznacza wyższą częstotliwość i szybsze obroty turbiny, mniej gęsty przebieg po prawej stronie oznacza odwrotnie.

Stały przepływ wody zapewnia stałą częstotliwość wyjściową.

Musimy przekonwertować częstotliwość w skali litrów / minutę. Aby to zrobić, producent podał formułę:

Przepływ wody (litr / min) = częstotliwość / 7,5

Musimy więc zmierzyć generowaną częstotliwość i zastosować powyższy wzór w kodzie programu.

Specyfikacje techniczne YF-S201:

· Dokładność: +/- 10%, jeśli potrzebujesz lepszej precyzji, musimy skalibrować.

· Temperatura pracy: od -25 do + 80 stopni Celsjusza.

· Wilgotność robocza: 35% do 80% wilgotności względnej.

· Cykl pracy wyjścia: 50% +/- 10%.

· Maksymalne ciśnienie wody: 1,75 MPa.

· Liczba impulsów na litr: 450.

· Maksymalny pobór prądu: 15 mA przy 5V

Na tym kończy się czujnik przepływu wody YF-S201.

Przejdźmy teraz do schematu.

Schemat:

Pin wyjściowy czujnika przepływu wody jest podłączony do A0 Arduino. Użyj Potencjometr 10 K. do regulacji kontrastu wyświetlacza. Podłącz Arduino i wyświetlacz LCD jak na powyższym schemacie.

Kod programu:

//-----Program Developed by R.Girish-----//
#include
LiquidCrystal lcd(12, 11, 5, 4, 3, 2)
int X
int Y
float Time = 0
float frequency = 0
float waterFlow = 0
float total = 0
float LS = 0
const int input = A0
const int test = 9
void setup()
{
Serial.begin(9600)
lcd.begin(16, 2)
lcd.clear()
lcd.setCursor(0,0)
lcd.print('Water Flow Meter')
lcd.setCursor(0,1)
lcd.print('****************')
delay(2000)
pinMode(input,INPUT)
pinMode(test, OUTPUT)
analogWrite(test,100)
}
void loop()
{
X = pulseIn(input, HIGH)
Y = pulseIn(input, LOW)
Time = X + Y
frequency = 1000000/Time
waterFlow = frequency/7.5
LS = waterFlow/60
if(frequency >= 0)
{
if(isinf(frequency))
{
lcd.clear()
lcd.setCursor(0,0)
lcd.print('L/Min: 0.00')
lcd.setCursor(0,1)
lcd.print('Total: ')
lcd.print(total)
lcd.print(' L')
}
else
{
total = total + LS
Serial.println(frequency)
lcd.clear()
lcd.setCursor(0,0)
lcd.print('L/Min: ')
lcd.print(waterFlow)
lcd.setCursor(0,1)
lcd.print('Total: ')
lcd.print(total)
lcd.print(' L')
}
}
delay(1000)
}
//-----Program Developed by R.Girish-----//

Prototyp autora:

„L / Min” wskazuje bieżące natężenie przepływu wody, a „Total” wskazuje całkowitą ilość wody przepływającej od momentu włączenia obwodu.

Można również przepływać dowolne ciecze, których lepkość jest zbliżona do wody.

Jeśli masz jakiekolwiek pytania dotyczące tego cyfrowego wodomierza wykorzystującego Arduino, możesz śmiało wyrazić je w sekcji komentarzy, możesz otrzymać szybką odpowiedź.




Poprzedni: Sterowany joystickiem samochód RC 2,4 GHz przy użyciu Arduino Dalej: Stwórz ten konwerter Buck za pomocą Arduino