Обикновена цифрова верига за измерване на водния поток, използваща Arduino

Обикновена цифрова верига за измерване на водния поток, използваща Arduino

В тази публикация ще конструираме цифров измервател на водата, използвайки Arduino и 16 x 2 LCD дисплей. Ще разгледаме сензора за воден поток YF-S201, неговата конструкция и работа и как да се свържем с Arduino, за да извлечем някои полезни показания.



Предложеният проект може да измерва скоростта на водния поток в литър / минута и общия воден поток в литри.

Нека да разгледаме сензора за воден поток YF-S201.



Илюстрация на YF-S201:

YF-S201 е a Базиран на ефекта на Хол воден сензор. Той има три клеми 5V (номинално работно напрежение), GND и изход. + 5V е червено оцветена жица, черната е GND, а жълтата е изведена.

Сензорът издава честота, пряко пропорционална на водния поток. Сензорът YF-S201 може да измерва от 1 литър / минута до 30 литра / минута. Налягането на водата трябва да бъде по-малко или равно на 1,75 МРа.



Водата може да се инжектира от единия край, а водата тече през другия край.

Сензорът може да бъде поставен след главния затворен клапан на резервоара, ако искате да измервате водния поток в мрежа от водопроводни тръби или можете да поставите непосредствено преди крана за вода, за да измервате водния поток от еднократно.

Поставянето на сензора може да бъде навсякъде според нуждите на потребителя, но трябва да се внимава да се избегне изтичане на вода.

Сензорът има a магнит и сензор за ефект на Хол ако погледнем отстрани на сензора за водния поток, можем да станем свидетели на пластмасова турбина по пътя на водния поток.

В центъра на турбината е вграден магнит с кръгла форма и сензорът на Hall Effect е запечатан и защитен от влага и поставен над магнита. Сензорът на Hall Effect произвежда импулс за всеки оборот на турбината.

Форма на вълната на водния поток на сериен плотер

Можем да видим импулсите, генерирани от сензора за воден поток на сериен плотер на arduino IDE, показан по-долу (Използване на едноканален осцилоскоп Arduino).

Издухахме въздух през сензора до завъртете турбината като тест и генерираната форма на вълната е показана по-горе. По-плътната форма на вълната от лявата страна представлява по-висока честота и по-бързо въртене на турбината, а по-малко плътната форма на вълната от дясната страна означава обратното.

Постоянният воден поток дава постоянна честота.

Ние трябва да конвертирате честотата в литър / минута. За целта производителят е дал формула:

Дебит на водата (литър / мин) = честота / 7,5

И така, трябва да измерим генерираната честота и да приложим горната формула в програмния код.

Технически спецификации на YF-S201:

· Точност: +/- 10%, ако се нуждаете от по-добра точност, трябва да калибрираме.

· Работна температура: -25 до + 80 градуса по Целзий.

· Работна влажност: 35% до 80% относителна влажност.

· Изходен работен цикъл: 50% +/- 10%.

· Максимално налягане на водата: 1,75 МРа.

· Импулси на литър: 450.

· Максимален ток: 15 mA при 5V

Това завършва сензора за воден поток YF-S201.

Сега да преминем към схемата.

Схематична диаграма:

Изходният щифт на сензора за воден поток е свързан към A0 на Arduino. Използвай 10K потенциометър за регулиране на контраста на дисплея. Свържете Arduino и ЛСД дисплей съгласно горната диаграма.

Код на програмата:

//-----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-----//

Авторски прототип:

„L / Min“ показва текущия дебит на водата, а „Total“ показва общата течаща вода от включването на веригата.

Можете също така да тече всякакви течности, чиято стойност на вискозитет е близо до вода.

Ако имате някакви въпроси относно този цифров водомер с Arduino, не се колебайте да изразите в раздела за коментари, може да получите бърз отговор.




Предишен: Контролиран с джойстик 2.4 GHz RC автомобил, използващ Arduino Напред: Направете този конвертор на Buck с помощта на Arduino