El sensor de flujo YF-S201 contiene un pequeño rotor de paletas que gira proporcional al caudal de agua. Cada vuelta genera un pulso eléctrico que Arduino puede contar para calcular el flujo en litros por minuto y el volumen total consumido.
Características del YF-S201
- Rango de flujo: 1 a 30 litros/minuto
- Voltaje: 5V a 24V DC
- Pulsos por litro: ~450 pulsos/L (verificar calibración de tu unidad)
- Rosca: G1/2 (media pulgada)
- Temperatura máx.: 80°C (no apto para vapor)
Conexión
| Cable | Arduino |
|---|---|
| Rojo (VCC) | 5V |
| Negro (GND) | GND |
| Amarillo (Signal) | Pin 2 (interrupt) |
Agrega una resistencia pull-up de 10kΩ entre el pin amarillo y 5V para señal limpia.
Código con Interrupción
volatile unsigned long pulsos = 0;
unsigned long ultimoTiempo = 0;
void contarPulso() {
pulsos++;
}
void setup() {
Serial.begin(9600);
pinMode(2, INPUT_PULLUP);
attachInterrupt(digitalPinToInterrupt(2), contarPulso, FALLING);
}
void loop() {
if (millis() - ultimoTiempo >= 1000) { // Cada segundo
noInterrupts();
unsigned long p = pulsos;
pulsos = 0;
interrupts();
// YF-S201: 7.5 pulsos por segundo = 1 L/min
float litros_por_min = p / 7.5;
Serial.print("Caudal: ");
Serial.print(litros_por_min, 2);
Serial.println(" L/min");
ultimoTiempo = millis();
}
}
Calibración
El factor 7.5 varía entre sensores. Para calibrar: mide 1 litro exacto de agua con un recipiente graduado mientras el Arduino cuenta pulsos. Factor = pulsos_contados / 60. Reemplaza el 7.5 por tu factor.
Proyectos
- Contador de agua potable: mide el consumo diario y envía alertas por WiFi si supera el límite
- Riego preciso: aplica exactamente 5 litros a tus plantas, no más
- Dispensador de cerveza/bebida: sirve porciones exactas en un bar automatizado
- Detección de fugas: si el flujo no para en horario nocturno, hay una fuga