87
Programación de placas de control 1 ROBÓTICA PROGRAMACIÓN DE PLACAS DE CONTROL Por ALBERTO MADINAVEITIA MARTÍN

PROGRAMACI.N DE PLACAS DE CONTROL - … · Los puertos son las conexiones físicas de que dispone el ordenador para comunicarse ... Por estos canales el ordenador puede tanto enviar

  • Upload
    dolien

  • View
    214

  • Download
    0

Embed Size (px)

Citation preview

Page 1: PROGRAMACI.N DE PLACAS DE CONTROL - … · Los puertos son las conexiones físicas de que dispone el ordenador para comunicarse ... Por estos canales el ordenador puede tanto enviar

Programación de placas de control

1

ROBÓTICA PROGRAMACIÓN DE PLACAS DE CONTROL

Por

ALBERTO MADINAVEITIA MARTÍN

Page 2: PROGRAMACI.N DE PLACAS DE CONTROL - … · Los puertos son las conexiones físicas de que dispone el ordenador para comunicarse ... Por estos canales el ordenador puede tanto enviar

Programación de placas de control

2

• INTRODUCCIÓN

• CARACTERÍSTICAS TÉCNICAS DEL INTERFACE 8x8x8.

• LOS PUERTOS

• EL CONECTOR DSUB-25 Y EL CONECTOR CENTRONICS.

• LOS REGISTROS DE DATOS, ESTADO Y CONTROL

• EL LENGUAJE DE PROGRAMACIÓN

• ¿CÓMO BUSCAR LAS DIRECCIONES DE LOS REGISTROS?

• PRACTICA 1. MEDIDA DE TENSIONES EN EL PUERTO DE DATOS

• EL CIRCUITO ELECTRÓNICO DE LAS SALIDAS.

• PRACTICA 2. ENVÍO Y VISUALIZACIÓN DE SEÑALES AL PUERTO DE DATOS.

• PROGRAMACIÓN PARA ENVIAR CUALQUIER COMBINACIÓN DE BITS AL PUERTO

DE DATOS.

• PRACTICA 3. ENVÍO Y VISUALIZACIÓN DE SEÑALES EN EL PUERTO DE CONTROL.

• AMPLIACIÓN DE LAS SALIDAS EN EL PUERTO DE DATOS.

• EL CIRCUITO ELECTRÓNICO DE LAS ENTRADAS.

• PRACTICA 4. CAPTACIÓN DE SEÑALES DE ENTRADA EN EL PUERTO DE ESTADO.

• SEÑALES ELÉCTRICAS DE ENTRADA EN EL PUERTO DE ESTADO.

• LECTURA DE SEÑALES DE ENTRADA EN EL PUERTO DE ESTADO.

• ENTRADAS DIGITALES.

• AMPLIACIÓN DE ENTRADAS DIGITALES.

• LECTURA DE ENTRADAS DIGITALES COMO LÍNEAS INDEPENDIENTES.

• ENTRADAS ANALÓGICAS.

• AMPLIACIÓN DE CANALES.

• INTERFACE 8 x 8 x 8.

ANEXOS

• PROCEDIMIENTOS DE CONTROL DEL INTERFACE 8 X 8 X 8

• ESTRUCTURA DEL PUERTO PARALELO.

• PUERTAS ÓPTICAS.

• CONTROL DE MOTORES DE CC.

• ACONDICIONAMIENTO DE SEÑAL. DISEÑO DE UN TERMÓMETRO DIGITAL. MONITORIZACIÓN DE LA TEMPERATURA.

Page 3: PROGRAMACI.N DE PLACAS DE CONTROL - … · Los puertos son las conexiones físicas de que dispone el ordenador para comunicarse ... Por estos canales el ordenador puede tanto enviar

Programación de placas de control

3

• INTRODUCCIÓN

El rápido desarrollo tecnológico que experimenta nuestra sociedad no debe pasar

inadvertido a la escuela y por ello es lógico que el curriculo de Tecnología se reconfigure

introduciendo contenidos tales como robótica, control por ordenador, adquisición de datos,

informática, programación, etc... a los que el profesorado, generalmente profano en estas

materias, deberá ahora enfrentarse.

El presente trabajo pretende introducir al profesorado que imparte el área de

tecnología, y en general a todos los profesores del ámbito científico-tecnológico, al mundo del

control y la programación mediante la construcción de distintos interfaces a través de los

cuales puedan desarrollarse proyectos escolares de control por ordenador. Generalmente la

información que puede encontrarse sobre este tipo de aplicaciones es, por ser altamente

específica, escasa, compleja y a menudo sesgada, factores que confluyen en proyectos de

construcción inviables, cuando menos tediosos, para gente no especializada. Por otro lado, los

productos comerciales de este tipo pensados para aplicaciones didácticas son todavía caros, si

tenemos en cuenta los limitados presupuestos con que cuentan los Departamentos didácticos,

crean dependencia de la marca suministradora y establecen un marco de posibilidades que

puede no adaptarse a nuestras necesidades, con lo cual corren el peligro de convertirse en

auténticos artículos de lujo. Sin embargo, lo peor de todo es que no sabemos como funcionan,

perdiendo en gran medida su sentido didáctico.

Por todo ello, el objetivo fundamental que persigue el presente trabajo es conseguir que

con tan solo un poco de esfuerzo el profesorado interesado en este apasionante mundo pueda,

construir, programar y comprender el funcionamiento básico del intérprete que comunica al PC

con el mundo exterior y que de esta forma sea capaz de buscar las aplicaciones y mejoras del

proyecto que mejor se adapten a su programación, aprovechando el material de que se

dispone en los Departamentos y los escasos recursos económicos de que generalmente se

dispone.

El presente trabajo se estructura en apartados teóricos en los que se describen con

detalle aspectos técnicos y de programación entre los cuales se intercalan experiencias

prácticas que están diseñadas para reforzar los conocimientos adquiridos. La forma de

estudiar este documento dependerá de la formación que tenga el lector, de hecho pueden

obviarse todas las prácticas intermedias e ir directamente al montaje que interese en cada

momento. Es recomendable sin embargo para obtener un mayor conocimiento del

funcionamiento interno y programación seguir secuencialmente todos los apartados teóricos y

prácticos.

Page 4: PROGRAMACI.N DE PLACAS DE CONTROL - … · Los puertos son las conexiones físicas de que dispone el ordenador para comunicarse ... Por estos canales el ordenador puede tanto enviar

Programación de placas de control

4

• UNA PROPUESTA DE PROYECTO. EL INTERFACE 8 x 8 x 8.

El dispositivo de control que proponemos al final de este documento proporciona 8

salidas digitales, 8 entradas digitales y 8 entradas analógicas, siendo por lo tanto capaz de

adquirir datos analógicos procedentes de sensores. Las 8 señales de salida, gobiernan otros

tantos relés a través de optoacopladores que proporcionan una protección segura al puerto.

Tanto las salidas como las entradas cuentan con diodos led que visualizan las señales

eléctricas correspondientes. El interface necesita para sus circuitos de relés y aquellos

asociados con el manejo del conversor analógico-digital una fuente externa de tensión

estabilizada de + 5 V. Para tal fin puede utilizarse la fuente de alimentación variable de que

disponen todos los talleres de tecnología ajustando la tensión de salida a + 5V. Otra posibilidad

es hacer una exclusiva para el interface. Este se conecta directamente al puerto paralelo

retirando previamente la impresora y utilizando el mismo cable de la impresora para su

conexión. Esto último presenta una ventaja respecto a otro tipo de interfaces que se insertan en

las ranuras de expansión ISA ubicadas en la placa madre para lo cual es necesario abrir el

ordenador y realizar la conexión, operación esta para muchos incómoda y potencialmente

peligrosa.

El procedimiento que se seguirá para la puesta en funcionamiento del interface será:

1º.- Previa desconexión de la impresora, conectar el interface al puerto paralelo mediante el

cable correspondiente arriba citado. 2º .- Arrancar el ordenador. 3º.- Conectar la fuente de

alimentación del interface. Acabada la sesión de trabajo se seguirán los pasos en orden

inverso.

Por último, el dispositivo que aquí se describe es compatible con cualquier ordenador

IBM estandar, es decir no hace falta un PC de última generación. De hecho todas las prácticas

que aquí se presentan han sido realizadas con un equipo provisto de microprocesador 80286.

• LOS PUERTOS.

Los puertos son las conexiones físicas de que dispone el ordenador para comunicarse

con dispositivos periféricos. Por estos canales el ordenador puede tanto enviar como recibir

señales eléctricas, en forma de datos (por ejemplo a una impresora), en forma de señales de

control (que encauzan el flujo de estos datos) o de señales de estado (que informan al

ordenador del estado en el cual se encuentran sus periféricos).

Los datos están constituidos por bits (la unidad más pequeña de información digital),

que no son más que un conjunto de ceros y unos lógicos que se manifiestan en forma señales

eléctricas todo o nada (ausencia de voltaje ó presencia de voltaje). Cada carácter de

información está formado por un byte, es decir por una palabra de 8 bits. Así como los datos

Page 5: PROGRAMACI.N DE PLACAS DE CONTROL - … · Los puertos son las conexiones físicas de que dispone el ordenador para comunicarse ... Por estos canales el ordenador puede tanto enviar

Programación de placas de control

5

que van a ser trasmitidos generalmente se agrupan en bytes, las señales de control o de

estado no necesitan de este formato particular y pueden estar constituidas por un solo bit.

En un ordenador, entre otros, se distinguen dos tipos de puertos, el puerto paralelo y el

puerto serie o serial, que se caracterizan por la forma en la cual se transmiten datos. En una

transferencia a través de un puerto serie se envían los 8 bits que constituyen un byte de

información uno detrás de otro por un solo cable, mientras que en la transferencia en paralelo

los 8 bits se envían simultáneamente por 8 líneas independientes. Según esto, la velocidad de

transferencia de datos por el puerto paralelo es aproximadamente 8 veces mayor que por el

puerto serie pero con el inconveniente de que se necesitan 8 líneas independientes. Por ello,

cuando se requiere una transferencia de datos a gran distancia es preferible la transmisión

serie la cual puede llevarse a cabo por una simple línea telefónica.

Originariamente, el puerto paralelo se utilizó fundamentalmente para la transmisión de

datos a una impresora, así estaba preparado más para la transferencia que para la recepción

de datos, es decir era unidireccional. De este modo, el ordenador podía enviar directamente un

byte de salida por el puerto, pero la configuración de éste no le permitía al ordenador recibir de

forma directa un byte, sin embargo, mediante un circuito externo y una programación

adecuada, veremos como puede conseguirse que el puerto paralelo sea capaz tanto de enviar

como de recibir bytes de información. Sin embargo, desde la introducción del PC al mercado, el

puerto paralelo ha sufrido varias modificaciones para hacerlo más veloz. Ya que el puerto

original era unidireccional, se creó el puerto bidireccional. Este permite una comunicación de 8

bits en ambas direcciones en el puerto de datos. Finalmente se han creado el Enhanced

Parallel Port (EPP) y el Extended Capability Port (ECP). Estos dos últimos son al puerto

estándar como el Pentium al 286, además de ser bidireccionales. Actualmente, además de

para el manejo de la impresora, el puerto paralelo se utiliza también para manejar otros

periféricos como CD ROM, cintas de copia de respaldo, discos duros, tarjetas de red,

protectores de copia, scanners, etc. En la actualidad se conocen cuatro tipos de puerto

paralelo:

- Puerto paralelo estándar (Standart Parallel Port SPP) .

- Puerto Paralelo PS/2 (bidireccional) .

- Enhanced Parallel Port (EPP). Puerto paralelo ampliado.

- Extended Capability Port (ECP). Puerto paralelo de capacidad extendida.

• EL CONECTOR DSUB-25 Y EL CONECTOR CENTRONICS.

Físicamente podemos distinguir los puertos paralelo y serie por el tipo de conector

externo que poseen. El puerto serie o serial tiene un conector macho de 9 (conexión del ratón

Page 6: PROGRAMACI.N DE PLACAS DE CONTROL - … · Los puertos son las conexiones físicas de que dispone el ordenador para comunicarse ... Por estos canales el ordenador puede tanto enviar

Programación de placas de control

6

serial) o de 25 pines, mientras que el puerto paralelo tiene un conector hembra de 25 pines

denominado técnicamente DSUB-25.

La impresora y otros periféricos se enlazan con el ordenador mediante un cable

especial que posee en un extremo un conector DSUB-25 macho y en el otro un conector

macho diferente de 36 pines, denominado CENTRONICS. Es evidente que al pasar de 25 a 36

polos habrá pines en éste último que no tengan correspondencia con el primero y por tanto no

sirven para nada. Además, en general, los pines unidos por el cable en ambos conectores no

poseen la misma numeración. Cada uno de los polos del conector DSUB-25 tiene un nombre y

cumple una misión específica relacionada con el gobierno de la impresora que se indican en el

siguiente cuadro.

PIN DENOMINACIÓN FUNCIÓN

1 DATA STORBE (DSTB) Permite el paso de datos a la

impresora o periférico

2-9 DATOS Son los 8 bits de datos que el

ordenador envía la periférico

10 ACKNOWLEGE (ACK) Indica fin de operación

11 BUSY Indica impresora ocupada

12 PAPER END Indica falta papel

13 SELECT Indica impresora seleccionada

14 AUTOFEED Envía un retorno de carro a la

impresora

15 ERROR Error de transmisión

16 INIT PRINTER Inicializa la impresora

17 SELECT IN Pone la impresora en línea

18-25 MASA Líneas de masa

En la Figura 1 se indican las numeraciones y los nombres de cada uno de los polos en

el conector DSUB-25 y CENTRONICS.

• LOS REGISTROS DE DATOS, ESTADO Y CONTROL.

El puerto paralelo consta de tres registros denominados registro de datos, registro de

control y registro de estado. Los registros son celdas de memoria constituidas por 8 biestables

o flips-flops (unidades básicas de memoria) en la que puede almacenarse un byte (los

registros de datos, control y estado a partir de ahora los denominaremos

D7D6D5D4D3D2D1D0, C7C6C5C4C3C2C1C0 y E7E6E5E4E3E2E1E0). Estos registros se

localizan mediante una dirección física dentro de la memoria del ordenador. El proceso de

entrada/salida de señales eléctricas es muy sencillo, simplemente se escriben o se leen los

Page 7: PROGRAMACI.N DE PLACAS DE CONTROL - … · Los puertos son las conexiones físicas de que dispone el ordenador para comunicarse ... Por estos canales el ordenador puede tanto enviar

Programación de placas de control

7

datos que se van a enviar o recibir respectivamente en el registro que corresponda. Por último

debemos tener en cuenta un último detalle, ciertas señales están invertidas en los registros de

control y de estado. Esto quiere decir que si recibimos un uno lógico por el puerto, el ordenador

lo interpreta como un cero lógico, mientras que si el ordenador envía un uno lógico al puerto

este se manifiesta allí como un cero lógico. Veamos con detalle cada uno de estos registros.

En el puerto paralelo estandar, el registro de datos solo puede utilizarse como salida

del ordenador al periférico (unidireccional). Las 8 señales o bits se transmiten en paralelo por 8

líneas que corresponden a los pines 2-9 del conector del puerto paralelo (DSUB-25),

manifestándose como tensiones eléctricas de + 5 V cuando se transmite un 1 y de + 0 V

cuando se transmite un 0. El valor de salida del registro de datos puede ir por tanto desde 0

hasta 255 (en código binario de 00000000 a 11111111). Por ejemplo si el ordenador envía al

puerto de datos el valor 8 (00001000) mediríamos un voltaje de +5 V en el pin 5 (ver Figura 1)

respecto a la línea de masa y un voltaje de + 0 V en los pines restantes. Las señales del

registro de datos no están invertidas.

El registro de estado solo puede utilizarse para leer señales de entrada del periférico al

ordenador. Por ejemplo, el estado de la impresora se lee a través de 5 líneas de estado,

denominadas -BUSY, ACK, PAPER END, SELECT, y ERROR que se corresponden con los

pines 11,10, 12, 13 y 15 del conector DSUB-25. En este caso de los 8 bits posibles del registro

de datos solo se utilizan 5, (E7, E6, E5, E4, E3) los tres primeros (E2, E1 y E0) no se utilizan y

Page 8: PROGRAMACI.N DE PLACAS DE CONTROL - … · Los puertos son las conexiones físicas de que dispone el ordenador para comunicarse ... Por estos canales el ordenador puede tanto enviar

Programación de placas de control

8

por tanto pueden leerse solo 32 de los 255 valores posibles. Además como se ha indicado, la

señal BUSY (E7) se lee invertida, esto es, si tiene un valor de +5V se lee como 0 V.

El registro de control es bidireccional, es decir puede configurarse tanto para la lectura

como para la salida de datos. El registro utiliza 4 líneas para realizar el control del

periférico denominadas, - DTSB, -AUTOFEED, INIT PRINTER, y -SELECT IN que se

corresponden con los pines 1, 14, 16 y 17 del conector del puerto paralelo. De los 8 bits del

registro sólo se usan 4 (el C3, C2, C1 y C0 mientras el C7, C6, C5 y C4 no se consideran) y

por tanto proporcionan 16 valores de entrada ó salida de los 255 posibles. Además las señales

DTSB, AUTOFEED y SELECT IN (C3, C2 y C0) están invertidas.

En resumen, de las 24 (8 x 3) señales posibles existentes en los 3 registros solo se

utilizan 17; 8 de ellas para señales de datos, 5 para señales de estado y 4 para señales de

control y por ello de los 25 polos del conector DSUB-25 solo 17 corresponden a líneas en uso,

el resto son líneas de masa. En la Figura 2 se representa la correspondencia entre los bits de

los registros con los pines de los conectores DSUB-25 y CENTRONICS.

• EL LENGUAJE DE PROGRAMACIÓN.

Para empezar a dar ordenes al PC de salida/entrada de señales eléctricas a través del

puerto de la impresora es necesario un lenguaje de programación. Cualquier circuito

electrónico conectado al ordenador es totalmente inútil sin unas instrucciones que lo gobiernen,

de este modo hardware y software deben estar perfectamente compenetrados para que pueda

obtenerse el máximo rendimiento del periférico. Estas instrucciones incluyen la emisión de

señales de reloj que actúan sobre circuitos integrados como puertas lógicas, latches,

convesores A/D, D/A, multiplexores, etc....ordenes de lectura de señales, salida de datos,

configuración del puerto, rutinas de almacenaje y lectura de datos en archivos y en definitiva

de programas que hagan que el interface realice la función que nosotros queramos que haga

en cada momento.

El lenguaje de programación usado en este trabajo es el BASIC, concretamente los

programas que a continuación se muestran han sido elaborados con la versión TURBO-BASIC

1.0, pero pueden usarse otros como el GWBASIC o el QBASIC. Estos dos últimos programas

puede encontrarse entre los archivos de las diferentes versiones del sistema operativo MSDOS

de antiguos ordenadores que trabajan bajo este entorno. Por otro lado algunas versiones de

BASIC pueden bajarse de INTERNET. De estos tres programas el GWBASIC es el menos

potente y el menos recomendable. Obviamente, pueden usarse otros lenguajes como LOGO,

PASCAL, C, etc.... e incluso programas que funcionan bajo el entorno WINDOWS, como

VISUAL BASIC, etc..., la única condición es que dispongan de funciones para el manejo de los

puertos.

Page 9: PROGRAMACI.N DE PLACAS DE CONTROL - … · Los puertos son las conexiones físicas de que dispone el ordenador para comunicarse ... Por estos canales el ordenador puede tanto enviar

Programación de placas de control

9

El BASIC utiliza respectivamente los comandos OUT para enviar señales al puerto de

datos o de control e INP para leer las señales presentes en el puerto de estado o de control (a

pesar de que el VISUAL BASIC no dispone de estos comandos para el manejo de puertos,

pueden implementarse a partir de librerías externas) .

Page 10: PROGRAMACI.N DE PLACAS DE CONTROL - … · Los puertos son las conexiones físicas de que dispone el ordenador para comunicarse ... Por estos canales el ordenador puede tanto enviar

Programación de placas de control

10

La siguiente instrucción envía un dato al puerto:

OUT &HXXX, n

Donde &HXXX es la dirección escrita en código hexadecimal del registro de datos (o de

control) y n es el byte que será enviado al puerto, siendo éste un número decimal comprendido

entre 0 y 255.

NOTA: La dirección de los registros pueden escribirse también en código decimal

obviando el prefijo hexadecimal &H, sin embargo en este trabajo se seguirá el criterio

de escribir todas las direcciones de los registros en código hexadecimal

La siguiente instrucción lee el puerto de estado (o de control si se configura como

entrada):

A = INP (&HXXX)

Donde &HXXX es la dirección hexadecimal del registro de estado (o de control) y A es

el valor almacenado en esta dirección de memoria.

Si no se dispone de momento de alguno de estos programas puede usarse el programa

Debug del DOS como se indica a continuación para enviar o leer señales de los puertos:

Ve al promt del DOS y teclea:

>debug

-o 378 FF (este comando envía un dato al puerto; 378 es la dirección hexadecimal

del registro de datos y FF el valor en hexadecimal que será enviado

al puerto).

-o 37a 4 (este comando envía un dato al puerto; 37a es la dirección hexadecimal

del registro de control y 4 el valor en hexadecimal que será enviado al

puerto).

-i 379

(este comando lee el byte de estado cuya dirección hexadecimal es 379).

C7 (el programa devuelve el valor en hexadecimal del byte de estado).

-i 37a (este comando lee el byte de control cuya dirección hexadecimal es 37a).

F6 (el programa devuelve el valor en hexadecimal del byte de control).

-q (comando de salida del programa debug).

Page 11: PROGRAMACI.N DE PLACAS DE CONTROL - … · Los puertos son las conexiones físicas de que dispone el ordenador para comunicarse ... Por estos canales el ordenador puede tanto enviar

Programación de placas de control

11

• ¿CÓMO BUSCAR LAS DIRECCIONES DE LOS REGISTROS?

La dirección de cada uno de estos registros puede variar dependiendo de cada

ordenador, pero afortunadamente al arrancar éste son cargadas por la BIOS en la dirección

hexadecimal &H408 para el puerto lpt1, en la &H40A para el puerto lpt2 y en la &H40C para el

puerto lpt3 (dado que pueden configurarse varios puertos paralelos en un mismo ordenador).

De esta manera se consigue estandarizar el funcionamiento de cualquier máquina aunque

procedan de diferentes fabricantes. El siguiente programa acude a estas direcciones y extrae

de ellas la información buscada. Además, una vez conocida la dirección del registro de datos

(dirección base), la obtención de las otras dos es inmediata dado que son consecutivas,

correspondiendo la dirección base + 1 al registro de estado y la dirección base + 2 al registro

de control. En general, la inmensa mayoría de los ordenadores poseen las siguientes

direcciones para los puertos lpt1 y lpt2.

Puerto Dirección del registro de

datos

Hexadecimal/ Decimal

Dirección del registro de

estado

Hexadecimal/ Decimal

Dirección del registro de

control

Hexadecimal/ Decimal

LPT1 &H378/888 &H379/889 &H37a/890

LPT2 &H278/632 &H279/633 &H27a/634

Ejecuta el siguiente programa y compara los valores obtenidos con los de la tabla, en

cualquier caso los valores obtenidos por el programa son los correctos.

REM ****** EL SIGUIENTE PROGRAMA BUSCA LAS DIRECCIONES EN

REM***********CÓDIGO DECIMAL DE LOS REGISTROS DE DATOS

REM*******ESTADO Y CONTROL DE LOS PUERTOS LPT1, LPT2 Y LPT3

CLS

DEF SEG = 0

LPT1 = PEEK(&H408) + 256 * PEEK(&H409)

LPT2 = PEEK(&H40a) + 256 * PEEK(&H40b)

LPT3 = PEEK(&H40c) + 256 * PEEK(&H40d)

PRINT "DIRECCIÓN DEL REGISTRO DE DATOS DE LPT1 ="; LPT1

PRINT "DIRECCIÓN DEL REGISTRO DE ESTADO DE LPT1 ="; LPT1 + 1

PRINT "DIRECCIÓN DEL REGISTRO DE CONTROL DE LPT1 ="; LPT1 + 2

PRINT " oOo "

PRINT "DIRECCIÓN DEL REGISTRO DE DATOS DE LPT2 ="; LPT2

PRINT "DIRECCIÓN DEL REGISTRO DE ESTADO DE LPT2 ="; LPT2 + 1

PRINT "DIRECCIÓN DEL REGISTRO DE CONTROL DE LPT2 ="; LPT2 + 2

PRINT " oOo "

PRINT "DIRECCIÓN DEL REGISTRO DE DATOS DE LPT3 ="; LPT3

Page 12: PROGRAMACI.N DE PLACAS DE CONTROL - … · Los puertos son las conexiones físicas de que dispone el ordenador para comunicarse ... Por estos canales el ordenador puede tanto enviar

Programación de placas de control

12

PRINT "DIRECCIÓN DEL REGISTRO DE ESTADO DE LPT3 ="; LPT3 + 1

PRINT "DIRECCIÓN DEL REGISTRO DE CONTROL DE LPT3 ="; LPT3 + 2

Podemos considerar a la memoria del ordenador como un edificio de viviendas de 256 plantas de altura y

que en cada planta hay 256 viviendas independientes, por tanto hay 65536 viviendas. Cada vivienda tiene asignada

una dirección de acuerdo con el piso en el que se encuentra y su posición dentro de dicha planta. Si numeramos

secuencialmente cada una de las plantas desde 0 a 255 y cada uno de las viviendas de cada piso de 0 a 255 es

posible localizar cualquier dirección mediante la siguiente fórmula, entendiendo por dirección una expresión numérica

dentro del intervalo de 0 a 65535:

(número de piso x 256) + número de la puerta

Por ejemplo, el piso 10 puerta 54 tiene la dirección (10 x 256) + 54 = 2614. Esta es la forma en la que el

ordenador establece el direccionamiento de las 65536 direcciones de memoria. El ordenador utiliza dos bytes (8 bits)

de memoria (2 registros) para manejar una dirección. El primero almacena la parte menos significativa de la dirección

(en este caso el número 54) y en la siguiente consecutiva la parte más significativa, es decir lo hace al revés.

número de la puerta + (número de piso x 256)

Con la instrucción PEEK del BASIC podemos ver el contenido de cualquier registro de memoria. Ahora bien

como sabemos que el ordenador almacena las direcciones base (registro de datos), de cada uno de los puertos a

partir de la dirección &H408, consecutivamente, sabemos que la dirección del registro de datos de LPT1 estará en las

direcciones &H408 y &H409, las de LPT2 en &H40A y &H40B y las de LPT3 en &H40C y &H40D. Ahora solo queda

leer los registros correspondientes a estas direcciones y obtener la dirección buscada de la siguiente forma:

LPT1 = PEEK(&H408) + 256* PEEK(&H409)

LPT2 = PEEK(&H40A) + 256* PEEK(&H40B)

LPT3 = PEEK(&H40C) + 256* PEEK(&H40D)

es decir, en el primer caso el número de la puerta estará almacenado en el registro de memoria de dirección &H408 y

el número de piso en &H409.

Page 13: PROGRAMACI.N DE PLACAS DE CONTROL - … · Los puertos son las conexiones físicas de que dispone el ordenador para comunicarse ... Por estos canales el ordenador puede tanto enviar

Programación de placas de control

13

De igual modo estas direcciones puede obtenerse mediante el programa debug del

DOS. Vete al prompt del DOS y Teclea:

>debug

-d 0040:0008 L6 (este comando muestra el contenido en código hexadecimal de los 6

registros a continuación del &H408 inclusive, es decir, de los registros

&H408 &H409, &H40a, &H40b, &H40c &H40d).

(El ordenador devuelve el siguiente mensaje)

0040:0008 78 03 78 02 00 00

La combinación de los dos primeros registros indican la dirección base de lpt1 &H378

La combinación de los dos segundos registros indican la dirección base de lpt2 &H278

La combinación de los dos terceros registros indican la dirección base de lpt3 &H0000

Esto indica que en la máquina están instalados solo los puertos lpt1 y lpt2.

Una última forma de obtener información acerca de estas direcciones y también la más

sencilla es acudir a la BIOS del equipo a la que se accede generalmente pulsando la tecla

“Supr” durante la secuencia de arranque. En la sección de CHIPSET FEATURES SETUP,

puede encontrarse la dirección base del puerto paralelo instalado en la placa madre. Si hay un

segundo puerto instalado, caso de instalar una tarjeta controladora de puerto paralelo, no

aparecerá información en la BIOS dado que el hardware no pertenece la placa madre, sin

embargo, si el sistema operativo instalado en el equipo es Windows, en la ventana de

Propiedades del sistema, a la que se accede desde el icono de MiPC → Propiedades →

Administrador de dispositivos → Puertos COM y LPT, puede verse si hay un segundo puerto

paralelo instalado que aparecerá bajo el nombre de “Puerto de impresora LPT2”. Haciendo clic

en el botón derecho en la ventana de Recursos aparecerá dicha dirección.

Page 14: PROGRAMACI.N DE PLACAS DE CONTROL - … · Los puertos son las conexiones físicas de que dispone el ordenador para comunicarse ... Por estos canales el ordenador puede tanto enviar

Programación de placas de control

14

• PRACTICA 1. MEDIDA DE TENSIONES EN EL PUERTO DE DATOS.

Llegado este punto estamos ya en disposición de empezar a realizar montajes

electrónicos preliminares. Para ello utilizaremos una placa entrenadora para circuitos y cables

de hilo rígido para realizar las conexiones. Necesitaremos también cable de cinta plano de 36

conductores, un conector CENTRONICS hembra y 18 conectores de insertar a la placa

entrenadora por la base y por un lateral el cable conductor o en su defecto una regleta con 18

conectores. Posteriormente cuando hayamos realizado y comprobado los distintos circuitos

podremos realizar versiones permanentes en circuito impreso.

De momento nos centraremos con realizar el montaje de la Figura 4, cuya finalidad es

agrupar y ordenar las conexiones eléctricas del conector DSUB-25 del puerto paralelo,

obteniendo por separado las conexiones que proceden del registro de datos, de estado, de

control y las líneas de masa.

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

1719

20

21

22

23

24

25

26

27

28

29

30

3133

34

35

36

Strobe

Data 0

Data 1

Data 2

Data 3

Data 4

Data 5

Data 7

Data 6

Acknowledge

Busy

Paper out

Select out

Autofeed

Ground

Select in

Error

Print reset

Ground

Ground

Ground

Ground

Ground

Ground

Ground

Ground

Ground

Ground

Ground

12345689101112131415161718

192021222324252627282930313233343536

Ground

(Control 0)

(Control 1)

(Control 2)

(Control 3)

(Estado 3)

(Estado 4)

(Estado 5)

(Estado 6)

(Estado 7)

7

32 18

Numeración de pines

Numeración de cables

FIGURA 3

Page 15: PROGRAMACI.N DE PLACAS DE CONTROL - … · Los puertos son las conexiones físicas de que dispone el ordenador para comunicarse ... Por estos canales el ordenador puede tanto enviar

Programación de placas de control

15

El primer paso será insertar el cable de cinta plano en el conector CENTRONICS. La

conexión se realiza a presión. Se introduce el cable de cinta en el interior de la ranura del

conector de forma que sobresalga unos centímetros y se presiona fuertemente hasta que las

clavijas se inserten en los conductores. Posteriormente se corta rente la parte del cable de

cinta que sobresale mientras que en el otro extremo del cable se separan individualmente los

cables hasta una longitud de unos 10 cm con unas tijeras. Ahora se empezará a contar los

conductores desde el lado del cable que esté más cercano al pin 1 del conector centronics

hembra (la numeración está indicada en el propio conector) olvidándonos de la numeración de

los pines del conector centronics (ya que son diferentes tal y como se indica en la Figura 3).

Los cables que corresponden al byte de datos son el 3, 5, 7, 9, 11, 13, 15, 17; los cables

correspondientes al byte de control son el 1, 27, 26 y 36; los correspondientes al byte de

estado son el 28, 25, 23, 19, y 21 y los correspondientes a masa el 2, 4, 6, 8, 10, 12, 14, 16, 18,

20, 22, 30, y 33. Los conductores 24, 29, 31, 32 34 y 35 no se consideran. Se procederá a

pelar cada uno de los cables señalados y a conectarlos en riguroso orden a los conectores

agrupados como se indica en la Figura 4. Es muy importante que esta operación, aunque

tediosa, se realice con sumo cuidado pues si se provoca algún corto pueden producirse daños

en el ordenador, por ello una vez realizadas las conexiones es aconsejable proceder a verificar

Page 16: PROGRAMACI.N DE PLACAS DE CONTROL - … · Los puertos son las conexiones físicas de que dispone el ordenador para comunicarse ... Por estos canales el ordenador puede tanto enviar

Programación de placas de control

16

la continuidad de cada uno de los pines del conector con cada uno de los conectores de la

placa.

Una vez realizado el montaje ve al editor de BASIC y escribe el siguiente comando

variando los valores de “n” entre 0 y 255. Ejecuta cada una de las instrucciones y mide con un

polímetro la tensión existente entre cada uno de los bits del byte de datos y masa completando

la siguiente tabla:

OUT &H378, n

Valor de

n

Tensión

en

D7

Tensión

en

D6

Tensión

en

D5

Tensión

en

D4

Tensión

en

D3

Tensión

en

D2

Tensión

en

D1

Tensión

en

D0

0

1

2

4

8

16

32

64

128

Asignado a las tensiones de +5V un uno y a las tensiones de 0V un cero, observarás

como se genera en los pines de salida el byte enviado al puerto.

• EL CIRCUITO ELECTRÓNICO DE LAS SALIDAS.

Las señales eléctricas de +5V presentes en los pines correspondientes del registro de

datos no pueden usarse directamente para gobernar circuitos externos dado que los circuitos

integrados TTL que las generan sólo pueden proporcionar sin deteriorarse una corriente

máxima de unos de 5 mA (esta corriente depende del CI), mientras que receptores como

motores, lámparas etc... absorben corrientes muy superiores (ver Anexo I). Por otro lado,

cuando se trata de gobernar relés, dado que se trata de cargas inductivas, al ser conectadas o

desconectadas generan picos de tensión, que pueden deteriorar el ordenador. El agravio

puede ser mayor si el puerto paralelo esta integrado en la placa madre dado que ésta puede

sufrir daños acarreando costes de reparación elevados. Es recomendable para experimentar

adquirir tarjetas controladoras de entrada/salida mucho más baratas que se conectan a la placa

madre quedando ésta última intacta en caso de accidente.

Page 17: PROGRAMACI.N DE PLACAS DE CONTROL - … · Los puertos son las conexiones físicas de que dispone el ordenador para comunicarse ... Por estos canales el ordenador puede tanto enviar

Programación de placas de control

17

En la Figura 5 se muestran dos circuitos que proporcionan una protección segura al

puerto. Constan básicamente de un optoacoplador, un relé y/o transistores. El optoacoplador

es un componente que integra un diodo emisor y un fototransistor en un mismo encapsulado.

La señal procedente del puerto excita el diodo del optoacoplador, emitiendo éste un haz de luz

que incide sobre el fototransistor del circuito de salida haciendo que entre en conducción. Dado

que la conexión entre ambos circuitos es mediante un haz de luz, se obtiene un perfecto

aislamiento eléctrico entre ambos circuitos. La resistencia de 1KΩ en serie con el

optoacoplador impide que se supere la corriente máxima permitida. Por otro lado el diodo en

paralelo con la bobina del relé deriva las corrientes inducidas al producirse la conmutación de

éste protegiendo así al transistor. El circuito de salida del optoacoplador debe alimentarse por

una fuente externa que puede estar comprendida entre 5 y 24 V. En cualquier caso,

independientemente de que la carga sea un relé u otro receptor, el optoacoplador sólo puede

gobernar a su salida una corriente máxima de 100mA, lo cual se deberá tener en cuenta a la

hora de elegir la carga que deberá ser conectada. El relé puede eliminarse del circuito

Page 18: PROGRAMACI.N DE PLACAS DE CONTROL - … · Los puertos son las conexiones físicas de que dispone el ordenador para comunicarse ... Por estos canales el ordenador puede tanto enviar

Programación de placas de control

18

adosando una etapa de salida con un transistor de potencia, en este caso un transistor PNP

para evitar la inversión del voltaje a la salida.

Otra posibilidad es el uso de relés de estado sólido tales como triacs para gobernar las

tensiones alternas presentes en la vivienda. En este caso es necesario el uso de optotriacs

para ofrecer una protección segura al puerto. El circuito de la Figura 6 gobierna una lámpara de

220 V u otro receptor de similar consumo de potencia. Este circuito tiene la ventaja de que no

es necesaria una fuente de alimentación en el circuito de salida del optotriac ya que es la

tensión alterna de la red la que alimenta el circuito. Por otro lado la vida útil del triac puede ser

muy superior a la del relé, ya que los contactos de éste último, al ser de tipo mecánico, están

sujetos a un mayor desgaste debido la formación de pequeños arcos eléctricos en las

maniobras de apertura y cierre.

• PRACTICA 2. ENVÍO Y VISUALIZACIÓN DE SEÑALES AL PUERTO DE DE DATOS.

En esta práctica vamos a visualizar mediante diodos led las señales eléctricas

asociadas con la transmisión de datos de salida por el puerto paralelo y comprobaremos la

rapidez de dicha transmisión. En la placa obtenida anteriormente (Figura 4), conecta los diodos

led en serie con resistencias de 1KΩ y estas a su vez a masa, según en esquema de la Figura

7. Ten en cuenta que el electrodo de menor longitud en el diodo led es cátodo (polo negativo).

Verifica la continuidad con el polímetro. Una vez realizadas las comprobaciones conecta el

interface al cable de la impresora y arranca el ordenador. Ve al editor de BASIC, carga el

siguiente programa y ejecútalo.

REM **************PRUEBA DEL REGISTRO DE DATOS***********

T1 = 10000

T2 = 10000

FOR X = 0 TO 7

OUT &H378, 2^X

CALL PAUSA (T1)

Page 19: PROGRAMACI.N DE PLACAS DE CONTROL - … · Los puertos son las conexiones físicas de que dispone el ordenador para comunicarse ... Por estos canales el ordenador puede tanto enviar

Programación de placas de control

19

NEXT X

FOR X = 7 TO 0 STEP -1

OUT &H378, 2^X

CALL PAUSA (T2)

NEXT X

REM **************SUBRUTINA DE TEMPORIZACIÓN*********

SUB PAUSA (A)

FOR X = 0 TO A

NEXT X

END SUB

Observarás como los diodos led se encienden consecutivamente en un sentido y en el

otro. Cambiando los valores de T1 y T2 es posible modificar la rapidez de desplazamiento de

los diodos luminosos en ambos sentidos respectivamente (estos valores son relativos

dependiendo de la rapidez del microprocesador). El programa simplemente lo que hace es

enviar los valores decimales, 1, 2, 4, 8, 16, 32, 64 y 128 al puerto de forma consecutiva, que en

código binario se corresponden con los valores; 00000001, 00000010, 00000100, 00001000,

00010000, 00100000, 01000000, 10000000. Así, de los 8 bits solo el que está a valor alto

excita el diodo led.

NOTA: Si la dirección del registro de datos no es &H378, hay que sustituirla por la

obtenida del programa de búsqueda de los registros.

Page 20: PROGRAMACI.N DE PLACAS DE CONTROL - … · Los puertos son las conexiones físicas de que dispone el ordenador para comunicarse ... Por estos canales el ordenador puede tanto enviar

Programación de placas de control

20

• PROGRAMACIÓN PARA ENVIAR CUALQUIER COMBINACIÓN DE BITS AL PUERTO DE DATOS.

A lo largo del desarrollo de un proyecto puede ser necesario enviar distintas

combinaciones de bits (o bytes) a la salida para realizar el control de los relés, enviar distintas

señales de control a otros integrados, etc.... Hasta ahora esto lo hemos hecho mentalmente

asociando esa combinación de bits al número decimal correspondiente e incluyendo este

número como parámetro en la instrucción OUT. Sin embargo esto puede llegar a ser tedioso.

Es más intuitivo enviar al puerto en vez del número decimal, el número binario que representa

dado que un “1” indica la presencia de señal eléctrica y un “0” la ausencia. Por ejemplo, si

enviamos el byte 10000001 se activarán los relés correspondientes al bit D0 y al bit D7,

información que no es directamente intuida si enviamos el número decimal correspondiente,

“129 “.El siguiente procedimiento realiza la conversión.

REM*******PROCEDIMIENTO DE ENVÍO DE UN BYTE AL PUERTO DE DATOS****** SUB SALIDA (M8, M7, M6, M5, M4, M3, M2, M1)

SALIDA% = M1*1 OR M2*2 OR M3*4 OR M4*8 OR M5*16 OR M6*32 OR M7*64 OR M8*128

OUT &H378, SALIDA%

END SUB

La variable SALIDA% no es mas que el polinomio de conversión de números binarioa a

decimales en donde los coeficientes estan dados por las variables M1, M2, M3, ..etc.. Para

llamar al procedimiento se usa la instrucción CALL, por ejemplo la sentencia CALL SALIDA

(1,1,1,1,1,1,1,1) envía el byte 11111111 al puerto.

El proceso de llamada puede refinarse aún más haciendo que el ordenador nos

pregunte qué byte deseamos sea enviado al puerto. El siguiente programa realiza esta tarea.

INPUT “INTRODUCE EL BYTE QUE DESEAS ENVIAR AL PUERTO M8M7M6M5M4M3M2M1” ; BYTE$

DIM M$(8)

FOR X = 1 TO 8

M$(9-X) = MID$(BYTE$, X, 1)

M(9-X) = VAL(M$(9-X))

NEXT X

CALL SALIDA (M(8), M(7), M(6), M(5), M(4), M(3), M(2), M(1))

Otro procedimiento que puede ser interesante es el de enviar un bit a la salida del

puerto de datos dejando sin alterar el resto. Supongamos que se desea modificar solo el bit D0

del puerto de datos. Para ello el programa lee el puerto y realiza la multiplicación lógica del byte

resultante de la lectura por los bytes 00000010, 00000100, 00001000, 00010000, 00100000,

01000000 y 10000000, obteniéndose las variables, S2, S3, S4, S5, S6 y S7 dejando de este

modo los bits, D1, D2, D3, D4, D5, D6 y D7 intactos. El resultado obtenido en la variable

Page 21: PROGRAMACI.N DE PLACAS DE CONTROL - … · Los puertos son las conexiones físicas de que dispone el ordenador para comunicarse ... Por estos canales el ordenador puede tanto enviar

Programación de placas de control

21

SALIDA% se calcula del mismo modo que en el procedimiento anterior pero en este caso el

valor de S0 se calcula multiplicando el valor deseado a la salida por 1. Por ejemplo, La

sentencia CALL D0(1) envía un 1 solo al pin correspondiente al bit D0 del registro de datos

mientras que la sentencia CALL D0(0) envía un 0.

REM*****PROCEDIMIENTO DE ENVÍO DE UN BIT AL PUERTO DE DATOS DEJANDO INTACTO EL RESTO ******

SUB D0(BIT)

BYTES = INP(888)

S2 = (BYTES AND 2) / 2

S3 = (BYTES AND 4) / 4

S4 = (BYTES AND 8) / 8

S5 = (BYTES AND 16) / 16

S6 = (BYTES AND 32) / 32

S7 = (BYTES AND 64) / 64

S8 = (BYTES AND 128) / 128

SALIDA% = BIT * 1 OR 2 * S2 OR 4 * S3 OR 8 * S4 OR 16 * S5 OR 32 * S6 OR 64 * S7 OR 128 * S8

OUT &H378, SALIDA

END SUB

• PRACTICA 3. ENVÍO Y VISUALIZACIÓN DE SEÑALES AL PUERTO DE CONTROL.

En esta práctica vamos a usar el registro de control como salida de señales eléctricas.

Del mismo modo que en la práctica anterior, conecta ahora a los conectores correspondientes

del byte de control los diodos led en serie con resistencias de 1KΩ y estas a su vez a masa tal

y como se indica en la Figura 8. Verifica las conexiones con el polímetro.

Page 22: PROGRAMACI.N DE PLACAS DE CONTROL - … · Los puertos son las conexiones físicas de que dispone el ordenador para comunicarse ... Por estos canales el ordenador puede tanto enviar

Programación de placas de control

22

En este caso al tener el citado registro sólo 4 bits utilizables, el máximo número de

combinaciones binarias de señales que podrán enviarse será de 24 = 16. (del 0000 al 1111).

Además, dado que el registro de control presenta tres de sus señales invertidas (que se

corresponden con los bits C0, C1 y C3), al enviar por ejemplo el valor decimal 4 a la salida (en

código binario 0100) observarás como los diodos que se encienden no se corresponden con el

número binario enviado al puerto. En este ejemplo el número binario reflejado en los leds será

el 1111 y se encenderán todos los diodos.

Para comprobarlo escribe el siguiente comando y ejecútalo.

OUT &H37a, 4

Donde &H37a, es la dirección del registro de control.

Puesto que con las inversiones es incómodo hacer el cálculo mental del número

decimal que nos permita obtener en la salida la combinación deseada de señales eléctricas

utilizaremos el operador booleano XOR (puerta O-exclusiva) para revertir la inversión que

realiza el puerto en el registro de control. Este procedimiento se denomina enmascaramiento.

A7 A6 A5 A4 A3 A2 A1 A0

XOR

0 0 0 0 1 0 1 1

| |

A7 A6 A5 A4 A3 A2 A1 A0

CONTROL% = A XOR 11

OUT &H37a, CONTROL%

Escribe el siguiente programa.

REM ********ESTE PROGRAMA DESHACE LAS INVERSIONES DEL

REM ********REGISTRO DE CONTROL

PRINT “INTRODUCE EL VALOR DE SALIDA POR EL REGISTRO DE CONTROL”

INPUT A

Page 23: PROGRAMACI.N DE PLACAS DE CONTROL - … · Los puertos son las conexiones físicas de que dispone el ordenador para comunicarse ... Por estos canales el ordenador puede tanto enviar

Programación de placas de control

23

CONTROL% = A XOR 11

OUT &H37a, CONTROL%

END

Observarás ahora como el valor de la variable A se manifiesta fielmente en la salida.

Para conseguir que todos los diodos se enciendan el valor de A deberá ser ahora 15. La

tercera sentencia opera bit a bit el valor binario de A con el valor binario correspondiente del

número decimal 11 (en código binario 1011). Si te fijas este número tiene un uno justo en los

bits que están invertidos.

Es muy útil crear un procedimiento que al ser invocado desde cualquier parte de un

programa envíe el byte deseado al puerto de control. A continuación se muestra uno:

REM******PROCEDIMIENTO DE ENVÍO DE UN BYTE AL PUERTO DE CONTROL***********

SUB CONTROL (DATO)

CONTROL% = DATO XOR 11

OUT &H37a, CONTROL%

END SUB

Donde DATO representa el byte que será enviado al puerto de control. Por ejemplo la

instrucción CALL CONTROL (2) envía el byte 00000010 al puerto de control.

• AMPLIACIÓN DE LAS SALIDAS EN EL PUERTO DE DATOS. El número de salidas en el puerto de datos puede incrementarse en múltiplos de 8

utilizando básculas latch octales tales como la 74347. La señal de reloj que poseen estos

integrados tiene la misión de bloquear o permitir la entrada de datos en el CI, quedado en este

último caso los datos congelados y disponibles en las salidas. Cuando se emite un pulso de

subida sobre la señal de reloj CLK, la báscula deja pasar los datos presentes en las entradas.

De este modo el byte almacenado puede utilizarse como una nueva salida. Por ejemplo si

conectamos dos de estos integrados en paralelo con las salidas del puerto de datos según el

esquema de la Figura 9 podemos enviar dos bytes diferentes a cada uno de los 74347

actuando de forma alternativa sobre las señales de reloj. Las señales de gobierno proceden de

los bit C0 y C1 del puerto de control.

El programa de control es el siguiente.

REM ***************ESTE PROGRAMA ENVÍA 2 BYTES **************

REM*******************DESDE EL PUERTO DE DATOS****************

T = 10

REM**********SALIDA DEL PRIMER DATO*************

OUT &H378, 255

REM***********PULSO DE SUBIDA AL PRIMER LATCH 74347********

CALL CONTROL (0)

Page 24: PROGRAMACI.N DE PLACAS DE CONTROL - … · Los puertos son las conexiones físicas de que dispone el ordenador para comunicarse ... Por estos canales el ordenador puede tanto enviar

Programación de placas de control

24

CALL PAUSA (T)

CALL CONTROL (1)

REM**********SALIDA DEL SEGUNDO DATO*****************************

OUT &H378, 0

REM**********PULSO DE SUBIDA AL SEGUNDO LATCH 74347********

CALL CONTROL (0)

CALL PAUSA (T)

CALL CONTROL (2)

END

Primeramente se da la orden de salida del primer dato con la sentencia OUT &H378,

255. Este dato no pasará al latch hasta que se emita sobre la señal de reloj un pulso de subida,

lo cuál se hace con las instrucciones CALL CONTROL(0) y CALL CONTROL(1) . Del mismo

modo se hace con el siguiente dato y el segundo latch.

Page 25: PROGRAMACI.N DE PLACAS DE CONTROL - … · Los puertos son las conexiones físicas de que dispone el ordenador para comunicarse ... Por estos canales el ordenador puede tanto enviar

Programación de placas de control

25

• EL CIRCUITO ELECTRÓNICO DE LAS ENTRADAS.

Sabemos ya como enviar datos de salida por el puerto paralelo usando tanto el registro

de datos como el registro de control. Con estas señales podemos por ejemplo controlar relés

que gobiernen motores, lamparas u otros receptores pero sin embargo no sirven para que el

ordenador responda a estímulos externos. Las señales de entrada proporcionan al sistema de

control una realimentación que condiciona las salidas haciendo que sea capaz de

autoregularse, de este modo el ordenador actúa como un autómata programable. Como ya

comentamos en apartados anteriores el puerto usa el puerto de estado para captar las señales

de entrada. El registro de control al ser bidireccional también puede usarse para este fin.

Recordemos que en el byte de estado solo pueden usarse 5 de los 8 bits (en concreto los bits

E7, E6, E5, E4 y E3). Mediante la siguiente experiencia vamos a establecer la forma en la que

el ordenador responde a un estímulo externo.

• PRACTICA 4. CAPTACIÓN DE SEÑALES DE ENTRADA EN EL PUERTO DE ESTADO.

Conecta el montaje de la Figura 4 con el cable de la impresora al puerto paralelo del

ordenador, enciéndelo y mide con un polímetro la tensión existente entre cada uno de los pines

de estado y tierra. Encontrarás que cada uno de ellos se encuentra a +5V. Veamos que valor

lee el ordenador para esta combinación de tensiones eléctricas en el registro de estado. Entra

en el BASIC y teclea el siguiente comando;

A = INP (&H379) (donde &H379 es la dirección hexadecimal de registro de

estado)

PRINT A.

Observarás como el valor que devuelve el programa es 127.

NOTA: Te preguntarás de donde sale este valor. Teniendo en cuenta que el Bit E7 del

registro de datos se lee invertido y que los bits no utilizables E0, E1 y E2 están a uno,

el valor del registro de estado será de 11111111 (que se corresponde con el número

decimal 255) sin embargo el ordenador lee el número 01111111, es decir el número

decimal 127. En ciertos equipos los bits E0, E1 y E2 están a cero y el valor leído es

120.

Page 26: PROGRAMACI.N DE PLACAS DE CONTROL - … · Los puertos son las conexiones físicas de que dispone el ordenador para comunicarse ... Por estos canales el ordenador puede tanto enviar

Programación de placas de control

26

Ahora conecta cada uno de los pines de salida del registro de estado a masa a través

de resistencias de 150 Ω tal como se indica en el esquema de la Figura 10. Mide de nuevo las

tensiones entre estos y masa. Observarás como ahora las tensiones son de 0 V. Veamos

ahora que valor lee ahora el ordenador para el registro de estado. Teclea de nuevo:

A = INP (&H379)

PRINT A

El valor devuelto ahora es de 135.

Ahora el registro de estado tiene el valor 00000111 (que se corresponde con el valor

decimal 7), sin embargo el ordenador lee el valor 10000111, correspondiente al valor

decimal 135.

Si repetimos la misma operación conectando o desconectando de masa cada una de

las cinco resistencias (esto puede hacerse más cómodamente intercalando interruptores)

obtendremos para cada combinación un valor diferente que puede ser leído por el ordenador.

Esta es sin más la forma que tiene el ordenador de captar estímulos externos. Así, los

interruptores pueden sustituirse por pulsadores normalmente abiertos o cerrados que a modo

de finales de carrera pueden ser activados por algún dispositivo mecánico.

El que el puerto de estado tenga por defecto todos sus pines a +5V (valor 127 en el

registro de estado) supone una ventaja dado que es suficiente con poner a masa el pin

correspondiente para enviar un dato al ordenador evitándose así fuentes de alimentación

externas. Sin embargo, podemos encontrarnos con ordenadores (generalmente modelos

Page 27: PROGRAMACI.N DE PLACAS DE CONTROL - … · Los puertos son las conexiones físicas de que dispone el ordenador para comunicarse ... Por estos canales el ordenador puede tanto enviar

Programación de placas de control

27

antiguos) que no proporcionan por defecto estas tensiones. Esto significa que alguno de sus

pines se encuentran a + 0V, siendo necesaria la operación inversa para que ocurra la captación

del estímulo, esto es, ponerlos a + 5V. Esto puede realizarse también utilizando pulsadores

mediante el circuito indicado en la Figura 11. El inconveniente es que en este caso es

necesaria una fuente de alimentación externa. El circuito de la Figura 10 incorpora el regulador

CI 7805 que proporciona una tensión estabilizada de + 5 V a la salida de la fuente.

Page 28: PROGRAMACI.N DE PLACAS DE CONTROL - … · Los puertos son las conexiones físicas de que dispone el ordenador para comunicarse ... Por estos canales el ordenador puede tanto enviar

Programación de placas de control

28

• SEÑALES ELÉCTRICAS DE ENTRADA EN EL PUERTO DE ESTADO. El procedimiento anterior, que utiliza finales de carrera o pulsadores, es fácil de construir, sin

embargo, la forma más versátil de comunicar estímulos externos al ordenador es haciendo uso

de señales eléctricas que pueden proceder en general de circuitos integrados, de sensores u

otros circuitos. Una forma de hacer esto es utilizando un transistor trabajando en conmutación

tal y como se muestra en los circuitos A y B de la Figura 12. Es evidente que en el segundo

caso será necesaria una fuente de tensión regulada de + 5

V. El circuito C ofrece la posibilidad de convertirse tanto en el A como en el B con tan solo abrir

o cerrar el interruptor. Los circuitos integrados TTL tienen en sus salidas una estructura

denominada “totem pole” que actúan de la misma manera que estos circuitos de conmutación

con transistores, es decir, son capaces de poner a masa o a la tensión de la fuente los pines

del puerto de estado por tanto es recomendable usar uno de estos integrados. En general es

común el uso de CI buffer como por ejemplo el CI 74245. El circuito buffer actúa como

separador protegiendo al puerto de sobreintensidades ya que se comporta como si fuera un

fusible eléctrico. El CI necesita una alimentación regulada de + 5 V y además las señales de

entrada al CI también deben proceder de una fuente de tensión regulada de + 5V. En la Figura

13 se indica el circuito correspondiente. Las salidas en totem pole del buffer se encargan de

poner a masa o a + 5 V los pines del registro de estado reproduciendo fielmente las señales

eléctricas en sus entradas.

Page 29: PROGRAMACI.N DE PLACAS DE CONTROL - … · Los puertos son las conexiones físicas de que dispone el ordenador para comunicarse ... Por estos canales el ordenador puede tanto enviar

Programación de placas de control

29

• LECTURA DE SEÑALES DE ENTRADA EN EL PUERTO DE ESTADO.

Para leer los datos de entrada por el puerto de estado utilizaremos la instrucción INP

(&H379) del BASIC, donde &H379 es la dirección de registro de estado. En general será

necesario en muchos proyectos que el ordenador esté continuamente leyendo el puerto

(sondeo o polling) para tomar en un momento dado la decisión oportuna. Para ello utilizamos

un bucle, es decir una secuencia indefinida y repetitiva de instrucciones. Esto puede hacerse

con las instrucciones DO y LOOP. Sin embargo, debemos también prever la salida del bucle

para tener siempre el programa bajo nuestro control. Así, activamos la tecla F1 con la

instrucción KEY(1) ON de modo que al pulsarla deriva el programa hacia la subrutina FIN.

REM*******LECTURA DEL PUERTO DE ESTADO*********

KEY(1) ON

ON KEY(1) GOSUB FIN

T = 5000

GOSUB BUCLE

BUCLE:

DO

CALL PAUSA (T)

A = INP (&H379)

LOCATE 10, 10: PRINT A

LOOP

END

SUB PAUSA(T)

Page 30: PROGRAMACI.N DE PLACAS DE CONTROL - … · Los puertos son las conexiones físicas de que dispone el ordenador para comunicarse ... Por estos canales el ordenador puede tanto enviar

Programación de placas de control

30

FOR X = 0 TO T

NEXT X

END SUB

FIN:

CLS

END

El valor de T fija el tiempo de captura de datos. Este tiempo depende también de la

velocidad del microprocesador. El programa visualiza el valor del registro de estado (variable A)

en pantalla, sin embargo frecuentemente es útil intercalar dentro del bucle una sentencia

condicional del tipo SI “A” TOMA UN DETERMINADO VALOR ENTONCES IR A LA

SUBRUTINA X.

IF A = 135 THEN GOSUB SALIDA

SALIDA:

OUT &H378, 1

END

En este caso, si A toma el valor 135 envía el byte (00000001) al del puerto de datos.

• ENTRADAS DIGITALES.

Sabemos ya como detectar estímulos externos. Para ello simplemente leemos el

registro de estado usando un bucle. Sin embargo, en general es conveniente tratar a cada una

de las entradas digitales como si fueran canales independientes. Dado que el registro de

estado posee el bit E7 invertido y además los bits E2, E1 y E0 no responden a ningún estímulo,

ya que no pueden utilizarse, los valores leídos no guardan a priori una relación lógica con las

señales presentes en las entradas. Para racionalizar los valores leídos debemos conseguir

primeramente que el ordenador lea el número decimal que se corresponde con las entradas

activas. Para ello debemos alterar mediante programación la estructura del byte de estado.

Esto se denomina “enmascaramiento”. Supongamos que queremos diseñar un interface con 4

entradas digitales y que vamos a utilizar para este fin los bits E4, E5, E6 y E7 del registro de

estado. El procedimiento a seguir es el siguiente:

Page 31: PROGRAMACI.N DE PLACAS DE CONTROL - … · Los puertos son las conexiones físicas de que dispone el ordenador para comunicarse ... Por estos canales el ordenador puede tanto enviar

Programación de placas de control

31

Primeramente deshacemos la inversión del bit E7 del registro de estado haciendo uso del

operador booleano XOR.

E7 E6 E5 E4 E3 E2 E1 E0

XOR

1 0 0 0 0 0 0 0

| |

E7 E6 E5 E4 E3 E2 E1 E0

A = INP (&H379)

A% = A XOR 128

Seguidamente seleccionamos los 4 últimos bits del registro. Para ello usaremos el

operador booleano AND:

E7 E6 E5 E4 E3 E2 E1 E0

AND

1 1 1 1 0 0 0 0

| |

E7 E6 E5 E4 0 0 0 0

AA% = A% AND 240

La lectura del byte virtual AA% devuelve el valor 16 cuando la entrada E4 esta a uno,

32 cuando la entrada E5 esta a uno, 64 cuando la entrada E6 esta a uno ó 128 cuando la

entrada E7 esta a uno. Del mismo modo si las entradas E5 y E4 están a uno, el ordenador

leerá el valor decimal correspondiente 32 + 16 = 48. Ahora el valor leído si puede racionalizarse

de modo que es posible saber qué entradas está activas y cuales no.

Page 32: PROGRAMACI.N DE PLACAS DE CONTROL - … · Los puertos son las conexiones físicas de que dispone el ordenador para comunicarse ... Por estos canales el ordenador puede tanto enviar

Programación de placas de control

32

• AMPLIACIÓN DE ENTRADAS DIGITALES.

El número de entradas digitales puede ampliarse a un valor mayor que los 5 bits disponibles en

el registro de estado mediante un multiplexor. Consideremos el caso de un interface con 8

entradas digitales (ver Figura 14).

El CI 74157 es un multiplexor de 8 entradas a 4 salidas de dos canales que multiplexa

las 8 señales de 4 en 4 haciendo uso del pin de selección A/B. Cuando A/B = 0 deja paso a los

4 primeros datos (A-1, A-2, A-3, A-4) mientras que cuando A/B = 1, a los 4 restantes (B-1, B-2,

B-3, B-4). Por tanto solo serán necesarios 4 de los 5 bits del puerto de estado. En este caso

seleccionaremos los bits E7 E6 E5 y E4. Debemos crear ahora un byte virtual con los 8 datos

de entrada. El proceso de enmascaramiento se muestra a continuación.

Primeramente deshacemos la inversión del bit E7 del registro de estado.

E7 E6 E5 E4 E3 E2 E1 E0

XOR

1 0 0 0 0 0 0 0

| |

E7 E6 E5 E4 E3 E2 E1 E0

Page 33: PROGRAMACI.N DE PLACAS DE CONTROL - … · Los puertos son las conexiones físicas de que dispone el ordenador para comunicarse ... Por estos canales el ordenador puede tanto enviar

Programación de placas de control

33

A = INP (&H379)

A% = A XOR 128

Seleccionamos los 4 últimos bits del registro. Para ello usaremos el operador booleano

AND:

E7 E6 E5 E4 E3 E2 E1 E0

AND

1 1 1 1 0 0 0 0

| |

E7 E6 E5 E4 0 0 0 0

AA% = A% AND 240

Multiplexaremos primero los bits impares y seleccionamos cada uno de ellos mediante

multiplicación lógica del nibble superior (4 bits superiores) del registro de estado con los bytes

16, 32, 64 y 128.

E7 E6 E5 E4 0 0 0 0

AND

0 0 0 1 0 0 0 0

| |

0 0 0 E4 0 0 0 0

A1 = (AA% AND 16)/16

Y así sucesivamente con los bits siguientes.

A3 = (AA% AND 32)/32

A5 = (AA% AND 64)/64

A7 = (AA% AND 128)/128

Page 34: PROGRAMACI.N DE PLACAS DE CONTROL - … · Los puertos son las conexiones físicas de que dispone el ordenador para comunicarse ... Por estos canales el ordenador puede tanto enviar

Programación de placas de control

34

Seguidamente se da la orden de lectura del segundo cuarteto correspondiente a los

bits pares, A/B = 1, para lo cuál se usa el bit de control C1 mediante la instrucción CALL

CONTROL (2) y se realiza el mismo proceso de enmascaramiento descrito.

BB% = B% AND 240

BB% = B% AND 240

B0 = (BB% AND 16)/16

B2 = (BB% AND 32)/32

B4 = (BB% AND 64)/64

B6 = (BB% AND 128)/128

Seguidamente se convierte a decimal el byte total mediante la fórmula de conversión

correspondiente:

A7 B6 A5 B4 A3 B2 A1 B0

SUMA% = B0 ·1 + A1 ·2 + B2·4 + A3·8 + B4·16 + A5·32 + B6·64 + A7·128

A continuación se muestra el procedimiento completo.

REM****PROGRAMA DE LECTURA DE 8 ENTRADAS DIGITALES****

SUB LEEDIGITAL (T)

SHARED DIGITAL%

REM*********PUESTA A CERO DEL MULTIPLEXOR************

CALL CONTROL (0)

REM **************LECTURA DE BITS IMPARES**************

A = INP (&H379)

A% = A XOR 128

AA% = A% AND 240

A1 = (AA% AND 16)/16

A3 = (AA% AND 32)/32

A5 = (AA% AND 64)/64

A7 = (AA% AND 128)/128

REM *********PUESTA A UNO DEL MULTIPLEXOR**********

CALL CONTROL (2)

REM **************LECTURA DE BITS PARES******************

B = INP (&H379)

B% = B XOR 128

AA% = B% AND 240

B0 = (BB% AND 16)/16

B2 = (BB% AND 32)/32

B4 = (BB% AND 64)/64

B6 = (BB% AND 128)/128

Page 35: PROGRAMACI.N DE PLACAS DE CONTROL - … · Los puertos son las conexiones físicas de que dispone el ordenador para comunicarse ... Por estos canales el ordenador puede tanto enviar

Programación de placas de control

35

REM *****************RESULTADO DE LA CONVERSION*********

DIGITAL% = B0 ·1 + A1 ·2 + B2·4 + A3·8 + B4·16 + A5·32 + B6·64 + A7·128

END SUB

El siguiente programa monitoriza en tiempo real los datos procedentes de las 8

entradas digitales (variable DIGITAL%). Para ello el programa lee continuamente el puerto de

estado con el procedimiento creado SUB LEEDIGITAL mediante un bucle. Para no perder el

control del programa se activa la tecla F1 mediante el comando KEY(1) ON de modo que

cuando sea pulsada deriva el programa hacia la subrutina FIN.

REM*****PROGRAMA DE LECTURA DE 8 ENTRADAS DIGITALES***********

CLS

KEY(1) ON

ON KEY(1) GOSUB FIN

T = 10000

REM********************BUCLE DE LECTURA*******************

DO

CALL LEEDIGITAL (T)

LOCATE 10, 10

PRINT DIGITAL%

LOOP

REM***********SUBRUTINA DE FINALIZACIÓN DE PROGRAMA********

FIN:

CLS

END

• LECTURA DE ENTRADAS DIGITALES COMO LÍNEAS INDEPENDIENTES.

En el apartado anterior hemos desarrollado un procedimiento de lectura que visualiza el

número decimal que corresponde en cada momento al valor que toma el byte virtual

DIGITAL%, el cual depende del estado de cada una de las 8 las entradas. Sin embargo, si lo

que pretendemos es usar las entradas como líneas independientes debemos completar el

procedimiento con las siguientes sentencias:

E0% = DIGITAL% AND 1

E1% = (DIGITAL% AND 2)/2

E2% = (DIGITAL% AND 4)/4

E3% = (DIGITAL% AND 8)/8

E4% = (DIGITAL% AND 16)/16

E5% = (DIGITAL% AND 32)/32

E6% = (DIGITAL% AND 64)/64

E7% = (DIGITAL% AND 128)/128

Page 36: PROGRAMACI.N DE PLACAS DE CONTROL - … · Los puertos son las conexiones físicas de que dispone el ordenador para comunicarse ... Por estos canales el ordenador puede tanto enviar

Programación de placas de control

36

Las nuevas variables denominadas E0%, E1%, E2%, E3%, E4%, E5%, E6% y E7%

resultan de la multiplicación lógica del byte virtual denominado DIGITAL% con los

correspondientes números binarios 00000001, 00000010, 00000100, 00001000, 00010000,

00100000, 0100000, 1000000. Veamos ahora la forma de usar esto en la práctica.

Supongamos por ejemplo que queremos que el ordenador responda emitiendo en la salida el

dato 255 sólo si las entradas 1, 3 y 8 están activadas simultáneamente. En tal caso

escribiremos la siguiente sentencia:

IF E1% = 1 AND E3% = 1 AND E8% = 1 THEN OUT &H378, 255

Por el contrario, si queremos que se realice lo mismo pero solo si alguna de las

entradas 1, 3 o 8 están activadas entonces la sentencia correcta será:

IF E1% = 1 OR E3% = 1 OR E8% = 1 THEN OUT &H378, 255

En donde hemos cambiado el operador booleano AND por OR.

El procedimiento SUB LEEDIGITAL queda ahora modificado de la siguiente forma:

REM****PROGRAMA DE LECTURA DE 8 ENTRADAS DIGITALES****

REM****************COMO LÍNEAS INDEPENDIENTES******************

SUB CLEEDIGITAL (T)

SHARED DIGITAL%, E0%, E1%, E2%, E3%, E4%, E5%, E6%, E7%

REM*********PUESTA A CERO DEL MULTIPLEXOR************

CALL CONTROL (0)

REM **************LECTURA DE BITS IMPARES**************

A = INP (&H379)

A% = A XOR 128

AA% = A% AND 240

A1 = (AA% AND 16)/16

A3 = (AA% AND 32)/32

A5 = (AA% AND 64)/64

A7 = (AA% AND 128)/128

REM *********PUESTA A UNO DEL MULTIPLEXOR**********

CALL CONTROL (2)

REM **************LECTURA DE BITS PARES******************

B = INP (&H379)

B% = B XOR 128

AA% = B% AND 240

B0 = (BB% AND 16)/16

B2 = (BB% AND 32)/32

B4 = (BB% AND 64)/64

B6 = (BB% AND 128)/128

Page 37: PROGRAMACI.N DE PLACAS DE CONTROL - … · Los puertos son las conexiones físicas de que dispone el ordenador para comunicarse ... Por estos canales el ordenador puede tanto enviar

Programación de placas de control

37

REM *****************RESULTADO DE LA CONVERSION*********

DIGITAL% = B0 ·1 + A1 ·2 + B2·4 + A3·8 + B4·16 + A5·32 + B6·64 + A7·128

E0% = DIGITAL% AND 1

E1% = (DIGITAL% AND 2)/2

E2% = (DIGITAL% AND 4)/4

E3% = (DIGITAL% AND 8)/8

E4% = (DIGITAL% AND 16)/16

E5% = (DIGITAL% AND 32)/32

E6% = (DIGITAL% AND 64)/64

E7% = (DIGITAL% AND 128)/128

END SUB

En la sentencia SHARED deben introducirse las nuevas variables E0%, E1%, E2%,

E3%, E4%, E5%, E6% y E7% para poder ser leídas fuera del procedimiento SUB

CLEEDIGITAL.

El siguiente programa lee las entradas digitales y toma una decisión en función de las

líneas activas.

REM*********PROGRAMA DE LECTURA CONDICIONADA*******

REM****************DE 8 ENTRADAS DIGITALES******************

CLS

KEY(1) ON

ON KEY(1) GOSUB FIN

T = 10000

REM********************BUCLE DE LECTURA*******************

DO

CALL CLEEDIGITAL (T)

IF E0% = 1 AND E1% = 1 THEN OUT &H378, 255

IF E2% = 1 OR E3% = 1 THEN OUT &H378, 0

LOOP

REM***********SUBRUTINA DE FINALIZACIÓN DE PROGRAMA********

FIN:

CLS

END

El programa lee continuamente las 8 líneas de entrada digitales mediante el bucle

DO/LOOP y el procedimiento SUB CLEEDIGITAL. Si las entradas E0% y E1% están activas

simultáneamente el programa activa las 8 líneas de salida, mientras que si alguna de las

entradas E2% o E3% están activas las pone a nivel bajo.

Page 38: PROGRAMACI.N DE PLACAS DE CONTROL - … · Los puertos son las conexiones físicas de que dispone el ordenador para comunicarse ... Por estos canales el ordenador puede tanto enviar

Programación de placas de control

38

• ENTRADAS ANALÓGICAS.

El puerto de estado solo es capaz de reconoce señales digitales, es decir, solo

diferencia entre dos estados, alto y bajo. Sin embargo, en muchas ocasiones será necesaria la

lectura de señales analógicas, como por ejemplo la tensión entre los terminales de un

potenciómetro o de un sensor. En este caso es necesario realizar un procedimiento previo de

conversión de la señal analógica (voltaje procedente del potenciómetro o sensor) en una señal

digital apta para ser leída en el puerto. Este paso previo lo realiza un CI denominado conversor

analógico digital (A/D). Aquí se utilizará el CI ADC0804. Un convertidor analógico digital como

el ADC0804 (el más barato de la familia del 0801, el 0802 y el 0803) codifica en 8 bits (salida

en paralelo a través del bus D0-D7) con precisión de un bit, la señal diferencial presente entre

sus terminales de entrada IN(+) e IN(-), donde IN(-) es una tensión fija que corresponde al valor

más pequeño del rango de voltaje de entrada, generalmente cero y IN(+) es la señal analógica

de entrada a convertir, que puede variar entre distintos márgenes siendo lo normal que oscile

entre 0 V y la tensión de alimentación del integrado.

Si la señal de entrada en IN(+) oscila entre 0 V y la tensión de alimentación Vcc (que puede variar entre

+4.5V y 6.3V, siendo +5V el valor nominal), los pines ANLG GND, IN(-) se conectan a masa y el pin REF/2 se deja en

circuito abierto. Sin embargo, en el caso más general el rango de voltajes de entrada puede no ser igual a Vcc y

además puede que el menor valor de voltaje de entada no sea cero. En este caso, en IN(-) se aplica una tensión igual

al valor más pequeño del rango de voltaje de entrada, en IN(+) se aplica la señal analógica a convertir y en REF/2, se

aplica una tensión igual a la mitad del rango máximo de voltaje de entrada. Por ejemplo, si las tensiones de entrada

varían entre 0.5 V y 3.5 V, se aplica una tensión de 0.5 V en IN(-), en IN(+) se aplica la señal analógica de entrada y

en REF/2 se aplica una tensión de (3.5 – 0.5)/2 = 1.5.

Este tipo de conversores de bajo coste basan su medición en aproximaciones

sucesivas al valor digital a partir del valor analógico; su medición, por lo tanto, no es

instantánea y requieren que se les proporcione una señal de reloj para su funcionamiento (para

el proceso de aproximaciones sucesivas al valor digital).

Para generar la señal de reloj se usa una red RC que conectada a los terminales CLK OUT y CLK IN provocan que en CLK OUT tengamos una señal cuadrada entre 640 KHz y 1

MHz (cuanto mayor sea la frecuencia, siempre que esté por debajo del máximo soportado,

menor será el tiempo de conversión). La fórmula del cálculo de la frecuencia es f = 1/(R·C·k)

donde “k” es un factor dependiente del fabricante del integrado (el valor típico es de k = 1,3). En

cada uno de los pasos o comparaciones del proceso de aproximación, el integrado calcula un

nuevo bit del resultado digital, necesitando 8 pasos para alcanzar la conversión completa.

Page 39: PROGRAMACI.N DE PLACAS DE CONTROL - … · Los puertos son las conexiones físicas de que dispone el ordenador para comunicarse ... Por estos canales el ordenador puede tanto enviar

Programación de placas de control

39

El esquema fundamental de un conversor analógico digital de aproximaciones sucesivas se muestra en la

siguiente figura:

Básicamente consta de un circuito de captura y mantenimiento (S & H) que retiene la señal de entrada Vi, el

tiempo suficiente para ser procesada, un comparador, un circuito de aproximaciones sucesivas, un conversor

Digital/Analógico y buffers de salida. El registro de aproximaciones sucesivas comienza poniendo a 1 el bit de más

peso (MSB), quedando el resto a cero, o sea, forma el valor 1000…0, que corresponde a la mitad de la máxima

excursión de la tensión de entrada. Este valor es transformado a señal analógica, Vc, por el conversor D/A, que a su

vez se introduce en el comparador.

Si la señal Vc es mayor que la señal de entrada Vi, esta será inferior a Vfondo/2 y el comparador bascula dando

lugar a una señal que hace que el registro varíe su contenido, sustituyendo el 1 del bit de más peso por un 0 y

colocando en el bit de peso inmediatamente inferior un 1, quedando inalterado el resto de los bits (0100…0).

Si la señal Vc fuese menor que Vi, esta será mayor que Vfondo/2 y el registro no modifica el bit de más peso,

pero coloca el bit de peso inmediatamente inferior a 1, dejando a 0 el resto de los bits (1100…0). Tanto en un caso

como en otro, se efectúa una nueva conversión D/A y luego se modifica el registro con el mismo criterio. El proceso se

repite n veces, siendo n el número de bits del registro de aproximaciones sucesivas, hasta alcanzar el bit de menos

peso (LSB).

En la figura se representan los valores que adoptarían los distintos bits del registro de aproximaciones

sucesivas (de 5 bits), para una cierta tensión de entrada Vi, así como la tensión de salida del conversor D/A. También

sobre dicha figura se indica el momento tSALIDA, para el cual el circuito de control dar vía libre a los buffers para entregar

a la salida la señal digitalizada.

Page 40: PROGRAMACI.N DE PLACAS DE CONTROL - … · Los puertos son las conexiones físicas de que dispone el ordenador para comunicarse ... Por estos canales el ordenador puede tanto enviar

Programación de placas de control

40

Las señales de ADC se gestionan de la siguiente manera. Si mantenemos en integrado

siempre seleccionado (Chip Select, CS = 0) debemos inicialmente ordenarle que comience la

conversión (provocando un flanco de subida en WR). Cuando termine el proceso de

aproximaciones sucesivas (esto ocurre en menos de 100 microsegundos después del flanco de

subida de WR), el ADC nos avisa poniendo su terminal de salida INTR a cero. En este

momento ya podemos ordenarle leer RD = 0, y en el bus de salida D0-D7 tendremos el valor

digital medido (el cuál desaparecerá poco después de revocar la orden de lectura poniendo RD

a 1), ver diagrama de tiempo en la Figura 15. La señal RD sirve para controlar el

funcionamiento del latch interno que el convertidor tiene en el bus de salida, si está a cero

tendremos permanentemente a la salida el valor digital fruto de la conversión. Por otro lado, si

las lecturas van a ser muy lentas comparadas con los 100 microsegundos, no necesitaremos

leer INTR para saber si ya se produjo la conversión. Cuando mantenemos CS y RD a nivel alto

simultáneamente el bus de salida permanece en estado de alta impedancia (triestado) lo cuál

es equivalente a un desconexión eléctrica del bus. El conversor puede trabajar en modo libre

(free-running mode) es decir sin señales externas que lo gobiernen, conectando INTR a la

entrada WR manteniendo CS = 0.

Page 41: PROGRAMACI.N DE PLACAS DE CONTROL - … · Los puertos son las conexiones físicas de que dispone el ordenador para comunicarse ... Por estos canales el ordenador puede tanto enviar

Programación de placas de control

41

La operación de lectura se realiza enviando un pulso de subida a la patilla de inicio de

conversión WR del convertidor mediante el bit C0 del puerto de control (ver diagrama de

tiempos Figura 15).

CALL CONTROL (0)

CALL PAUSA (T)

Page 42: PROGRAMACI.N DE PLACAS DE CONTROL - … · Los puertos son las conexiones físicas de que dispone el ordenador para comunicarse ... Por estos canales el ordenador puede tanto enviar

Programación de placas de control

42

CALL CONTROL (1)

CALL PAUSA (T)

Una vez que sabemos como leer los datos de salida del conversor se nos presenta el

problema de como introducir las 8 señales del bus de salida D0-D7 en el puerto de estado para

ser leídas, teniendo en cuenta que éste solo tiene 5 bits de entrada efectivos. Este problema lo

hemos resuelto ya en el apartado anterior mediante un multiplexor de 8 entradas a 4 salidas de

dos canales tal como el CI 74157. Este integrado multiplexa las 8 señales de 4 en 4 haciendo

uso de la pata de selección A/B. Cuando A/B = 0 deja paso a los 4 primeros datos mientras

que cuando A/B = 1, a los 4 restantes. Por tanto solo serán necesarios 4 de los 5 bits del

puerto de estado. En este caso seleccionaremos los bits E7 E6 E5 y E4. El bit restante E3

puede usarse cuando sea necesario para leer la señal INTR de fin de conversión. Dada la

inversión del bit E7 del registro de estado y el hecho de que no se utiliza todo el byte, se

deberá proceder a enmascarar los correspondientes bits según se indica.

Primeramente deshacemos la inversión del bit E7 del registro de estado.

E7 E6 E5 E4 E3 E2 E1 E0

XOR

1 0 0 0 0 0 0 0

| |

E7 E6 E5 E4 E3 E2 E1 E0

A = INP (&H379)

A% = A XOR 128

Seleccionamos los 4 últimos bits del registro. Para ello usaremos el operador booleano

AND:

E7 E6 E5 E4 E3 E2 E1 E0

AND

1 1 1 1 0 0 0 0

| |

Page 43: PROGRAMACI.N DE PLACAS DE CONTROL - … · Los puertos son las conexiones físicas de que dispone el ordenador para comunicarse ... Por estos canales el ordenador puede tanto enviar

Programación de placas de control

43

E7 E6 E5 E4 0 0 0 0

AA% = A% AND 240

Multiplexaremos primero los bits impares seleccionando cada uno de ellos mediante

multiplicación lógica del nibble superior del registro de estado con los bytes 16, 32, 64 y 128.

E7 E6 E5 E4 0 0 0 0

AND

0 0 0 1 0 0 0 0

| |

0 0 0 E4 0 0 0 0

A1 = (AA% AND 16)/16

Y así sucesivamente con los bits siguientes.

A3 = (AA% AND 32)/32

A5 = (AA% AND 64)/64

A7 = (AA% AND 128)/128

Seguidamente se da la orden de lectura del segundo cuarteto correspondiente a los

bits pares, A/B = 1, para lo cuál se usa el bit de control C1 mediante la instrucción CALL

CONTROL (2) y se realiza el mismo proceso de enmascaramiento descrito.

BB% = B% AND 240

BB% = B% AND 240

B0 = (BB% AND 16)/16

B2 = (BB% AND 32)/32

B4 = (BB% AND 64)/64

B6 = (BB% AND 128)/128

Seguidamente se convierte a decimal el byte total mediante la fórmula de conversión

correspondiente:

Page 44: PROGRAMACI.N DE PLACAS DE CONTROL - … · Los puertos son las conexiones físicas de que dispone el ordenador para comunicarse ... Por estos canales el ordenador puede tanto enviar

Programación de placas de control

44

A7 B6 A5 B4 A3 B2 A1 B0

ANALOGICO% = B0 ·1 + A1 ·2 + B2·4 + A3·8 + B4·16 + A5·32 + B6·64 + A7·128

El procedimiento completo es el siguiente:

REM****PROGRAMA DE LECTURAS ANALOGICAS DEL CONVERSOR ADC0804****

SUB LEEANALOG (T)

SHARED ANALOGICO% REM*********PULSO DE CONTROL // WR (C0) //INICIO DE CONVERSIÓN************************

REM*********************Y PUESTA A CERO DEL MULTIPLEXOR************

CALL CONTROL (0)

CALL PAUSA (T)

CALL CONTROL (1)

CALL PAUSA (T)

REM **************LECTURA DE BITS IMPARES**************

A = INP (&H379)

A% = A XOR 128

AA% = A% AND 240

A1 = (AA% AND 16)/16

A3 = (AA% AND 32)/32

A5 = (AA% AND 64)/64

A7 = (AA% AND 128)/128

REM *********PUESTA A UNO DEL MULTIPLEXOR**********

CALL CONTROL (2)

CALL PAUSA(T)

REM **************LECTURA DE BITS PARES******************

B = INP (&H379)

B% = B XOR 128

BB% = B% AND 240

B0 = (BB% AND 16)/16

B2 = (BB% AND 32)/32

B4 = (BB% AND 64)/64

B6 = (BB% AND 128)/128

REM *****************RESULTADO DE LA CONVERSION*********

ANALOGICO% = B0 ·1 + A1 ·2 + B2·4 + A3·8 + B4·16 + A5·32 + B6·64 + A7·128

END SUB

T representa la temporización entre pulsos. La sentencia SHARED ANALOGICO%

permite leer el valor de la variable ANALOGICO% fuera del procedimiento.

El circuito correspondiente se muestra en la Figura 15. El condensador en la entrada

analógica INT(+) (pin 6) filtra la señal de entrada consiguendo lecturas mas estables.

Page 45: PROGRAMACI.N DE PLACAS DE CONTROL - … · Los puertos son las conexiones físicas de que dispone el ordenador para comunicarse ... Por estos canales el ordenador puede tanto enviar

Programación de placas de control

45

El siguiente programa monitoriza en tiempo real los datos procedentes de un

potenciómetro. Para ello el programa lee continuamente el puerto de estado con el

procedimiento creado SUB LEEANALOG mediante un bucle. Al igual que en casos anteriores

se sale del bucle pulsando la tecla F1.

REM*****PROGRAMA DE LECTURA DE DATOS ANALÓGICOS***********

CLS

KEY(1) ON

ON KEY(1) GOSUB FIN

T = 10000

REM********************BUCLE DE LECTURA*******************

DO

CALL LEEANALOG (T)

LOCATE 10, 10

PRINT ANALOGICO%

LOOP

REM***********SUBRUTINA DE FINALIZACIÓN DE PROGRAMA********

FIN:

CLS

END

• AMPLIACIÓN DE CANALES.

El conversor ADC0804 posee un solo canal por el cuál recibe la tensión que va a ser

convertida en una señal digital. Esto es un inconveniente cuando lo que se desea es

monitorizar datos procedentes de diferentes sensores. Existen convertidores analógico digitales

tal como el ADC0808 que incorporan entre sus circuitos un multiplexor que amplía

(generalmente a 8) el número de canales. Mediante tres entradas de selección puede elegirse

el canal de entrada que se desee. Cuando el conversor no dispone de esta opción se puede

hacer uso de un multiplexor analógico conectado externamente al conversor. Debe quedar

claro que el multiplexor debe ser analógico y no digital ya que debe respetar en todo momento

la forma de la señal de entrada. El multiplexor analógico 74VHC4051 posee 8 canales con tres

entradas de selección que provee de 8 entradas analógicas al conversor ADC0804 según el

circuito que se muestra en la Figura 16. La selección del canal de entrada se realiza mediante

los tres primeros bits del puerto de datos D0, D1 y D2.

El siguiente programa lee consecutivamente los datos analógicos procedentes de 5

sensores conectados al multiplexor. Previamente debemos modificar ligeramente el

procedimiento SUB LEEANALOG para incluir la orden de selección de canal de lectura. Como

las entradas de selección están conectadas a los bits D0, D1 y D2 de puerto de datos debemos

Page 46: PROGRAMACI.N DE PLACAS DE CONTROL - … · Los puertos son las conexiones físicas de que dispone el ordenador para comunicarse ... Por estos canales el ordenador puede tanto enviar

Programación de placas de control

46

añadir la sentencia OUT &H378, CANAL, donde CANAL representa un número comprendido

entre 0 y 7.

REM*****PROCEDIMIENTO DE SELECCIÓN DE CANAL Y LECTURA*******

SUB LEEANALOG (CANAL, T)

SHARED ANALOGICO%

REM********SELECCIÓN DE CANAL ANALÓGICO********

OUT &H378, CANAL

.

.

.

.

.

el resto es igual

END SUB

REM********ESTE PROGRAMA MONITORIZA DATOS DE 5 CANALES*******

CLS

KEY(1) ON

ON KEY(1) GOSUB FIN

T = 50000

REM********BUCLE DE LECTURA****************************

DO

REM********BUCLE DE SELECCIÓN DE CANAL**********

FOR X = 0 TO 4

CALL LEEANALOG (X, T)

PRINT ANALOGICO%,

NEXT X

LOOP

REM*************SUBRUTINA DE FINALIZACIÓN************

FIN:

CLS

END

Page 47: PROGRAMACI.N DE PLACAS DE CONTROL - … · Los puertos son las conexiones físicas de que dispone el ordenador para comunicarse ... Por estos canales el ordenador puede tanto enviar

Programación de placas de control

47

Hay que decir que el mal ajuste del valor de temporización T, puede dar lugar a

lecturas erróneas.

• INTERFACE 8 x 8 x 8. 8 ENTRADAS DIGITALES 8 ENTRADAS ANALÓGICAS Y 8 SALIDAS DIGITALES.

Hasta ahora hemos estudiado de forma individual los circuitos correspondientes y los

programas de control para obtener 8 salidas digitales, 8 entradas digitales y 8 entradas

analógicas. En general será interesante diseñar un interface que incluya las tres opciones.

Pensemos por ejemplo en el control de una grúa. El eje de un potenciómetro solidario con el

eje de giro de la grúa nos da la posición del brazo (variable analógica), mientras que un final de

carrera nos informa de que la carga ha llegado al final del recorrido (variable digital). Es

necesario por tanto que el ordenador esté continuamente leyendo una entrada analógica y una

digital. Además, en función de esta lectura el ordenador puede activar o desactivar los motores

de giro de la grúa y de subida y bajada de la carga haciendo uso de las salidas. En definitiva

son necesarias las tres opciones para realizar el control. Esto se puede conseguir coordinando

los tres circuitos separados mediante las 4 líneas de control C0, C1, C2 y C3 y haciendo uso

del triestado de los integrados involucrados. La función de las líneas de control se describe a

continuación.

Línea C0: emite el pulso de subida de inicio de conversión WR al conversor analógico

digital ADC0804, por lo tanto sólo está activa cuando el ordenador está leyendo entradas

analógicas.

Linea C1: emite la señal de selección de canal del multiplexor 74157 (pin A/B).

Page 48: PROGRAMACI.N DE PLACAS DE CONTROL - … · Los puertos son las conexiones físicas de que dispone el ordenador para comunicarse ... Por estos canales el ordenador puede tanto enviar

Programación de placas de control

48

Línea C2: selecciona la lectura digital o analógica haciendo uso del triestado de los CI

74245 y ADC0804. Cuando el pin OE (output enable) del buffer 74245 está a uno se activa el

triestado actuando como si estuviera desconectado del circuito, mientras que cuando está a

cero realiza su función normal (estados alto ó bajo). Del mismo modo cuando las dos entradas

del conversor ADC0804, CS y RD están a uno activan el triestado (ver diagrama de tiempos),

mientras que cuando están a cero introducen al conversor dentro del circuito. Dado que las 8

líneas de salida del buffer 74245 y convertidor ADC0804 se unen para posteriormente atacar el

multiplexor 74157 ambos componentes no puede estar simultáneamente activados, por ello la

activación de uno supone la desactivación del otro. Esto se consigue mediante puertas

inversoras las cuales se implementan con puertas NAND 7400 según se indica en el esquema

de la Figura 17. Cuando la línea C2 esta a cero esta activado el triestado del buffer 74245 y

conectado el ADC0804. Cuando la línea C2 esta a uno ocurre lo contrario.

Línea C3: emite el pulso de subida a la señal de reloj CLK del latch octal 74374 que

permite el acceso de datos desde el puerto de datos. Hay que asegurar el bloqueo del latch

cuando se usan las líneas D0, D1 y D2 para seleccionar el canal analógico del multiplexor.

Los procedimientos vistos anteriormente deberán ser ligeramente modificados para

tener en cuenta esta selección particular de las líneas de control.

Page 49: PROGRAMACI.N DE PLACAS DE CONTROL - … · Los puertos son las conexiones físicas de que dispone el ordenador para comunicarse ... Por estos canales el ordenador puede tanto enviar

Programación de placas de control

49

Page 50: PROGRAMACI.N DE PLACAS DE CONTROL - … · Los puertos son las conexiones físicas de que dispone el ordenador para comunicarse ... Por estos canales el ordenador puede tanto enviar

Programación de placas de control

50

ANEXOS

Page 51: PROGRAMACI.N DE PLACAS DE CONTROL - … · Los puertos son las conexiones físicas de que dispone el ordenador para comunicarse ... Por estos canales el ordenador puede tanto enviar

Programación de placas de control

51

PROCEDIMIENTOS DE CONTROL DEL INTERFACE 8 SALIDAS X 8 ENTRADAS

DIGITALES X 8 ENTRADAS ANALÓGICAS

Page 52: PROGRAMACI.N DE PLACAS DE CONTROL - … · Los puertos son las conexiones físicas de que dispone el ordenador para comunicarse ... Por estos canales el ordenador puede tanto enviar

Programación de placas de control

52

• PROCEDIMIENTOS DE CONTROL DEL INTERFACE 8 SALIDAS X 8 ENTRADAS DIGITALES X 8 ENTRADAS ANALÓGICAS.

- PROCEDIMIENTO DE SALIDA DE DATOS.

REM**************PROCEDIMIENTO DE SALIDA DE DATOS*********************

SUB SALIDA(M7, M6, M5, M4, M3, M2, M1, M0)

SALIDA% = M0*1 OR M1*2 OR M2*4 OR M3*8 OR M4*16 OR M5*32 OR M6*64 OR M7*128

OUT &H378, SALIDA%

REM**********PULSO DE SUBIDA// CLK// AL LATCH 74374**************************

CALL CONTROL (0)

CALL PAUSA (T)

CALL CONTROL (8)

END SUB

Las sentencias CALL CONTROL (0) y CALL CONTROL (8) emiten el pulso de subida

que controla el acceso del dato SALIDA% al CI 74374.

- PROCEDIMIENTO DE LECTURA DE ENTRADAS DIGITALES.

REM****PROGRAMA DE LECTURA DE 8 ENTRADAS DIGITALES****

REM****************COMO LÍNEAS INDEPENDIENTES******************

SUB CLEEDIGITAL (T)

SHARED DIGITAL%, E0%, E1%, E2%, E3%, E4%, E5%, E6%, E7%

REM**************SELECCIÓN DE LECTURA DIGITAL// C2//************

REM*****Y PUESTA A CERO DEL MULTIPLEXOR 74157 //A/B//************

CALL CONTROL (4)

CALL PAUSA (T)

REM **************LECTURA DE BITS IMPARES**************

A = INP (&H379)

A% = A XOR 127

AA% = A% AND 240

A1 = (AA% AND 16)/16

A3 = (AA% AND 32)/32

A5 = (AA% AND 64)/64

A7 = (AA% AND 128)/128

REM *********PUESTA A UNO DEL MULTIPLEXOR**********

CALL CONTROL (6)

CALL PAUSA (T)

REM **************LECTURA DE BITS PARES******************

B = INP (&H379)

B% = B XOR 127

AA% = B% AND 240

Page 53: PROGRAMACI.N DE PLACAS DE CONTROL - … · Los puertos son las conexiones físicas de que dispone el ordenador para comunicarse ... Por estos canales el ordenador puede tanto enviar

Programación de placas de control

53

B0 = (BB% AND 16)/16

B2 = (BB% AND 32)/32

B4 = (BB% AND 64)/64

B6 = (BB% AND 128)/128

REM *****************RESULTADO DE LA CONVERSION*********

SUMA% = B0 ·1 + A1 ·2 + B2·4 + A3·8 + B4·16 + A5·32 + B6·64 + A7·128

DIGITAL% = SUMA% XOR 255

E0% = DIGITAL% AND 1

E1% = (DIGITAL% AND 2)/2

E2% = (DIGITAL% AND 4)/4

E3% = (DIGITAL% AND 8)/8

E4% = (DIGITAL% AND 16)/16

E5% = (DIGITAL% AND 32)/32

E6% = (DIGITAL% AND 64)/64

E7% = (DIGITAL% AND 128)/128

END SUB

Dado que la selección de lectura Digital/Analógica se realiza con el bit C2 (nivel alto) y

la señal de selección de canal A/B del multiplexor 74157 con el bit C1, las correspondientes

señales de control del puerto de datos serán 0100 y 0110 que se corresponden con los valores

decimales 4 y 6.

- PROCEDIMIENTO DE LECTURAS ANALÓGICAS.

REM****PROGRAMA DE LECTURAS ANALOGICAS DEL CONVERSOR ADC0804****

SUB LEEANALOG (CANAL, T)

SHARED ANALOGICO%

REM***SELECCIÓN DE CANAL ANALÓGICO Y DE LECTURA ANALÓGICA //C2//*****

CALL CONTROL (0)

OUT &H378, CANAL

CALL CONTROL (0)

REM*********PULSO DE CONTROL // WR (C0) //INICIO DE CONVERSIÓN************

CALL CONTROL (0)

CALL PAUSA (T)

CALL CONTROL (1)

CALL PAUSA (T)

REM **************LECTURA DE BITS IMPARES**************

A = INP (&H379)

A% = A XOR 127

AA% = A% AND 240

A1 = (AA% AND 16)/16

A3 = (AA% AND 32)/32

A5 = (AA% AND 64)/64

Page 54: PROGRAMACI.N DE PLACAS DE CONTROL - … · Los puertos son las conexiones físicas de que dispone el ordenador para comunicarse ... Por estos canales el ordenador puede tanto enviar

Programación de placas de control

54

A7 = (AA% AND 128)/128

REM *********PUESTA A UNO DEL MULTIPLEXOR**********

CALL CONTROL (2)

CALL PAUSA(T)

REM **************LECTURA DE BITS PARES******************

B = INP (&H379)

B% = B XOR 127

AA% = B% AND 240

B0 = (BB% AND 16)/16

B2 = (BB% AND 32)/32

B4 = (BB% AND 64)/64

B6 = (BB% AND 128)/128

REM *****************RESULTADO DE LA CONVERSION*********

SUMA% = B0 ·1 + A1 ·2 + B2·4 + A3·8 + B4·16 + A5·32 + B6·64 + A7·128

ANALOGICO% = SUMA% XOR 255

END SUB

La sentencia CALL CONTROL(0) después de la instrucción de selección de canal OUT

&H378, CANAL, asegura que el dato representado por la variable CANAL no acceda al latch

74374 lo cuál falsería las salidas del interface. Las señales de control involucradas en este

procedimiento son C0 (WR), C1 (A/B) y C2 (nivel bajo) para la selección de lectura analógica.

Las señales emitidas por el puerto de control son 0000, 0001, 0010 que se corresponden con

los valores decimales, 0, 1 y 2.

- PROGRAMA DE CHEQUEO DEL INTERFACE 8 x 8 x 8. “INTERFA.BAS”

A continuación se muestra el código fuente de un programa que chequea el

funcionamiento del interface descrito.

REM *********PROGRAMA DE VERIFICACIÓN DEL INTERFACE 8X8X8**************

REM*****************************PROGRAMA PRINCIPAL*********************************

REM ************************VALOR DE TEMPORIZACIÓN “T” ****************************

T = 10

REM****BUSQUEDA DE LAS DIRECCIONES DE LOS REGISTROS******

DEF SEG = 0

LPT1 = PEEK(&H408) + 256*PEEK(&H409)

GOSUB MENU

MENU:

CLS

KEY(1) OFF

LOCATE 4, 10: PRINT” *************CHEQUEO DEL INTERFACE********

LOCATE 6, 15: PRINT ”Temporización.................................................1”

Page 55: PROGRAMACI.N DE PLACAS DE CONTROL - … · Los puertos son las conexiones físicas de que dispone el ordenador para comunicarse ... Por estos canales el ordenador puede tanto enviar

Programación de placas de control

55

LOCATE 8, 15: PRINT ”Manual.............................................................2”

LOCATE 10, 15: PRINT ”Entradas digitales............................................3”

LOCATE 12, 15: PRINT ”Entradas analógicas........................................4”

LOCATE 14, 15: PRINT ”Salidas.............................................................5”

LOCATE 16, 15: PRINT ”Salir..................................................................6”

LOCATE 18, 15: INPUT “Selecciona una opción”; OPCION

IF OPCION = 1 THEN GOSUB TEMP

IF OPCION = 2 THEN GOSUB MANUAL

IF OPCION = 3 THEN GOSUB DIGITAL

IF OPCION = 4 THEN GOSUB ANALOGICO

IF OPCION = 5 THEN GOSUB SALIDAS

IF OPCION = 6 THEN GOSUB FIN

END

REM***********************SUBRUTINAS Y PROCEDIMIENTOS******************************

REM***************SUBRUTINA DE CAMBIO DE VALOR DE TEMPORIZACIÓN**********

TEMP:

CLS

PRINT” EL VALOR ACTUAL DE TEMPORIZACIÓN ES T = 10

INPUT”¿DESEA CAMBIAR ESTE VALOR POR DEFECTO (SI/NO)”; OPCION$

IF OPCION$ = “NO” THEN GOSUB MENU

CLS

INPUT”INTRODUCE EL NUEVO VALOR DE TEMPORIZACIÓN (0-10000)”; T

GOSUB MENU

END

REM*********************SUBRUTINA DEL MANUAL DE PROGRAMA***********************

SUB MANUAL:

PRINT “CONECTAR EL INTERFACE AL PUERTO PARALELO, ARRANCAR EL

PRINT “ORDENADOR Y CONECTAR LA FUENTE DE ALIMENTACIÓN.”

PRINT” PARA CHEQUEAR LAS ENTRADAS DIGITALES/ PULSAR LA TECLA 2. EL”

PRINT” ORDENADOR VISUALIZA EL VALOR LEIDO QUE DEBE SER CERO.”

PRINT” INTRODUCIR UNA SEÑAL DE + 5V EN CADA UNA DE LAS ENTRADAS.”

PRINT” LOS VALORES LEIDOS PARA CADA UNA DE LAS ENTRADAS DEBEN SER,”

PRINT” 1, 2, 4, 8, 16, 32, 64 Y 128. EL VALOR VISUALIZADO NO DEBE SER AFECTADO

PRINT” POR LA ENTRADA DE UNA SEÑAL ANALÓGICA PROCEDENTE POR EJEMPLO

PRINT” DE UN POTENCIÓMETRO ”

PRINT” PARA VERIFICAR LAS ENTRADAS ANALÓGICAS/ PULSAR LA TECLA 3.”

PRINT” SELECCIONAR EL CANAL Y CONECTAR ALLÍ UN POTENCIÓMETRO”

PRINT” UN TERMINAL A LA TENSIÓN DE +5V, OTRO A MASA Y EL TERMINAL”

PRINT” CENTRAL A LA ENTRADA DEL CONVERSOR.”

PRINT” EL ORDENADOR DEBERÁ VISUALIZAR UN VALOR ENTRE 0-255 AL GIRAR

PRINT” EL EJE DEL POTENCIÓMETRO SIN QUE SE ENCIENDAN LOS LEDS DE”

PRINT “SALIDA. SI SE INTRODUCE UNA SEÑAL EN ALGUNA DE LAS ENTRADAS

PRINT “DIGITALES, ESTA NO DEBE AFECTAR EL VALOR VISUALIZADO.

Page 56: PROGRAMACI.N DE PLACAS DE CONTROL - … · Los puertos son las conexiones físicas de que dispone el ordenador para comunicarse ... Por estos canales el ordenador puede tanto enviar

Programación de placas de control

56

PRINT”

PRINT” PARA CHEQUEAR LAS SALIDAS/PULSAR LA TECLA 4. INTRODUCIR UN”

PRINT” VALOR DE SALIDA ENTRE 0-255. EL VALOR ELEGIDO DEBE”

PRINT “ MANIFESTARSE EN LOS LEDS DE SALIDA”

PRINT”CAMBIAR EL VALOR DE TEMPORIZACIÓN SOLO SI LA LECTURA DE LAS

PRINT”ENTRADAS ES DEMASIADO RÁPIDA O LENTA.

PRINT””

PRINT” PULSA UNA TECLA PARA SALIR”

WHILE NOT INSTAT

WEND

GOTO MENU

END

REM*********************SUBRUTINA DE ENTRADAS DIGITALES**************************

DIGITAL:

CLS

LOCATE 23, 20:PRINT “PULSA F1 PARA SALIR

DO

KEY(1) ON

ON KEY(1) ON GOSUB MENU

CALL LEEDIGITAL(T)

LOCATE 10, 10: PRINT DIGITAL%

LOOP

END

REM***********************PROCEDIMIENTO DE LECTURA DIGITAL *********************

SUB LEEDIGITAL (T)

SHARED LPT1, DIGITAL%

REM**************SELECCIÓN DE LECTURA DIGITAL// C2//************

REM*****Y PUESTA A CERO DEL MULTIPLEXOR 74157 //A/B//************

CALL CONTROL (4)

CALL PAUSA (T)

REM **************LECTURA DE BITS IMPARES**************

A = INP (LPT1+1)

A% = A XOR 127

AA% = A% AND 240

A1 = (AA% AND 16)/16

A3 = (AA% AND 32)/32

A5 = (AA% AND 64)/64

A7 = (AA% AND 128)/128

REM *********PUESTA A UNO DEL MULTIPLEXOR**********

CALL CONTROL (6)

CALL PAUSA (T)

REM **************LECTURA DE BITS PARES******************

B = INP (LPT1 + 1)

B% = B XOR 127

Page 57: PROGRAMACI.N DE PLACAS DE CONTROL - … · Los puertos son las conexiones físicas de que dispone el ordenador para comunicarse ... Por estos canales el ordenador puede tanto enviar

Programación de placas de control

57

AA% = B% AND 240

B0 = (BB% AND 16)/16

B2 = (BB% AND 32)/32

B4 = (BB% AND 64)/64

B6 = (BB% AND 128)/128

REM *****************RESULTADO DE LA CONVERSION*********

SUMA% = B0 ·1 + A1 ·2 + B2·4 + A3·8 + B4·16 + A5·32 + B6·64 + A7·128

DIGITAL% = SUMA% XOR 255

END SUB

REM*********************SUBRUTINA DE ENTRADAS ANALÓGICAS**************************

ANALOGICO:

CLS

INPUT “INTRODUCE CANAL(1-8)?”; CANAL

CLS

LOCATE 23, 20:PRINT “PULSA F1 PARA SALIR

DO

KEY(1) ON

ON KEY(1) ON GOSUB MENU

CALL LEEANALOG (CANAL, T)

LOCATE 10, 10: PRINT ANALOGICO%

LOOP

END

REM**********PROCEDIMIENTO DE LECTURAS ANALOGICAS// ADC0804 //**************

SUB LEEANALOG (CANAL, T)

SHARED LPT1, ANALOGICO%

REM***SELECCIÓN DE CANAL ANALÓGICO Y DE LECTURA ANALÓGICA //C2//*****

CALL CONTROL (0)

OUT LPT1, CANAL

CALL CONTROL (0)

REM*********PULSO DE CONTROL // WR (C0) //INICIO DE CONVERSIÓN************

CALL CONTROL (0)

CALL PAUSA (T)

CALL CONTROL (1)

CALL PAUSA (T)

REM **************LECTURA DE BITS IMPARES**************

A = INP (LPT1 + 1)

A% = A XOR 127

AA% = A% AND 240

A1 = (AA% AND 16)/16

A3 = (AA% AND 32)/32

A5 = (AA% AND 64)/64

A7 = (AA% AND 128)/128

REM *********PUESTA A UNO DEL MULTIPLEXOR**********

CALL CONTROL (2)

Page 58: PROGRAMACI.N DE PLACAS DE CONTROL - … · Los puertos son las conexiones físicas de que dispone el ordenador para comunicarse ... Por estos canales el ordenador puede tanto enviar

Programación de placas de control

58

CALL PAUSA(T)

REM **************LECTURA DE BITS PARES******************

B = INP (&H379)

B% = B XOR 127

BB% = B% AND 240

B0 = (BB% AND 16)/16

B2 = (BB% AND 32)/32

B4 = (BB% AND 64)/64

B6 = (BB% AND 128)/128

REM *****************RESULTADO DE LA CONVERSION*********

SUMA% = B0 ·1 + A1 ·2 + B2·4 + A3·8 + B4·16 + A5·32 + B6·64 + A7·128

ANALOGICO% = SUMA% XOR 255

END SUB

REM****************************SUBRUTINA DE SALIDAS************************************

SALIDAS:

CLS

INPUT “INTRODUCE EL BYTE DE SALIDA (0-255)?”; BYTE%

OUT LPT1, BYTE%

REM **********************PULSO DE SUBIDA AL LATCH 74374*****************************

CALL CONTROL(0)

CALL PAUSA(T)

CALL CONTROL(8)

GOSUB MENU

END

REM********PROCEDIMIENTO DE ENVÍO DE DATOS AL PUERTO DE CONTROL*********

SUB CONTROL (DATO)

SHARED LPT1

CONTROL% = DATO XOR 11

OUT LPT1 + 2, CONTROL%

END SUB

REM**********************PROCEDIMIENTO DE TEMPORIZACIÓN****************************

SUB PAUSA (T)

FOR X= 0 TO T

NEXT X

END SUB

REM********************SUBRUTINA DE FINALIZACIÓN DE PROGRAMA*********************

FIN:

CLS

OUT LPT1, 0

CALL CONTROL(0)

CALL PAUSA(T)

CALL CONTROL(8)

END

Page 59: PROGRAMACI.N DE PLACAS DE CONTROL - … · Los puertos son las conexiones físicas de que dispone el ordenador para comunicarse ... Por estos canales el ordenador puede tanto enviar

Programación de placas de control

59

Page 60: PROGRAMACI.N DE PLACAS DE CONTROL - … · Los puertos son las conexiones físicas de que dispone el ordenador para comunicarse ... Por estos canales el ordenador puede tanto enviar

Programación de placas de control

60

ESTRUCTURA DEL PUERTO PARALELO

Page 61: PROGRAMACI.N DE PLACAS DE CONTROL - … · Los puertos son las conexiones físicas de que dispone el ordenador para comunicarse ... Por estos canales el ordenador puede tanto enviar

Programación de placas de control

61

• ESTRUCTURA DEL PUERTO PARALELO. El puerto paralelo consta en realidad de cinco puertos, dos de salida y tres de entrada.

El puerto de datos consta de un puerto de salida y otro de entrada (en el puerto IBM estandar

la entrada esta desactivada), al igual que el puerto de control mientras que el puerto de estado

posee un solo puerto de entrada (ver Figura 1). Los puertos de datos y de control tienen

asociados dos registros con la misma dirección de memoria, uno de escritura para la salida de

datos y otro de lectura denominado de realimentación. Al registro de escritura se accede con la

instrucción OUT de BASIC y al de realimentación con la instrucción INP.

El puerto paralelo consta de los siguientes componentes (ver Figura 2):

1- Latch octal triestado 74LS374 de escritura para manejar la salida del registro de datos.

2- Un buffer octal triestado 74LS244 de lectura para controlar la retoalimentación (entrada) del

registro de datos.

3- Un buffer de lectura para manejar la entrada del registro de estado.

4- Un hex-latch 74LS174 de escritura para manejar la salida del registro de control.

5- Un buffer de lectura para controlar la retroalimentación (entrada) del registro de control.

6- Un Multiplexor 74LS155 para direccionar los puertos del bus ISA.

7- 1 driver direccional 74LS245 para conectar con el bus ISA.

El chip TTL de escritura del registro de datos 74LS374 tiene sus pines de salida en

“totem pole” consistentes en dos transistores conectados emisor con colector entre +5V y masa

(ver Figura 3). La señal de salida se toma del punto de conexión entre ellos. Cuando uno de los

dos transistores conduce (saturación) en otro esta en corte. Cuando el transistor H esta en

saturación el circuito es capaz de proporcionar (source) un máximo de corriente de 2.6 mA a

cualquier carga conectada entre la salida y masa. Por el contrario, cuando el transistor L

conduce, el chip es capaz de drenar (sink) un máximo de 24 mA corriente de la carga

conectada entre +5V y la salida. Como vemos la capacidad de drenar corriente es mayor que la

de emanar. Es importante no superar estos límites cuando se conecta una carga en los pines

de salida para no dañar el chip, por ello se recomienda no intentar cortocircuitar estas líneas a

masa. Cuando se desea mejorar la capacidad de manejo de corriente del puerto de salida de

datos para gobernar un determinado dispositivo, se utiliza un circuito buffer. Las puertas buffer

no realizan ninguna función lógica, es decir el nivel lógico que introducimos por la entrada lo

obtenemos a la salida. Su única función consiste en suministrar más corriente y así poder por

ejemplo atacar a un mayor número de puertas lógicas. A parte de los estado alto y bajo que

proporciona la salida del 74LS374, se distingue un tercer estado (denominado tri-estado) en el

cual ninguno de los transistores conduce. Este es un estado alta impedancia que puede

equiparase a desconectar eléctricamente los pines de salida del circuito y es de utilidad cuando

varios circuitos comparten el mismo bus. El registro de realimentación de datos 74LS244 tenía

originalmente (configuración IBM estandar) solo fines diagnósticos, esto es, solo podía leer la

Page 62: PROGRAMACI.N DE PLACAS DE CONTROL - … · Los puertos son las conexiones físicas de que dispone el ordenador para comunicarse ... Por estos canales el ordenador puede tanto enviar

Programación de placas de control

62

salida, si en algún momento los valores de los registros de salida y realimentación eran no

coincidentes se producía un error. Por ello originalmente el registro de datos solo podía

funcionar como salida y no como entrada (Figura 1).

Por otro lado los pines de salida del chip TTL del registro de control 74LS174 tienen

una estructura en “colector abierto” (open collector). Es decir las salidas están configuradas con

un solo transistor de salida con el emisor conectado a masa y el colector flotante, es decir que

entre el colector y +5V puede conectarse la resistencia de carga que se desee. En este caso

las resistencias por defecto son de 4.7 K. Cuando el transistor conduce, la salida esta en

estado bajo, derivando la corriente a masa, mientras que cuando esta en corte la salida está

en estado alto (Figura 3). En esta última situación si la salida se cortocircuita a masa la salida

se pone a nivel bajo pudiendo ser leída por el registro de realimentación (Figura 1). Esto hace

que puedan ser leídas señales externas y por tanto funcionar como entrada. Por ello, para usar

el puerto de control como entrada se programa previamente colocando en el registro de

escritura el dato correspondiente que ponga las salidas a nivel alto.

• PUERTOS BIDIRECCIONALES.

Desde la introducción del PC al mercado, el puerto paralelo ha sufrido varias

modificaciones para hacerlo más veloz. Ya que el puerto original era unidireccional, se creó el

puerto bidireccional. El puerto bidireccional fue introducido con el PS/2 compatible. Este

permite una comunicación de 8 bits en ambas direcciones en el puerto de datos. Algo

interesante de notar es que el puerto original tenía la posibilidad de ser bidireccional realizando

una conexión entre dos pines de un componente electrónico que venía incluido en éste. (Dicho

de otro modo, el puerto original es bidireccional en diseño básico, pero no en el diseño

operacional). Finalmente se han creado el Enhanced Parallel Port (EPP) y el Extended

Capability Port (ECP). Estos dos últimos son al puerto estándar como el Pentium al 286,

además de ser bidireccionales. Inicialmente el puerto paralelo se utilizó para la comunicación

con impresoras. Actualmente se utiliza también para manejar otros periféricos como CD ROM,

cintas de copia de respaldo, discos duros, tarjetas de red, protectores de copia, scanners, etc.

En la actualidad se conocen cuatro tipos de puerto paralelo:

- Puerto paralelo estándar (Standart Parallel Port SPP) .

- Puerto Paralelo PS/2 (bidireccional) .

- Enhanced Parallel Port (EPP). Puerto paralelo ampliado.

- Extended Capability Port (ECP). Puerto paralelo de capacidad extendida.

Page 63: PROGRAMACI.N DE PLACAS DE CONTROL - … · Los puertos son las conexiones físicas de que dispone el ordenador para comunicarse ... Por estos canales el ordenador puede tanto enviar

Programación de placas de control

63

En la siguiente tabla se muestra información acerca de cada uno de esto puertos.

SPP PS/2 EPP ECP

Fecha de introducción 1981 1987 1994 1994

Fabricante IBM IBM Intel, Xircom y

Zenith Data

Systems

Hewlet Packard

y Microsoft.

Bidireccional No Si Si Si

Velocidad 150 Kbyte/seg. 150 Kbyte/seg. 2 Mbytes/seg 2 Mbytes/seg

El puerto bidireccional es posible usando un bit mas en el registro de control, el C5,

para controlar el triestado del chip (latch octal 74LS374) de escritura que maneja la salida de

datos (Figura 2). Cuando C5 es puesto a “0” el puerto se comporta como un puerto estandar

(triestado inhabilitado), sin embargo cuando es puesto a “1” el chip de salida de datos esta en

estado triestado. Se denomina triestado a la posibilidad de ciertos integrados de tener, a parte

de los estados normales alto y bajo, un tercer estado en su salida. Este es un estado de alta

impedancia, que básicamente actúa desconectando eléctricamente el chip del circuito. Esto

permite al registro de realimentación leer correctamente las señales externas aplicadas al

74LS244, comportándose como un puerto de entrada. Hay que decir que el puerto IBM original

tenía todo lo necesario para ser bidireccional es decir poseía además del 74LS374 para la

salida de datos un chip buffer 74LS244 para la entrada de señales. Sin embargo la señal

enable que habilitaba el triestado del 74LS374 estaba puesta a cero. En un puerto estandar el

registro de control es gestionado por un hex-lach 74LS174 de los cuales solo utiliza 4 bits, el

C0, C1, C2 y C3. El C4 se usa para activar la interrupción del puerto y el C5 (pin 15) esta

desconectado. Para convertir un puerto estandar en bidireccional solo tenemos que

desconectar de masa el pin 1 del 74LS374 (enable) y conectarla al pin 15 del 74LS244 (Figura

2). Una vez hecho esto para usar el puerto como bidireccional debemos asegurarnos que el

triestado esta activado poniendo el bit C5 a 1.

• BUSQUEDA DE LAS DIRECCIONES DE LOS REGISTROS.

Podemos considerar a la memoria del ordenador como un edificio de viviendas de 256

plantas de altura y que en cada planta hay 256 viviendas independientes, por tanto hay 65536

viviendas. Cada vivienda tiene asignada una dirección de acuerdo con el piso en el que se

encuentra y su posición dentro de dicha planta. Numerando cada una de las plantas de 0 a 255

y cada uno de las viviendas de cada piso de 0 a 255 es posible localizar cualquier dirección

mediante la siguiente fórmula, entendiendo por dirección una expresión numérica dentro del

intervalo de 0 a 65535:

(Número de piso x 256) + número de la puerta

Page 64: PROGRAMACI.N DE PLACAS DE CONTROL - … · Los puertos son las conexiones físicas de que dispone el ordenador para comunicarse ... Por estos canales el ordenador puede tanto enviar

Programación de placas de control

64

Por ejemplo, el piso 10 puerta 54 tiene la dirección (10 x 256) + 54 = 2614. Esta es la

forma en la que el ordenador establece el direccionamiento de las 65536 direcciones de

memoria. El ordenador utiliza dos bytes (8 bits) de memoria (2 registros) para manejar una

dirección. El primero almacena la parte menos significativa de la dirección (en este caso el

número 54) y en la siguiente consecutiva la parte más significativa, es decir lo hace al revés.

número de la puerta + (Número de piso x 256)

Con la instrucción PEEK del BASIC podemos ver el contenido de cualquier registro de

memoria. Ahora bien como sabemos que el ordenador almacena las direcciones base

(registro de datos), de cada uno de los puertos a partir de la dirección &H408,

consecutivamente, sabemos que la dirección del registro de datos de LPT1 estará en las

direcciones &H408 y &H409, las de LPT2 en &H40A y &H40B y las de LPT3 en &H40C y

&H40D. Ahora solo queda leer los registros correspondientes a estas direcciones y obtener la

dirección buscada de la siguiente forma:

LPT1 = PEEK(&H408) + 256* PEEK(&H409)

LPT2 = PEEK(&H40A) + 256* PEEK(&H40B)

LPT3 = PEEK(&H40C) + 256* PEEK(&H40D)

es decir, en el primer caso el número de la puerta estará almacenado en el registro de memoria

de dirección &H408 y el número de piso en &H409.

Page 65: PROGRAMACI.N DE PLACAS DE CONTROL - … · Los puertos son las conexiones físicas de que dispone el ordenador para comunicarse ... Por estos canales el ordenador puede tanto enviar

Programación de placas de control

65

Page 66: PROGRAMACI.N DE PLACAS DE CONTROL - … · Los puertos son las conexiones físicas de que dispone el ordenador para comunicarse ... Por estos canales el ordenador puede tanto enviar

Programación de placas de control

66

Page 67: PROGRAMACI.N DE PLACAS DE CONTROL - … · Los puertos son las conexiones físicas de que dispone el ordenador para comunicarse ... Por estos canales el ordenador puede tanto enviar

Programación de placas de control

67

Page 68: PROGRAMACI.N DE PLACAS DE CONTROL - … · Los puertos son las conexiones físicas de que dispone el ordenador para comunicarse ... Por estos canales el ordenador puede tanto enviar

Programación de placas de control

68

PUERTAS ÓPTICAS

Page 69: PROGRAMACI.N DE PLACAS DE CONTROL - … · Los puertos son las conexiones físicas de que dispone el ordenador para comunicarse ... Por estos canales el ordenador puede tanto enviar

Programación de placas de control

69

• PUERTAS ÓPTICAS.

Cuando una señal eléctrica externa entra en el puerto de estado es capaz de alterar el

valor del registro correspondiente haciendo posible que el ordenador la detecte. Las puertas

ópticas como veremos a continuación generan una tensión de salida del tipo todo o nada que

puede hacerse llegar al puerto de estado. Estas son de gran versatilidad encontrando gran

aplicación como finales de carrera, contaje de eventos, encorders, estudio de movimientos

etc...

Los componentes fundamentales de una puerta óptica son un fototransistor y un diodo

emisor de radiación infrarroja. El fototransistor cuando está convenientemente polarizado

conduce corriente al captar la radiación infrarroja procedente del diodo, mientras que cuando

no percibe radiación (por ejemplo interponiendo un objeto opaco entre ambos componentes)

permanece en bloqueo. En la Figura se muestra el circuito correspondiente. La salida de la

báscula de Schimtt (pin 2) toma un nivel alto o bajo en función de si existe bloqueo o no de luz

entre el fototransistor y el diodo. La corriente que deja pasar el fototransistor se convierte en

tensión al circular por la resistencia R1. La tensión en R1 polariza la base del transistor Q1 y la

tensión de colector-emisor de Q1 polariza a su vez la base del transistor Q2 que regula el paso

de corriente a través de R3. Por último, la caída de tensión a través de R3 ataca la entrada del

CI 74LS14. El CI 7414 es una báscula de Schimtt que actúa como acondicionador de señal

regenerando niveles de señal poco diferenciados o degenerados. Es decir, a partir de un

determinado umbral asegura niveles de tensión alto y bajo nítidos.

Cuando no existe bloqueo Q1 entra en saturación y su tensión colector-emisor

disminuye tanto que no es capaz de polarizar la base de Q2. En estas condiciones Q2 no

conduce, la tensión en R3 (pin 1 de la báscula) es cero y por tanto su salida (pin 2 ) esta a nivel

alto ya que ésta actúa además como puerta inversora. Cuando existe bloqueo entre el

fototransistor y el diodo no hay paso de corriente a través de R1 y por tanto la tensión de base

de Q1 es cero entrando en corte. Esto propicia un aumento en la tensión colector-emisor de Q1

que satura Q2. El paso de corriente a través de R3 pone a nivel alto la entrada de la báscula y

por tanto un nivel bajo a la salida.

El diodo y el fototransistor suelen encapsularse en un pieza en forma de U en la que se

encuentran enfrentados (ver Figura). La profundidad y anchura de la ranura se adecuan a la

aplicación a la que se destine. Este tipo de puertas pueden adquirirse en el mercado a un

precio asequible. Si se desea puede fabricarse la puerta a partir del diodo y el fototransistor, en

este caso deberá tenerse encuentra la polaridad de los mismos que es opuesta tal y como se

indica en la figura.

Page 70: PROGRAMACI.N DE PLACAS DE CONTROL - … · Los puertos son las conexiones físicas de que dispone el ordenador para comunicarse ... Por estos canales el ordenador puede tanto enviar

Programación de placas de control

70

Page 71: PROGRAMACI.N DE PLACAS DE CONTROL - … · Los puertos son las conexiones físicas de que dispone el ordenador para comunicarse ... Por estos canales el ordenador puede tanto enviar

Programación de placas de control

71

CONTROL DE MOTORES DE CC

Page 72: PROGRAMACI.N DE PLACAS DE CONTROL - … · Los puertos son las conexiones físicas de que dispone el ordenador para comunicarse ... Por estos canales el ordenador puede tanto enviar

Programación de placas de control

72

• CONTROL DE UN MOTOR DE CC MEDIANTE LAS SEÑALES DEL PUERTO DE DATOS.

El gobierno de un motor de cc puede realizarse de forma sencilla excitando

adecuadamente los relés del circuito de salida del interface. En la siguiente figura se indica el

circuito de gobierno de un motor de cc en la como se puede ver solo son necesarios dos relés,

uno de ellos bipolar (6 contactos) y otro simple (3 contactos). Para realizar el cambio del

sentido de giro siempre será necesario un relé bipolar o dos relés simples en su defecto. Sin

embargo, para que sea posible detener el motor cualquiera que sea el estado del relé bipolar,

será necesario colocar un relé adicional que corte la alimentación al motor. En la figura se

observan los posibles estados del motor para los diferentes estados de los dos relés.

Obsérvese que este tipo de control no contempla el gobierno de la velocidad, la cuál estará

dada por la relación de transmisión del sistema de engranajes de salida y el voltaje del motor.

El siguiente programa establece una secuencia de movimientos del motor que se repite

indefinidamente hasta que se pulsa la tecla F1. Para la salida de señales a los relés se utiliza el

procedimiento creado SUB SALIDAS (M7, M6, M5, M4 M3, M2 M1, M0), en donde las variables

MX señalan el estado alto o bajo de los 8 relés de salida. El procedimiento SUB ESPERA

(SEGUNDOS), detiene la ejecución del programa durante un tiempo en segundos igual al que

se indica en el argumento SEGUNDOS, siendo éste un valor entero. Este procedimiento utiliza

el reloj interno del ordenador el cuál es invocado mediante la sentencia TIMER. Al llamar al

procedimiento la variable “To” retiene la parte entera en segundos INT(TIMER) del valor del

tiempo actual inmediatamente después de la llamada. Seguidamente mediante un bucle

DO/LOOP el programa asigna continuamente a la variable “Tf” la parte entera en segundos del

valor del tiempo actual. Cuando la diferencia entre este valor y el de “To” es igual al valor dado

por el argumento SEGUNDOS se efectúa la salida del bucle mediante la sentencia EXIT LOOP

y terminando la subrutina.

Page 73: PROGRAMACI.N DE PLACAS DE CONTROL - … · Los puertos son las conexiones físicas de que dispone el ordenador para comunicarse ... Por estos canales el ordenador puede tanto enviar

Programación de placas de control

73

REM***************CONTROL DE UN MOTOR DE CC***********************

REM******************PROGRAMA PRINCIPAL*******************************

KEY(1) ON

DO

ON KEY(1) GOSUB FIN

CALL SALIDA (0,0,0,0,0,0,0,0,1)

CALL ESPERA(5)

CALL SALIDA (0,0,0,0,0,0,0,0,0)

CALL ESPERA(10)

CALL SALIDA (0,0,0,0,0,0,0,1,1)

CALL ESPERA(2)

LOOP

END

REM********************SUBRUTINAS Y PRODEDIMIENTOS*********************

Page 74: PROGRAMACI.N DE PLACAS DE CONTROL - … · Los puertos son las conexiones físicas de que dispone el ordenador para comunicarse ... Por estos canales el ordenador puede tanto enviar

Programación de placas de control

74

REM**************PROCEDIMIENTO DE SALIDA DE DATOS********************* SUB SALIDA(M7, M6, M5, M4, M3, M2, M1, M0)

SALIDA% = M0*1 OR M1*2 OR M2*4 OR M3*8 OR M4*16 OR M5*32 OR M6*64 OR M7*128

OUT &H378, SALIDA%

END SUB

REM***********************PROCEDIMIENTO DE ESPERA********************************

SUB ESPERA(SEGUNDOS)

To = INT(TIMER)

DO

Tf =INT(TIMER)

IF Tf – To = SEGUNDOS THEN EXIT LOOP

LOOP

END SUB

REM ****************SUBRUTINA DE TÉRMINO DEL PROGRAMA************************

FIN:

OUT &H378, 0

END

El programa ordena al motor moverse en un sentido durante 5 segundos, lo detiene

durante 10 segundos y lo hace girar en sentido contrario durante 2 segundos para volver a

empezar la secuencia. Esto lo hace indefinidamente hasta que se pulsa la tecla F1 de salida

del bucle.

• CONTROL CONDICIONADO.

El sistema anterior es un ejemplo de sistema en lazo abierto, es decir, el gobierno del

motor es independiente del estado del mismo. Un ejemplo de sistema en lazo abierto es una

lavadora, pues realiza una secuencia de operaciones que es independiente del estado final de

la ropa y solo depende del programa de lavado seleccionado. Una nevera por el contrario es un

sistema en lazo cerrado dado que un termostato gobierna la parada o marcha del motor.

Frecuentemente la parada, puesta en marcha o el cambio de sentido de un motor dependen

del estado de uno o de varios finales de carrera que actúan como nuevas señales de entrada,

estos sistemas se denominan sistemas de control en lazo cerrado. En este caso el programa

debe leer continuamente el estado de las entradas procedentes de los finales de carrera y

actuar en consecuencia. El siguiente programa controla el movimiento lineal de una pieza que

es arrastrada por un motor. Hay dos finales de carrera que condicionan el movimiento de la

Page 75: PROGRAMACI.N DE PLACAS DE CONTROL - … · Los puertos son las conexiones físicas de que dispone el ordenador para comunicarse ... Por estos canales el ordenador puede tanto enviar

Programación de placas de control

75

pieza. Inicialmente se da la orden al motor de girar en un sentido arrastrando la pieza y

liberando uno de los finales de carrera. Cuando la pieza toca el otro final de carrera (en este

caso para un valor del registro de estado 247) se da la orden de parar durante dos segundos

para posteriormente mover la pieza en sentido contrario. Cuando la pieza regresa a la posición

inicial acciona el primer final de carrera (en este caso para un valor del registro de estado 55)

que da la orden al motor de parar durante 10 segundos para posteriormente desplazar la pieza

en sentido contrario. La pieza está continuamente realizando esta secuencia hasta que se

pulsa la tecla F1 que hace regresar a la pieza a la posición de partida y detiene el motor.

REM***************CONTROL CONDICIONADO DE UN MOTOR DE CC***********************

REM**************************PROGRAMA PRINCIPAL********************************************

KEY(1) ON

CALL SALIDA (0,0,0,0,0,0,0,0,1)

DO

ON KEY(1) GOSUB FIN

CALL LEEPUERTO

LOCATE 10,10: PRINT ESTADO%

SELECT CASE ESTADO%

CASE = 127

CALL SALIDA (0,0,0,0,0,0,0,0,0)

CALL ESPERA(5)

CALL SALIDA (0,0,0,0,0,0,0,1,1)

CASE = 55

CALL SALIDA (0,0,0,0,0,0,0,0,0)

CALL ESPERA(10)

CALL SALIDA (0,0,0,0,0,0,0,0,1)

END SELECT

LOOP

END

REM********************SUBRUTINAS Y PRODEDIMIENTOS********************* REM******PROCEDIMIENTO DE LECTURA DEL REGISTRO DE ESTADO**** SUB LEEPUERTO

SHARED ESTADO%

ESTADO% = INP(&H379)

END SUB

REM**************PROCEDIMIENTO DE SALIDA DE DATOS*********************

Page 76: PROGRAMACI.N DE PLACAS DE CONTROL - … · Los puertos son las conexiones físicas de que dispone el ordenador para comunicarse ... Por estos canales el ordenador puede tanto enviar

Programación de placas de control

76

SUB SALIDA(M7, M6, M5, M4, M3, M2, M1, M0)

SALIDA% = M0*1 OR M1*2 OR M2*4 OR M3*8 OR M4*16 OR M5*32 OR M6*64 OR M7*128

OUT &H378, SALIDA%

END SUB

REM***********************PROCEDIMIENTO DE ESPERA********************************

SUB ESPERA(SEGUNDOS)

To = INT(TIMER)

DO

Tf =INT(TIMER)

IF Tf – To = SEGUNDOS THEN EXIT LOOP

LOOP

END SUB

REM ****************SUBRUTINA DE TÉRMINO DEL PROGRAMA************************

FIN:

CALL SALIDA (0,0,0,0,0,0,0,1,1)

DO

CALL LEEPUERTO

LOCATE 10, 10: PRINT ESTADO%

IF ESTADO% = 55 THEN CALL SALIDA (0,0,0,0,0,0,0,0): END

LOOP

END

Este programa tiene de novedoso el control que se hace del flujo mediante la sentencia

SELECT CASE. La variable o expresión situada después de la sentencia SELECT CASE, en

este caso la variable ESTADO% (que representa el valor del registro de estado en ese

momento) se evalúa a iniciarse la ejecución de la sentencia. Según el valor de la variable

ESTADO% se ejecuta el bloque que se inicia con la palabra CASE.

• CONTROL DE LA VELOCIDAD.

Sin duda la forma más precisa, aunque más compleja y también la que más recursos

consume (en el caso de la figura 4 señales para controlar la velocidad de un solo motor), es

mediante el uso de un conversor Digital/Analógico. En la siguiente figura se muestra el

esquema eléctrico de un conversor Digital/Analógico en donde usan 4 señales digitales para

regular el voltaje de salida aplicado al motor.

Page 77: PROGRAMACI.N DE PLACAS DE CONTROL - … · Los puertos son las conexiones físicas de que dispone el ordenador para comunicarse ... Por estos canales el ordenador puede tanto enviar

Programación de placas de control

77

El CI 4050 tiene 6 amplificadores buffer de no inversión (para una entrada a nivel alto

proporciona a la salida un nivel alto). Cada salida a nivel alto hace que circule una corriente, a

través de la resistencia correspondiente, a la base de Tr1. Las intensidades son inversamente

proporcionales a las resistencias. Con los valores indicados en la figura, la corriente total es

proporcional al número binario de 4 dígitos presente en la entrada. Dado que Tr1 esta

conectado como un seguidor de emisor, la tensión en R9 es proporcional a la corriente de base

total que circula por Tr1. Como la base de Tr2 está polarizada por la tensión presente en R9, el

voltaje aplicado al motor será también proporcional al número binario de entrada.

Adicionalmente, el potenciómetro VR1 puede regularse para que aun cuando todas las

entradas digitales estén a cero, proporcione la corriente de base a Tr2 necesaria para que el

motor funcione con la velocidad más pequeña requerida.

Otra forma más sencilla de conseguir distintas velocidades en un motor de corriente

continua es aplicar pulsos de frecuencia variable, consiguiendo así variar la tensión media

aplicada. En la siguiente figura se muestra el esquema de un circuito eléctrico en el que se

usan solo dos señales del puerto de datos, una gobierna la tensión aplicada y al motor y la otra

el sentido de giro. Cuando la señal D0 esta a nivel 1, el transistor NPN BC548 entra en

saturación y su tensión de colector disminuye lo suficiente para polarizar la base del transistor

PNP de potencia BD136 (8W nominal) haciendo que la corriente circule por el motor. La señal

D1 se emplea para cambiar el sentido de giro dado que controla el relé de 6 contactos. El relé,

como puede observarse en la figura, cambia la polaridad del motor respecto al colector del

transistor BD136 con el consiguiente cambio de giro.

Este circuito tiene la ventaja respecto al anterior de que solo necesita dos señales para

gobernar la marcha, paro y cambio de sentido del motor. El paso de corriente por BD136 y por

tanto la tensión en el motor seguirá las variaciones de D0, así, al disminuir la frecuencia del

Page 78: PROGRAMACI.N DE PLACAS DE CONTROL - … · Los puertos son las conexiones físicas de que dispone el ordenador para comunicarse ... Por estos canales el ordenador puede tanto enviar

Programación de placas de control

78

pulso disminuirá de forma proporcional la tensión media aplicada y la consiguientemente la

velocidad.

Otro aspecto que puede ser interesante es el frenado del motor. En muchas ocasiones

es necesario que el motor frene en seco. Esto puede conseguirse haciendo conmutar el relé

justo en el momento de enviar la señal de paro. Con esto se consigue invertir la polaridad en

los extremos del motor por efecto de la fuerza contraelectromotriz durante un instante muy

pequeño, pero suficiente para frenar el seco el motor si este dispone de una reductora de

velocidad. Este efecto de inversión de la polaridad puede observarse con un polímetro

conectado a extremos del diodo en paralelo con el motor.

Page 79: PROGRAMACI.N DE PLACAS DE CONTROL - … · Los puertos son las conexiones físicas de que dispone el ordenador para comunicarse ... Por estos canales el ordenador puede tanto enviar

Programación de placas de control

79

ACONDICIONAMIENTO DE SEÑAL DISEÑO DE UN TERMÓMETRO DIGITAL

Page 80: PROGRAMACI.N DE PLACAS DE CONTROL - … · Los puertos son las conexiones físicas de que dispone el ordenador para comunicarse ... Por estos canales el ordenador puede tanto enviar

Programación de placas de control

80

• ACONDICIONAMIENTO DE SEÑAL. DISEÑO DE UN TERMÓMETRO DIGITAL. MONITORIZACIÓN DE LA TEMPERATURA.

Al monitorizar una señal analógica procedente de un sensor mediante un conversor

analógico digital nos encontraremos, en la mayoría de los casos, con que el rango de voltaje de

salida del sensor en las condiciones experimentales (es decir la diferencia entre el voltaje más

pequeño y el máximo que proporciona a su salida) no es igual al rango de voltaje de entrada

del conversor analógico-digital sobre el cual va a realizar la conversión. Esto causa pérdida de

datos del sensor y/o un desaprovechamiento del poder de conversión (pérdida de bits a la

salida) del conversor analógico digital. En la siguiente figura se muestran dos casos generales.

En el caso A) el rango de voltajes es igual pero desplazados (offset) mientras que en el

caso B) no existe offset pero el rango de voltajes es diferente. En general la mejor opción para

resolver estos inconvenientes es el uso de un Amplificador Operacional (AO) entre la salida del

sensor y la entrada de conversor. Los amplificadores operacionales son circuitos integrados tan

versátiles que permiten, no solo adaptar los rangos de voltaje mediante amplificación, sino

también corregir el offset de un sola vez. Esta operación se denomina acondicionamiento de

señal. Existen otras soluciones menos generales, así los conversores analógico digitales están

preparados para la conversión de voltajes diferenciales que permiten igualmente corregir el

offset y adaptar, mediante el uso de un voltaje de referencia, el voltaje de entrada a su máxima

capacidad de conversión. Sin ir más lejos, el conversor que usaremos aquí, el ADC804,

dispone de esta posibilidad. Sin embargo esto esclaviza el conversor dado que una vez

adaptado el rango de voltajes mediante la inyección del voltaje de referencia ya no puede ser

usado por otro sensor con un rango de voltaje de salida diferente. Pongámonos en el caso de

una estación meteorológica que necesita procesar las señales procedentes de un sensor de

temperatura, otro de humedad y otro de presión atmosférica haciendo uso de un multiplexor

analógico cuya salida alimente la entrada del ADC804. Lo lógico es acondicionar

independientemente las señales procedentes de cada sensor a un mismo rango común de

voltaje de entrada del conversor, que en el caso más general será de 0V – 5V.

Page 81: PROGRAMACI.N DE PLACAS DE CONTROL - … · Los puertos son las conexiones físicas de que dispone el ordenador para comunicarse ... Por estos canales el ordenador puede tanto enviar

Programación de placas de control

81

El amplificador operacional: El AO utilizado será es el TLV2462, este es un amplificador operaciónal de

alimentación unipolar rail a rail de última generación en configuración de amplificador

diferencial. En la siguiente figura se muestra un amplificador operacional trabajando como

amplificador diferencial y la ecuación que da el voltaje de salida en función de las tensiones de

entrada y los valores de las resistencia externas Rf, Rg, R1 y R2 (1). Básicamente esta

configuración amplifica la diferencia entre las señales de entrada Vin2 – Vin1 por un factor igual

a Rf/Rg según indica la ecuación (2) siempre que se verifique que R1 = Rg y R2 = Rf. Si

utilizamos un voltaje de referencia constante Vin1 en la entrada inversora, el amplificador

responderá a la diferencia entre el voltaje de salida del sensor y el voltaje de referencia.

El conversor Analógico digital:

El conversor ADC804, que es un conversor de 8 bits y por tanto proporciona a su salida

un número digital que oscila entre 0 – 255. Para la mayoría de las aplicaciones será suficiente

una precisión de 0,5 ºC, con lo cuál el rango de temperaturas operativo será de 127,5 ºC

(255/2), de este modo a cada byte de salida del conversor le corresponderá una temperatura

que variará en 0,5ºC por bit. Ahora solo queda acondicionar este rango de temperaturas al uso

que se le va a dar al termómetro.

El sensor: El sensor elegido es el LM335 que proporciona a su salida un voltaje de 10 mV por

cada ºK de temperatura y está calibrado nominamente para dar un voltaje de 2,982 V a una

temperatura de 25ºC (298 ºK), es decir, el voltaje de salida responde a siguiente ecuación:

Page 82: PROGRAMACI.N DE PLACAS DE CONTROL - … · Los puertos son las conexiones físicas de que dispone el ordenador para comunicarse ... Por estos canales el ordenador puede tanto enviar

Programación de placas de control

82

Vout = 0.01(V/ºK) T

Si utilizamos una referencia de tensión de 2,5 V (mínimo voltaje de salida del sensor

que puede ser medido por el amplificador diferencial) y sabemos que el rango de temperaturas

es de 127,5 ºC tenemos que la mínima temperatura que podrá ser medida será de 250ºK (-

23ºC) para un voltaje de salida de 2,50 V y una temperatura máxima de 377,5 ºK (104º C) para

un voltaje de salida de 3.77 V. Este rango de temperaturas es adecuado, entre otras posibles

aplicaciones, para monitorizar la temperatura atmosférica. Dado que rango de voltaje de

entrada del conversor es de 0-5 V tenemos que la ganancia necesaria para adaptar la señal

será de G = (5 – 0)/(3.77 – 2.50) = 3.937

Cálculo de los resistores del amplificador diferencial: Para conseguir esta ganancia y teniendo en cuenta que según la ecuación (2) esta es

igual a (Rf/Rg), si elegimos para Rf un valor de 100K el valor de Rg deberá ser igual a Rg =

100/3.937 = 25.4K. Este valor de resistencia no es nominal, aunque puede conseguirse un

valor aproximado conectando resistencias en serie.

Diseño operativo: En la práctica para conseguir la referencia de tensión de 2.5 V se utilizará el circuito

integrado LM336 (2.5V). Una vez alimentado el circuito amplificador diferencial (con una

tensión estabilizada de Vcc = 5V) que se muestra en la siguiente figura, se midió

experimentalmente un voltaje de 2.47 V a la salida del LM336, con lo cual se corrigieron los

valores obtenidos a los siguientes. Vsensor/min = 2.47 V, Tsensor/min = -26ºC; Vsensor/max =

3.74 V, Tsensor/max = 101.5 ºC. Esta pequeña variación no altera la ganancia del circuito pero

desplaza la escala termométrica tres grados hacia temperaturas negativas. Dado que los

resistores de precisión son difíciles de conseguir se usaron resistores de 5% de tolerancia.

Para evitar al máximo errores en la ganancia se usó el siguiente procedimiento. Se adquirieron

respectivamente 10 resistores de valores nominales de 100K, 22K y 3,3K. Se procedió a la

medición de sus resistencias ohmicas con un polímetro digital observándose la siguiente

dispersión:

Valor nominal 100K Valor nominal 22K Valor nominal 3.3K

99.3 K 22.0 K 3.19 K

97.0 K 21.8 K 3.19 K

97.9 K 21.9 K 3.20 K

99.6K 21.8 K 3.19 K

99.4K 21.9 K 3.19 K

99.1K 21.9 K 3.19 K

99.8K 21.8 K 3.20 K

Page 83: PROGRAMACI.N DE PLACAS DE CONTROL - … · Los puertos son las conexiones físicas de que dispone el ordenador para comunicarse ... Por estos canales el ordenador puede tanto enviar

Programación de placas de control

83

98.0K 21.9 K 3.20 K

99.4K 21.9 K 3.20 K

98.0K 21.8 K 3.20 K

Para que el amplificador diferencial responda a la ecuación (2) debe cumplirse que

R1 = Rg y R2 = Rf. (ver figura). Se eligieron los valores, 98.0K para Rf y la suma de 21.8K +

3.19K = 24.99 K para Rg, con el objeto de aproximar lo máximo posible la ganancia obtenida a

la de diseño. Así, la ganancia obtenida con estos valores es de Rf/Rg = 98/24.99 = 3.921.

Comprobación: Una vez montado el circuito se midió con un polímetro el voltaje de salida de la

referencia de tensión LM336, el sensor de temperatura LM335 y el operacional TLV2462,

obteniéndose los valores de 2.47V, 2.94V y 1.84 V respectivamente. Usando la ecuación (2) y

sustituyendo valores se obtuvo a la salida del amplificador operacional un valor de Vout = (2.94

– 2.47)·3.921 = 1.842 V que se aproxima bastante al valor medido con lo cual puede

despreciarse la pequeña variación en la ganancia.

Calibración: Se prevé un valor de salida del conversor de 102 para una temperatura de 25ºC. Así,

sabiendo que para -26ºC (247ºK) el valor de salida del conversor debe ser 0 y que por cada

incremento de 1 bit en la salida del conversor, la temperatura se incrementa en 0,5 V, tenemos

que a 25ºC (298ºK) la salida del conversor será de (298-247)/0,5 = 102. Para comprobarlo se

calibró el sensor de temperatura LM335 con un potenciómetro, según se indica en la siguiente

figura, hasta obtener un voltaje a la salida de 2.98 V. Mediante el programa de adquisición

ADC.EXE se monitorizó la salida del conversor obteniéndose a la salida un valor de 102

idéntico al previsto. Con los pares de valores (-26ºC, 0) y (25ºC, 102) se trazó la recta de

calibrado que responde a la siguiente ecuación:

T(ºC) = n·0,5 - 26

Donde “n” es el valor digital medido a la salida del conversor. Con esta ecuación se convierte

directamente a temperatura en ºC los valores de salida del conversor.

Por último se cotejaron para distintos valores (punto de congelación del agua y distintos

valores de temperatura ambiental) los valores obtenidos con el termómetro digital con los

obtenidos con un termómetro de mercurio de laboratorio siendo los valores coincidentes. Se

comprobó también la reproducibilidad del sensor intercambiándolo por otro, igual siendo los

valores de salida del conversor idénticos para una misma temperatura y para ambos sensores.

Por último se usó un cable apantallado de unos 4 metros de longitud para situar el sensor a la

Page 84: PROGRAMACI.N DE PLACAS DE CONTROL - … · Los puertos son las conexiones físicas de que dispone el ordenador para comunicarse ... Por estos canales el ordenador puede tanto enviar

Programación de placas de control

84

intemperie no observándose diferencias en los valores obtenidos para aquellos obtenidos con

el sensor pinchado directamente en la placa entrenadora.

Monitorización de la temperatura ambiental: Se procedió mediante el siguiente circuito a monitorizar la temperatura ambiental

durante un periodo de 24 h con el programa de adquisición ADC_DATA.EXE.

Se tomaron medidas a intervalos regulares de 5 minutos y fueron guardadas en un

archivo de texto que posteriormente se procesó con EXCEL para representar gráficamente los

datos obtenidos frente al tiempo en horas. En la página siguiente se muestran los datos

obtenidos

Fuentes de error: En la siguiente figura se muestra el modelo de Thevenin para el amplificador

operacional. Este consta de un puerto de entrada y otro de salida. El puerto de entrada juega

un papel pasivo y no produce voltaje por si mismo, su equivalente es la impedancia de entrada

Ri. El puerto de salida puede entenderse como una fuente de tensión de valor AVi (siendo A la

Page 85: PROGRAMACI.N DE PLACAS DE CONTROL - … · Los puertos son las conexiones físicas de que dispone el ordenador para comunicarse ... Por estos canales el ordenador puede tanto enviar

Programación de placas de control

85

ganancia del amplificador) con una impedancia de salida Ro. La salida del amplificador

alimenta una carga de impedancia RL, mientras que la fuente de señal se representa por una

fuente de tensión Vs con una impedancia de salida Rs. Como puede verse, en la entrada del

amplificador, la impedancia de la fuente de señal y la impedancia de entrada del amplificador

forman un divisor de tensión, de igual modo que a la salida, la impedancia de la carga y la

impedancia de salida del amplificador. Esto hace que la ganancia del amplificador deba

recalcularse en los casos en los que parte de las señales de entrada o de salida se pierdan en

los divisores de tensión.

A pesar de que los A.O. se caracterizan por su alta impedancia de entrada, las

resistencias externas alteran este valor. En concreto, el amplificador diferencial tiene una

impedancia de entrada relativamente baja lo cual hace que parte de la señal se pierda si la

fuente de señal tiene una impedancia de salida alta, tal y como ocurre en sensores del tipo de

puente de Wheastone. La impedancia en la entrada no inversora del amplificador diferencial es

Rg + Rf, mientras que la impedancia en la entrada inversora es de Rg. Las hojas de

características dan para el sensor LM335 una impedancia de salida inferior a 1Ω, que forma un

divisor de tensión con 123K, mientras que para el LM336 da un valor de 0,2Ω, que forma un

divisor con 25K. Como puede observarse, estas cargas no suponen pérdida de señal alguna a

la entrada del amplificador. La impedancia de salida del TLV2462 es de unos 29 Ω, lo cual

supone una carga despreciable para el conversor. Por otro lado, el amplificador TLV2462 es un

amplificador rail a rail, es decir es capaz de alcanzar a la salida voltajes muy próximos, aunque

no iguales, a los dos raíles de voltaje a los que está conectado, es decir, 0V y +5V. Las hojas

características del TLV2462 dan valores de 4.9 V máximo y 0.1 V mínimo. Esto supone voltajes

en el sensor de 3.72 V y de 2.49 V respectivamente, lo cual indica que el rango máximo fiable

de temperaturas a medir por el termómetro será entre -24ºC y 99ºC. Por otro lado cuando se

use un cable para la ubicación remota del sensor, éste deberá ser apantallado, conectando el

apantallamiento a masa, dado que este actúa como una antena que inyecta un ruido que es

amplificado junto con la señal causando un error. Otras posibles fuentes de error son la

estabilidad y filtrado de la fuente de tensión, la deriva de la tensión de referencia, etc...

Page 86: PROGRAMACI.N DE PLACAS DE CONTROL - … · Los puertos son las conexiones físicas de que dispone el ordenador para comunicarse ... Por estos canales el ordenador puede tanto enviar

Programación de placas de control

86

Monitorización de Temperaturas 27/02/06

0

5

10

15

20

25

30

35

0 5 10 15 20 25 30Tiempo (horas)

Tem

pera

tura

(ºC

)

Page 87: PROGRAMACI.N DE PLACAS DE CONTROL - … · Los puertos son las conexiones físicas de que dispone el ordenador para comunicarse ... Por estos canales el ordenador puede tanto enviar

Programación de placas de control

87