Sie sind auf Seite 1von 3

46-48-Hard Control PC-P20.

qxd 5/4/05 4:26 PM Page 46

A PARTIR DE ESTA EDICION DE POWERUSR,


PUBLICAREMOS UNA SERIE DE ARTICULOS
EN LOS QUE APRENDEREMOS A UTILIZAR
LOS PUERTOS DE NUESTRA PC PARA CONOCER
EL ESTADO DE SENSORES O PARA CONTROLAR
DIFERENTES DISPOSITIVOS CONECTADOS A ELLOS.

ARIEL PALAZZESI

.hrd

ENTUSIASTA DE LA ELECTRONICA DIGITAL

arielpalazzesi@yahoo.com.ar

MANOS A LA OBRA!

ELECTRONICA

DIGITAL
o resulta muy complicado hacer que nuestra
PC sea capaz de percibir el mundo real mediante el uso de los puertos serie o
paralelo. Estos puertos, originalmente pensados para la comunicacin con una impresora o un mouse, pueden usarse para otros fines,
con resultados muchas veces sorprendentes. En esta nota (y en las
prximas), veremos la manera de
que una computadora obtenga datos de su entorno e interacte con
l. Aprenderemos sobre el funcionamiento de cada uno de estos
puertos desde el punto de vista del
hardware y del software, y luego
construiremos varios circuitos
prcticos. Veremos, tambin, qu
son los sensores y actuadores necesarios para nuestros proyectos.

SENSORES
Por medio de sensores, la computadora es capaz de conocer la situacin del mundo exterior. Cmo es
esto? Supongamos que estamos escuchando el pronstico meteorolgico y nos enteramos de que:

Es un da soleado
Hace calor
El aire es hmedo
La temperatura es de 25,3 C
La humedad relativa ambiente es del 45%

Los primeros tres datos son valores de tipo


digital: sol o nubes, fro o calor, seco o hmedo; es decir, s o no, dos valores posibles. Los dos ltimos son de tipo analgico: la temperatura puede ser de -10,25 C,
12 C o 38,5 C; la humedad puede tener
cualquier valor entre 0% y 100%.
Las seales digitales se interpretan en la
PC utilizando tensiones cercanas a 0 V o
a +5 V. Las primeras se interpretan como
un 0, mientras que las segundas, como
un 1, siguiendo la lgica de construccin de circuitos integrados que se conoce como TTL.
A una entrada digital se le puede adaptar
un elemento de mando del estilo del interruptor que se observa en la Figura 1, para
establecer su valor. Cualquier dispositivo
que se comporte de manera similar a ste
es til para controlar entradas digitales.
Dada la naturaleza de la propia computadora, esta forma de representar el mundo
es la ms natural, porque todo su funcionamiento se basa en este esquema de 0

Vo

+5V

RESISTENCIA

y 1. La capacidad de percibir los infinitos valores que puede tomar una temperatura, un peso o una presin es algo ms
complicada, pero perfectamente posible.
Muchas seales analgicas se pueden tratar como digitales mediante 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
cambia su valor de acuerdo con la luz
que recibe) puede variar entre 10 M en
oscuridad hasta 600 M a plena luz.
Puesto que la mayora de los puertos de
la PC son digitales, las seales analgicas
entregadas por este tipo de sensores requerirn el uso de circuitos de conversin
analgico-digital.

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 aumentar el volumen de un televisor un 10% o regular el
termostato de una estufa (analgicas).
Los puertos digitales de la PC nos permiten
dar rdenes digitales de manera directa, o
podemos codificar estas seales digitales
mediante un conversor digital/analgico, para as obtener una salida analgica.
Las salidas digitales no proporcionan demasiada potencia; como mucho, permiten
iluminar un LED. Pero se pueden utilizar
para excitar un rel o un transistor que
controlen al actuador.
No se preocupen si todava no comprenden los esquemas que se muestran en
estas pginas; cuando llegue el momento,
los explicaremos paso a paso.
Ahora empecemos a conocer a fondo los
puertos clsicos de la PC.

Vo

LDR

+5V

+5V

RESISTENCIA
RESISTENCIA
PUERTO
INTERRUPTOR
LED

46

FIGURA 1. MEDIANTE UN
INTERRUPTOR PODEMOS CONOCER
UN DATO TIPO SI/NO
DEL EXTERIOR.

FIGURA 2. LDR: UN SENSOR


ANALOGICO QUE NO PODEMOS
LEER SIN DIGITALIZARLO
PREVIAMENTE.

FIGURA 3. PARA ENCENDER


UN LED DESDE EL LPT,
HAY QUE LIMITAR LA CORRIENTE
MEDIANTE UNA RESISTENCIA.

POWERUSR

46-48-Hard Control PC-P20.qxd 5/4/05 4:26 PM Page 47

REGISTROS DEL PUERTO PARALELO


REGISTROS

DIRECCION
ENTRADA/SALIDA

En 1981, IBM dise el puerto paralelo


para manejar impresoras desde su gama
de microcomputadoras PC/XT/AT. Un conector estndar macho de 25 pines apareca en la parte posterior de la PC con
el simple 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, en general incluido directamente en el motherboard, y
casi siempre desocupado, ya que hoy en
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, cinco entradas y ocho lneas de
masa (o tierra). Estos latches funcionan de la siguiente manera: cuando escribimos un valor en la direccin del
puerto, ste permanece presente en los
pines del conector hasta que escribamos
otro, sin que nosotros debamos mantener
de alguna manera esos 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

378H

379H

37AH

278H

279H

27AH

LPT2

3BCH

3BDH

3BEH

LPT3

La Figura 5 muestra la funcin de cada patita (de ahora en adelante, pin)


del puerto paralelo. Las etiquetas indican la funcin de cada pin cuando
tiene conectado 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. Veamos qu funcin cumple cada uno de estos pines,
y luego analizaremos cmo podemos
aprovecharlos para construir una sencilla interfaz:
Ocho lneas (pines) son para salida
de datos (bits de DATOS). Sus valores
slo pueden modificarse a travs de
software, y van del pin 2 (dato 0, D0)
al 9 (dato 7, D7).
Cinco lneas son de entrada de datos
(bits de ESTADO), nicamente modificables a travs del hardware externo.

LPT1

Estos pines son: 11, 10, 12, 13 y 15,


del ms al menos significativo.
Cuatro lneas son de control (bits
de CONTROL), numeradas de la ms a
la menos significativa: 17, 16, 14 y 1.
Habitualmente, son salidas, aunque se
pueden utilizar tambin como entradas
y, por lo tanto, se pueden modificar
tanto por software como por hardware.
Las lneas de la 18 a la 25 son la
tierra (masa, o 0 V).
Las ocho lneas de datos en un puerto
paralelo moderno son bidireccionales,
es decir que tanto podemos escribir
un dato en l y leerlo desde nuestra
interfaz (usarlo como salida de informacin), como leer en l 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 tendremos que 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 recuadro) que nos
sirva como piloto para conocer el
estado de cada pin. Este ser nuestro
primer circuito prctico.

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.
En el esquema de la Figura 6 vemos
que cada uno de los pines de datos

+5V

DIODO

PUERTO

RESISTENCIA

RESISTENCIA

POWERUSR

CONTROL

de 8 bits localizados en direcciones


adyacentes del espacio de E/S de la
PC. Los registros se definen en relacin con 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
Como ya mencionamos, la funcin
normal del puerto es transferir datos a
una impresora mediante ocho lneas
de salida de datos, usando las seales
restantes como control de la impresora. Sin embargo, tambin 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.

LED
Un LED no es ms 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, caracterstica que lo hace muy prctico para
nuestros proyectos.

ESTADO

CARGA

RELE
TRANSISTOR

FIGURA 4. CON UN CIRCUITO UN


POCO MAS ELABORADO, SE PUEDE
ENCENDER O APAGAR CUALQUIER
APARATO QUE FUNCIONE CON 220 V.

EL PUERTO PARALELO

NOMBRE HABITUAL

DATOS

FIGURA 5. FUNCION QUE


CUMPLE CADA PIN DEL
CONECTOR DEL PUERTO
PARALELO.

47

46-48-Hard Control PC-P20.qxd 5/4/05 4:26 PM Page 48

COMPONENTES
1 conector DB25 macho
8 resistencias de 330 ohm, 1/8 watt
8 LEDs

EL SOFTWARE
Para controlar los LEDs del monitor, podemos descargar de Internet un programa ya hecho (hay muchsimos) o bien crear uno. Por simplicidad, explicaremos
cmo programarlo usando 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, como el 3.1).
En Visual Basic, comenzamos un nuevo proyecto, y
creamos un mdulo 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
ETAPAS EN LA CONSTRUCCION DE NUESTRO MONITOR. EN LA PRIMERA IMAGEN SE
PUEDEN OBSERVAR LOS LEDS, Y EN LA SEGUNDA SE NOTAN LAS RESISTENCIAS.

del puerto est conectado a una resistencia de 330 ohms, y sta, 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 circula por cada LED, ya que si los conectamos directamente al puerto, circular por ellos una corriente excesiva y podramos quemarlos.
Como se trata de un circuito muy simple, lo construiremos soldando
directamente las resistencias y los LEDs a una ficha DB25; de este modo, evitamos construir una plaqueta de circuito impreso.
Los componentes necesarios para este circuito se consiguen en cualquier casa de electrnica, y su costo total difcilmente supere los U$S 3
o 4. Tambin necesitaremos un soldador de unos 20 o 30 W 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, soldamos el nodo de
cada LED al otro extremo de las resistencias. Tambin uniremos entre s todos los terminales correspondientes a los ctodos de los
LEDs y el pin 18 del puerto.
En caso de que, debido a la posicin del gabinete, sea imposible ver los
LEDs conectados de esta manera, podemos comprar un cable de extensin para el puerto paralelo; o bien tomar un cable de impresora, sacarle la ficha del lado de sta, y soldar ah los LEDs y las resistencias. En
este ltimo caso, hay que usar un tester para identificar a qu pin corresponde cada cable, y tener cuidado de aislar bien todos los terminales para evitar que un cortocircuito termine con el puerto.
Respecto al software para manejar este circuito (ver recuadro), tanto
en el CD exclusivo para suscriptores como en USRZone (usrzone.tectimes.com) podrn encontrar el cdigo fuente y el programa compilado
listo para usar, junto con las DLLs mencionadas. En la prximo edicin veremos cmo modificar nuestro monitor para que nos permita
controlar artefactos alimentados con 220 V.

Sub Form_Load ()Genera el contenido del combo Puertos.


Puerto.AddItem &h378
Puerto.AddItem &h278
Puerto.AddItem &h3BC
Puerto.ListIndex = 0 Selecciona el LPT1 por default.
End Sub
Sub Apa_Click (Index As Integer)
Dim X As Integer
X = Inp(Val(Puerto)) Obtiene el valor presente en el puerto.
Dato = BCF(X, Index) Ejecuta la rutina que pone en 0 el bit
correspondiente.
Out Val(Puerto), Dato Enva el dato al puerto.
End Sub
Sub Enc_Click (Index As Integer)
Dim X As Integer
X = Inp(Val(Puerto)) Obtiene el valor presente en el puerto.
Dato = BSF(X, Index) Ejecuta la rutina que pone en 1 el bit
correspondiente.
Out Val(Puerto), Dato Enva el dato al puerto.
End Sub

48

FIGURA 6. SE OBSERVA UN ESQUEMA ELECTRICO DEL


CIRCUITO DE NUESTRO MONITOR DE PUERTO PARALELO.
CONSTA SIMPLEMENTE DE 8 LEDS Y 8 RESISTENCIAS DE
330 OHMS, 1/8 WATT.

Importante: si usamos la DLL INPOUT32.DLL deberemos


cambiar todos los 16 por 32 en el cdigo anterior.
Luego, en el FORM1.FRM creamos dos arrays de botones, con ocho elementos cada uno: el primero, llamado
ENC(n), y el segundo, APA(n). Estos botones permitirn
encender y apagar los LEDS en forma individual. Tambin precisaremos un ComboBox llamado PUERTO, que
nos permitir elegir en qu LPT tenemos conectado el
monitor. El cdigo de este formulario es el siguiente:

ASPECTO DE NUESTRO PROGRAMA,


CON TODOS LOS CONTROLES
COLOCADOS Y UN LABEL EXPLICANDO
QUE HACE CADA UNO.

POWERUSR