YF-S201 датчик расхода воды и не агрессивных жидкостей
Ардуино датчик расхода воды и не агрессивных жидкостей 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 датчик расхода воды и не агрессивных жидкостей отзывы
Оставьте отзыв об этом товаре первым!