Una persiana real se controla con Arduino actuando sobre su motor tubular de 230 V mediante dos salidas, una para la subida y otra para la bajada. Arduino nunca alimenta el motor. Sus salidas activan relés de mando, y estos activan relés de potencia, con un enclavamiento que impide que las dos fases reciban tensión a la vez. La posición se estima por el tiempo de recorrido. La automatización se resuelve con horario, sensor de luz o Home Assistant.
En la misma guía: Instalaciones domóticas y ahorro energético · Gestor de potencia y medida de energía eléctrica con Arduino · Iluminación RGB del salón con Arduino: tiras LED y escenas
Motores para persianas: tubular, paso a paso y servomotor
En una vivienda, la única opción seria es el motor tubular de 230 V. Va alojado dentro del eje y recibe neutro, tierra y dos fases: una para subir y otra para bajar. Integra finales de carrera que lo detienen arriba y abajo. Pueden ser mecánicos, con tornillos en el cabezal, o electrónicos.
El punto de partida cambia según la persiana:
- Persiana manual de cinta: hay que instalar un motor tubular adaptado al eje del cajón. Existen adaptadores para los ejes habituales.
- Persiana motorizada: basta con sustituir el pulsador doble por el control con relés.
El servomotor, el motor de 6 V y el motor paso a paso con puente H aparecen en prácticas de aula como las de Eduteka. Solo sirven para maquetas: no tienen par para levantar una persiana de PVC o aluminio, carecen de finales de carrera y exigen una fuente de alimentación externa.
| Elemento | Uso adecuado | Limitación |
|---|---|---|
| Servo / motor 6 V | Maqueta | Sin par ni finales de carrera |
| Paso a paso + puente H | Estor ligero | No mueve una persiana enrollable |
| Motor tubular 230 V | Vivienda | Requiere relés de potencia |
| Módulo de relés de placa | Señal de mando | Contactos débiles ante picos |
| Relé de potencia faston | Conmutar el motor | Va en una caja aparte |
Cableado de subida y bajada con relés
El neutro va directo al motor. La fase pasa por un circuito conmutado que la envía al hilo de subida o al de bajada, nunca a los dos.
No se debe atacar el motor con los relés azules de los módulos para Arduino. El pico de arranque y el arco que se produce al abrir el contacto los degradan, sobre todo el contacto normalmente cerrado, que acaba pegándose. Además, la chispa genera ruido que reinicia la placa. En las instalaciones que he revisado, casi todos los reinicios aleatorios de un controlador de persianas tenían ese origen.
Relés de mando, relés de potencia y enclavamiento
El módulo de relés solo debe excitar las bobinas de relés de potencia con terminales faston. Estos relés caben en la caja de registro de la ventana, lejos del Arduino. Entre ambos basta un hilo de mando de 0,5 mm², que ocupa poco en el tubo. En la práctica del IES SATAFI publicada en EducaMadrid se usan contactores con el mismo criterio.
Para un enclavamiento eléctrico, monte los relés así:
- El relé A, de marcha y paro, entrega la fase.
- El relé B, conmutado, recibe esa fase en su común. Su contacto NA va a la subida y su contacto NC a la bajada. Con este montaje es físicamente imposible alimentar las dos fases a la vez.
El software añade una segunda barrera. Antes de invertir el sentido, desactive las dos salidas y espere unos cientos de milisegundos. Gestione el motor con una sola máquina de estados (parado, subiendo, bajando). Coloque un circuito RC (condensador X2 en serie con una resistencia) en paralelo con cada contacto para amortiguar la chispa del motor.
Posición de la persiana por tiempo de recorrido y calibración
Cronometre el recorrido completo en cada sentido por separado, porque la bajada suele ser más rápida. Programe el tiempo medido +1 s en subida y +2 s en bajada. Así la persiana siempre llega al final de carrera, que es quien realmente detiene el motor.
Para una posición intermedia, el porcentaje se calcula como la posición de partida más o menos el tiempo de marcha dividido por el tiempo total de ese sentido. Por ejemplo, si la persiana tarda 20 s en subir, 10 s de subida desde cerrada la dejan a media altura. El cálculo no es lineal al principio: los primeros segundos de subida solo separan las lamas y abren las rendijas, sin levantar la persiana.
La estimación acumula error. Cada maniobra completa contra un final de carrera devuelve la referencia a 0 % o 100 %. Tras un corte de suministro, la posición es desconocida: haga una subida completa al arrancar. Si reajusta los finales de carrera, vuelva a cronometrar el recorrido. Si cambia los tiempos, reinicie el Arduino para que el firmware los cargue.
Automatización por horario y por luminosidad
Un Arduino UNO o un Arduino Nano no tiene un reloj fiable: millis() deriva y se pierde con cada corte de luz. Añada un módulo de reloj en tiempo real con pila de respaldo y gestione los horarios con TimeLib.h. En un ESP32, sincronice la hora por NTP con la zona horaria Europe/Madrid, que aplica automáticamente el horario de verano.
Para el control por luz se conecta una LDR a una entrada analógica mediante un divisor de tensión. Aplique histéresis y exija que la lectura se mantenga varios minutos antes de actuar, para que una nube no baje la persiana. Lo más robusto es combinar ambos criterios: la luz decide cuándo actuar y el horario fija los límites.
Integración con ESP32, Home Assistant y Matter
El ESP32 sustituye al Arduino con la misma lógica de relés y añade WiFi. Con ESPHome, la plataforma de cubierta time_based implementa la posición por tiempo a partir de los tiempos de subida y bajada. La opción interlock de los interruptores añade el enclavamiento por software. Home Assistant recibe la persiana como una entidad cover con porcentaje de apertura, sobre la que puede crear escenas y automatizaciones. Si prefiere MQTT, publique la posición en un tópico propio.
Para Matter hay dos caminos:
- un firmware Matter nativo en el ESP32, ya que el SDK de Espressif incluye el tipo de dispositivo de cubierta de ventana;
- exponer la entidad desde Home Assistant mediante un puente Matter.
Como referencia, los motores comerciales con Matter sobre Thread parten de unos 118 €. Para varias ventanas cableadas, RS485 permite enlazar módulos a larga distancia. KNX es la alternativa profesional. Encontrará el contexto general en la guía de domótica con Arduino y el material en placas, relés y sensores para domótica.
Seguridad eléctrica al conectar Arduino a 230 V
Advertencia: cualquier trabajo sobre la instalación de 230 V debe realizarlo o revisarlo un instalador autorizado, conforme al REBT. Este reglamento y sus instrucciones técnicas complementarias (ITC) fijan las protecciones, las secciones de los conductores y las condiciones de montaje de toda instalación de baja tensión en España. En los cuadros domóticos que monto, la parte de mando y la de potencia se tratan siempre como dos instalaciones distintas.
Siga estas pautas:
- Corte el circuito en el cuadro y compruebe la ausencia de tensión con un multímetro antes de tocar nada.
- Alimente el Arduino con una fuente de carril DIN aislada, nunca con un adaptador improvisado.
- Monte los relés de potencia en una caja de registro con tapa, conecte la tierra del motor y use material con marcado CE.
- Mantenga separados físicamente los cables de 5 V y los de 230 V.
En los módulos con optoacoplador, retire el puente JD-VCC y alimente las bobinas por separado: solo así el aislamiento entre el Arduino y los relés es real.
FAQ
¿Qué relés hacen falta para controlar el motor de una persiana con Arduino?
Hacen falta dos salidas por persiana. Lo recomendable es un módulo de relés de mando que active dos relés de potencia con terminales faston, montados en una caja de registro. Uno da marcha y el otro, conmutado, elige el sentido, lo que proporciona enclavamiento eléctrico. Añada una red RC sobre los contactos para evitar reinicios.
¿Cómo programar el horario de subida y bajada de una persiana con Arduino?
En un Arduino UNO o Nano, use un módulo RTC con pila y la librería TimeLib.h, y compare la hora actual con las horas programadas. En un ESP32, obtenga la hora por NTP con la zona Europe/Madrid. Lance siempre maniobras completas con su margen de tiempo, y combine el horario con un sensor de luz si quiere adaptarlo a la estación.
