Está en la página 1de 22

En este tema vamos a ver cmo prender y apagar leds mediante el puerto paralelo del computador.

Para lo cual vamos a necesitar las siguientes herramientas: 3 leds de diferentes colores 1 Protoboard Cable UTP (1 metro o metro y medio) 3 resistencias de 1 kilo ohmio Visual Basic 6.0 Unos cuantos pedazos de alambre (puede ser del mismo UTP)

Es recomendable tener unos cuantos leds ms y unas cuantas resistencias ms, por si acaso. Antes de ver el desarrollo del programa vamos a ver cmo armar el circuito. De hecho es muy sencillo, y se basa en el siguiente diagrama:

Diagrama del circuito Para poder entender mejor el circuito. Vamos a dar ciertos detalles sobre el puerto paralelo: Un puerto paralelo es una interfaz entre una computadora y un perifrico cuya principal caracterstica es que los bits de datos viajan juntos enviando un byte completo o ms a la vez. Es decir, se implementa un cable o una va fsica para cada bit de datos formando un bus. El cable paralelo es el conector fsico entre el puerto paralelo y el perifrico. En un puerto paralelo habr una serie de bits de control en vas aparte que irn en ambos sentidos por caminos distintos.

En contraposicin al puerto paralelo est el Puerto serie, que enva los datos bit a bit por el mismo hilo. El sistema operativo gestiona las interfaces de puerto paralelo con los nombres LPT1, LPT2 y as sucesivamente, las direcciones base de los dos primeros puertos es: LPT1 = 0378. LPT2 = 0278 La estructura consta de tres registros: de control, de estado y de datos. El registro de control es un bidireccional de 4 bits, con un bit de configuracin que no tiene conexin al exterior, su direccin en el LPT1 es 0x37A. El registro de estado, se trata de un registro de entrada de informacin de 5 bits, su direccin en el LPT1 es 0379. El registro de datos, se compone de 8 bits, es bidireccional. Su direccin en el LPT1 es 0378. Conector DB25:

Conector DB25

El Dataport se usa como salida El Statusport se usa como entrada El Controlport se usa de las dos formas anteriores Con esos antecedentes ahora vamos a explicar los detalles del circuito: El Circuito

Donde dice "Pin puerto paralelo" puede ser cualquier Pin del 2 al 9. No olvidar hacer una conexin al pin 25 que es tierra El circuito consiste en un led con una resistencia, la resistencia se usa para limitar la intensidad y no pedir ms de la que el puerto paralelo es capaz de dar (5 mA). Cuando se active el pin el led se encender. En este proyecto lo que se quiere mostrar es como, con un simple circuito, se puede controlar mediante la computadora una fila de LEDs los que se van a encender en una secuencia que nosotros vamos a controlar con un pequeo programa escrito en el lenguaje de programacin Visual Basic 6.0. El circuito que se va armar ser montado sobre una plaqueta, la cual conduce la corriente elctrica, llamada protoboard. Nuestro objetivo es controlar los diodos LEDs con la computadora, esto es encenderlos y apagarlos segn como queramos. Los LEDs son diodos que tienen la capacidad de emitir luz cuando circula una corriente por ellos. Esta corriente debe ser del orden de los 10 mA (miliampers). Para limitar la corriente que pasa por los LEDs se usan las resistencias que se oponen al paso de ella. Para controlar un circuito externo con la computadora se usar el puerto paralelo de ella, para conectar el puerto con el circuito se necesitar el cable paralelo o conector

DB-25. El paso siguiente es soldar cable fino UTP a los pines internos del conector. Como los pines estn numerados del nmero 1 al 25, solo usaremos los pines numerados del 2 al 9, tambin se tiene que soldar un cable al pin 25 (que es el pin de masa o tierra elctrica) para tener una descarga a tierra comn, para nuestro circuito y la computadora. Una vez construido el cable se lo puede conectar al protoboard. Solo se deben usar tres entradas y tres salidas, ya que son solo tres LEDs los que controlamos. Las tres salidas estn conectadas por medio de una resistencia limitadora de corriente a una LED cada una. Estas resistencias son de un valor de 330 ohm y permite que circule una corriente de 10 mA (miliampere) por cada diodo. Las siguientes imgenes pueden ayudar a apreciar mejor la conexin del circuito:

Grafco 1. Circuito armado en el protoboard

Grafco 2. Circuito armado en el protoboard

Grafco 3. Circuito armado en el protoboard

Grafco 4. Circuito armado en el protoboard

Grafco 5. Circuito armado en el protoboard

Grafco 6. Circuito armado en el protoboard

Grafco 7. Circuito armado en el protoboard

Grafco 8. Circuito armado en el protoboard

Grafco 9. Circuito armado en el protoboard Las imgenes muestran cmo est hecha la conexin en el protoboard. El programa

Para el programa de Visual Basic 6.0 se puede usar la librera inpout32.dll o io.dll. Para el presente proyecto se usar la librera io.dll. IO.DLL proporciona un conjunto de comandos tiles para leer y escribir en los puertos de E/S. El programa que hice lo puedes descargar desde el siguiente enlace:

http://www.mygnet.net/codigos/vb/varios/prender_y_apagar_leds_mediante_el_puert o_paralelo_usando_visual_basic_6_dot_0.2909 El archivo comprimido contiene el archivo io.dll

Sensores Por medio de sensores la computadora es capaz de conocer la situacin del mundo exterior. Cmo es esto? Supongamos que estamos mirando el pronstico meteorolgico y nos enteramos que: Es un da soleado Hace calor El aire es hmedo La Temperatura es de 25.3c La humedad relativa ambiente es del 45%.

Las primeras 3 respuestas se refieren a valores del tipo digital: sol o nubes, fro o calor, seco o hmedo. Es decir, si o no, dos valores posibles. Las dos ultimas son de tipo analgico: la temperatura puede ser de -10.25c, 12c o 38.5c, la humedad puede tener cualquier valor entre 0% y 100%. Las seales digitales se interpretan en el PC utilizando voltajes cercanos a 0 V o a +5 V. Los primeros se interpretan como un 0 y los segundos como un 1 (ver apendice Lgica TTL). A una entrada digital se le puede adaptar un elemento de mando del estilo del interruptor de la figura 1 para establecer su valor. Cualquier dispositivo que se comporte de forma similar a ste es til para el control de entradas digitales. Dada la naturaleza de la propia computadora, esta forma de representar al mundo es la ms natural, dado que todo su funcionamiento se basa en este esquema de 0 y 1. El percibir los infinitos valores que puede tomar una temperatura, un peso, una presin es algo mas complicado, pero perfectamente posible. Muchas seales analgicas se pueden tratar como digitales con circuitos muy sencillos, teniendo en cuenta el cambio que experimenta el sensor utilizado. Por ejemplo, en el circuito de la figura 2 la LDR

(un tipo especial de resistencia que vara su valor de acuerdo a la luz que recibe) puede variar entre 10 M en oscuridad hasta 600 M a plena luz. Puesto que la mayora de los puertos del PC son digitales, las seales analgicas entregadas por este tipo de sensores requerirn la utilizacin de circuitos de conversin analgico-digital.

Mediante un interruptor podemos conocer un dato tipo si/no del exterior.

LDR: Un sensor analgico que no podemos leer sin digitalizarlo previamente. > Actuadores Cuando queremos cambiar el entorno podemos hacerlo tambin de dos maneras: digital o analgicamente. Podemos encender la calefaccin, subir una persiana o apagar la luz (digitales), o bien podemos aumentar el volumen de un televisor un 10% o regular el termostato de una estufa (analgicas). Los puertos digitales del PC nos permiten dar rdenes digitales de forma directa o podemos codificar estas seales digitales mediante un conversor digital/analgico para obtener una salida analgica. Las salidas digitales no proporcionan mucha potencia; como mucho permiten iluminar un LED. Pero se pueden utilizar para excitar un rel o un transistor que controlen el actuador.

Para encender un LED desde el puerto paralelo es necesario limitar la corriente mediante una resistencia.

Con un circuito un poco mas elaborado es posible encender o apagar cualquier aparato que funcione con 220v. No se preocupen si todava no comprenden estos esquemas, cuando llegue el momento los explicaremos paso a paso. Ahora empecemos a conocer a fondo los puertos de la PC.

> El puerto paralelo En 1981 IBM dise el puerto paralelo para manejar impresoras desde su gama

de microcomputadores PC/XT/AT. Un conector estndar macho de 25 pines apareca en la parte trasera de la PC con el solo propsito de servir de comunicacin (interfaz) con la impresora. El sistema operativo DOS utilizado en esa poca soportaba hasta tres puertos paralelos asignados como LPT1, LPT2 y LPT3. En cualquier PC actual podemos encontrar tambin este puerto, generalmente incluido directamente en el motherboard, y casi siempre desocupado, ya que hoy da las impresoras con conexin USB han reemplazado a las de interfaz paralela. Desde el punto de vista del hardware, el puerto consiste en un conector hembra de 25 pines (DB25) con doce salidas latch y cinco entradas, con ocho lneas de masa (o tierra). Estos latches funcionan de la siguiente manera: cuando escribimos un valor en la direccin del puerto, este permanece presente en los pines del conector hasta que escribamos otro, sin que debamos mantener nosotros de alguna manera estos valores ah. Esto simplifica la programacin y la construccin de nuestros circuitos. Desde el punto de vista del software, el puerto paralelo consta de tres registros (datos, estado y control) de 8 bits cada uno, que ocupan tres direcciones de E/S. Cada puerto requiere tres direcciones de memoria consecutivas del espacio de E/S (entrada-salida) del procesador para seleccionar todas sus posibilidades. Las direcciones base estndar para los puertos paralelos son 0378h (LPT1), 0278h (LPT2) y 03BCh (LPT3). El puerto paralelo estndar (SPP) consta, como se mencion antes, de tres registros de 8 bits localizados en direcciones adyacentes del espacio de E/S del PC. Los registros se definen relativos a la direccin de E/S base (LPT_BASE) y son: LPT_BASE + 0: registro de DATOS LPT_BASE + 1: registro de ESTADO LPT_BASE + 2: registro de CONTROL

REGISTROS Nombre DATOS ESTADO CONTROL habitual DIRECCIN Puerto 378h 379h 37Ah LPT1 Puerto 278h 279h 27Ah LPT2 E/S Puerto 3BCh 3BDh 3BEh LPT3 Como dijimos antes, la funcin normal del puerto consiste en transferir datos a una impresora mediante 8 lneas de salida de datos, usando las seales restantes como control de la impresora. Sin embrago, puede ser usado como

un puerto E/S de propsito general por cualquier dispositivo o aplicacin que se ajuste a sus posibilidades de entrada/salida.

Funcin que cumple cada pin del conector del puerto paralelo.

La figura anterior nos muestra la funcin de cada patita (pin de ahora en adelante) del puerto paralelo. Las etiquetas indican la funcin de cada pin cuando tiene conectada una impresora. Las seales activas a nivel bajo aparecen con la barra de negacin (por ejemplo, Strobe). Cuando se indica alto o bajo se refiere a la tensin en el pin del conector. Alto equivale a +5 V y bajo a 0 V en TTL. Aprendamos que funcin cumplen cada uno de estos pines, para luego ver como podemos aprovechar esto para construir una sencilla interfase:

- 8 lneas (pines) son para salida de datos (bits de DATOS). Sus valores son nicamente modificables a travs de software, y van del pin 2 (dato 0, D0) al pin 9 (dato 7, D7). - 5 lneas son de entrada de datos (bits de ESTADO), nicamente modificables a travs del hardware externo. Estos pines son: 11, 10, 12, 13 y 15, del ms al menos significativo. - 4 lneas son de control (bits de CONTROL), numerados del ms significativo al menos: 17, 16, 14 y 1. Habitualmente son salidas, aunque se pueden utilizar tambin como entradas y, por tanto, se pueden modificar tanto por software como por hardware. - Las lneas de la 18 a la 25 son la tierra. Las 8 lneas de datos en un puerto paralelo moderno son bidireccionales, es decir que tanto podemos escribir un dato en el y leerlo desde nuestra interfaz (usarlo como salida de informacin) como leer en el los datos que la interfaz escriba en el puerto. Debemos tener presente que la capacidad del puerto de entregar corriente por estos pines es muy limitada, y casi siempre deberemos utilizar un circuito que amplifique esta seal para poder hacer algo til con ella. Sin embargo, la corriente entregada es suficiente como para por ejemplo encender un led (diodo emisor de luz, ver apndice al final) que nos sirva como piloto para conocer el estado de cada pin. Este ser nuestro primer circuito practico.

> Monitor del puerto paralelo Este sencillo circuito nos permitir conocer el estado de cada uno de los pines de datos del puerto paralelo, indicando los que estn en 1 con un led encendido, y los que estn en 0 con un led apagado.

Circuito de nuestro monitor de puerto paralelo.

En el esquema vemos que cada uno de los pines de datos del puerto se encuentra conectado a una resistencia de 330 ohms, y esta al nodo del led. El ctodo de cada led se conecta a masa (cualquiera de los pines del 18 al 25). La funcin que cumplen las resistencias es limitar la corriente que circule por cada led, ya que si los conectamos directamente al puerto circulara por ellos una corriente excesiva y los podramos quemar. Como se trata de un circuito muy simple, lo construiremos soldando directamente las resistencias y los leds a una ficha DB25, as nos evitamos el construir una plaqueta de circuito impreso.

Los componentes necesarios para este circuito los conseguimos en cualquier casa de electrnica, y su costo total difcilmente supere los 3 o 4 u$s. Tambin necesitaremos un soldador de unos 20 o 30 Watts y algo de alambre de estao con ncleo de resina. Es una buena idea tener a mano un alicate para cortar los terminales de los leds y las resistencias. Primero soldamos uno de los terminales de las resistencias a cada uno de los pines 2 al 9 del conector, y luego el nodo de cada led al otro extremo de las resistencias. Tambin uniremos entre si todos los terminales correspondientes a los ctodos de los leds y el pin 18 del puerto.

Etapas en la construccin de nuestro monitor. En caso que debido a la posicin del CPU sea imposible ver los LEDs conectados de esta manera, podemos comprar un cable de extensin para el puerto paralelo, o bien a un cable de impresora sacarle la ficha del lado de esta y soldar ah los LEDs y resistencias. En este ultimo caso, hay que usar un teste para identificar a que pin corresponde cada cable, y tener cuidado de aislar bien todos los terminales para evitar que un cortocircuito termine con el puerto.

> El software Para controlar los LEDs del monitor podemos bajar de internet un programa ya hecho (hay muchsimos) o bien crear uno. Para ello usaremos Visual Basic (en este caso la versin 3, ya que corre sin problemas en casi cualquier computadora y versin de Windows). Necesitaremos una DLL llamada INPOUT32.DLL (o INPOUT16.DLL si usamos un Windows de 16 bits). En Visual Basic comenzamos un nuevo proyecto, y creamos un modulo que llamaremos MODULE1.BAS con el siguiente contenido: Declare Sub Out Lib "inpout16.Dll" Alias "Out16" (ByVal PortAddress As Integer, ByVal Value As Integer) Declare Function Inp Lib "inpout16.Dll" Alias "Inp16" (ByVal PortAddress As Integer) As Integer Importante: si usamos la DLL INPOUT32.DLL deberemos cambiar todos los 16 por 32 en el cdigo anterior. Luego, en el FORM1.FRM deberemos crear dos arrays de botones, con 8 elementos cada uno. El primero llamado ENC(n) y el segundo APA(n). Estos botones permitirn el encendido y apagado de los LEDS en forma individual. Tambin necesitaremos un ComboBox llamado PUERTO que nos permitir elegir en que LPT tenemos conectado el monitor. El listado del cdigo de este formulario es el siguiente:

Sub Form_Load () 'Genera el contenido del combo Puertos. Puerto.AddItem "&h378" Puerto.AddItem "&h278" Puerto.AddItem "&h3BC" 'Selecciona el LPT1 por default. Puerto.ListIndex = 0 End Sub Sub Apa_Click (Index As Integer) Dim X As Integer 'Obtiene el valor presente en el puerto. X = Inp(Val(Puerto)) 'Ejecuta la rutina que pone en 0 el bit correspondiente. Dato = BCF(X, Index)

'Enva el dato al puerto. Out Val(Puerto), Dato End Sub Sub Enc_Click (Index As Integer) Dim X As Integer 'Obtiene el valor presente en el puerto. X = Inp(Val(Puerto)) 'Ejecuta la rutina que pone en 1 el bit correspondiente. Dato = BSF(X, Index) 'Enva el dato al puerto. Out Val(Puerto), Dato End Sub

Aspecto del FORM1.FRM con todos los controles colocados, y un Label explicando que hace cada control.

> APENDICE: Lgica TTL Recibe este nombre de Transistor to Transistor Logic, y es uno de los procedimientos que existen para construir circuitos integrados. Esta lgica considera un 0 lgico a los valores de tensin entre 0 y 2.5 voltios, y un 1 lgico a cualquier voltaje mayor que 3.5 y menor a 5 voltios.

En este grfico se puede ver con mayor claridad cada estado lgico y su nivel de tensin.

> APENDICE: LED Un LED no es mas que un diodo, del que se aprovecha el fotn que se emite al recombinarse un hueco con un electrn en su unin PN. El encapsulado transparente y el pequeo espejo situado bajo la juntura permiten aprovechar esta luz emitida como un indicador luminoso. Su consumo de corriente es muy bajo, lo que lo hace muy practico para nuestros proyectos.

Esquema y smbolo de un diodo LED.

> APENDICE: Componentes a utilizar 1 conector DB25 macho 8 Resistencias de 330 ohm, 1/8 watt 8 Leds

Circuito y software para encender leds con el puerto paralelo

Este es un software y el hardware que hice para encender leds usando el puerto paralelo de la computadora, el circuito es por demas de simple, solo el conector unas resistencias y cuatro leds, a continuacion la descripcion de como construirlo... El hard: Se resume en un cable de 5 conductores, se puede reciclar un cable de la interfaz de una disquetera, un conector DB25, cuatro resistencias de 470 ohm y cuatro diodos leds de bajo consumo, si se utilizaran leds de alto brillo conviene aumentar el valor de las resistencias a 560 ohm o mas.

El software: El software lo realize en visual basic, hay que descomprimirlo en la misma carpeta el la dll, para usarlo simplemente hay que hacer click en los circulos para encender o apagar los leds. El circuito tambien se puede ampliar para usar los pines del 2 al 9. Descargart: http://rapidshare.com/files/144377794/Controlador.rar.html

Actualizacion: Si se desea encender y apagar artefactos electricos de mayor consumo se puede utilizar una interfaz con reles como la siguiente, en este caso hay que hacer un circuito por cada salida que se quiera utilizar:

Actualizacion 2:

Este es otro circuito para encender artefactos de mayor consumo, en este caso utilizando optocopladores y triacs.