Interfaz para Puerto Paralelo IPP01 Esta interfaz permite controlar dispositivos y obtener datos directamente desde el puerto paralelo de la PC. Posee 4 entradas del tipo TTL para toma de datos y 8 salidas del tipo TTL para la salida de datos. Además las salidas TTL 0 a 6 se encuentran también disponibles en un puerto de alta potencia mediante la amplificación con transistores Darlington, pudiendo manejar cargas de hasta 500 mA. Introducción: El puerto paralelo de una PC es ideal para ser usado como herramienta de control de motores, relés, LED's, etc. El mismo posee un bus de datos de 8 bits (Pin 2 a 9) y muchas señales de control, algunas de salida y otras de entrada que también pueden ser usadas fácilmente. Las PC's generalmente poseen solo uno de estos puertos (LPT1) pero con muy poco dinero se le puede adicionar una tarjeta con un segundo puerto paralelo (LPT2). En reglas generales la dirección hexadecimal del puerto LPT1 es igual a 0x378 (888 en decimal) y 0x278 (632 en decimal) para el LPT2. Esto se puede verificar fácilmente en el setup de la PC o bien en el cartel que generalmente la PC muestra en el momento del booteo. Puede darse el caso que el LPT1 asuma la dirección 0x3BC (956 en decimal) y el LPT2 0x378, en ese caso habrá que tratar de corregir el setup y/o los jumper de las tarjetas en caso que sea posible. De lo contrario se puede modificar el software que veremos mas adelante para aceptar esas direcciones. Breve descripción del puerto paralelo: El puerto paralelo de un PC posee un conector de salida del tipo DB25 hembra cuyo diagrama y señales utilizadas podemos ver en la siguiente figura: Si deseamos escribir un dato en el bus de salida de datos (pin 2 a 9) solo debemos escribir el byte correspondiente en la dirección hexadecimal 0X378 (888 en decimal) cuando trabajamos con el LPT1 y 0x278 (632 en decimal) cuando trabajamos con el LPT2. Los distintos pins (bits) de salida correspondientes al bus de datos no pueden ser escritos en forma independiente, por lo que siempre que se desee modificar uno se deberán escribir los ocho bits nuevamente. Para leer el estado de los pins de entrada (10, 12, 13 y 15) se debe realizar una lectura a la dirección hexadecimal 0x379 (889 en decimal) si trabajamos con el LPT1 o bien leer la dirección 0x279 (633 en decimal) si trabajamos con el LPT2. La lectura será devuelta en un byte en donde el bit 6 corresponde al pin 10, el bit 5 corresponde al pin 12, el bit 4 corresponde al pin 13 y el bit 3 corresponde al pin 15. En la siguiente tabla se puede ver lo antedicho en una forma más gráfica: Escritura: Salida de Datos Escritura en dirección 0x378 (LPT1) o 0x278 (LPT2) DATO BIT 7 BIT 6 BIT 5 BIT 4 BIT 3 BIT 2 BIT 1 BIT 0 DB25 Pin 9 Pin 8 Pin 7 Pin 6 Pin 5 Pin 4 Pin 3 Pin2 CN5 TTL 7 TTL 6 TTL 5 TTL 4 TTL 3 TTL 2 TTL 1 TTL 0 No Usado CN4 HP 6 HP 5 HP 4 HP 3 HP 2 HP 1 HP 0 Lectura: Entrada de Datos Lectura en dirección 0x379 (LPT1) o 0x279 (LPT2) DATO BIT 7 BIT 6 En DB25 No usar Pin 10 Pin 12 Pin 13 Pin 15 No Usado Input 3 Input 2 Input 1 Input 0 CN6 BIT 5 BIT 4 BIT 3 BIT 2 BIT 1 BIT 0 No usar No usar No usar No Usado No Usado No Usado Interfaz En la siguiente página (pag. 4) podemos apreciar el circuito correspondiente a la interfaz. La IPP01 provee 8 salidas TTL, 7 salidas de potencia (500mA) y cuatro entradas TTL. Es importante tener en cuenta que las salidas TTL entregan una tensión de 5v y solo se les puede exigir un mínimo de corriente, apenas suficiente para activar un transistor o bien un par de compuertas TTL. Así mismo las entradas TTL deben ser alimentadas con una tensión máxima de 5v o de lo contrario el chip resultará dañado. Esta tensión se obtiene desde VDD a través del regulador U1 (78L05). Las 7 salidas de potencia no son mas que la amplificación mediante un array de transistores Darlington (ULN2003) de las salidas TTL 0 a 6 (la salida 7 no es usada). Este chip puede drenar una corriente máxima de 500ma, lo que es suficiente para activar un LED, un relé y hasta un motor DC de bajo consumo (tipo motor de grabador). 1 2 VDD VCC CN1 VR1 7805 1N4148 1 2 3 1 CN2 Vin 3 Vout D1 GND C2 0.1uF 2 C1 0.1uF VCC 1 2 GND GND VDD VHH 4 3 D D Salidas High Power (500mA) CN4 U1 1 2 3 4 5 6 7 8 IN 1 IN 2 IN 3 IN 4 IN 5 IN 6 IN 7 COMMON OUT 1 OUT 2 OUT 3 OUT 4 OUT 5 OUT 6 OUT 7 CLAMP 16 15 14 13 12 11 10 9 1 2 3 4 5 6 7 HP6 HP5 HP4 HP3 HP2 HP1 HP0 ULN2003 20 VCC CN3 U2 18 17 16 15 14 13 12 11 B1 B2 B3 B4 B5 B6 B7 B8 GND CN5 TTL7 1 TTL6 2 TTL5 3 TTL4 4 TTL3 5 TTL2 6 TTL1 7 TTL0 8 VCC C G DIR A1 A2 A3 A4 A5 A6 A7 A8 19 1 2 3 4 5 6 7 8 9 VCC 10 74HC245 VCC VCC 20 1 2 3 4 5 Array1 4x R10K B Input 0 Input 1 Input 2 Input 3 18 17 16 15 14 13 12 11 4 3 2 1 B1 B2 B3 B4 B5 B6 B7 B8 GND VCC U3 CN6 G DIR A1 A2 A3 A4 A5 A6 A7 A8 C 1 14 2 15 3 16 4 17 5 18 6 19 7 20 8 21 9 22 10 23 11 24 12 25 13 19 1 2 3 4 5 6 7 8 9 DB25 Macho B 10 74HC245 A A Title Size Interfaz para Puerto Paralelo Number Revision A4 Date: File: 1 2 12-Oct-2001 C:\Mis documentos\Circuito\paralelo.ddb 3 Sheet of Drawn By: 4 La teoría de funcionamiento es muy simple, solo se usan unas compuertas TTL del tipo Buffer (U2, U3) para poder conectarnos con seguridad al puerto paralelo, y un array de transistores Darlington (U1) para brindar una salida de mayor potencia. Las entradas Input 0 a Input 3, se encuentran conectadas a VCC mediante el array de resistencias (Array 1). Estas hacen la función de Pull-Up, por lo tanto las entradas que no estén conectadas serán siempre leídas como en estado "1". Solo serán leídas como "0" cuando sean conectadas externamente a GND. Cabe aclarar que los dos integrados TTL (U2 y U3) se alimentan del regulador de voltaje 7805, el cual se encarga de reducir la tensión de entrada (VDD) a 5v (VCC). La tensión VDD debe estar comprendida entre 9 y 12v. La tensión de entrada VHH alimenta directamente al ULN2003 (U1) para obtener mayor voltaje en caso de querer manejar un relé o bien un pequeño motor. La tensión VHH debe estar comprendida entre 3 y 15v. VHH podrá conectarse directamente a VDD (y de esa forma usar solo una fuente de alimentación) siempre que esto no provoque problemas de ruido. En el siguiente diagrama se puede apreciar un ejemplo de conexionado de un LED , un Relé y un micromotor de continua (D.C.) a las salidas de potencia. CARACTERISTICAS TECNICAS: Tensión de alimentación (VDD) Tensión de alimentación alta potencia (VHH) Tensión de Salida VCC Capacidad de carga de la salida VCC Cantidad de entradas TTL Niveles aceptables para entradas TTL Cantidad de salidas TTL (TTLx) Capacidad de carga en salidas TTL Cantidad de salidas de alta potencia (HPx) Capacidad de carga en salidas de alta potencia Dimensiones 9 a 12 volts D.C. 0 a 15 volts 5 Vcc regulados 1A 4 0v a 5v 8 2 mA 7 500 mA 150mm x 100mm Programa para manejo de la interfaz: En el archivo " paralelo.bas " encontraremos un programa hecho en Qbasic en donde se puede apreciar como se debe trabajar con el puerto paralelo y como se puede sacar provecho de la interfaz. El archivo " paralelo.exe " es el anterior programa ya compilado. El funcionamiento de este software es muy simple y básico. Primero le solicitará que elija el puerto a usar (LPT1 o LPT2). Luego puede elegir "Leer Port" para recuperar el estado de los pins de entrada (0 a 3) o bien "Escribir Port" para cambiar el estado de los pins de salida (0 a 7). Recuerde que si cambiamos el pin de salida 0 , también se altera el mismo pin en la salida de potencia (solo pins 0 a 6, el 7 no tiene salida de potencia). Mediante el análisis de este programa Basic se puede intentar hacer programas mas elaborados en otros lenguajes. Así mismo en el “ archivo vb-ipp01.zip “ podremos encontrar un programa realizado en Visual Basic para poder controlar esta interfaz. Estos programas puede hallarlos en el disket provisto con la interfaz, o bien descargarlos gratuitamente de la sección PROYECTOS: http://www.todorobot.com.ar/proyectos/paralelo/paralelo.htm DIAGRAMA DE CONEXIONES: El siguiente es un diagrama de conexionado de la Interfaz para Puerto paralelo. NOTA 1: VHH es la tensión de alimentación para la salida de alta potencia. Cuando esta tensión está dentro del rango de 9 a 12v , puede conectarse directamente a VDD. En caso de ser superior o inferior a VDD, entonces se debe alimentar en forma independiente. NOTA 2: Como se aprecia en la fotografía, todas las conexiones poseen un doble tipo de conector. Uno tipo bornera ajustable con tornillo superior y otro tipo pinera recta para usar con conectores enchufables. De esta forma la interfaz es totalmente versátil, ya sea para experimentación como para poner en producción. NOTA 3: Se incluye cable paralelo de 1mts. de longitud como el presentado en la fotografía. Conclusión: Esta interfaz es tan sencilla como útil, ya que nos permite realizar todo tipo de pruebas sin la necesidad de usar un microcontrolador. Y de paso nos permite tomar experiencia en el manejo de señales mediante equipos microprocesados. Podemos por ejemplo conectar un pequeño robot y tomar datos de sus sensores y analizar las decisiones a tomar mediante un programa hecho en cualquier lenguaje de PC actual. EJEMPLO DE UTILIZACIÓN: Se pueden encontrar muchos ejemplos de uso de la interfaz IPP01 en nuestra sección PROYECTOS: http://www.todorobot.com.ar/proyectos/proyectos.htm IMPORTANTE • • • • Nunca se debe sobrepasar la tensión de alimentación de los rangos indicados. Bajo ningún concepto se debe superar los niveles TTL ( 0 a 5 volt) en las entradas TTL. Tener especial cuidado al conectar la alimentación al módulo. Una alimentación inversa dañará el mismo. Para conectar o desconectar la interfaz con el puerto paralelo de la PC, ambos equipos (interfaz y PC) deben estar apagados, de lo contrario alguno de los elementos puede resultar.