Caracteres raros en LCD con i2c

Buenas a todos,

Os cuento, he hecho el proyecto de una incubadora, bueno, eso es lo de menos, el caso es que tengo un LCD 16x2 con un i2c conectado a un Arduino nano v3 en los pines A4 y A5

El problema es que cuando reinicio el Arduino, y también cuando lleva tiempo en ejecución, a veces, sin saber muy bien porque, comienzan a aparecer caracteres raros en la pantalla, que se van modificando como les apetece, se queda así, hasta que reinicio el Arduino (y tengo la suerte de que aparezcan los datos buenos)

He estado leyendo y he visto que algunos puentean los pines sda y SCL al pin 5v con una resistencia de 10k, pero no sé si esa es la solución a mi problema o me puedo cargar algo

Agradezco cualquier ayuda.

Muchas gracias a todos

Eso ocurre por algun ruido electrico en tu sistema. No se que cosas accionas con el arduino pero algo esta generando ruido electrico y éste es el que te complica las cosas con el LCD>

Pero efectivamente una resistencias de 4k7 en pull up en cada linea mejorara la comunicacion I2C.

Ruido eléctrico?? Ok, está en una caja el LCD el i2c y el Arduino, aunque también hay dos interruptores para líneas de 12v.

Probaré a meterle un interruptor a la propia pantalla para apagar y encender solo la pantalla, al menos para poder reiniciarla y comprobar que todo sigue funcionando correctamente, actualmente tengo un interruptor para encender o apagar solo la iluminación, lo reutilizarse para eso a ver qué ocurre.

Muchísimas gracias

O, hay alguna forma de resetear el i2c por software cada cierto tiempo???

Sin ver tu codigo dificil de adivinar.

Kike_GL:
Sin ver tu codigo dificil de adivinar.

me refiero a alguna forma de implementar una función que resetee el i2c cada cinco minutos por ejemplo, que implemente algo, que, aunque la pantalla se vaya, sepa que a los cinco minutos se resetea y vuelve a ir bien

Antes de nada yo probaria lo que te comentaba Kike de la resistencia de PUL-UP, En las conexiones I2C son imprescindibles, ya que dichas cionexiones son en modo OPEN-SOURCE y no tienen referencia alguna al positivo.
Las resistencias deben colocarse en ambas lineas, SCL y SDA en la parte del esclavo, en tu caso en el display. Deben ser de entre 4K7 y 1K para 5 V. y entre 4K7 y 680 Ohm para 3,3 V. Cuanto mas bajas menores posibilidades de interferencias tendras, pero no bajes de los valores minimos indicados para evitar posibles daños al Arduino.
Por cierto me podrias decir que display tienes y si es I2C nativo o lo utilizas con adaptador.

Saludos.

Que módulo I2C no trae dichas resistencia?

surbyte:
Que módulo I2C no trae dichas resistencia?

Pues asi de pronto solo puedo decirte dos, he utilizado pocos. Un modulo de RTC con el DS3231 y un modulo de FM con el QN8027 y por el contrario la plaquita adaptadora de la que hablaba si que lleva las resistencias.

AcoranTf:
Antes de nada yo probaria lo que te comentaba Kike de la resistencia de PUL-UP, En las conexiones I2C son imprescindibles, ya que dichas cionexiones son en modo OPEN-SOURCE y no tienen referencia alguna al positivo.
Las resistencias deben colocarse en ambas lineas, SCL y SDA en la parte del esclavo, en tu caso en el display. Deben ser de entre 4K7 y 1K para 5 V. y entre 4K7 y 680 Ohm para 3,3 V. Cuanto mas bajas menores posibilidades de interferencias tendras, pero no bajes de los valores minimos indicados para evitar posibles daños al Arduino.
Por cierto me podrias decir que display tienes y si es I2C nativo o lo utilizas con adaptador.

Saludos.

Pues uso un LCD 1602 y un adaptador tipo Adaptador IIC/I2C Compatible arduino Display PCF8574T (no se si es ese concretamente, pero algo similar)

zumbio:
Pues uso un LCD 1602 y un adaptador tipo Adaptador IIC/I2C Compatible arduino Display PCF8574T (no se si es ese concretamente, pero algo similar)

Ok, te pregunte porque yo utilizo ese mismo sitema, pero mi placa adaptadora lleva el MCP23008 y en un principio me dio problemas. pero no era por las conexiones, sino por la libreria que utilice. Primero probe con LiquidCrystal_I2C descargada de una web donde decian que valia para ese integrado, pero a mi nunca me funciono. Despues investigando llegue a la pagina de Adafruit, donde tenian un tutorial de uso del LCD I2C y utilizaban la misma placa adaptadora que tengo yo con su propia libreria, por tanto la descargue e instale y se acabaron mis problemas.

Saludos.

zumbio:
O, hay alguna forma de resetear el i2c por software cada cierto tiempo???

Pero si eso ya lo debes hacer en cada bloque de datos...

if (Wire.endTrasmission() == 0){
    //Dejo de transmitir con exito.
}

Porque no le pones un capacitor electrolitico de digamos 47 o 100uF 16V y otro de 0.1uF cerámico entre bornes de GND y VCC del LCD. Veamos si eso ayuda. Si no soluciona el problema no afectará en nada el funcionamiento.

Hola colegas, presento el mismo problema que el compañero zumbio. Les comento mi experiencia para ver si sirve como aporte. Yo igual tengo instalado un LCD 20x4 con adaptador I2C PCF8574. Ambos estan instalados en un gabinete el cual se alimenta con una fuente de 15V a 2A, la cual regula el voltaje con un L7809 para el Arduino NANO y un L7805 al LCD. El sistema acciona un rele de 5V, que a su vez acciona un contactor con bobina de 110V, el cual tiene la finalidad de activar un motor para extraer aire. Los caracteres extraños se muestran en cuanto se acciona dicho rele. La solución que le di fue poner un pulsador que le permita a mi cliente resetear el sistema cada que suceda eso. Pero igual sería de gran ayuda encontrar alguna manera de reiniciar el bus por software o alguna otra manera de evitar eso, saludos a todos.

@eme_1427, no revivas hilos viejos.
Lee las normas y crea uno propio