Простая схема цифрового расходомера воды с использованием Arduino

Попробуйте наш инструмент устранения неполадок





В этом посте мы собираемся создать цифровой расходомер воды с использованием Arduino и ЖК-дисплея 16 x 2. Мы рассмотрим датчик потока воды YF-S201, его конструкцию и работу, а также способы взаимодействия с Arduino для получения некоторых полезных показаний.

Предлагаемый проект может измерять расход воды в литрах в минуту и ​​общий расход воды в литрах.



Давайте посмотрим на датчик расхода воды YF-S201.

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

YF-S201 - это На основе эффекта Холла датчик воды. Он имеет три вывода 5V (номинальное рабочее напряжение), GND и выход. + 5V - красный провод, черный - GND, а желтый - выходной.



Датчик выдает частоту прямо пропорциональную расходу воды. Датчик YF-S201 может измерять от 1 л / мин до 30 л / мин. Давление воды должно быть меньше или равно 1,75 МПа.

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

Датчик может быть размещен после основной задвижки резервуара, если вы хотите измерить расход воды в сети водопроводных труб, или вы можете разместить непосредственно перед водопроводным краном для измерения расхода воды в одном кране.

Датчик можно размещать в любом месте в соответствии с потребностями пользователя, но следует соблюдать осторожность, чтобы избежать утечки воды.

Датчик имеет магнит и датчик Холла Если мы посмотрим на боковые стороны датчика потока воды, мы увидим пластиковую турбину на пути потока воды.

Магнит круглой формы встроен в центр турбины, а датчик Холла герметизирован и защищен от влаги и размещен над магнитом. Датчик Холла выдает импульс на каждый оборот турбины.

Форма волны расхода воды на последовательном плоттере

Мы можем видеть импульсы, генерируемые датчиком потока воды на последовательном плоттере Arduino IDE, как показано ниже (с использованием одноканального осциллографа Arduino).

Мы продули датчик воздухом на вращать турбину в качестве теста, а генерируемая форма волны показана выше. Более плотная форма волны в левой части соответствует более высокой частоте и более быстрому вращению турбины, менее плотная форма волны в правой части означает наоборот.

Постоянный поток воды дает постоянный частотный выход.

Мы должны преобразовать частоту в масштабе литры / минуты. Для этого производитель дал формулу:

Расход воды (л / мин) = частота / 7,5

Итак, нам нужно измерить сгенерированную частоту и применить приведенную выше формулу в программном коде.

Технические характеристики YF-S201:

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

· Рабочая температура: от -25 до + 80 градусов Цельсия.

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

· Рабочий цикл на выходе: 50% +/- 10%.

· Максимальное давление воды: 1,75 МПа.

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

· Максимальное потребление тока: 15 мА при 5 В

На этом заканчивается датчик расхода воды 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 ГГц с джойстиком и Arduino Далее: Сделайте этот понижающий преобразователь с помощью Arduino