0
КОРЗИНА
0 ТОВАРА
 Датчик расхода воды 0.3 - 6л. / мин. для Arduino ардуино
 Датчик расхода воды 0.3 - 6л. / мин. для Arduino ардуино

Датчик расхода воды 0.3 - 6л. / мин. для Arduino

Подробнее...
Модификация
В наличии: 15 шт. Артикул: # 488
365 ₽
Возможен безналичный расчёт для юридических лиц при оформлении заказа
Сообщить о поставке на e-mail:
{{ status }}
  • В наличии и готов к отправке!
  • Доставка товаров по России, Белоруссии, Казахстану
  • Возможен безналичный расчёт для юридических лиц при оформлении заказа
Количество:
Перейти в корзину и оформить заказ.
Telegram
WhatsApp
Обсудить вопросы приобретения, не технические!
*Доступно общение только текстовыми сообщениями, звонки и аудио сообщения не обслуживаются
Офлайн
Описание товара
Подробное описание товара

Общие сведения

Датчик расхода воды YF-S401 — позволяет измерять скорость потока воды.

Характеристики

  • Рабочее напряжение: 5 ... 18 В.
  • Потребляемый ток: до 15 мА (при Vcc = 5 В).
  • Уровень лог «1» на выходе датчика: >4.5 В (при Vcc = 5 В).
  • Уровень лог «0» на выходе датчика: <0.5 В (при Vcc = 5 В).
  • Измеряемый диапазон расхода воды: 0,3 ... 6,0 л/мин.
  • Погрешность измерений: ±5% (при потоке 0,3 ... 3,0 л/м).
  • Импульсов на литр (по даташиту): 5880.
  • Зависимость от расхода воды (по даташиту): F (Гц) = 98 * Q (л/м).
  • Коэффициент заполнения выходного импульса: 40 - 60 %.
  • Рабочее давление: <0,8 МПа (= 8 бар = 7,9 атм).
  • Рабочая температура: 0 ... 80 °C.
  • Температура жидкости: <120 °C.
  • Влажность воздуха: 35 - 90 %.
  • Размер патрубка: ∅7 мм (внешний), ∅3,8 мм (внутренний), L=12мм.
  • Габариты: 58x35x27 мм.
  • Вес: 37 г.

Согласно datasheet, если через датчик пропустить 1л воды, то с него будет получено 5880 импульсов. В действительности количество импульсов на 1л будет разным при разных скоростях потока воды. Мы предлагаем использовать формулу: Q = F / (5,9F + 4570), где Q - скорость потока воды (л/с), F - количество импульсов в секунду (частота), 5,9 - коэффициент нелинейности, 4570 - линейный коэффициент (вместо 5880 от datasheet).

Подключение

Для удобства подключения к Arduino воспользуйтесь Trema Shield, Trema Power Shield, Motor Shield или Trema Set Shield.

Подключение датчика зависит от выбранного Вами алгоритма подсчета его импульсов:

  • Если Вы будете подсчитывать количество импульсов с датчика, используя внешнее прерывание, то информационный вывод датчика нужно подключить только к тому выводу Arduino, который используют внешние прерывание. Преимуществом данного метода является то, что все импульсы датчика будут, гарантированно, подсчитаны и для этого не требуется приостанавливать выполнение скетча. Недостаток данного метода заключается в том, что не все выводы Arduino используют внешние прерывания.
  • Если Вы будете подсчитывать количество импульсов с датчика, измеряя длительность импульсов (пауз), то информационный вывод датчика можно подключить к любому выводу Arduino. Преимуществом данного метода является то, что количество подключаемых датчиков ограничено количеством свободных выводов Arduino. Еще одним преимуществом является то, что расчёт скорости происходит в режиме реального времени, после каждого импульса (паузы). Но есть и недостатки. Скважность импульсов с датчика имеет погрешность ±10%, значит длительности импульсов не совпадают с длительностями пауз и к результатам измерений добавится указанная погрешность ±10%. Чтение длительности импульсов функцией pulseIn() приостанавливает выполнение скетча на время чтения.
Схема подключения датчика расхода воды YF-S401 к Arduino Uno

Питание

Входное напряжение 5 - 18 В постоянного тока, подаётся на красный (Vcc) и чёрный (GND) провода датчика.

Подробнее о датчике

Датчик расхода воды YF-S401 состоит из пластикового корпуса, клапана, водяного ротора с магнитами и датчика Холла. Скорость вращения ротора прямо пропорциональна скорости водяного потока. Чем выше скорость, тем чаще магниты проходит рядом с датчиком Холла, тем больше импульсов на информационном выводе датчика.

Формула расхода воды: F = 98 Q => Q = F / 98.

  • F - частота импульсов в Гц (количество импульсов с датчика за 1 секунду).
  • Q - скорость потока воды в л/м, (количество литров прошедшее через датчик за 1 минуту).

Приведённая выше зависимость (из datasheet на датчик) не учитывает влияние скорости. Мы предлагаем определять расход воды по выведенной нами формуле:

Формула расхода воды: Q = F / (5,9F + 4570).

  • F - частота импульсов в Гц (количество импульсов с датчика за 1 секунду).
  • Q - скорость потока воды в л/с, (количество литров прошедшее через датчик за 1 секунду).
  • 5,9 - коэффициент учитывающий влияние скорости на количество импульсов.
  • 4570 - коэффициент линейной зависимости количества импульсов от объема воды.

Формула определения объема воды: V = ∑ (Q*T).

  • V - объем воды прошедшей через датчик.
  • Q - скорость потока воды.
  • T - время в течении которого сохранялась указанная скорость потока воды Q.
  • Единцы измерений должны быть приведены друг к другу.
    • Если скорость Q указана в л/с то время T нужно указать в сек., а объем V будет в литрах.
    • Если скорость Q указана в см3 то время T нужно указать в мин., а объем V будет в см3.

Примеры

Скорость потока и объем воды определяются подсчётом количества импульсов с датчика.

Определение скорости и объема воды, используя внешнее прерывание:

uint8_t  pinSensor = 2;                                         // Определяем номер вывода Arduino, к которому подключён датчик расхода воды.
                                                                //
uint32_t varTime;                                               // Объявляем переменную для хранения времени последнего расчёта.
float    varQ;                                                  // Объявляем переменную для хранения рассчитанной скорости потока воды (л/с).
float    varV;                                                  // Объявляем переменную для хранения рассчитанного объема воды (л).
volatile uint16_t varF;                                         // Объявляем переменную для хранения частоты импульсов (Гц).
                                                                //
void funCountInt(){varF++;}                                     // Определяем функцию, которая будет приращать частоту импульсов.
                                                                //
void setup(){                                                   //
     Serial.begin(9600);                                        // Инициируем передачу данных в монитор последовательного порта.
     pinMode(pinSensor, INPUT);                                 // Конфигурируем вывод к которому подключён датчик, как вход.
     uint8_t intSensor = digitalPinToInterrupt(pinSensor);      // Определяем номер прерывания который использует вывод pinSensor.
     attachInterrupt(intSensor, funCountInt, RISING);           // Назначаем функцию funCountInt как обработчик прерываний intSensor при каждом выполнении условия RISING - переход от 0 к 1.
     if(intSensor<0){Serial.print("Указан вывод без EXT INT");} // Выводим сообщение о том, что датчик подключён к выводу не поддерживающему внешнее прерывание.
     varTime=0; varQ=0; varV=0; varF=0;                         // Обнуляем все переменные.
}                                                               //
                                                                //
void loop(){                                                    //
//   Если прошла 1 секунда:                                     //
     if( (varTime+1000)<millis() || varTime>millis() ){         // Если c момента последнего расчёта прошла 1 секунда, или произошло переполнение millis то ...
     //  Определяем скорость и расход воды:                     //
         varQ    = varF / ((float)varF*5.9f+4570.0f);           // Определяем скорость потока воды л/с.
         varF    = 0;                                           // Сбрасываем частоту импульсов датчика, значение этой переменной приращается по прерываниям.
         varTime = millis();                                    // Сохраняем  время последних вычислений.
         varV   += varQ;                                        // Определяем объем воды л.
     //  Выводим рассчитанные данные:                           //
         Serial.println((String) "Объем "+varV+"л, скорость "+(varQ*60.0f)+"л/м.");
     }                                                          //
//   Тут может выполняться ваш код ...                          //
}                                                               //
  • В этом примере скорость потока воды varQ рассчитывается по формуле Q = F / (5,9F + 4570).
  • Частота импульсов датчика varF определяется как сумма прерываний за одну секунду.
  • Объем воды varV определяется по формуле V = ∑ (Q*T), где T=1 (время измерений = 1 сек).
  • При расчётах varQ определяется в л/с, а в монитор выводим значение в л/м.

Определение скорости и объема воды, методом подсчёта длительности импульсов

uint8_t  pinSensor = 2;                                         // Определяем номер вывода Arduino, к которому подключён датчик расхода воды.
                                                                //
float    varQ;                                                  // Объявляем переменную для хранения рассчитанной скорости потока воды (л/с).
float    varV;                                                  // Объявляем переменную для хранения рассчитанного объема воды (л).
                                                                //
void setup(){                                                   //
     Serial.begin(9600);                                        // Инициируем передачу данных в монитор последовательного порта.
     pinMode(pinSensor, INPUT);                                 // Конфигурируем вывод к которому подключён датчик, как вход.
     varQ=0; varV=0;                                            // Обнуляем все переменные.
}                                                               //
                                                                //
void loop(){                                                    //
    varQ           = 0;                                         // Сбрасываем скорость потока воды.
    uint32_t varL  = pulseIn(pinSensor, HIGH, 200000);          // Считываем длительность импульса, но не дольше 0,2 сек.
    if( varL ){                                                 // Если длительность импульса считана, то ...
        float varT = 2.0 * (float)varL / 1000000;               // Определяем период следования импульсов в сек.
        float varF = 1/varT;                                    // Определяем частоту следования импульсов в Гц.
        varQ       = varF / (varF*5.9f+4570.0f);                // Определяем скорость потока воды л/с.
        varV      += varQ * varT;                               // Определяем объем воды л.
    }                                                           //
//  Выводим рассчитанные данные:                                //
    Serial.println((String) "Объем "+varV+"л, скорость "+(varQ*60.0f)+"л/м.");
}                                                               //
  • В этом примере вычисления производятся после каждого импульса полученного с датчика, значит период расчётов совпадает с периодом следования импульсов.
  • Длительность импульсов varL определяется функцией pulseIn().
  • Так как скважность импульсов ≈ 50%, то период varT определяется по формуле: T ≈ 2L.
  • Частота импульсов varF определяется по формуле F = 1/T.
  • Скорость потока воды varQ рассчитывается по формуле Q = F / (5,9F + 4570).
  • Объем воды varV определяется по формуле V = ∑ (Q*T).
  • При расчётах varQ определяется в л/с, а в монитор выводим значение в л/м.

Достоинства и недостатки обоих примеров описаны выше, в разделе «Подключение».

Комплектация

  • 1х датчик расхода воды YF-S401;

Ссылки

Товары
Первой необходимости и другие вещи, которые могут пригодиться!
В наличии
Датчик расхода воды, G1/2: Позволит контролировать объем протекаемой жидкости Подробнее
437
В наличии
Термопара E-типа (Screw М6): Термочувствительный элемент для измерения температуры от 0 до 600 °C Подробнее
437
Скоро в продаже
608
В наличии
142
В наличии
340
Скоро в продаже
761
В наличии
Датчик звука (Trema-модуль v2.0): Позволяет получить аналоговое значение соответствующее уровню громкости звука Подробнее
356
Скоро в продаже
Датчик кислотности жидкости (pH-метр): Позволяющий определить pH (potentia Hydrogenii) уровень жидкостей Подробнее
3232
В наличии осталось 7 шт.
316
Скоро в продаже
535
В наличии
Датчик вибрации АНТ-801S (Trema-модуль): Цифровой модуль, который можно использовать в качестве сигнализаций или для отключения устройств и других проектах Подробнее
697
В наличии
Бесконтактный датчик уровня жидкости XKC-Y25-V: Сенсор для измерения уровня жидкости на расстоянии Подробнее
599
Скоро в продаже
Датчик углекислого газа (CO2), MH-Z19B: Уровень СО2 по принципу недисперсионного инфракрасного излучения (NDIR) Подробнее
3046
Скоро в продаже
446
Или перейти в корзину и оформить заказ.
Гарантии и возврат Используя сайт Вы соглашаетесь с условями
Есть вопрос?