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:
Respuestas:
¿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)
fuente
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.
fuente
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
fuente
use cable blindado en la salida y conéctelo a tierra. Resolvió el problema para mí.
fuente