Interferencias de bomba peristaltica + variador hacia dispositivos I2C

Buenos días foreros,

Soy Ingeniero Civil y para mi tesis de Master he decidido llevar a cabo unos experimentos, basados en arduino, en un laboratorio de la universidad. Ha sido dificil ya que este es mi primer contacto con Arduino, la electrónica y la programación pero el resultado ha merecido la pena.

El proyecto consiste en un Arduino Mega, conectado a cuatro ADS1115, un módulo de 8 relés y una shield de RTC+SD. De esta forma, mido cada 2 segundos 8 sensores (lecturas diferenciales) y almaceno estos datos en la SD con fecha y hora. Los relés se usan como interruptores para el accionamiento de unos mecanismos.

Acabé el proyecto hace tres semanas y para probar su funcionamiento a medio plazo lo dejé conectado con un cargador de telefonos móviles por el puerto serie durante una semana en casa. Resultado: Todo OK.

Lo traslade al laboratorio para empezar los ensayos y comence a notar que el arduino se "colgaba" cuando le venia en gana :disappointed_relieved: . Tras revisar el código y romperme la cabeza contra la pared, me dí cuenta de que el reloj en un intevalor que iba de 0 a 2 minutos, ofrecía un valor ilógico que detenía el proceso:

2165/165/165 165:165:85

El "cuelgue", por tanto, era debido a que el siguiente loop intentaba ejecutarse 2 segundos despues de esta fecha. Además, antes del "cuelgue" los valores registrados por los ADS1115 oscilaban demasiado.

Esto solo sucedía en el laboratorio y entonces me dí cuenta de que estaba conectando el arduino a una regleta donde había dos bombas peristálticas trifásicas con su variador de frecuencia. A partir de ahí, y para aislar el problema he probado varias cosas:

1.- Arduino conectado al ordenador y este sin enchufar (solo con batería). FUNCIONAMIENTO OK.

2.- Arduino conectado al ordenador y este enchufado en la regleta donde estan las bombas. DESASTRE.

3.- Arduino conectado al ordenador y este enchufado tan lejos como se puede de las bombas. FUNCIONAMIENTO REGULAR (estable 1-2 días, hasta que vuelve a aparecer el valor ilógico "2165/165/165 165:165:85".

Supongo que el problema es debido al siempre malnombrado ruido electromagnético. El tema me supera un poco ya que mi formación en electronica se reduce a 0. Me gustaría saber si existe una solución razonable para evitar estos problemas y poder garantizar un funcionamiento estable a largo plazo del Arduino.

Espero haberme hecho entender, si no es así hacedmelo saber.

Muchas gracias de antemano y un saludo a tod@s.

Bueno he tema lo hemos tratado varias veces, hablo del ruido electrico.
Tenemos varios hilos con sugerencias prácticas que funcionan asi que lo mejor es que busques dichos hilos.
Es una combinación de soluciones de buen diseño como usar un filtro RFI a la entrada de la alimentación del Arduino, sumado a jaula de faraday con puesta a tierra.
Empezaría por lo primero considerando que tienes variadores de velocidad.

A medida que recuerdo los hilos te los iré posteando pero tienen que ver con ruido en ambientes industriales.

Esto

"2165/165/165 165:165:85".

Es un fallo en la comunicación I2C de tu RTC provocado por? No lo se.
Tal vez ya este todo la alimentación comprometida.

Prueba con el filtro RFI como primer medida.
Si no tienes, busca de la fuente de una vieja PC, son buenos pero si hablas de laboratoria no será problema que lo consigas.

Hi,
Una cosa que es bien bien bien importante cuando se pide ayuda es de incluir como esta alambrado el projecto, que tipo de energia se usa , cuales son los sensores y el sketch que se usa. Creo que para que se te pueda ayudar/aconsejar deberias de incluir como tienes alambrado el projecto.

Muchas gracias por la info.

El fallo en la comunicación I2C no sé a que es debido, pero lo que si sé es que es que este fallo se produce debido a la presencia/funcionamiento del conjunto bomba peristaltica+variador de frecuencia.

Mañana probare a conectar la alimentación a una fuente de PC, que tengo alguna por ahí.

Respecto a la jaula de Faraday la conecto a la tierra de un enchufe cualquiera?

Gracias por la paciencia.

Respecto a lo planteado por Tauro,

La alimentación del arduino es el tema en cuestión, he probado varios métodos (que describo en el primer post).

Los sensores utilizados son 4 ADS1115, que leen voltajes diferenciales de 8 pilas de hidrógeno (pensé que no venía a cuento especificar).

El sketch, si alguien está interesado se lo puedo pasar pero son 900 lineas de código, y al no haber problemas en este no me ha parecido oportuno postearlo.

Muchas gracias por el feedback y un saludo.

El código no parece tener relevancia aunque quien lo puede asegurar.

Respecto a la jaula de Faraday la conecto a la tierra de un enchufe cualquiera?

Ese es un error común.
Si tienes algo que presenta problemas no puedes conectarlo a la misma tierra que tienen los variadores/motores.
Claro que si estas en un laboratorio pedire una tierra aislada de las demas será dificil.

Prueba con el filtro RFI para comenzar.
Fuente de PC no a menos que tenga filtro RFI.

Hi,
Pregunta tienes las resistencias de "pullup" en los pines de A4 y A5 El I2C requiere de estas dependiendo de la distancia y el grueso del cable que se usa. Algunos recomienda si es corta una de 4k7 y si la distacia es bastante lejos entonces recomiendan una de 3K9 ohmios.

No tengo ninguna resistencia "pullup" instalada, por lo que he leído Arduino las lleva ya incorporadas pero no de tantos ohmnios.

Por otra parte no tengo ni idea de como hacerlo. Los cables que uso son los usuales para arduino de 20 cm.

Si no sabes algo que se hace? Se busca.
El foro esta plagado de información sobre pull-up y Google mucho mas.

Google: Arduino pull-up y aparece el mundo de las resistencias que van del pin a 5V, nada mas simple y tonto que eso.

Ahora demos vuelta la cosa

tipica placa ADS1115

que se ve en SDA y SCL? Pues dos resistencias SMD conectadas en pull up a donde? a VCC

Respondido. No hacen falta resistencias Pull-up

geekpayes:
Mañana probare a conectar la alimentación a una fuente de PC, que tengo alguna por ahí.

No puede ser una fuente cualquiera sino una que tenga un filtro RFI. Surbyte te recomienda una fuente "vieja" pues estas usualmente traen este tipo de filtros.

es algo como esto:
Empresa de Filtros RFI/EMI

Hola de nuevo,

He probado con la fuente de alimentación de ordenador viejo, al conectar 5 v por el conector del adaptador, el arduino no era capaz de hacer funcionar los reles.

Al conectar 12V, los reles se han vuelto locos y se apagaban y encendian.

De momento, y para seguir con los ensayos voy a alimentar el arduino por el puerto serie mediante una powerbank.

Si alimentas un arduino via VIN jamás uses una tensión menor a 6.5 o 7V ya que no es suficiente para que el regulador entregue la tensión adecuada al Arduino.
Asi que los 12V son la opción correcta.

Pero.. has indicado que los reles se han encendido y apagado como locos lo que me hace preguntarte si pusiste alguna carga como un disco duro viejo porque la fuente de switching sin carga... en general no es de mi agrado como se comporta.

Hi,
Al principio dices que si conecta el systema con baterias trabaja perfectamente. Entonces cual es la diferencia entre alimentar el projecto con una bateria y una fuerte esterna. La direncia es que la bateria te una fuenta limpia de ruidos. Si trabaja bien con la bateria entonces queire decir que el problem esta en la forma que estas alimentas el projecto con una fuente externa conectada al systema electrico comercial. Para mi que el problema esta en la fuente externa que usas para alimentar el projecto. Si hay algun problema relacionado con la programacion o otro problema desconocido pues entonces el problema se va reproducir tambien usando las baterias y no es asi. El projecto trabaja perfectamente en baterias. ???????

geekpayes:
Hola de nuevo,

He probado con la fuente de alimentación de ordenador viejo, al conectar 5 v por el conector del adaptador, el arduino no era capaz de hacer funcionar los reles.

Al conectar 12V, los reles se han vuelto locos y se apagaban y encendian.

De momento, y para seguir con los ensayos voy a alimentar el arduino por el puerto serie mediante una powerbank.

Te solicito un esquema de como conectaste la fuente de ordenador pues segun lo que comentas hay dos opciones:

  • La fuente esta dañada
  • Conectaste mal algo

En todo caso para verificar que este metodo solucione el problema original abre la fuente toma una foto y la subes para intentar identificar si tiene o no el filtro, puesto que si no lo tiene pues de nada sirve este experimento.

Buenos días,

Ante todo disculpas por contestar tarde, he estado muy liado ultimamente.

Voy a resumir todo el post por si a alguien le sirve para la posteridad:
Es sistema utilizado es un datalogguer basado en arduino que utiliza como sensores, (lectores de voltaje), cuatro ADS1115, además controla ocho relés y guarda datos cada dos segundos en una targeta SD.

El problema consistía en que el entorno donde estaba situado el prototipo, un laboratorio con infinidad de motores de corriente alterna conectados, era rico en ruido eléctrico que interfería en los sensores y el reloj del arduino y me tumbaba el programa.

Despues de asegurarme que el problema era el ruido de la instalación electrica del laboratorio (MUY IMPORTANTE), valoré diferentes opciones:

Alimentar el arduino mediante batería.
Alimentar mediante una fuente de alimentación de un ordenador antiguo con fiiltro RFI (gracias surbyte).
Separar electricamente la alimentación del arduino de la instalación eléctrica general del laboratorio.

La opción de la batería la descarté debido a que hay que disponer de dos, y al cambiar la bateria cargada por la descargada tenía que desconectar el arduino.
En cuanto a la fuente de alimentación con filtro RFI, no encontré ninguna disponible.

Finalmente me decanté por sacar un enchufe del cuadro electrico donde esté conectado el alumbrado y asunto resuelto.

Muchas gracias a todos.
Un saludo.

Hi,
Muchas gracias por tu reportar/informacion de como resolvistes el problema. Como lo resolviste puede servir de referencia para algunos de los miembors que tenga un problema similar.