Problemas de Ruido me tumban I2C y Onewire

Buenas tardes y saludos a todos.

Os pongo en situación: desde hace tiempo estoy intentado monitorear mi instalación fotovoltaica (12V Baterías / 24V paneles solares / Regulador MPPT) con un ESP32 devkit. Lo que monitoreo es, temperatura de baterías y del disipador del MPPT con dos DS18B20 TO-92 (Usan Onewire). Por otro lado voltajes de baterías y paneles solares mediante dos INA219 (el de los paneles con su correspondiente divisor de tensión ya que en circuito abierto pueden ser mas de 50V y el INA219 no soporta mas de 32V. Un ADS1115 a modo diferencial conectado con un Shunt de 50A/75mv y por último un BME280, que al igual que los INA219 van por I2C.

Durante el desarrollo de todo está temporalmente conectado a una batería de 12V e "imitando" a los paneles solares utilizo una fuente de alimentación regulable de 30V/10A.

Todo funciona perfectamente si la fuente de alimentación no está conectada. Si aporta un amperaje inferior a 1A los datos no son precisos aun así se asemejan mucho a la realidad, pero en el momento que descargo la batería, y el regulador da paso a un mayor amperaje, los voltajes de los INA219 dejan de marcar valores reales (se van a mas del doble), las sondas de temperatura aparecen como desconectadas, el BME280 marca también valores irreales y el ADS1115 tampoco hace lecturas correctas e incluso alguna vez en serial muestra.

Los negativos del ESP32, batería y fuente de alimentación están en común.

Si descarto uno a uno componentes, sigue pasando exactamente lo mismo, si hay corriente, todo deja de funcionar. De hecho incluso da un "panic" del ESP32 algunas veces.

Tanto la placa con su correspondiente disipador del MPPT como la protoboard con el ESP32 y demás componentes están instalados en un armario metálico de superficie de 300x200x200. Si saco la protoboard fuera, sigue haciendo lo mismo.

Antes de recurrir a vosotros e investigado todo lo posible, y llevo más de un mes rompiéndome la cabeza y probando cosas, pero ya estoy en estado de bloqueo y no encuentro soluciones.

Gracias de antemano y espero vuestras posibles soluciones con los brazos abiertos.

Espero poder haber dado todos los datos necesarios y haber sido todo lo conciso posible.

Hi,
Cuando el problema surge es ideal leer los voltajes de todos los componentes para ver si cuando anade carga ver si los voltajes se caen. No dices si haz leidos los voltajes de los componentes. Otra cosa es de hacer un dibujo de como tienes el projecto alambrado. Esto es importante ya que se puede ver si hay algo fuera de lugar. Siempre es muy importante incluir el alambrado del projecto.

Ciertamente no lo comenté, pero sí que lo hice. No hay caídas de voltaje en ningún componente, de hecho la alimentación del ESP32 (y del resto de componentes) se obtenía de una fuente externa a la batería y/o fuente de alimentación que cumple la función de placa fotovoltaica. Preparo un esquema del conexionado y lo subo.

Gracias por tu respuesta :slight_smile:

Perdón por la "calidad" del esquema de montaje. He visto que mucha gente utiliza Fritzing, pero me aparecía que tenia que pagar para descargarlo...

IMG-9446-2.jpg

IMG-9446-2.jpg

Imagino que ya lo has intentado pero de todos modos no viene de mas recordarlo...
Prueba uno por uno los sensores, y verifica si se da el mismo error con cada uno de ellos.
Tal vez aparezca uno problemático.

Hi,
El dibujo esta excelente. Una cosa que no dices que tipo de supply usas para alimentar el esp32 y los modulos. Ya que hay varios tipos power supplys. Yo siempre cuando hay una distribucion de voltajes de todos los mudulos usando una fuente comun es de anadirle un condesador de 470uf con uno de .1 mfd en paralelo a los 3.3 voltios. Esto es para eliminar los ruidos que se puedan producir y muchos ignoran esto. Es un requisito.Otra cosa lee el voltaje de 3.3 voltios usando el voltimetro en AC debe de leer zero.

Gatul:
Lo pongo en el post original, si que he revisado uno a uno los sensores y ninguno da fallo por separado. Gracias por tu respuesta.

Tauro0221:
He probado en alimentarlo de dos formas, la primera tal cual desde el USB del pc, conectado al micro USB del ESP32, y la otra con un transformador de 12V a 5V @ 3A que tengo. Con ambos el resultado es idéntico.
Yo tenía descartado que sea un problema de alimentación como tal, ya que si no le conecto el suministro que hace de placas solares no hay problema alguno y funciona todo genial había dado por buena la instalación en general.
Quiero probar la configuración de condensadores que me dices... me lo puedes explicar mas detenidamente?

Mil gracias por vuestras respuestas!

Hi,
El problemaa puede ser que las placas pueden producir ruidos electricos ya que esta estan recibiendos luz solar.. El uso de los condesadores por ejemplo el de 470ufd se usa para eliminar los ruidos de baja frecuencia y el de .1 ufd de alta frecuencia. El adadir los condesadores es para filtrar el voltaje de ruidos. Siempre se debe de anadir uno de .1 ufd lo mas cercano posible al los pines del Vcc y ground. Si tu mira un motherboard de PC veras que cada circuito integrado tiene uno de 10ufd y uno de .1 ufd y veras taambien que tienen como mas 100 de ellos alrededor del motherboard. Tambien ayuda si hay fluctuaciones de voltaje en Vcc. Cuando el voltaje del VCC baja entonces el voltaje es suplido por el condesador ya que esta esta cargado al voltaje de VCC. Posiblemente hay otros problems pero siempre se debe de anadir un condensador si se usa el VCC para alimentar otros componentes

Hola @Miguelinux1985 he intentado leer atentamente todos y cada uno de los post y me queda una pregunta.

Debes revisar con atención lo que Tauro0221 te ha sugerido. Todo parece indicar que el DC DC de 12 a 3.3V 3A no esta funcionando bien.

Otra cosa lee el voltaje de 3.3 voltios usando el voltimetro en AC debe de leer zero.

Nunca respondiste que lectura de AC tienes a la salida del módulo DC-DC.

Hi,
En el diagrama no muestra como alimentas el micro. Si no me equivoco estas usando los 3.3 voltios del micro para suplir la energia a los modulos. Como alimentas el micro estas usando los 12 voltios directo de la bateria y usas el regulador interno del micro para alimentar los modulos. Tambien me imagino que de la bateria va ir a un inverter para covertir los 12 voltios un voltaje de 120 o 220 de acuerdo al systema que debes tener. Si esto no es correcto dejanos saber que haces con el voltaje de la bateria que esta siendo cargada por los paneles solares.

Buenos días,

Adjunto dos imágenes mas por si os ayuda a entender el proyecto:


Estoy utilizando un conversor DC12-DC5(con salida USB) que alimenta el ESP32 por USB, y todos los componentes a traves del ESP32.

De momento no hay panel solar, solo hago la prueba con la fuente de alimentación.

Siento si me he explicado mal antes.

La medida AC no la he hecho aun porque no he podido. Esta tarde la subo.

Hi,
Una cosa que yo estoy notando es que tu tienes los modulos de corriente a los 3.3 voltios del MCU pero segun adafruit ellos conectan el modulo a los 5 voltios y no a los 3.3 voltios. Otra cosa es que estos modulos que estas usando tienen resistencias de 10000 de pullup en los pines de SDA y el SCK. Quire decir cuando suma los pullupss te va dar una resistencia de 2500 ohmios de pullup. Primero trata de mover el voltaje de los modulos de corriente a los 5 voltios que alimenta el MCU32. Para ver si te trabaja. Vaz a tener que desconectar los otro modulos ya que tiene pullup a los 3.3 voltio.Si te trabajan entonces se procede a ver como se pueden conectar los otros modulos.
Adjunto adafruit link como alambrar el modul de corriente.

Tauro, funcionan en ambos voltajes, lo que pasa es que te has ido al ejemplo de cableado, pero si te vas a la información principal encuentras esto:

"The INA219B chip is much smarter - it can handle high side current measuring, up to +26VDC, even though it is powered with 3 or 5V. It will also report back that high side voltage, which is great for tracking battery life or solar panels. "

El tema de resistencias pullup pulldown no lo controlo, mi entender es que son como para "activar" el componente en cuestión pero no se exactamente como funcionan, ni si puede haber mas de un sensor conectado sin modificarlas.

Aun así el voltaje del ESP32 es a 3.3V toma los 5V del micro usb y con un AMS1117 lo baja a 3.3V... (que yo sepa)

Gracias una vez mas por vuestro interés en ayudarme.

Hi,
Bueno fui al dueno del circo que es TI y si dice que el INA219B puede trabajar con un voltaje de 3 a 5 voltios. Esto quire decir que se puede conectar todos componentes a los 3.3 voltios.

Buenas tardes y disculpad la demora en responder, el trabajo entre semana no me permite la mayoría de las veces hacer nada.

He realizado la lectura AC. en los pines 5V que alimenta el ESP32 oscila entre 0.02V y 0.09V. En los pines de 3.3V de 0V en todo momento.

Esta mañana he parado a comprar los condensadores que me indicó tauro0221. Me puedes decir donde ponerlos exactamente.

Por ultimo, respecto a lo que me comentaste de las resistencias pullup de los INA219, entendí que se están sumando los valores de resistencia. Debería de llevar esta resistencia pullup solo en la linea principal SDA/SCL y quitar las que lleva cada breakboard?

Gracias a todos una vez mas!

Hi,
Yo los condensadores los intalo el 470ufd en paralelo con uno de .1ufd lo mas cercano al pin de entrada del voltaje del micro que seria el de 3.3 voltios. Repertir lo mismo al final del ultimo modulo en la tarjeta que seria el ADS115. El problema con la resistencia de "pullup" wa que estan soldadas a los modulos y esto es una mal practica a menos que los que fabrican los modulos hagan que se puedan remover haciendo un bridge con soldadura y que vengan con el jumper abierto. Como el interface de I2C de los LCD que son soldables para cambiar la direccion del LCD.Normalmente la resistncia de "pullup" se instala en el ultimo modulo de la linea del I2C. Se supone que se use una de 4K7 pero lla mayoria de los modulos ya vienen con una de 10K. Deja las resistencia para ver si los condensadores te resuelven el problema. La corriente max de los pines del mcu creo que son de 12ma.

Gracias,

Voy a probar con los condensadores, y de nuevo en la breadboard, poniendo de 1 en 1 los elementos a ver que configuración es la que me mete el ruido, igual la forma en la que he hecho la protoboard hace que pille ese ruido.

Como mañana tengo el día prácticamente entero para probar cosas os actualizaré la información.

Un saludo!

Hi,
Acuerdate que muchos del forum an tenido muchos problemas como el tuyo y al final resulto que el problema era las conecciones en el protoboard. Ten mucho cuidado y ten esto en mente/consideracion...

Buenos días a todos compañeros,

Parece ser que he dado con el problema. He montado todo el tinglado fuera del armario metálico, y al conectar la fuente de alimentación que hace de placas solares, cargando a 8A (a partir de 1A antes era suficiente para que los problemas comenzasen) no hay problema de ruido alguno y todas las lecturas son perfectas. Si meto la protoboard dentro del armario metálico, comienzan de nuevo los problemas.

Bajo mi punta de vista (bastante ignorante en temas de electrónica) el regulador MPPT genera algún tipo de ruido electromagnético que interfiere en el normal funcionamiento del ESP32. Putada grande porque compré específicamente ese armario metálico para tenerlo todo recogidito. Se os ocurre alguna solución que blinde el ESP32 del ruido que genera el MPPT? Algún tipo de carcasa metálica podría solucionarlo?

Gracias de antemano por vuestra colaboración.

Un problema que tal vez tengas es que no uses puesta a tierra para nada de lo que estas hablando.
Investiga como armar una buena puesta a tierra, luego conecta el gabinete metálico a tierra y desde el interior conecta tambien las puesta a tierra de cada uno de los elementos que tenga la indicación de puesta a tierra.

Eso debería poner las cosas en orden.