Подключение датчика потока воды к Arduino требует минимального присоединения. Подключите провода VCC (красный) и GND (черный) датчика потока воды к 5 В и Gnd Arduino, и соедините провод импульсного выхода (желтый) датчика потока воды с цифровым выводом 2 Arduino. Обратите внимание, что датчик потока воды не властолюбивый тип; он потребляет максимум 15-20 мА при входе 5 В постоянного тока!
Здесь можно Купить YF‐ S201 Датчик расхода воды
Подготовка программного обеспечения
Скетч Arduino (код) использует внешнее прерывание (int 0) на цифровом выводе 2 Arduino (D2). Это используется для считывания выходных импульсов с датчика потока воды. Когда Arduino обнаруживает импульс, он немедленно запускает функцию pulseCounter (). Затем эта функция подсчитывает общее количество обнаруженных импульсов.
Датчики потока воды / жидкости обычно выдают серию импульсов, пропорциональных мгновенному расходу, что означает, что для их интерпретации необходимо реализовать простой частотомер. Поскольку в этом проекте используется датчик потока воды, содержащий датчик Холла, который выдает частоту пульса, пропорциональную скорости потока, он не только полезен сам по себе, но также демонстрирует очень полезную технику, которую можно использовать в широкий спектр проектов, в которых необходимо измерять скорость, с которой что-то происходит (например, электронный духовой инструмент)./*
YF‐ S201 Water Flow Sensor
Water Flow Sensor output processed to read in litres/hour
*/
volatile int flow_frequency; // Measures flow sensor pulses
unsigned int l_hour; // Calculated litres/hour
unsigned char flowsensor = 2; // Sensor Input
unsigned long currentTime;
unsigned long cloopTime;
void flow () // Interrupt function
{
flow_frequency++;
}
void setup()
{
pinMode(flowsensor, INPUT);
digitalWrite(flowsensor, HIGH); // Optional Internal Pull-Up
Serial.begin(9600);
attachInterrupt(0, flow, RISING); // Setup Interrupt
sei(); // Enable interrupts
currentTime = millis();
cloopTime = currentTime;
}
void loop ()
{
currentTime = millis();
// Every second, calculate and print litres/hour
if(currentTime >= (cloopTime + 1000))
{
cloopTime = currentTime; // Updates cloopTime
// Pulse frequency (Hz) = 7.5Q, Q is flow rate in L/min.
l_hour = (flow_frequency * 60 / 7.5); // (Pulse frequency x 60 min) / 7.5Q = flowrate in L/hour
flow_frequency = 0; // Reset Counter
Serial.print(l_hour, DEC); // Print litres/hour
Serial.println(" L/hour");
}
}
Чтобы измерить количество воды, прошедшей через определенное время через датчик потока воды, ее сначала пропустили через датчик потока воды, который был выбран в качестве входного интерфейса в потоке. Формулы применяются для измерения количества оборотов / импульсов в минуту вращения.
Скорость потока может быть определена косвенно различными методами, такими как изменение скорости или кинетической энергии. Здесь мы определили скорость потока по изменению скорости воды. Скорость зависит от давления, которое проталкивает сквозные трубопроводы. Поскольку площадь поперечного сечения трубы известна и остается постоянной, средняя скорость является показателем скорости потока. Основным соотношением для определения расхода жидкости в таких случаях является Q = VxA , где Q - расход / общий поток воды через трубу, V - средняя скорость потока, а А - площадь поперечного сечения трубы ( вязкость, плотность и трение жидкости в контакте с трубой также влияют на расход воды).
Частота импульсов (Гц) = 7,5Q, Q - скорость потока в литрах / мин
Скорость потока (литров / час) = (частота импульсов x 60 мин) / 7,5Q
Другими словами:
Частота датчика (Гц) = 7,5 * Q (литров / мин)
Литры = Q * прошедшее время (секунды) / 60 (секунды / минута)
Литров = (Частота (Импульсы / секунда) / 7,5) * прошедшее время (секунды) / 60
Литров = импульсов / (7,5 * 60)