Inicio

Capítulo 1_ El invernadero

Capítulo 2_ El riego y humedad en el suelo

Capítulo 3_ Placa de Adquisición de datos y excitación de actuadores

3.1- Descripción general

3.2- Etapa decodificación de direcciones y buffers

3.3- Controlador puertos E/S digitales i82C55A

3.4- Puerto de entradas analógicas ADC0808

Capítulo 4_ Sensado de humedad

Capítulo 5_ Sensado de temperatura

Capítulo 6_ Sistema de ventilación

Capítulo 7_ Pantalla LCD

Capítulo 8_Software Asociado

Conclusiones

Bibliografía

Fotos

Sistema de control automático de temperatura y ventilación de un Invernadero

Capítulo 3_ Placa de Adquisición de datos y excitación de actuadores

 

3.1- Descripción general

La placa de adquisición de datos tiene como función proveer la interfase entre tanto los sensores como los actuadores y el bus ISA de la PC.

 

Figura 3.1: Bus ISA

La placa se divide en los siguientes bloques generales:

    • Etapa de decodificación de direcciones y buffers.
    • Controlador de puertos de E/S digitales i8255.
    • Puerto de entradas analógicas ADC0808.
    • Etapa de acondicionamiento de señales y amplificación de sensores.

Figura 3.2: Diagrama en bloques

3.2- Etapa decodificación de direcciones y buffers

En esta etapa se fijan las direcciones de puertos de la PC que se utilizarán mediante una etapa de decodificación de direcciones formada por un comparador digital de 8 bits (74LS688) y un decodificador/demultiplexor de 3 a 8 líneas (74LS138). Las líneas de direcciones disponibles para puertos mediante el bus ISA está acotado a las 12 primeras (A0-A12). Cabe agregar, que las direcciones de puertos no están mapeadas en la memoria principal del procesador sino que son independientes y se acceden mediante las líneas IOWR e IORD.

El comparador 74LS688, compara los niveles que se aplican a sus entradas Q0 a Q7 con los que se han programado sobre las patillas P0 a P7. Si la palabra presente sobre sus entradas es la misma que la programada y la pata de activación G está a nivel bajo, entonces su salida P = Q pasa a nivel bajo, activando de esta forma al circuito siguiente. Aquí además es necesario que las líneas de direcciones A5, A6, A7, A10, A11 y la línea AEN (Address Enable o dirección válida) estén a nivel bajo y las líneas A8 y A9 a nivel alto para de esta forma tener la dirección 0x300. Luego para resolver la parte más baja de la dirección se utiliza el decodificador de 3 a 8 líneas 74LS138, donde sus tres entradas A, B y C se conectan a las líneas de direcciones A2, A3 y A4, lo que nos proporciona 8 espacios de direcciones que, combinadas con las líneas A0 y A1 hacen un total de 32 direcciones disponibles divididas en 8 partes de 4 direcciones cada una.

A11

A10

A9

A8

A7

A6

A5

A4

A3

A2

A0

A1

Direcciones

0

0

1

1

0

0

0

0

0

0

0

0

0x300

0

0

1

1

0

0

0

0

0

1

0

0

0x304

0

0

1

1

0

0

0

0

1

0

0

0

0x308

0

0

1

1

0

0

0

0

1

1

0

0

0x30C

0

0

1

1

0

0

0

1

0

0

0

0

0x310

0

0

1

1

0

0

0

1

0

1

0

0

0x314

0

0

1

1

0

0

0

1

1

0

0

0

0x318

0

0

1

1

0

0

0

1

1

1

0

0

0x31C

Decodificación efectuada por el 74LS688

Decodificación efecutada por el 74LS138

i8255 y ADC0808 (también A2)

 

El circuito buffer 74LS541, se encarga de aislar las líneas A0, A1, A2 (sólo para el ADC0808), IORD, IOWR y RESET provenientes del bus del microprocesador. De este modo, la PC queda totalmente aislada de las tarjetas que se le conectan. El bus transceiver 74LS245 actúa como buffer bidireccional, y se encarga de las líneas de datos. Cuando su patilla G está a nivel bajo se encuentra activado y dependiendo del nivel que se le aplique a la pata DIR, trabaja en un sentido o en otro: si está en nivel alto entonces se lee un dato. La compuerta AND 74LS08 (U7A) activa el comparador y por ende toda la decodificación cuando se realiza una operación de lectura como de escritura en los puertos (líneas IORD o IOWR).

Figura 3.3_ Diagrama de Decodificación y Buffer

La etapa se completa con una compuerta AND 74LS08 (U78) que completa la decodificación del ADC0808, ya que necesita 8 direcciones para sus 8 puertos de entrada analógicos. A través de ella se toman dos grupos (patas Y6 e Y7 del 74LS138 de los 8 disponibles) con 4 direcciones cada uno, en nuestro caso se eligieron los puertos 0x318 a 0x31F.

El controlador de E/S digitales i82C55A se coloca en las direcciones 0x300 a 0x303 directamente tomando la línea Y0 del 74LS138.

3.3- Controlador puertos E/S digitales i82C55A

El i82C55A es una interfase programable para periféricos (PPI) prepardo para ser conectado directamente al bus ISA de una PC. Puede funcionar como un controlador de entradas/salidas de propósito general para interfasear periféricos al bus de la PC. La configuración de funcionamiento del 82C55A se programa por software por lo que no se necesita lógica externa adicional.

Consta de las siguientes carácterísticas generales:

  • 24 líneas de entradas/salidas programables divididas en 3 puertos de 8 líneas cada uno (Puertos A, B y C), además consta de un registro interno de 8 bits para configuración.
  • Compatible con el bus ISA, con operación a 8 MHz.
  • Compatible TTL.
  • Bajo consumo y capacidad de excitación de 2.5 mA DC en todas las patas I/O.
  • Varios modos de programación que permiten una gran variedad de elección:
  • Modo 0: programación de dos grupos de 12 entradas/salidas programable en grupos de cuatro y ocho.
  • Modo 1: programación de dos grupos de ocho entradas/salidas más cuatro líneas para las señales de comunicación.
  • Modo 2: programación de un bus bidireccional de ocho bits más cinco líneas para las señales de comunicación.

Figura 3.4_ Diagrama Interno y Pinout

El diagrama de tiempos correspondiente al modo 0 de operación para la entrada y salida y datos digitales es el siguiente.

Figura 3.5_ Diagrama de Tiempos

El registro de configuración posee las siguientes opciones:

Figura 3.6_ Opciones de Configuración

La conexión a la etapa anterior se realiza de una forma muy sencilla uniendo la pata CS con la salida Y0 (del 74LS138); las patas de RESET, A0 y A1 con sus similares en bus ISA (a través del buffer 74LS541); las patas RD y WD con IORD y IOWD (a través del buffer 74LS541) respectivamente; y por último el bus de datos a través del bus transceiver (74LS245).

De las conexiones anteriores se desprende que las direcciones elegidas de la decodificación de direcciones para los distintos puertos del i82C55A son los siguientes:

  • Puerto A:0x300
  • Puerto B: 0x301
  • Puerto C: 0x302
  • Registro de configuración: 0x303

El modo de operación elegido fue el modo 0, dejando dos puertos de 8 bits como salidas digitales (Puerto A y C) y un puerto de 8 bits como entradas digitales (Puerto B)

Figura 3.7_ Configuración Elegida

Antes de comenzar a utilizar las entradas/salidas digitales se hace necesario la inicialización del PPI 8255. En lenguaje C correspondería a la siguiente línea:

outp(0x302,43);

Si se quiere escribir un dato en el puerto A:

outp(0x300,dato);

Si se quiere leer el dato en el puerto B:

dato = inp(0x301);

Si se quiere escribir en el puerto C, de la misma manera que en A:

outp(0x302,dato);

 

3.4- Puerto de entradas analógicas ADC0808

La función principal de esta etapa es la de recibir las entradas analógicas y realizar la conversión a formato digital de 8 bits que se pasan directamente al bus de datos de la PC. El corazón de esta etapa es el ADC0808 que es un conversor analógico digital de 8 canales analógicos multiplexados, y sus características principales son las siguientes:

  • Fácil interfase con todos los microprocesadores y conexión directa con el bus ISA.
  • 8 canales multiplexados con lógica de direccionamiento incorporada.
  • Salidas son compatibles con el standard TTL.
  • Resolución de salida de 8 bits con un error de ± ½ LSB y ± 1 LSB.

Figura 3.8_ Diagrama en Bloques y Pinout

El diagrama de tiempos para la adquisición de datos es el siguiente:

Figura 3.9_ Diagrama de Tiempos

De este diagrama se puede inferir la forma en que el programa debe tratar la adquisición de una entrada analógica cualquiera. Para ello se deben seguir los siguiente pasos:

  • Capturar o "latchear" la entrada analógica que se desea convertir, e iniciar la conversión.

outp(puerto_deseado, 0x0);

  • Esperar un período de tiempo prudente para que se termine la conversión, cabe aclarar que se trabaja sin interrupciones por lo que se espera que luego del mismo el dato ya esté disponible para su lectura. Para asegurar un buen funcionamiento de esta etapa se toma un valor suficientemente grande.

delay(1);

  • Leer el dato en el puerto correspondiente.

dato = inp(puerto_deseado);

El diagrama de conexión elegido es el siguiente:

Figura 3.10_ Diagrama de Conexión

Donde se conectan las entradas READ y el WRITE a IORD y IOWD del bus ISA (a través del buffer 74LS541) y la entrada ADDRESS DECODE a la salida de la compuerta AND U7B de la etapa de decodificación explicada anteriormente. Las patas A, B y C se conectan a A0, A1 y A2 respectivamente del bus ISA (a través del buffer 74LS541) y el bus de datos a través del 74LS245. Para los valores de referencia se conectan VREF(-) a GND y VREF(+) a VCC , para ello se tiene un rango de conversión de 0 a +5v por lo que cualquier sensor que se conecte debe tener este rango de valores.

El reloj de 500 KHz (ideal) se logra a través de un divisor x12 del CLOCK del bus ISA (8 MHz) que devuelve aproximadamente 666 KHz que cae dentro del rango permitido por el ADC. El circuito usado fue un 74LS92 de la siguiente manera:

Figura 3.11_ Generador de Clock

 

Los puertos analógicos están disponibles a través del multiplexor en las direcciones descriptas en el diagrama que sigue.

 

Canal analógico seleccionado

Línea de dirección

Dirección puerto

C

B

A

IN0

0

0

0

0x318

IN1

0

0

1

0x319

IN2

0

1

0

0x31A

IN3

0

1

1

0x31B

IN4

1

0

0

0x31C

IN5

1

0

1

0x31D

IN6

1

1

0

0x31E

IN7

1

1

1

0x31F




Eduardo A. Sciutto - Juan E. Mascareña - Universidad Nacional de la Patagonia San Juan Bosco - Octubre 2000