Датчик расхода воды 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: Датчик расхода воды