Датчик расхода воды YF-S401

Устройство состоит из датчика Холла, ротора и пластмассового клапана с двумя штуцерами. Диаметр резьбы штуцеров для входа и выхода составляет 1/4 дюйма.

Функционирует YF-S401 просто: вода, проходя сквозь водяной ротор, заставляет его крутиться. Вращается ротор с различной скоростью, так как она прямо пропорциональна количеству проходящей через него воды.

Датчик Холла выдаёт на выходе импульсный сигнал определённой частоты. Чтобы с YF-S401 получать данные о расходуемой воде, датчик подключают к обрабатывающему устройству, которым может стать плата ардуино. Данные о расходе можно получать ежесекундно.

Схема подключения датчик расхода воды YF-S401

На изображении ниже представлена схема подключения датчика расхода воды.

Код для подключения датчика расхода воды YF-S401

В примере ниже показано, как подключить вывод датчика расхода воды YF-S401 к монитору последовательного порта платы (вывод можно посмотреть в мониторе порта Arduino IDE).

volatile int flow_frequency; // измеряет частоту
int l_hour; // рассчитанные литр/час
unsigned char flowsensor = 2; // Вход сенсора
unsigned long currentTime;
unsigned long cloopTime;

void flow () // функция прерывания
{
  flow_frequency++;
}

void setup()
{
  pinMode(flowsensor, INPUT);
  digitalWrite(flowsensor, HIGH);
  Serial.begin(9600);
  attachInterrupt(0, flow, RISING); // настраиваем прерывания
  sei(); // активируем прерывания
  currentTime = millis();
  cloopTime = currentTime;
}

void loop ()
{
  currentTime = millis();

  // Каждую секунду рассчитываем и выводим на экран литры в час
  if (currentTime >= (cloopTime + 1000))
  {

    cloopTime = currentTime; // Обновление cloopTime
    // Частота импульсов (Гц) = 7.5Q, Q - это расход в л/мин.
    l_hour = (flow_frequency * 60 / 7.5); // (Частота x 60 мин) / 7.5Q = расход в л/час
    flow_frequency = 0; // Сбрасываем счетчик
    Serial.print(l_hour, DEC); // Отображаем л/час
    Serial.println(" L/hour");
  }
}

Скачать файл с кодом, формат .INO: Датчик расхода воды