Informática

Adaptador para la conexión por puerto serie de un LCD para puerto paralelo

Autor: 
k74

 

   Si estas arto de conectar tu LCD por el puerto paralelo o simplemente no tienes dicho puerto aquí tienes una guía de montaje de un adaptador para la conexión de tu LCD paralelo por puerto serie. La guía de montaje la descubrí en la Web de www.hardcore-modding.com  realizada por Koko, este la tradujo de la Web www.forumpcs.com.br en la cual Dávio Franke comentaba como montar dicho adaptador creado por él mismo. La siguiente guía esta basada en la traducción de Koko, pero he añadido diversos comentarios y variaciones que he creído necesarias.

 

   Introducción

 

  Con este adaptador podremos conectar un LCD de caracteres desde 1x8 hasta 4x20 con chip HD44780 o compatibles a través de nuestro puerto serie. El adaptador está programado para emular el funcionamiento de los LCD serie de la marca Matrix Orbital, por lo que no todos lo programas de control de LCDs nos funcionaran, solo los que sean compatibles con los LCDs Matrix Orbital. El adaptador incorpora opcionalmente un receptor de infrarrojos para hacer un control remoto para el PC controlado por software muy parecido al que realice para mi mod,  de hecho usa los mismos programas para su control y configuración, así que si os decidís por hacer este control remoto o el que yo realice podéis pasaros por este apartado de mi Web donde tenéis la guía de configuración de los programas. Entre uno y otro no hay ventajas importantes ya que seguirás necesitando dos puertos serie independientes uno para el uso del LCD y otro para el control remoto tanto si lo montas integrado con el adaptador como si no. Dávio Franke (autor del adaptador) está barajando la opción de aprender C++ y alterar el código del WinLIRC (programa para gobernar el control remoto) para permitir el uso del LCD serie y el control remoto a través de un solo puerto serie.

 

   Esquema

 

 

  El esquema se puede dividir en tres partes:

 

         - Parte de entrada (MAX232)

         - Parte de control (PIC)

         - Parte de salida (conexión LCD, transistores para el control de iluminación y componentes del control de contraste)

  

   Funcionamiento

 

  El integrado MAX232 es un conocido driver para el estándar de comunicaciones serie RS-232 utilizado principalmente en los ordenadores (Puertos serie o COM). EL MAX232 se encarga de enviar y recibir los datos del microcontrolador PIC a través de la conexión RS-232 establecida con nuestro ordenador. El MAX232 solo necesita de cuatro condensadores (C3, C4, C5 y C6) para su funcionamiento.

  El PIC16F627 es un microcontrolador CMOS de 8 bits con arquitectura RISC. Se puede usar perfectamente el PIC16F627 tanto como el PIC16F628, la única diferencia es que el 628 tienen el doble de memoria Flash 2048bits) que el 627, esto a la hora del funcionamiento del adaptador no nos proporciona ninguna mejora, por lo que es indiferente el uso de uno u otro microcontrolador. Este PIC está programado con el código creado por Dávio Franke, que se encarga de traducir los datos del LCD recibidos a través del MAX232 al formato usado para controlar los LCD con chip HD44780 o compatibles. Además controla el contraste y dos salidas GPOs (General Purpose Outputs) una de ellas es la encargada del control de la iluminación de nuestro LCD y la otra (GP1) libre para el uso personalizado que cada uno queramos darle. El PIC no requiere más que de un cristal oscilador de 1.8432MHz para su funcionamiento. Gracias a los pocos requerimientos de los dos integrados utilizados, en cuanto a componentes externos se refiere, el esquema es muy sencillo de realizar y el montaje final cabe en una pcb de reducidas dimensiones que nos permite ser colocada detrás de nuestro LCD de 4x20 sin sobresalir.

  Los condensadores C1 y C2 junto las resistencias R1 y R2 actúan sobre el control de contraste de nuestro LCD, este se regula por software a nuestro gusto. Si por un casual desearíamos controlar manualmente el contraste simplemente deberíamos soltar la unión de la patilla numero tres del LCD con C1 y R1 y conectar a esa patilla un potenciómetro multi-vuelta de 10K de valor de la forma que se hace en este conocido esquema.

  R3, R4 y Q1 controlan la activación y desactivación de la iluminación de nuestro LCD. Esta se controla por software, solo se puede activar o desactivar y no podemos regular su intensidad. La iluminación permanecerá activa cuando encendamos el adaptador y el LCD hasta que mediante software indiquemos que queremos desactivarla. La salida RA3 del PIC a través de R4 controla el transistor encargado de unir R3 a masa para que se active la iluminación o no. R3 cumple un valor importante  desconocido por muchos usuarios de LCDs, esta resistencia limita el voltaje que se suministra a la iluminación de nuestro LCD. Muchos usuarios piensan que funciona a 5 voltios cuando no es así. Para saber el voltaje correcto de funcionamiento nos deberemos dirigir al datasheet del lcd que vallamos a usar. El LCD de la fotos que yo he usado para pruebas es un Crystal Fontz de 4x20 modelo CFAH2004-TMI-JP Archivo PDF, observando su datasheet veremos en la última página las especificaciones de la iluminación que lleva incorporada, vemos que debe ser conectado a 3,5v y tiene un consumo de 60mA a ese voltaje. Bien, deberemos adecuar R3 a esas especificaciones y para ello calcularemos su valor adecuado para cada LCD que se utilice. En este caso debería de usar una resistencia de 25 ohmios (usaremos de 27 ohmios ya que 25 no es un valor estándar) y que soporte 0.09 vatios. Para calcular dichos valores usaremos las siguientes formulas:

 

       R3 =  ( V de alimentación - V especificado para la iluminación ) / intensidad consumida por la iluminación = (5v - 3,5v) / 0.06A = 25 ohmios

       Potencia soportada por R3 = ( V de alimentación - V especificado para la iluminación ) * intensidad consumida por la iluminación = 0.09 vatios

 

  Para la mayoría de los casos será suficiente con una R3 de 5.6 ohmios (valor original del montaje), pero si utilizáis LCD con iluminaciones de colores especiales como es mi caso deberéis calcular una nueva R3 si no queréis quedaros sin iluminación en poco tiempo. Si como en el caso del contraste deseamos controlar manualmente la iluminación simplemente deberíamos soltar la unión de la patilla numero 16 del LCD con R3 y conectar a esa patilla un potenciómetro multi-vuelta de 100 ohmios de valor de la forma que se hace en el conocido esquema.

  Si usamos un LCD si iluminación no nos preocuparemos por lo anteriormente dicho y tampoco tendremos que conectar los pines 15 y 16 del LCD.

  También puede darse el caso de algún LCD que sus pines de conexión no este en el orden que se indica en el esquema, para su correcta instalación deberemos recurrir al datasheet del LCD en cuestión para ver las asignación de los pines por parte del fabricante e ir conectando Vss con Vss, Vcc con Vcc, etc.

 

   Montaje

 

LISTA DE COMPONENTES
Referencias Cantidad Valor/Descripción
LCD 1 Modulo LCD con chip HD44780 o compatible
U1 1 Circuito integrado MAX232 Archivo PDF también encontrado como DS14C232 o HIP232
U2 1 Microcontrolador PIC16F627 o PIC16F628 Archivo PDF, programado con este archivo lcd_pc_s.hex
- 1 Zócalo de 18 pines para el PIC16F627
- 1 Zócalo de 16 pines para el MAX232
U3 1 Receptor de infrarrojos IRM8601 (equivalente al TSOP1838, utilizable cualquier receptor de 38KHz)
Q1, Q2 2 Transistores BC337 o BC338 o equivalente
X1 1 Cristal oscilador de 1.8432MHz
C3, C4, C5, C6 4 Condensadores electrolíticos de 1uF 16V o más
C7 1 Condensador electrolítico de 100uF 10V o más
C1, C2 2 Condensadores de poliéster de 470nF 63V o más
C8 1 Condensador cerámico o de poliéster de 100nF 16V o más
R1, R2 2 Resistencias de carbono de 56 ohmios 1/8W
R3 1 Resistencia de carbono de 5,6 ohmios 1/4W
R4, R5 2 Resistencias de carbono de 3K3 1/8W
DB9F 1 (o 2) Conector DB9 hembra (con tapa)
Otros - Cable de 4 hilos para unir la placa al DB9, cable fino (0.22) para otras uniones, placa de circuito impreso de 58 x 36mm con el layout de abajo, herramientas adecuadas, etc.

 

   Diseño de la PCB:

 

  

 

   Conexiones:

 

 

 

  La opción 1 solo se debe montar si queremos utilizar el control remoto, con esta opción añadimos el segundo conecto DB9 hembra (puerto serie) necesario para el funcionamiento del control remoto como ya he comentado anteriormente. Si por el contrario no queremos utilizar control remoto solo dejaremos las uniones en azul que unen la placa al conector DB9 hembra, eliminando la unión en verde oscuro. Además no nos preocuparemos de montar el receptor U3, lo demás se queda intacto y la programación del PIC es la misma.

 

  Con la opción 2 podremos utilizar la salida GPO que nos queda libre (GP1). En la cual tenemos 5V cuando este activada y 0V cuando este desactivada. Esta controlada por la salida RA2 del PIC y por la R5 y Q2. Su activación y desactivación se realiza a través de la pestaña de "Actions" en el software LCD Smartie. Elegiremos la función que queremos que controle la salida GPO, por ejemplo el uso de la CPU (CPU usage %), lo insertaremos en la casilla If con el botón Insert, luego indicamos que cuando su valor sea mayor de 80 ponga la salida GPO1 a valor 1 (Activa). Seguidamente crearemos otra "Action" indicando que ponga la GPO1 a valor 0 (desactivada) cuando el valor de uso de la CPU sea inferior a 80. Con esto conseguimos que se active y desactive la GPO según varié el uso de nuestra CPU.

 

 

  Se podría conectar a esta GPO un leds que nos indique cuando esta la CPU a mas del 80% o otro led indicándonos si nos ha llegado un e-mail y también que la GPO conecte un ventilador adicional cuando determinada temperatura pase de un valor establecido, en fin las posibilidades son infinitas, pero tenéis que tener en cuenta que la potencia soportada por la salida GPO es muy pequeña, entonces para activar y desactivar cualquier dispositivo que no se un diodo led recomiendo que instaléis un pequeño relé de 5v con un diodo 1N4007 y un condensador de poliéster de 100nF, conectados de la forma que indica la opción 2, así la salida de baja potencia GPO activara el relé y este controlara de la forma que halláis predispuesto una carga de mas potencia.

 

  Si vas a alimentar el adaptador con la fuente de alimentación de tu ordenador o cualquier otra que suministre 5v directamente utiliza las entradas de GND y +5V, pero si por ejemplo vas a usar una fuente de alimentación externa que no es de +5V deberás montar la opción 3 y no conectar las entradas de +5V y GND. El diodo 1N4007 impide que se conecte invertidamente el positivo y el negativo evitando daños en el adaptador ya que si se da el caso el diodo corta el paso de la tensión negativa introducida por equivocación por el cable positivo. El condensador electrolítico de 470uF junto al común regulador de tensión 7805 estabilizan y disminuyen la tensión de entrada a los +5v necesarios para alimentar el adaptador.

 

   Software

 

  El LCD puede ser controlado por cualquier programa o plugin que sea compatible con los LCDs Matrix Orbital. El programa y el puerto serie que utilicemos deberá estar configurado a una velocidad de 19200bps, que es la utilizada por Dávio Franke y así mantener la compatibilidad con algunos programas antiguos. El autor del adaptador usa el LCD Smartie y yo también estoy usándolo, hay otros programas que nos sirven para el adaptador pero yo prefiero este. Uno de los mejores programas de control de LCDs es el conocido JaLCDs, pero de momento soporta los LCDs de Matrix Orbital.

 

  Para el control remoto el autor utiliza el WinLIRC y el IRAssistant. Yo recomiendo utilizar el WinLIRC y el Girder o solo Girder, estos yo los llevo usando desde que hice el control remoto hará más de un año y medio. Para configurar dichos programas podéis pasaros por la sección del control remoto para software en la que tenéis una guía de configuración de ambos programas, la única diferencia es que en la configuración del WinLIRC debéis poner una velocidad de puerto de 19200bps en vez de los 115200bps. Además en dicha sección disponéis de información sobre receptores infrarrojos compatibles.

 

  Para que los programas de control de LCD muestre algunos datos, se deben tener instalados y configurados otros programas que envían esos datos, como el Winamp, Mother board Monitor, SpeedFan, etc.

 

   Programación del Microcontrolador PIC

 

  La colocación del PIC en la PCB se realiza mediante un zócalo que nos permite extraerlo y volverlo a insertar sin tener que tocar el soldador. Yo siempre recomiendo la instalación de cualquier integrado, sea PIC o no, mediante un zócalo para facilitar el montaje y evitar daños en los integrados producidos por el soldador que utilicemos. El programa que se tiene que grabar en el PIC es este archivo lcd_pc_s.hex. El proceso para su grabación viene descrito más abajo, pero antes necesitamos tener un programador de PICs.

  Si no disponéis de ninguno en esta misma Web podéis encontrar uno muy sencillo similar a un conocido TE-20. En la sección del disponéis de los esquemas necesarios. También hay otro modelo llamado PIPO 2 que lo podéis encontrar en http://213.97.130.124/progs/pipo2/pipo2.htm

 

  Independientemente de que programador utilicéis tener en cuenta que para poder programar los PIC16F627 y 628 debe estar el PIN 10 (RB4/PGM) del PIC conectado a masa. Si tenéis un TE-20 o decidís montároslo deberéis hacer la variación del PIN 10 para que al programar no os de error 000h con el IC-Prog.

 

  Con la siguiente tabla podéis identificar todas las características de vuestro PIC:

 

    

 

    Programación con el IC-Prog

 

  Para la programación utilizaremos el programa www.ic-prog.com. La ultima versión la podéis bajar visitando la Web del programa.

  El IC-Prog es compatible con los sistemas operativos Windows 95/98/NT/2000/ME/XP/Vista y solamente requiere un procesador 386 y 8MB de RAM.

 

Recomendaciones:

 

        - Nunca sacar o poner el PIC en su zócalo con el programador conectado al puerto serie.

        - Nunca poner dos integrados a la vez (PIC y EEPROM).

        - El puerto serie en donde conectemos el programador debe estar configurado de la siguiente manera:

                    - Bits por segundo: 9600 (si tenemos problemas podemos bajarla hasta los 2400)

                    - Bits de datos: 8

                    - Paridad: Ninguno

                    - Ninguna Bits de paridad: 1

                    - Control de flujo: Xon/Xoff

 

Configuración del IC-Prog:

 

  Nada más ejecutar el programa la primera vez nos aparecerá una ventana de configuración:

 

 

  En programador elegiremos el tipo de programador que vamos a usar, que en nuestro caso es el JDM Programer.

  En puertos deberemos elegir el puerto serie donde tenemos conectado el programador.

  En Interfaz seleccionaremos Direct I/O

  En comunicación dejaremos todas desactivadas.

  El retardo I/O lo dejaremos a 10, pudiendo lo subir si no conseguimos programar correctamente en ordenadores muy rápidos.

  Después de esto lo primero que haremos es ir a Settings >>  Options

 

 

  y cambiar el idioma de la aplicación

 

 

  También activaremos dos opciones de verificación

 

 

  y nos aseguraremos de que esta deshabilitada la opción de "Habilitar MCLR junto a Vcc"

 

 

  Para que funcione correctamente en Windows XP deberemos hacer lo siguiente:

  1. Seleccionar el archivo icprog.exe
  2. Presionar el botón derecho de ratón
  3. Ir a propiedades
  4. Ir al menú de compatibilidad
  5. Seleccionar el modo de compatibilidad Windows 2000 o Windows 98 / Windows ME
  6. Presionar el botón Aplicar
  7. Presionar el botón Aceptar

  Además deberemos tener el archivo icprog.sys en el mismo directorio en donde esta el icprog.exe. Después ejecutaremos el programa e iremos a ajustes, opciones y  seleccionaremos la pestaña de miscelánea. Ahí activaremos la opción de "Habilitar Driver NT/2000/XP".

 

 

Programación del PIC16F627 o PIC16F628:

 

  Lo primero que haremos será elegir el tipo de integrado que vamos a programar:

 

 

  Deberemos indicar el reloj que va a usar el programador para acceder al PIC,  seleccionaremos XT y en bits de configuración activaremos la opción Power Reset (PWRT) dejando las demás desactivadas.

 

  Si queremos proteger el código que le programamos al PIC para que nadie pueda leerlo a través de un programador podemos activar la casilla de Protección de código colocándola en ON con el protegemos el código, por tanto el IC-PROG nos dará error  en la verificación (leer el PIC) ya que esta bloqueado.

 

 

  Antes de programar nos cercioraremos de que el PIC está vacío. Ejecutaremos el comando "Borrar todo".

 

 

  El proceso de borrado es realizado por el IC-Prog de una manera muy "alegre". Para cerciorarnos de que realmente el PIC ha sido borrado podremos ejecutar el comando "Verificar Blanco" y si realmente está vació no dará un mensaje de que el dispositivo está en blanco. Si no es así no dirá lo contrario y tendremos que verificar el programador y las opciones de configuración.

 

 

 

  Ahora deberemos elegir los datos que programaremos en el PIC, para ello iremos al menú Archivo y Abrir archivo.

 

 

  Buscaremos el archivo con extensión HEX que es el que contienen los datos a programar.

 

 

  Con el archivo HEX ya cargado podemos proceder a la programación del PIC.

 

 

 

 

  Bien una vez hecho esto ya tenemos nuestro PIC programado y listo para funcionar.

 

  Colocación en la Mod:

 

  El adaptador lo voy a utilizar para controlar el LCD de mi X-Bus, la PCB irá dentro de este último.

 

  Fotos:

 

  Aspecto del a PCB que he realizado sin crearla por insolación.

 

    

 

  El LCD ya funcionando a través del adaptador y utilizando el LCD Smatie:

 

efecto   efecto  

 

   Resultado de usar un programa no compatible con los Matrix Orbital, en la foto probé el JaLCDs:

 

 

   Foto del montaje que realizó su autor Dávio Franke:

 

 

 

-------------------------------------------------------------

Articulo original publicado por Dávio Franke en www.forumpcs.com.br

Articulo traducido y publicado por Koko en www.hardcore-modding.com

Articulo modificado y publicado por k74 en www.fullcustom.es

-------------------------------------------------------------

Muy bueno el proyecto. Como

Muy bueno el proyecto. Como hago si le quiero enviar la informacion a traves de programación por ejemplo con .net usando el componente serial port. Muchas Gracias