Ruido interferencias pines digitales.

Muy buenas tengo hecha una instalación en casa para hacer algunas cosas de domotica.

El arduino que tengo es un mega 2560 instalado en una caja metálica, de ahí sale un
cat5 por los tubos de la instalación eléctrica, en una caja empotrada en la pareda tengo 1 interruptor i 2 pulsadores conectando marrón GND común i de ahí verde interruptor, azul un pulsador i otro el naranja.

Las entradas digitales que se usan tienen una resistencia pull down de 10k.

Esa es la parte de entradas digitales, como salidas hay un shield de 4 reles, tanto el shield como el arduino están conectados a una fuente a 9v. Mañana mirare de poner 2 fuentes independientes.

Los reles sacan corriente a 230v para 2 contactores de momento no he puesto nada más.

También hay 2 conversores TTL a rs232 usando el rx1 i 2 de la placa.

El caso es que cuando se encienden unos fluorescentes en una habitación del lado recibo un falso positivo i se ejecuta como si el interruptor se accionara. Otra cosas que he notado es que en ocasiones con el interruptor off no me cuenta la señal como LOW 0v

¿Seria mejor conectar las entradas con un pull up usando los 5v siempre?
¿El resto de entradas digitales que no se usan es aconsejable hacer algo?

He estado pensando en modificar el programa poniendo que verifique las señales dos veces cada 100ms por ejemplo, no se si esto podría ayudar. Creo que para el falso positivo serviría en el caso del arranque de fluorescentes pero si no consigo el LOW tendría el mismo problema.

Disculpas por el tostón como veis ando bastante perdido.

Quizás lo primero es poner una ferrita cerca de la entrada del AVR como las que tienen muchos dispositivos USB. Lo que estás experimentando es ruido inducido y en tu red eléctrica. También puedes poner una ferrita en la alimentación del AVR.

Esto debería mitigar el problema.

Qué longitud tiene el cable que contecta el AVR a la caja empotrada?

Con las entradas que no se usan, cuando arranca el AVR están como entradas con un pull-up (creo recordar).

Un pequeño croquis para hacernos una idea de la instalación estaría bien.

Hola,
yo creo redordar que cuando arranca el AVR, las entradas están en HI-Z (PORTxn a 0 y DDRxn a 0, que es lo lógico, por otro lado, tras un reset).
Lo suyo es que, como comenta @fm, las entradas que no estén conectadas a ninguna lados las pongas en pullup o como salidas, principalmente para reducir consumo y ruido electrico (no es bueno dejar entradas flotantes en tecnología CMOS).

El ruido, además de por la alimentación (que personalmente lo veo menos probable en tu caso, al estar alimentándolo a 9V, con marjen suficiente como para que el rectificador del arduino filtre algo - a no ser que el transformador sea lo que técnicamente se donomina como "una caca"), te puede venir por los cables que corren paralelos a los de 220V (la normativa de baja tensión exigen que cada circuito de la casa vaya por tubos separados, pero claro, eso se lo explicas tu a tu mujer :slight_smile: ).

Los cat5 no tienen malla. Puedes probar un cat6 conectando la malla sólo al lado del arduino. Además, estás usando los cables ethernet como simples conductores. Los cables ethernet son precisamente tranzados (twisted) para usar transmision diferencial de manera que cuando hay ruido EMI impulsivo (como cuando enciendes un fluorescente, por ejemplo), la diferencia de tensión entre los hilos se mantiene constante porque afecta de igual manera a ambos hilos. Puedes usar un diseño de ese tipo, aunque son más complejos, pero mucho más inmunes a interferencias EMI.

Si no, como mínimo, pon un filtro RC a la entrada del arduino, delante del pulldown. Por ejemplo, el pulldown entre gnd y y el pìn. un condensador entre gnd y el pin (cerámico, de algunos nanos) y una resistencia en serie con la linea de unos 100ohm. Aunque no sé si será suficiente, por los pedazos de picos que dices que tienes.

Si el ruido te viniese por la alimentación (por una bajada brutal de tensión 220V durante unos milisegundos), podrías mejorar el filtrado aumentando la componente C del filtro de salida del transformador. Es decir, poniendole un condensador gordote (>1000uF) a la salida del transformador.
Los transformadores caca, caca, caca sólo tienen un transformador y un rectificador de diodos de onda completa (4 diodos, vamos). Evitalos ... si eso es lo que tienes, ni idea de como te ha estado funcionando bien la cosa hasta ahora.

@ADLC - recuerdas bien, recuerdas bien. Tu memoria es mejor que la mía ;-). Cuando reseteas el micro, todas las entradas salidas, están configuradas en alta impedancia. Creo que internamente el arranque del AVR de Arduino no hace ningún tipo de configuración de pines. Con lo que todas los pines estarían en tri-estado.

Poner un filtro RC en la entrada te va a crear un divisor de tensión un poco feo con el pull-up o pull-down, pero con los valores adecuados de R debería funcionar bien. Los que te suguiere ADLC están bien y van a funcionar.

Sigo pensando que poner un choke te va a filtrar las coponentes de alta frecuencia generadas al conmutar la carga inducitiva del fluorescente. Es más, poniendo tu cable alrededor de un toroide debería eliminar toda componente de alta frecuencia. Bueno, así resolví el problema de mi equipo de música, que petardeaba cada vez que encendía unos fluorescentes (todo por que los cables de alimentación iban muy próximos al cable de señal y necesitaba que fuesen próximos en mi instalación).

¿Qué longitud de cable tienes? Porque si es muy largo lo que has conseguido es hacer una antena muy buena y seguramente tengas que bajar la impedancia de la linea. Si cualquiera de los dos métodos anteriores no funciona...

Confieso que justo ayer iba por el capitulo 10 del datasheet, precisamente el de los puertos digitales :-p

En cuanto al divisor de tensión, si, lo tenía en cuenta, pero 100 ohm sobre 10k es un 1%, para 5V, dará una entrada en H muy muy buena, más teniendo en cuenta que el Vih del Arduino es compatible con 3V3. Vamos, que ese es el menor de sus problemas ...

También tiene la opción de quitar los florescentes y volver a las bombillas incandescentes ... pero yo no lo recomiendo :stuck_out_tongue_closed_eyes:

Buenos días

Gracias por contestar no esperaba este debate :grin:

El cable tiene unos 6 metros por el mismo tubo pasa una línea para enchufes. Seguramente por eso tengo una buena antena jeje

Pondré el resto de pines digitales como salida.
Probaré con otro transformador a 12v y pondré las ferritas en cada lado.

Si eso no funciona mirare un cable apantallado y los filtros rc (tengo de comprar condensadores) a malas desconecto la linea de enchufes, llega a un ecnhufe que no se usa ahora.

Muchas gracias por lo menos ya se por donde seguir :slight_smile:

Un saludo

Buenas

Hoy ha sido el día de hacer chapucillas.
He echo varias pruebas lo único que me ha funcionado es cambiar el cable a un cat5 24awg con malla conectándola a gnd con eso ya filtraba el ruido, aparte he usado cada par para una entrada usando los blancos para 5v.

He probado con ferritas y sin a priori es lo mismo ya que estaba las he dejado puestas.
Aparte he puesto todas las digitales sin usar en output

Parece que el tema esta solucionado esta semana iré probando y puteandolo un poquito :wink:

Salut compis :grin:

¿donde pusiste las ferritas?

¿qué otras cosas probaste? (a ver si puedo aprender de tus errores)

Hola, aunque un poco pasado de fecha, pero siempre a alguien pude servir de ayuda.

Yo lo he solucionado con un simple delay justo después de comprobara la entrada y acto seguido otra comprobación.

Adjunto trozo del código:

if(digitalRead (pullbano) == 0 ) {
delay (100);
if(digitalRead (pullbano) == 0 ) {

Hola gente
Auque tarde como mencionó el colega arriba; en mi caso que tuve problemas con el srduino que programe para controlar un portón automático.
Cuando accionaba el compresor del mismo y las electroválvulas, el arduino hacía lo que quería; lo solucioné en mi caso, colocando el arduino en una caja metálica de chapa (material ferrosos) separado de la plaqueta de los relay.
Los cables de salida de señal del arduino hacia la plaqueta de relay los envolví con una malla de cobre de un cable de RF en desuso y conectado a masa del arduino; y las cargas que manejan los relay (compresor, electroválvulas, etc.) les conecté en paralelo a cada una de las cargas un capacitor y una resistencia en paralelo
El capacitor de .1mF x 600V y la resistencia de 180 ohms x 2W.

----C----+------R-----

Espero les aporte mi experiencia
Saludos

Foekohei
Eres nuevo por aqui y deberías LEER las normas del foro, este tema tiene mas de un año de inactividad y lo activaste nuevamente.

El mismo editor te adviere cuando tiene mas de 120 dias sin actividad, no lo hagas, solo el autor del post deberia reactivarlo.

max_saeta

Veo que ante pones las reglas de las instituciones a las necesidades de las personas; ya que en este problema que tuvo nekonos no hiciste ningún comentario para ayudarlo.
Es cierto que soy nuevo por acá y NO LEÍ las normas del foro; cuando tengas mas de treinta y cinco años de experiencia en áreas técnicas te darás cuenta que aunque pase mas de uno o dos años con un problema, igual la llegada de una solución o ayuda te servirá.
Ahora que me has puesto al tanto de las normas del foro te digo que igualmente si encuentro alguna persona que necesita ayuda lo volveré a hacer
Foe Kohei

Si la persona estuviese activo y aun con la necesidad, no habría problemas de ayudar.
Pero no son "reglas de las instituciones" son normas para mantener la informacion actualizada y con el mayor orden posible para que los que si necesiten la informacion puedan accesar a ellas de manera rapida y actual.

El autor del post debió colocar la solución que hallo o actualizar el estado de su proyecto para que otros se pudiesen guiar.

Con respecto a los AÑOS de nada, yo con mi antiguo jefe aprendi que es una excusa para hacer las cosas mal.

Si te dicen que la velocidad máxima es 90 km/hora a que velocidad circulas? Acá es lo mismo. Las normas estan para cumplirse.

Lo que debieran haber hecho es crear un nuevo post. indicar que se referencian directamente a este post y abrir ahi el debate.
NADIE HUBIERA DICHO NADA, pero como no hay moderador, todos creen tener la razón o su razón (me incluyo).

El problema mencionado lo hemos discutido muchas veces. A mi particularmente me ha vuelto loco. Justamente el tema de los fluorescentes y su encendido que genera ruido e interferencias de tal magnitud que todo absolutamente todo lo que probé no funcionó cuando usaba MC68hc11 asi que si me vas a hablar de experiencias también yo la tengo.

Si miran con detenimiento el post PLC ahi se ha discutido esto con muchas soluciones.
Hay otro caso de una cámara frigorífica que generaba problemas con los contactores y fue resuelto tambien por los consejos de Max y otros mas además de mi ayuda claro, está.

Entonces sería bueno que respetemos las normas porque sin normas somos nada.

Para terminar te repito: si hubiera moderador te hubiera advertido como mínimo, además de cerrar el post.
Es es el problema, como los post no estan cerrados se permite justamente esto.

Compañeros no creen que están siendo muy duros con el nuevo compañero que solo trata de aportar su granito.

Miren se tomo el tiempo de buscar de leer y de aportar. Algo que hemos criticado a los nuevos que no buscan y preguntan a modo de adivinanza o trabalenguas. Noten que digo aportar no preguntar, algo que para mi si seria molesto en un post viejo, pero any way.

Tengan en cuenta que las normas del foro son prácticamente invisibles y por lo tanto no se justifica ser grosero con el compañero nuevo, al final es responsabilidad del que comenta si se justifica su comentario en un post viejo, es decir si tiene algo importante que aportar que pueda solucionar, mejorar o complementar.

surbyte, Max esta es mi opinión en este caso, eso no quiere decir que estoy descuerdo con el desorden o los trabalenguas o adivinanzas que en ocasiones me toca leer, cuando me topo con eso y no entiendo, paso al siguiente tema, sin embargo si me interesa si le pido que se exprese mejor para tratar de ayudar; sin embargo los entiendo porque no han leído las normas, pero eso ya lo hemos platicado.

foekohei disculpa a mis compañeros la verdad que muchos compañeros tratamos de aportar pero no siempre es fácil la comunicación y seguro entenderás que cuando se trata de llevar un orden, al primer signo de problema uno se altera.

Por otro lado, si quieres seguir ayudando a resolver problemas asegúrate de que tu mensaje sea leído, -es solo una sugerencia.

ehrja +1

Bueno si yo me pasé de la raya esta vez.. entonces me dedico a otra cosa.
Fue mas que suave mi comentario pero igualmente estoy con ehrja aunque apoyo a Max y por si no se entiende lo repito.

Un moderador puede cerrar un post. Cuando un post se cierra lo único que puede hacer un usuario es llamarlo con un enlace.

Nunca mas habria comentarios como lean las normas para este caso. Se comprende ahora?

igualmente buen aporte para los que comentaron.