Saltar al contenido

Sensor de flujo YF-B5 con ESPHome: caudal y calibración

30/12/2022
Sensor de flujo YF-B5 con ESPHome y cálculo de caudal

Actualizado el 24 de agosto de 2026 · Cálculo de caudal, calibración, ESPHome Pulse Meter y contadores de Home Assistant revisados.

El YF-B5 es un sensor de caudal con una turbina y un captador Hall. Cada vuelta genera pulsos eléctricos: contando su frecuencia podemos estimar litros por minuto y acumulando los pulsos obtenemos el volumen total. Con ESPHome y Home Assistant puede utilizarse para vigilar consumo, llenar depósitos o detectar un flujo inesperado.

El nombre YF-B5 se aplica a varias versiones de latón y acero con constantes de calibración distintas. Por eso esta guía no trata un número encontrado en Internet como universal: primero identificaremos la constante de tu unidad y después la verificaremos con un volumen conocido.

Cómo convierte pulsos en litros

Llamaremos K al número de pulsos que genera el sensor por cada litro. Si ESPHome recibe 660 pulsos y tu K real es 660 pulsos/litro, habrá pasado aproximadamente un litro.

  • Frecuencia en Hz: pulsos por segundo.
  • Pulse Meter de ESPHome: entrega por defecto pulsos por minuto.
  • Caudal (L/min): pulsos por minuto ÷ K.
  • Volumen total (L): pulsos acumulados ÷ K.

Por ejemplo, con K = 660, el factor de conversión es 1 / 660 = 0,00151515. Una lectura de 3300 pulsos/min equivale a 5 L/min. Si la ficha expresa una relación del tipo f = k × Q + b, donde f está en Hz, debes despejar Q = (f - b) / k; no confundas ese coeficiente con pulsos por litro.

Por qué hay constantes diferentes

Existen documentos de variantes YF-B5 que indican alrededor de 660 pulsos/litro y otros, como determinadas versiones inoxidables, que especifican aproximadamente 897 pulsos/litro o una ecuación de frecuencia. El cuerpo, el diámetro interno y la electrónica cambian. Utiliza la etiqueta o ficha del vendedor como punto de partida y calibra la pieza que tienes en la mano.

K inicialFactor multiplyUso
660 pulsos/L0.00151515Ejemplo frecuente, confirmar mediante calibración
897 pulsos/L0.00111483Documentado en algunas variantes inoxidables
Otro valor1 ÷ KUsa la ficha y el resultado de tu prueba

Instalación hidráulica y eléctrica

  • Respeta la flecha de dirección marcada en el cuerpo.
  • Instálalo sin forzar las roscas y realiza una prueba de fugas.
  • Comprueba presión, temperatura, diámetro y aptitud para agua potable de tu modelo.
  • Deja un tramo recto antes y después si el fabricante lo recomienda.
  • No permitas que el peso de la tubería quede soportado por el cable o la tapa del sensor.

Los colores habituales son rojo para alimentación, negro para GND y amarillo para pulsos, pero no son una norma. Algunas salidas son de colector abierto y admiten una resistencia pull-up a 3,3 V; otras pueden entregar una señal próxima a su tensión de alimentación. No conectes una salida de 5 V directamente a un GPIO de 3,3 V. Consulta la ficha o mide la señal y utiliza divisor, transistor o conversor de nivel cuando sea necesario.

ESPHome moderno con Pulse Meter

pulse_meter mide el tiempo entre pulsos y ofrece buena resolución cuando el caudal es bajo. Este ejemplo utiliza un ESP32, GPIO27 y una constante inicial de 660 pulsos/litro:

sensor:
  - platform: pulse_meter
    name: "Caudal de agua"
    id: caudal_agua
    pin:
      number: GPIO27
      mode:
        input: true
        pullup: true
    unit_of_measurement: "L/min"
    device_class: volume_flow_rate
    state_class: measurement
    accuracy_decimals: 2
    timeout: 10s
    internal_filter: 100us
    filters:
      - multiply: 0.00151515
    total:
      name: "Agua total"
      unit_of_measurement: "L"
      device_class: water
      state_class: total_increasing
      accuracy_decimals: 1
      filters:
        - multiply: 0.00151515

El mismo factor se aplica al caudal y al total porque ambos parten de pulsos, aunque el primero representa pulsos por minuto y el segundo pulsos acumulados. timeout: 10s hace que el caudal vuelva a cero si no llega ningún pulso durante ese tiempo. Ajusta internal_filter solo después de comprobar la anchura de pulso de tu modelo; un filtro demasiado largo elimina pulsos válidos a caudal alto.

En ESP8266 elige GPIO4 (D2) o GPIO5 (D1) y evita GPIO0, GPIO2 y GPIO15 para no interferir con el arranque. Si el sensor ya incorpora una salida pull-up, revisa si debes retirar pullup: true.

Cómo calibrar el YF-B5

  1. Instala el sensor en su orientación definitiva y elimina el aire del circuito.
  2. Pon a cero una lectura auxiliar de pulsos o anota el total inicial.
  3. Haz pasar un volumen conocido, preferiblemente 10 litros o más.
  4. Calcula los pulsos obtenidos: total final menos total inicial.
  5. Calcula K real = pulsos contados ÷ litros reales.
  6. Sustituye el factor del YAML por 1 ÷ K real y repite la prueba a otro caudal.

Una jarra de un litro genera mucho error por salpicaduras, aire y resolución. Cuanto mayor sea el volumen de prueba, más fiable será K. Si el resultado cambia mucho entre caudal bajo y alto, el sensor puede estar fuera de su rango útil o la instalación introduce turbulencias.

Consumo diario y mensual en Home Assistant

La entidad Agua total es acumulativa y utiliza state_class: total_increasing. Esa es la fuente adecuada para estadísticas y para un contador por periodos; no utilices el caudal instantáneo directamente como si fuera volumen.

  1. Ve a Ajustes → Dispositivos y servicios → Ayudantes.
  2. Selecciona Crear ayudante → Contador de servicios (Utility Meter).
  3. Elige Agua total como sensor de entrada.
  4. Crea un contador diario y otro mensual según tus necesidades.
  5. Marca la opción de reinicio periódico solo si la entidad de origen realmente se pone a cero.

Si Home Assistant se reinicia, el total del nodo puede necesitar restauración según la plataforma y configuración. Para facturación o control crítico, compara periódicamente con un contador homologado; un YF-B5 doméstico no sustituye un instrumento legal de medida.

Errores frecuentes

SíntomaCausa probable
Marca 60 veces más o menosConfusión entre Hz (pulsos/s) y pulsos/min
El total se desvíaK incorrecta o sensor sin calibrar
No llegan pulsosCableado, masa común, nivel lógico o flecha invertida
Pulsos con el agua paradaRuido eléctrico, cable largo o entrada flotante
Se pierden pulsos a caudal altointernal_filter excesivo o límite del sensor

Fuentes comprobadas

Continúa leyendo

Siguiente guía relacionada · 5 min de lectura

Sensor magnético de puerta con ESPHome: guía completa

Actualizado el 27 de agosto de 2026 · Pull-up, lógica invertida, cableado largo, rebotes y estados seguros revisados. Un contacto magnético de puerta es…

Continuar con este artículo