Controlador de Válvulas con ESP32 y Triacs para Riego Automatizado

Controlador de Válvulas con ESP32 y Triacs para Riego Automatizado

Introducción

En este proyecto quiero compartir cómo diseñé y construí un controlador de válvulas solenoides utilizando un ESP32 y triacs, ideal para sistemas de riego automatizado. El sistema permite controlar varias válvulas de forma independiente, ya sea manualmente o de forma programada, con conectividad Wi-Fi para futuras expansiones como control remoto o integración con sensores.


¿Por qué usar un ESP32?

El ESP32 fue mi elección por varias razones:

  • Múltiples pines GPIO.
  • Bajo consumo de energía.
  • Conectividad Wi-Fi/Bluetooth integrada.
  • Potencia suficiente para manejar tareas de control en tiempo real.

¿Qué son los Triacs y por qué los usé?

Los triacs permiten controlar cargas de corriente alterna (en mi caso, válvulas de riego a 24 VAC) con señales digitales de bajo voltaje provenientes del ESP32. Son componentes ideales para este tipo de control, ya que permiten una conmutación eficiente y segura de cargas AC.


Diagrama del sistema

  • Controlador principal: ESP32
  • Módulo de potencia: Triacs (BT136 o similar)
  • Dispositivo controlado: Válvulas solenoides de 24 VAC
  • Alimentación: Fuente de 24 VAC para las válvulas y 5 VDC para el ESP32

Puedo subir un diagrama más adelante si les interesa ver el esquema exacto del circuito.


Características del sistema

  • Control de hasta 4 válvulas (escalable).
  • Conmutación segura con optoacopladores (MOC3021).
  • Botón físico para encendido/apagado manual.
  • Conexión Wi-Fi para futuras funciones como control remoto o automatización basada en clima.

Código y lógica de control

El ESP32 corre un programa en Arduino que detecta los estados de los botones físicos o recibe comandos por UART (por ahora), y activa los triacs correspondientes. Aquí un ejemplo simplificado del control:


int valvula1 = 18;

void setup() {
    pinMode(valvula1, OUTPUT);
}

void loop() {
    digitalWrite(valvula1, HIGH);  // Enciende válvula
    delay(10000);                   // Mantiene 10 segundos
    digitalWrite(valvula1, LOW);   // Apaga válvula
    delay(5000);                    // Espera 5 segundos
}
  
int valvula1 = 18;

void setup() {
    pinMode(valvula1, OUTPUT);
}

void loop() {
    digitalWrite(valvula1, HIGH);  // Enciende válvula
    delay(10000);                   // Mantiene 10 segundos
    digitalWrite(valvula1, LOW);   // Apaga válvula
    delay(5000);                    // Espera 5 segundos
}

  
int valvula1 = 18;

void setup() {
    pinMode(valvula1, OUTPUT);
}

void loop() {
    digitalWrite(valvula1, HIGH);  // Enciende válvula
    delay(10000);                   // Mantiene 10 segundos
    digitalWrite(valvula1, LOW);   // Apaga válvula
    delay(5000);                    // Espera 5 segundos
}

  
int valvula1 = 18;

void setup() {
    pinMode(valvula1, OUTPUT);
}

void loop() {
    digitalWrite(valvula1, HIGH);  // Enciende válvula
    delay(10000);                   // Mantiene 10 segundos
    digitalWrite(valvula1, LOW);   // Apaga válvula
    delay(5000);                    // Espera 5 segundos
}

Resultados y pruebas

Probé el sistema con 3 válvulas conectadas en paralelo y no hubo interferencias ni sobrecalentamientos. El uso de triacs con optoacopladores ayuda a evitar picos de tensión o problemas de ruido eléctrico, algo clave cuando se trabaja con AC.


Mejoras futuras

  • Agregar interfaz web simple para control remoto.
  • Incorporar sensores de humedad para riego automatizado.
  • Alimentación dual (batería + panel solar).
  • Caja resistente al agua para instalación en exteriores.

Conclusión

Este proyecto me permitió aprender mucho sobre control de corriente alterna, electrónica de potencia y programación con ESP32. Es una solución escalable y económica para automatizar cualquier sistema de riego o control de válvulas industriales.