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; consulte el resumen y las especificaciones a continuación), enganchada a un Arduino Uno usando 4 pines de datos, como se describe aquí , aunque he agregado 2x 220ohm resistencias en paralelo (es decir, un Resistencia de 110 ohmios) en el pin 16 (luz de fondo de tierra), y reemplazó el bote 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 Data 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 (demora aproximadamente 10 mA y es controlado por un transistor que a su vez se controla desde uno de los pines Arduino), a veces la pantalla LCD se vuelve confusa. Por lo general, permanece confuso hasta que el relé se cierra la próxima vez, pero a veces cuando se abre el relé o después de algunos ciclos más de apertura / cierre para reiniciar. Las incrustaciones siempre comienzan y se detienen al mismo tiempo que el relé se abre o se cierra.

Por "distorsionado", quiero decir que cada vez que escribo después de que se vuelve confuso, en lugar de escribir caracteres en inglés, obtengo una cadena de caracteres, que generalmente 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 a medida que escribo un nuevo texto en la pantalla LCD.

Estoy seguro de que no se está confundiendo el Arduino en sí, ya que escribo el mismo texto en el monitor de serie al mismo tiempo, y no está distorsionado.

Desde entonces he experimentado con el cableado del pin RW a una salida 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 frustra el propósito :-)

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 pista para ayudarme a depurar esto?

Hoja de resumen de LCD: http://oomlout.com/LCDD/LCDD-SUMM-BC1602A.pdf

Especificación de LCD: http://oomlout.com/LCDD/LCDD-DATA-BC1602A.pdf

Ejemplo de texto confuso: texto confuso


1
Intente agregar un condensador de al menos 1 uF a sus rieles de alimentación, ese es un extremo del condensador a Vcc y el otro a GND. Tenga cuidado con la dirección del condensador si es electrolítico :)
abdullah kahraman

1
Esto es realmente extraño. No está manejando ese gran relé directamente, la caja de relés que compró en realidad tiene un pequeño SSR DIP que está cambiando la alimentación al gran relé, y el gran relé se sale de la línea de CA. Como tal, realmente no debería haber forma de que el back-emf generado por el relé que actúe entre en su circuito.
Connor Wolf

Esto huele a un problema de conexión a tierra / desacoplamiento. ¿Cuánta capacitancia tienes a través de tus rieles de potencia en el tablero?
Connor Wolf

Además, ¿qué tan cerca está la caja de relés del circuito integrado? ¿Puedes poner algunos pies de cable entre la caja de relés y el resto del circuito? Eso eliminaría la posibilidad de cualquier acoplamiento magnético.
Connor Wolf

Gracias por las respuestas Tiene razón en que el relé está desacoplado con un SSR y varios otros componentes. Probé un diodo, y luego probé un condensador electrolítico de 220uF entre 5V y GND en los rieles de alimentación cerca de la pantalla LCD. Ninguno de estos parecía tener efecto. No probé (todavía) los dos juntos.
Richard Russell

Respuestas:


5

¿Tienes un diodo a través de tu relé? Si no, 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 mantenerlo en funcionamiento, si no hay una ruta de descarga, creará un voltaje grande (esencialmente seguirá aumentando 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 de corriente a través de él al desarrollar un voltaje a través de él proporcional a la tasa de cambio de corriente.

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

EDITAR: al verificar 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 lo anterior. Aun así, trataría de colocar el diodo a través de la potencia del relé.
También asegúrese de que su suministro esté bien filtrado como se menciona en los comentarios. Coloque algunos condensadores de al menos 1uF al lado de los circuitos integrados y la pantalla LCD, y una tapa de volumen de> 100uF en algún lugar (todo desde la alimentación a tierra)


Mire la hoja de datos para el "Relé". La entrada al relé en realidad está impulsando un pequeño SSR, que cambia la potencia real al relé en sí. Dado que la entrada al relé es una entrada SSR, no veo que un diodo realmente haga nada.
Connor Wolf

Eché un vistazo (no pude encontrarlo antes) y estoy de acuerdo, era solo un tipo de sugerencia "no puede hacer daño" sin más información. Esperemos que pronto recibamos una actualización sobre cómo es con el desacoplamiento agregado.
Oli Glaser

Gracias por la respuesta. Tiene razón en que el relé está desacoplado con un SSR y varios otros componentes. Probé el diodo, y luego probé un condensador electrolítico de 220uF entre 5V y GND en los rieles de alimentación cerca de la pantalla LCD. No probé (todavía) los dos juntos.
Richard Russell

También intenté mover conscientemente los circuitos de CA a aproximadamente un pie de distancia del circuito de 5 V, dejando solo el cable de señal de relé de 5 V que los conectaba, pero esto no ayudó. En mi experimentación, descubrí que una pequeña carga en el relé (lámpara halógena de 85 W) no parece tener mucho efecto en la pantalla, pero si tengo una carga grande (hervidor de 2000 W), es más probable que cause el error. He visto este problema con la lámpara antes, aunque con poca frecuencia.
Richard Russell

Una tapa de cerámica de 1uF más o menos sería mejor para los transitorios, agregue uno en paralelo con el 220uF. Intente agregar otro o dos> 100uF cap (s) también, a través de + 5V y GND cerca de los cables del relé. ¿Puede mostrarnos una mejor imagen de su configuración?
Oli Glaser

1

Yo tenía el mismo problema con una pantalla LCD de 16x4 cuando el Arduino también estaba controlando un SainSmart aislada opto- tablero de relés . Todo funcionó bien con los contactos del relé desconectados. Pero cuando el relé cambió una carga inductiva (un relé de alimentación de 24 VCA), la pantalla se confundió. Ninguna cantidad de aislamiento de potencia y condensadores de filtro 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 filtro EMI / RFI de Cornell Dubilier preempacado para una buena limpieza, pero un capacitor de jardín de 0.1 ufd en serie con una resistencia de 47 ohmios probablemente funcionaría igual de bien.


¿Puedo ver el diagrama del circuito sobre cómo se conectan en serie el condensador y la resistencia con el relé? Gracias
Jam Ville

1

Estaba golpeándome la cabeza por qué mi LCD está "confusa" y resultó que no he conectado mi Arduino GND a la placa de pruebas (si esto es de alguna ayuda para alguien). Saludos


Esto no agrega mucho a los comentarios existentes.
David

-1

use cable blindado en la salida y conéctelo a tierra. Resolvió el problema para mí.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.