Depuración de una pantalla LCD de 16x2 en un Arduino

9

Tengo una pantalla LCD estándar de 16x2 (creo que es compatible con Hitachi HD44780 - vea el resumen y la especificación a continuación), conectado a un Arduino Uno con 4 pines de datos, como se describe aquí , aunque he agregado 2x resistencias de 220ohm en paralelo (es decir, una resistencia de 110ohm) en el pin 16 (Fondo de retroiluminación), y he reemplazado el Pot con resistencias estáticas para crear 4V en Vo.

En resumen, RW está conectado a tierra, y RS, Enable y Data4-7 están conectados a los pines Arduino, mientras que los datos 0-3 están flotando.

Tengo otras cosas (sensores, un transistor con un SSR optoaislado y un relé de red, algunos botones) conectados a diferentes pines en el Arduino. El código que uso escribe texto en la pantalla varias veces por segundo y, normalmente, la pantalla funciona perfectamente.

Sin embargo, cuando el relé se cierra (toma alrededor de 10 m, y es controlado por un transistor que a su vez está controlado de uno de los pines de Arduino), a veces el LCD se vuelve confuso. Generalmente permanece confuso hasta que el relé se cierra a continuación, pero a veces cuando el relé se abre, o después de algunos ciclos más de abrir / cerrar para reiniciar. El parloteo siempre comienza y se detiene al mismo tiempo que el relé se abre o se cierra.

Con "distorsionado", quiero decir que cada vez que escribo en él y luego en caracteres en inglés, obtengo una serie de caracteres que normalmente no puedo identificar en la hoja de datos (aunque algunos sí puedo). Esta cadena de caracteres confusos tiende a moverse hacia la izquierda a lo largo de la pantalla cuando escribo un nuevo texto en la pantalla LCD.

Confío en que no es el mismo Arduino el que se confunde, ya que escribo el mismo texto en el monitor Serial al mismo tiempo, y no está confuso.

Desde entonces, he experimentado con el cableado del pin RW a una salida de Arduino y Data0-3 a tierra, pero esto no ayuda. He alimentado todo el dispositivo con una batería de 9V o con USB, y no ayuda. He reemplazado la batería ... sin cambios.

Lo único que parece funcionar es que no hay carga conectada al relé, pero eso no sirve para nada :-)

No tengo un analizador de señal ni nada más sofisticado que un multímetro, una computadora portátil y un arduino ... ¿Alguien tiene alguna sugerencia para ayudarme a depurar esto?

Hoja de resumen de LCD: enlace

Especificación de LCD: enlace

Ejemplo de texto distorsionado:

    
pregunta Richard Russell

4 respuestas

5

¿Tiene un diodo a través de su relé? Si no es así, los picos inductivos al cerrar / abrir probablemente causarán problemas.

Cuando, por ejemplo, detiene la corriente que fluye a través de un relé, intenta mantenerla en funcionamiento, si no hay una ruta de descarga, creará una gran tensión (esencialmente seguirá subiendo hasta que encuentre una ruta). Específicamente la fórmula es V = L (dI / dT). Esto significa que el inductor se opone a los cambios en la corriente a través de él al desarrollar un voltaje a través de él proporcional a la tasa de cambio de la corriente.

Intente colocar un diodo a través del relé, orientado para oponerse al flujo de corriente normal.

EDITAR: al revisar la página del producto, parece que es un relé "listo para enrollar" en una caja con componentes periféricos agregados, por lo que es poco probable que sea el anterior. Aun así, intentaría colocar el diodo a través de la alimentación del relé.
También asegúrese de que su suministro esté bien filtrado como se menciona en los comentarios. Coloque unos pocos condensadores de al menos 1uF al lado de los circuitos integrados y la pantalla LCD, y una tapa a granel de > 100uF en algún lugar (todo desde la alimentación a tierra)

    
respondido por el Oli Glaser
1

Tuve el mismo problema con una pantalla LCD de 16x4 cuando el Arduino también estaba controlando una placa de relé aislada opto-aislada de SainSmart . Todo funcionó bien con los contactos de relé desconectados. Pero cuando el relé cambió una carga inductiva (un relé de potencia de 24 VCA), la pantalla se distorsionó. Ninguna cantidad de aislamiento de potencia y filtros capacitadores ayudó.

Lo que resolvió el problema fue un amortiguador (condensador y resistencia en serie) a través de los contactos del relé SainSmart. Utilicé un Cornell Dubilier EMI / RFI filtro para la limpieza, pero un condensador de 0.1 UFD de variedad de jardín en serie con una resistencia de 47 ohmios probablemente funcionaría igual de bien.

    
respondido por el Len Shustek
0

Me estaba golpeando la cabeza por qué mi pantalla LCD está "distorsionada" y resultó que no he conectado mi Arduino GND a la placa (si esto es de alguna ayuda para alguien). Saludos

    
respondido por el bobe
-1

use un cable blindado en la salida y conéctelo a tierra. Me solucionó el problema.

    
respondido por el user25091

Lea otras preguntas en las etiquetas