Heineken Team
Para poder disfrutar del contenido completo del foro debes estar registrado
Últimos temas
» Boyero electronico o seguridad para rejas jeje
Mar Dic 14, 2010 6:42 pm por Seiya

» Sacar virus de forma manual
Sáb Oct 17, 2009 9:24 pm por warang

» Paginas PTC
Mar Oct 13, 2009 8:05 pm por phillip

» McDonnell Douglas F-4 Phantom II
Sáb Oct 10, 2009 10:27 pm por warang

» Cañon Bofors de 40 mm
Dom Sep 27, 2009 12:24 pm por warang

» calculadora de imperia
Sáb Sep 26, 2009 8:09 am por warang

» Imperial Hero
Mar Sep 15, 2009 8:32 am por TanoCyrano

» Gif's animados
Mar Sep 15, 2009 8:27 am por TanoCyrano

» Reparacion Monitores (Rev Electronica y servicio)
Mar Sep 15, 2009 8:22 am por warang

Compañeros
Crear foro

Introduccion al puerto paralelo

Ir abajo

Introduccion al puerto paralelo

Mensaje  warang el Jue Abr 16, 2009 10:53 am

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 direccion 0X378 (LPT1) o 0X278 (LPT2)
Dato BIT 7 BIT 6 BIT 5 BIT 4 BIT 3 BIT 2 BIT 1 BIT 0
DB 25 PIN 9 PIN 8 PIN 7 PIN 6 PIN 5 PIN 4 PIN 3 PIN 2
CN5 TTL 7 TTL 6 TTL 5 TTL 4 TTL 3 TTL 2 TTL 1 TTL 0
CN 4 No usar HP 6 HP 5 HP 4 HP 3 HP 2 HP 1 HP 0

Lectura: entrada de datos
Lectura en direccion 0X379 (LPT1) o 0X279 (LPT2)
Dato BIT 7 BIT 6 BIT 5 BIT 4 BIT 3 BIT 2 BIT 1 BIT 0
DB 25 No usar PIN 10 PIN 12 PIN 13 PIN 15 No usar No usar No usar
CN 6 No usar Imput 3 Imput 2 Imput 1 Imput 0 No usar No usar No usar

Interfaz:
En la siguiente imagen podemos observar el circuito correspondiente a la interfaz para el puerto paralelo.


me quedo muy chica la imagen cualquier cosa pedirmela que se la paso por mail


La interfaz nos 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 (7805).

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).

La teoría de funcionamiento es muy simple, solo se usan unas compuertas del tipo Buffer (74HC245) para poder conectarnos con seguridad al puerto paralelo, y un array de transistores Darlington (ULN2003) para brindar una salida de mayor potencia.

Cabe aclarar que los dos integrados 74HC245 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 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 un fuente de alimentación) siempre que esto no provoque problemas de ruido.

En los siguientes diagramas se pueden apreciar un ejemplo de conexionado de un LED y un Relé a las salidas de potencia. En forma análoga podríamos conectar también un pequeño motor DC.



El siguiente es 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.
(para descargar el Qbasic seguir el siguiente link desde la pagina del autor del texto http://www.todorobot.com.ar/software/qbasic.zip )

Rutina para seleccionar el puerto a usar
port:
CLS
PRINT "Ingrese el port a usar"
PRINT
PRINT "1= Lpt1 (0x378)"
PRINT "2= Lpt2 (0x278)"
PRINT "9= salir"
INPUT i
SELECT CASE i
CASE 1
entrada = 889
salida = 888
GOTO inicio
CASE 2
entrada = 633
salida = 632
GOTO inicio
CASE 9
END
CASE ELSE
GOTO port
END SELECT

Inicio cuerpo principal del programa

inicio:
OUT salida, 0 ' reseteo salida

CLS
PRINT "Que deseas hacer ?"
PRINT
PRINT "1= Leer port"
PRINT "2= Escribir port"
PRINT "9= salir"
INPUT i
IF i = 1 THEN GOTO lee
IF i = 2 THEN GOTO escribe
IF i = 9 THEN END
GOTO inicio

Rutina para leer el puerto de entrada INPUT 0 a 3

lee:
CLS
PRINT "Ingresa el PIN que deseas leer (Valores validos: 0 a 3)"
PRINT
PRINT "Pulse 9 para salir"
PRINT
INPUT i
SELECT CASE i
CASE 0
lectura = INP(entrada)
valor = lectura AND 8 '8 = 00001000 en Binario
CASE 1
lectura = INP(entrada)
valor = lectura AND 16 '16 = 00010000 en Binario
CASE 2
lectura = INP(entrada)
valor = lectura AND 32 '32 = 00100000 en Binario
CASE 3
lectura = INP(entrada)
valor = lectura AND 64 '64 = 01000000 en Binario

CASE 9
GOTO inicio
CASE ELSE
GOTO lee
END SELECT
IF valor <> 0 THEN valor = 1
PRINT
PRINT "El PIN "; i; " esta en "; valor
PRINT
PRINT
PRINT
PRINT "Presione una tecla para continuar"

esperar:
IF INKEY$ = "" THEN GOTO esperar 'espero a que se presione una
GOTO lee 'tecla

Rutina para escribir en el puerto de salida TTL 0 a 7

escribe:
CLS
PRINT "Ingresa el PIN que deseas escribir (Valores validos: 0 a 7)"
PRINT
PRINT "Pulse 9 para salir"
PRINT
INPUT i
IF i = 9 THEN GOTO inicio
IF i < 0 OR i > 7 THEN GOTO escribe
PRINT "Ingresa el valor deseado: (0 o 1)"
INPUT valor
PRINT
IF valor = 9 THEN GOTO inicio
IF valor < 0 OR valor > 1 THEN GOTO escribe
SELECT CASE i
CASE 0
estadoactual = INP(salida)
IF valor = 0 THEN valor = estadoactual AND 254
IF valor = 1 THEN valor = estadoactual OR 1
OUT salida, valor
CASE 1
estadoactual = INP(salida)
IF valor = 0 THEN valor = estadoactual AND 253
IF valor = 1 THEN valor = estadoactual OR 2
OUT salida, valor
CASE 2
estadoactual = INP(salida)
IF valor = 0 THEN valor = estadoactual AND 251
IF valor = 1 THEN valor = estadoactual OR 4
OUT salida, valor
CASE 3
estadoactual = INP(salida)
IF valor = 0 THEN valor = estadoactual AND 247
IF valor = 1 THEN valor = estadoactual OR 8
OUT salida, valor
CASE 4
estadoactual = INP(salida)
IF valor = 0 THEN valor = estadoactual AND 239
IF valor = 1 THEN valor = estadoactual OR 16
OUT salida, valor
CASE 5
estadoactual = INP(salida)
IF valor = 0 THEN valor = estadoactual AND 223
IF valor = 1 THEN valor = estadoactual OR 32
OUT salida, valor
CASE 6
estadoactual = INP(salida)
IF valor = 0 THEN valor = estadoactual AND 191
IF valor = 1 THEN valor = estadoactual OR 64
OUT salida, valor
CASE 7
estadoactual = INP(salida)
IF valor = 0 THEN valor = estadoactual AND 127
IF valor = 1 THEN valor = estadoactual OR 128
OUT salida, valor
CASE ELSE
GOTO escribe
END SELECT
GOTO escribe

link para el ejecutable http://www.todorobot.com.ar/proyectos/paralelo/paralelo.exe

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).

Aquí puedes bajar un programa realizado en VisualBasic (versión 6.0) que te permitirá controlar las salidas y ver el estado de las entradas disponibles en la Interfaz para Puerto Paralelo compatible con Windows 95, 98, ME, NT, 2000 y XP.
http://www.todorobot.com.ar/proyectos/paralelo/Paralelo-v2-Install.zip
http://www.todorobot.com.ar/proyectos/paralelo/Paralelo-v2-Source.zip

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.

IMPORTANTE

Al conectar o desconectar la interfaz al puerto paralelo de la PC, se debe asegurar de que tanto la PC como la interfaz se encuentren apagadas. Caso contrario el puerto paralelo de la PC podría llegar a dañarse permanentemente.

_________________

avatar
warang
Admin
Admin

Cantidad de envíos : 100
Puntos : 3623
Reputación : -2
Fecha de inscripción : 13/04/2009
Edad : 34
Localización : Argentina

Ver perfil de usuario http://heinekenanonimus.forosactivos.net

Volver arriba Ir abajo

Volver arriba

- Temas similares

 
Permisos de este foro:
No puedes responder a temas en este foro.