Proyecto Electronico .com

Diseños con leds, alarmas, compuertas lógicas, antenas y proyectos de electrónica en general


Drivers para LCD LC7582, LC7582E y LC7582W

Display LCD con LC7582, LC7582E o LC7582W.

El circuito integrado LC7582 es un driver o controlador para display LCD. Aunque ya fue descontinuado por su fabricante (SANYO), podemos encontrarlo en varias tiendas en internet.

El LC7582E es igual que el LC7582 pero con las patillas más cortas, y el LC7582W es más pequeño y delgado que ambos.

Muy utilizado en radios AM/FM para automóvil, puede manejar 53 segmentos en modo de "1/1 duty" o 103 segmentos en modo "1/2 duty".
Puede trabajar de 3 a 6,5 voltios, ideal para trabajar con microprocesador que utilizan 3,3V o 5V.

La comunicación es serial contando con 3 lineas de control: CE (Chip enable), CLK(Clock) y DATA.
Además tiene un pin que deshabilita el display cuando está a negativo INH (Inhibit). En mis proyectos no utilizo esta función controlada, mejor utilizo una resistencia a positivo con un capacitor a tierra de la manera que recomienda el fabricante.

conexiones del LC7582 y LC7582E

Este diagrama muestra la manera como he utilizado el circuito integrado LC7582, en la entrada de referencia VLCD pueden haber cambios en otros diseños, y la mayoría de displays para radios para automóvil controlan la función INH desde el microprocesador.
Para proyectos es por lo general innecesario porque solo nos sirve para ahorrar energía y este chip consume muy poco.

Los demás pines son salidas hacia los segmentos del LCD, las salidas COM1 y COM2 conmutan entre 2 grupos de segmentos como multiplexor, esto se utiliza para poder utilizar más de 53 pines sin agregar patillas o contactos. Teóricamente sería posible 106 segmentos, pero manejan un máximo de 104.

Los fabricantes adecúan la numeración de cada segmento por comodidad de conexiones y no por una secuencia que ayude a emplear una lógica matemática entre dígitos, por ello nos dificulta un poco el uso de cada dígito como unidad, decena, centena, etc.

Prueba práctica:

Me conseguí un radio para automóvil algo antiguo, de los que traían de nuevos algunos vehículos. Y me propuse utilizar su display.

LCD de radio antiguo

Primero averiguar las conexiones. En un condensador cercano localicé el negativo (tierra) y el voltaje de alimentación (VDD), la alimentación para el LCD estaba conectada directa al mismo voltaje.
Con algunos pines estaba difícil seguir las pistas y utilicé el multímetro (tester).

Conectar LC7582 de radio


Ya con los pines definidos coloqué una resistencia de 47K entre INH y el positivo (VDD), además de un capacitor de 0,1 microfaradio (104) a tierra.

Para comunicarme con el LC7582E utilizo una computadora de escritorio, por medio del puerto serial COM1, mediante el lenguaje Python corriendo en Linux (Debian o Ubuntu).

Se utilizan pines de control del puerto serial como salidas, que en una RaspberryPi serían gpios. En un Arduino serían salidas digitales normales.

Pc rs232 a LCD serial


En este caso utilizo la salida TX (pin 3) para CE (Chip enable), el pin 7 (RTS) se utiliza como CK (reloj), y el pin 4 (DTR) como salida de datos (DATA)

Utilizando la librería pySerial en Python la salida TX se puede conmutar de "0" a "1" utilizando el comando setBreak(), RTS con setRTS() y DTR con setDTR().

Ejemplo:



#!/usr/bin/python 
# utilizando LC7582 1 duty & 1/2duty 
import serial 
from time import sleep 
 
ser = serial.Serial('/dev/ttyS0', 57600, timeout=2) 
if not ser.isOpen():ser.open()  # open port

ser.setBreak(level=False) #CE 
ser.setRTS(level=False)  #clk 
ser.setDTR(level=False)  #data 
sleep(4) # segundos
ser.setBreak(level=True) #CE 
ser.setRTS(level=True)  #clk 
ser.setDTR(level=True)  #data 
sleep(6) # segundos

if ser.isOpen(): ser.close()  # close port


Este ejemplo puede servir para verificar si el voltaje en cada salida está funcionando bien, debemos recordar que se está utilizando Linux, y también que en una RaspberryPi no es necesario utilizar pySerial, sinó alguna librería para GPIOS. Podemos ver en estos ejemplos como es la secuencia si no la entiende bien. La forma en que se acomoda el programa que hice es intentando ayudar a cambiar cada linea de acuerdo al lenguaje que se utiliza, por eso no se ve nada optimizado.

Puede descargar el programa que yo hice aquí: lc7582.py

Cuando pude introducirle datos ajusté todos los segmentos a "1" y les tomé una fotografía para luego anotar sobre ellos a que segmento corresponde cada dato (D1,D2...D106)

segmentos LCD controlados por LC7582E

La secuencia de datos puede verse afectada por la velocidad en que se le envían los datos, si se utiliza un microprocesador y un lenguaje muy rápido puede no responder como queremos y debemos utilizar instrucciones para retardar dichos tiempos, con el puerto serial y la librería pySerial no hay problema porque realmente no son más rápidos que el tiempo de respuesta del circuito integrado LC7582.

Secuencia de comunicacion serial con LC7582E


En este gráfico se puede ver la secuencia para la comunicación con el chip LC7582E, lo referente a tiempos es algo confuso pero si no usamos menos de 2 microsegundos por cada estado de reloj (0-1) la comunicación se realiza correctamente.

Como este sistema es asincrónico puede ser mucho más lento y funciona bien.

Esta comunicación no lleva un encabezado o protocolo, solo 3 bits al final de cada paquete de bits para indicar "1/2 o 1/1 duty" (DP)
Y una función adicional (DQ) que anula un grupo de pines como salidas de display y entra en funcionamiento un convertidor de analogo a digital de 5 bits que nunca he visto usarlo. El tercer bit adicional es cero cuando termina el paquete de datos de 56 bits (1/1 duty).

paquete de 56 bits para el LC7582.

Cuando se utilizan en modo 1/2 duty el ultimo bit de cada paquete es 0 en el primer paquete y 1 en el segundo, los bits marcados con "X" significa que no importa el estado (0-1) en que estén.

paquetes con 112 bits para el LC7582.


Los datos de D53 y D106 son ignorados.

---

Notas:

Para instalar las librerias de pySerial en ubuntu solo digita:

sudo apt-get install python-serial

En Linux necesitamos privilegios (sudo python lc7582.py en Ubuntu) o le damos privilegios al puerto com a utilizar,

chmod 777 /dev/ttyS0

En mi caso el puerto serial es /dev/ttyS0,
si utiliza un adaptador USB a serial debe de averiguar el puerto (Puede ser /dev/ttyUSB0)

Información útil:

http://www.iearobotics.com/proyectos/cuadernos/ct11/ct11.html

Mi puerto ttyS0 (COM1) ya tiene los privilegios al inicio,

info: http://www.ubuntu-es.org/node/169052#.UXSe_NexgU0

Informaci[on sobre RPIO, para utilizar gpios en Raspberry Pi:
https://pypi.python.org/pypi/RPIO

Los displays no siempre tienen los pines en la misma posición con respecto a los segmentos pero publico la imagen de como quedaron numerados los segmentos de mi proyecto, puede ser de utilidad.

Segmentos lcd en pantalla utilizando LC7582W.

--> Imagen grande display utilizando LC7582E <--


El circuito integrado que maneja este LCD es un LC7582E, internamente es igual al LC7582 y al LC7582W, solo cambian en tamaño.

TI2-CAW

.Arriba.


.Menú: Proyectos de electronica.

proyectos de electronica