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
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.
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.
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).
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.
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)
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.
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).
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.
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.
TI2-CAW
proyectos de electronica