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.