Problemas de interferencias en proyecto domótica

¡Hola a todos!

Primero de todo comentar que soy muy novato en esto de la electrónica y que he estado buscando otros posts pero no estoy seguro de que encajen exactamente con mi problema. Así que me he decidido a explicaros en detalle lo que me está ocurriendo. Me compré un piso hace 3 años y dado que lo tiré todo abajo, tuve la "genial" idea de prepararlo para domotizarlo a través de Arduino. Diseñé un sistema en el que por cada caja de empalme de electricidad empotraba a su lado otra más grande en la que iria un Arduino y los componentes de ese Arduino (relés, dimmers, etc).

Pasé todos los cables eléctricos de la vivienda y ahora solo me falta poner los arduinos y los pulsadores para controlar las luces. Y buf, la verdad es que me está costando un montón, no hace falta decir que por momentos me arrepiento jeje.

De momento he hecho dos placas pcb, una en el estudio y otra en el lavabo, y en ambas tengo el mismo problema: las luces se encienden/apagan misteriosamente en determinados momentos.

Para no liar mucho, os explicaré uno de los dos casos; Tengo una placa con un dimmer y un relé con optoacoplador, ambos de la marca Robotdyn. Estos estan conectados a un Arduino NANO, el de aliexpress. Luego tengo dos pulsadores, que son unos mecanismos Simon a los cuales he conectado cable de telefono trenzado que van conectado a los pines digitales de Arduino, los cuales llevan una resitencia pull down de 10k. El arduino está alimentado por un transformador de CA a CC (12V). El transformador lo tengo en la caja de empalmes y paso dos cables a la caja de Arduino para alimentarlo.

Entonces, tengo un extractor y una luz en el lavabo que quiero controlar con esos dos pulsadores. Lo que hago es conectar el dimmer a la luz y el relé al extractor. El código que tengo lo que hace es detectar si se pasó del 0 al 1 y entonces pues enciende/apaga segun el estado previo que tuviera. No utilizo la función delay(), uso la función milis() para crear el delay. A nivel de código todo parece estar bien, soy desarrollador de sotware con más de 15 años de experiencia y os puedo "asegurar" que por ahí todo anda bien.

Entonces, vamos a hablar del problema. Lo que me está ocurriendo es que cuando pulso el pulsador para activar el extractor también se me enciende/apaga la luz. No ocurre el 100% de las veces, es un poco aleatorio, a veces sí, a veces no. Sin embargo cuando enciendo/apago la luz, el extractor no cambia de estado.

Parece un problema de ruido que hace que el pin digital del dimmer reciba un 1 pese a no haber pulsado el pulsador. Después de leer otros posts y ver problemas similares me decidí a poner un condensador de 0.1uF y otro de 100uF en paralelo en los pines VIN y GND de Arduino, pero no parece resovler nada.

La situación ahora es que estoy con muchas dudas y no se por donde tirar. A ver si alguien puede ayudarme con esto, ando algo desesperado.

Muchas gracias!!!

Yo tuve problemas similares de activación de entradas sin tener una activación fisica. Lo resolví comprobando si la entrada seguía activa 300ms después de activarse.

Lo cierto es que lo puedo resolver mediante software, simplemente añadiendo la restricción de que un pulsador no pueda ser pulsado a la vez que otro. Pero no me convence dado que el problema que tengo es de interferencias eléctricas y si por ejemplo añadiese un sensor(como tengo planeado) que activara el extractor al detectar humedad entonces también se me encendería la luz. Y entonces si yo por lo que fuera quisiese encender la luz en ese mismo momento no podría. Además es que también he detectado que si enchufo por ejemplo un secador en el lavabo también crea interferencia y enciende la luz, y eso ya sería más complicado de controlar por software.

A parte de que lo que dices funcionaría perfecto en caso de tener interruptores, pero tengo pulsadores :frowning:

300ms no es nada, mantienes el pulso hasta que active. Pruebalo.

El extrator es CC o CA y a que tensión trabaja

Podrías pasar el esquema eléctrico de como lo tienes montado todo. y distancias entre los pulsadores y el NANO, y entre el NANO y el extractor, el relé ¿está al lado del NANO o del extractor?

Por otro lado dices

No me hago idea de como puede ser ese tipo de cable ¿podrías poner una foto?

Yo tengo un enfoque para eso que no se si te va a gustar.
Uso Home Assistant y nodos x WIFI, BT, o cableados
Home assistant corre en Raspberry 3 o 4, Orange Pi 3, pero mejor 4 o 5, o una NUC siglas de un dispositivo creado originalmente por INTEL para tener en un dispositivo pequeño todo lo que necesitas de una PC, también puedes usar una vieja PC que le cargas Linux y tmb servirá.
Bueno, eso por el sitema que corre Home Assistant.
Y que es Home Assistant pues algo que esta preparado para manejar todo lo que te imagines como central de domótica. Absolutamente todo.
Hay otros, claro que si, pero a mi me gusta este.
Domina todos los protocolos, todos los sensores, y lo que se te ocurra.
Puedes conectar dispositivos como ESP8266, ESP32, MKR1XXX, Arduino NANO IOT, cualquier cosa que tenga WIFI, cualquier cosa con ethernet.
Todo lo pones en contacto usando MQTT, o ESPHOME, o TASMOTTA.
Busca estas palabras clave porque es inmenso lo que te estoy comentando.
Con todo esto resuelves con paciencia, mucha paciencia todo.
El cableado... lo usarás para otra cosa, porque al menos yo pienso que todo debe ser inalámbrico.
Pones un TPLINK X50 o X60, tiens 2.5Gpbs en cada punto donde pongas un nodo y todo estará comunicado. Puedes crear con TPLINK subredes para IOT sin que interfieran con el resto de tu red WIFI. Este que te acabo de mencionar es WIFI6.
El unico dispositivo hoy que maneja WIFI 6 es el ESP32-S6, no se si lo necesitas pero.. te lo comento. Con dispositivos 2.4GHz iras bien, y ahi estan todos los antes mencionados.

Hola!

He creado una carpeta pública en google drive donde he subido un esquema horrible que he hecho, te pido perdón de antemano. También he hecho foto a las cajas empotradas en la cual podrás ver unos cables a los que les salen dos hilos de color naranja y blanco. Ese es el cable de telefono que aunque no se ve va trenzado.

https://drive.google.com/drive/folders/1_9yIcti8PrhhkcsNP6-Np1YZhO1BHbDv?usp=sharing

  • Las distancias entre pulsados y NANO serán de 1 metro aprox.
  • Entre el NANO y el extractor habrá unos dos metros
  • El extractor funciona con AC, 7W.
  • El relé está al lado del NANO como verás en las imágenes

Creo que te he respondido a todo, muchas gracias!!

Hola!

Me parece super interesante lo del home assistant, es muy posible que me lo mire para la parte de software. Me ahorrará mucho tiempo y me dará infinitas soluciones. Muchas gracias!

El tema del cableado no se si lo veo tan claro. Es decir, para comunicarme entre Arduinos creo que quizás sería la opción más simple pero para comunicar los pulsadores con los Arduinos tendría entonces que comprar pulsadores especificos y ya tengo todos los mecanimos comprados, lo cual sería un desperdicio grande de dinero además del que tendría que gastar de nuevo. Y el problema que planteo viene justo por allí, o al menos eso creo, es decir, los pulsadores. Parece haber ruido que causa activación de elementos de manera involuntaria.

Buenas! te he respondido en un mensaje que no se porque aparece como si me estuviera respondiendo a mi mismo

El cable telefónico no tiene un trenzado suficiente como para aislar de interferencias, lo recomendable es al menos cable UTP (de red) cat3 pero mejor si es cat5 y si es con malla, mejor aún.

¿Pero dónde intalaste el relé? ¿Junto al arduino o al extractor?

¿Los cables de señal van por cañería independiente o junto a los de AC?

Gracias por la información, era para hacerme una idea de como lo tienes montado, y el esquema está perfecto.

No había visto nunca ese cable telefónico trenzado y con cubierta, has satisfecho mi curiosidad :wink:

Y ahora hagamos unas pruebas
Desconecta los cables del extractor en el mismo extractor y comprueba si se te reproduce el problema, si es así prueba a desconectarlo del lado del relé y miras si se te reproduce el problema, sigue el problema vuelve a conectarlo todo y desconecta el +, el - en el propio relé y el pin de control en el lado del NANO para que no haga efecto antena, verifica también que el módulo de relé trae el diodo en paralelo con la bobina de este, es cuestión de ir aislando el problema,

Es para comprobar quien produce las interferencias, si el propio extractor, el cable o ambos, si con alguna de las dos pruebas te desaparecen las interferencias los suyo es ponerle un filtro al extractor, algo así
imagen
Aunque yo los suelo hacer sin las bobinas porque algunas veces son difíciles de encontrar aunque sería lo ideal.

Quedando así
imagen
También podría ocurrir que la interferencia se produzca en los contactos del relé (COM y NO) al conmutar una carga inductiva, se podría poner un condensador de 2,2nF/400V en esos mismos terminales del relé.

En Argentina lo llamamos "cable de instalación (telefónica) para interior".

Son 2 ó 3 conductores de cable unifilar, generalmente de 0.5 ó 0.8mm, con 4 o 5 torzadas por metro, o sea que apenas está trenzado, y con vaina de PVC.

Nada del otro mundo... :wink:

Agrego: Hay con más conductores, generalmente 4 ó 6 (pero hay de más también) para instalación de porteros eléctricos.
Los colores de los conductores coinciden con la tabla de colores de pares telefónicos.
Como cada par tiene 1 conductor blanco, el leve trenzado permite separar los pares cuando hay más de uno.

Pues ahora al leer tu comentario me dado cuenta de que si los he visto y es más tengo en casa varios metros de ese tipo de cable, que mala es la edad.

Y efectivamente el trenzado de los cables UTP es mas eficiente.

Hola Máximo!

Los relés están junto al Arduino, puedes verlo en las fotos que he añadido en el enlace de google drive.
Por otro lado, los cables de datos los llevo por cañerías independientes.

Ya he comprado cable de teléfono con malla y estoy esperando a que me llegue, a ver si eso soluciona el problema.

Saludos!

Hola! Muchísimas gracias por la respuesta.

Pues mira, he hecho la prueba y he desconectado los cables del extractor y efectivamente el problema ha desaparecido. No he probado a desconectar los cables AC del relé porque entiendo que no tiene sentido y que el resultado sería el mismo.

Así que entiendo que una solución sería poner condensadores en el extractor. Igualmente tengo que decirte que no entiendo totalemnte el esquema que me mandaste, no se leerlo jeje. Que componentes hay allí?
Luego, los condensadores tengo que ponerlos al lado del extractor o podría ponerlos en los bornes AC del relé al que va al extractor? Más que nada porque poner los condensadores en cualquier sitio que no sea la caja de registro puede ser engorroso y como que no acaba de gustarme la idea de repartir tantos componentes por la casa.

De todas maneras, en el otro Arduino que tengo en el estudio, en el que solo tengo un pulsador, tenía el mismo problema cada vez que enchufaba algo potente a cualquier enchufe de la casa. Por ejemplo una radial, la aspiradora, etc. Entonces entiendo que no puedo estar poniendo condensadores en todos los enchufes de la casa, es algo muy laborioso y se me antoja inviable. Así que he comprado cable de teléfono con malla (https://www.amazon.es/dp/B07JZFVPZM?psc=1&ref=ppx_yo2ov_dt_b_product_details) y voy a ver si con eso lo soluciono. Me llega hoy y lo voy a probar y os digo a ver que ocurre. Soy novato en esto de la electrónica pero tengo la intuición que al final todos los problemas que tengo vienen dados por corrientes electromagnéticas que generan ciertos aparatos y que provocan que los cables de datos que van a los pulsadores absorban una carga eléctrica y terminen mandando un 1 al pin digital de arduino, haciendole creer que hubo una pulsación.

Os informo, muchas gracias!!!

Si, perdón, lo vi luego en la foto y me olvidé de editar el post.

Hola a todos!

Pues bien, substituí el cable de teléfono trenzado por otro igual pero con malla. Conecté el hilo conductor de la malla a GND del Arduino y la mejora ha sido notable. Por momentos he creído que ya estaba solucionado del todo. Sin embargo, aunque antes la luz se me encendía digamos, de media 1 vez por cada 4 veces que encendía/apagaba el extractor, pues ahora sucede 1 por cada 20/30.

He conectado el arduino al PC y debugado y puedo ver como, muy de vez en cuando al encender el extractor leo en el puerto serial un texto que me indica que también se pulsó el pulsador de la luz, lo cual obviamente yo no hice. Es decir que en raras ocasiones le llegan 5v al pin del pulsador de la luz.

La mejora es buena pero me sigue sabiendo a insuficiente. Tengo diseñado el piso para tener varios Arduinos y controlar todas las luces y entonces ahí el porcentaje de fallas aumentaría, con lo que sigue siendo un sistema inconsistente.

Alguien tiene alguna idea de que podría hacer para tratar de acabar por todas con ese ruido?

NO pongas links a sitios que luego se caen.
Publica en otro post, cada imagen asi las vemos directamente.

Tu hazlo como gustes.
Yo te cuento que se usa.
Lo que estas haciendo hoy puede parecerte fantástico y en 1 año verás que no.
Pero haz tu experiencia.

Para ello hay rutinas antirebote.
Usa Bounce2.h la encuentras en el administrador de dispositivos del IDE

Por lo menos ya está localizado quien genera las interferencias, puedes probar a poner un condensador en los bornes del relé y ver si es efectivo, aunque me temo que no, ya que el filtrado debería de ser entre Fase y Neutro del extractor y lo más cerca posible de este.

En cuanto al esquema te lo simplifico.
imagen