Датчик потоку призначений для вимірювання швидкості та обєму потоку різних рідин, зокрема води, бензину чи дизелю. В даному прикладі ми розглянема датчик 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();
}
}
Даний приклад виведе в монітор серійного порта швидкість потоку в літрах за секунду, літрах за хвилину та літрах за годину.