Датчик потоку Arduino (flow sensor)

Датчик потоку призначений для вимірювання швидкості та обєму потоку різних рідин, зокрема води, бензину чи дизелю. В даному прикладі ми розглянема датчик YF-S201.

датчик потоку
ЧорнийGND
Червогий4.5 ~ 24V
ЖовтийDATA

Датчик потоку YF-S201 побудований на датчику Холла. В середині на роторі декілька пелюстків з магнітом на валу. Протікання рідини приводить в рух ротор, а датчик Холла зчитує з магніта кількість обертів. Знаючи поперечний переріз можна розрахувати кількість рідини яка протікає.

Формула має вигляд Q = A * v , де

Q – витрата рідини

A – площа поперечного перерізу в точці вимірювання

v – швидкість рідини в цій точці

В нашому випадку для датчика YF-S201, вже вказані дані для розрахунків.

  • F = 7.5 * v(швидкість потоку л/хв)
  • 450 імпульсів на один літр рідини

Тобто для того щоб знайти швидкість нам потрібно порахувати кількість імпульсів за секунду та розділити 450. Ми отримаєм літри за секунду.

Код програми

#include <Arduino.h>

volatile unsigned long impuls = 0;

void flow()
{
    impuls++;
}
void setup()
{
    Serial.begin(9600);
    attachInterrupt(0, flow, FALLING);
}
void loop()
{
    static unsigned long timer = 0;
    if ((millis() - timer) >= 1000)
    {
        unsigned long _impuls = impuls;
        impuls = 0;
        Serial.println("--------------------");
        Serial.print("liters/second - ");
        Serial.println(_impuls / 450.0);
        Serial.print("liters/minute - ");
        Serial.println(_impuls / 450.0 * 60);
        Serial.print("liters/hour - ");
        Serial.println(_impuls / 450.0 * 3600);
        timer = millis();
    }
}

Даний приклад виведе в монітор серійного порта швидкість потоку в літрах за секунду, літрах за хвилину та літрах за годину.

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *