YF-S201 датчик расхода воды и не агрессивных жидкостей

Купить YF-S201 датчик расхода воды и не агрессивных жидкостей

Ардуино расходомер жидкостей

3-8-4
Склад duino.ru: Осталось 54 штуки
430

Ардуино датчик расхода воды и не агрессивных жидкостей YF-S201-предназначен для измерения объема прокачанной через него воды. Формула для расчёта потока жидкости л/мин: Q=F/7.5, где F частота импульсов, Q - поток л/мин. Можно использовать коэффициент: 1 литр воды это примерно 516 импульсов. Расходомер воды довольно часто используют в проектах Arduino контроллерами. Счетчик жидкости можно использовать как для подсчета потока воды, так и для измерения объема пройденной через него жидкости.

Характеристики расходомера воды:

  • Допустимое напряжение: 5 .. 24 В
  • Предельный ток: 16 мА
  • Давление: 1.75 МПа
  • Пропускная способность: 1 .. 30 л/мин
  • Рабочая температура: 0°C .. +95°C
  • Длина проводов: 15 см
  • Внешний диаметр: 19 мм
  • Внутренний диаметр: 11 мм
  • Резьбовое соединение: 1/2 дюйма
  • Вес: 160 грамм
  • Размеры: 58 x 37 x 37 мм

Подключение счетчика:

  • Красный провод к +5 В
  • Черный провод к GND
  • Желтый провод к выводу Arduino D2

Видео демонстрация работы датчика YF-S201 с Arduino UNO

Пример кода для ардуино:

#include "LiquidCrystal.h"
LiquidCrystal lcd(8, 9, 4, 5, 6, 7); // пины под LCD shield
#define FLOWSENSORPIN 2 // пин для датчика расхода

volatile uint16_t pulses = 0; // считает сколько импульсов
volatile uint8_t lastflowpinstate; // отслеживает состояние пина FLOWSENSORPIN
volatile uint32_t lastflowratetimer = 0; // отсчитывает время между импульсами
volatile float flowrate; // и использует это, чтобы вычислить скорость потока
// Прерывание вызывается один раз в миллисекунду, ищет любые импульсы от датчика!
SIGNAL(TIMER0_COMPA_vect) 
{
 uint8_t x = digitalRead(FLOWSENSORPIN);
 
 if (x == lastflowpinstate)
 {
 lastflowratetimer++;
 return; // nothing changed!
 }
 
 if (x == HIGH) 
 {
 //low to high transition!
 pulses++;
 }
 lastflowpinstate = x;
 flowrate = 1000.0;
 flowrate /= lastflowratetimer; // в герцах
 lastflowratetimer = 0;
}

void useInterrupt(boolean v)
{
 if (v) 
 {
 // Timer0 уже используется для millis() - просто прерываем
 // в середине и вызываю "Compare A" функция выше
 OCR0A = 0xAF;
 TIMSK0 |= _BV(OCIE0A);
 } else {
 // не вызывать функцию прерывания больше
 TIMSK0 &= ~_BV(OCIE0A);
 }
}

void setup()
{
 Serial.begin(9600);
 Serial.print("---RASHODOMER---");
 lcd.begin(16, 2);
 lcd.print("---RASHODOMER---");
 pinMode(12, OUTPUT); // сигнал управления реле
 digitalWrite(12, LOW);
 pinMode(3, OUTPUT); // плюс 5в на датчик расхода
 digitalWrite(3, HIGH);
 pinMode(FLOWSENSORPIN, INPUT);
 digitalWrite(FLOWSENSORPIN, HIGH);
 lastflowpinstate = digitalRead(FLOWSENSORPIN);
 useInterrupt(true);
 //delay(2000); // для отображения на LCD "---RASHODOMER---"
}

void loop() 
{ 
 lcd.setCursor(0, 0);
 lcd.print("Pulses:"); lcd.print(pulses, DEC);
 lcd.print(" Hz:");
 lcd.print(flowrate);
 //lcd.print(flowrate);
 Serial.print("Freq: "); Serial.println(flowrate);
 Serial.print("Pulses: "); Serial.println(pulses, DEC);
 
 // Sensor Frequency (Hz) = 7.5 * Q (Liters/min)
 // Liters = Q * time elapsed (seconds) / 60 (seconds/minute)
 // Liters = (Frequency (Pulses/second) / 7.5) * time elapsed (seconds) / 60
 // Liters = Pulses / (7.5 * 60)
 float liters = pulses;
 liters /= 7.5;
 liters /= 60.0;

 Serial.print(liters); Serial.println(" Liters");
 lcd.setCursor(0, 1);
 lcd.print(liters); lcd.print(" Liters ");
 if (liters > 1) // установка количества литров
 {
  digitalWrite(12, HIGH); // если больше 1 литра, включается реле
 }
 else {
 digitalWrite(12, LOW);
 }
 delay(100);
}
Вес 30 г
Цвет черный

Категории: Датчики Электро-механика

YF-S201 датчик расхода воды и не агрессивных жидкостей отзывы

Оставьте отзыв об этом товаре первым!