Módulo conversor A/D

INTRODUCCION:

    Es innegable que el mundo real no suele ser digital y muchas veces se desea conocer magnitudes de ese mundo, por ejemplo, la velocidad del viento, la temperatura de un líquido, etc.

    Hay que buscar la forma de introducir en el micro esa información, traduciéndola previamente a digital, para que se pueda tratar. La forma más directa (hay muchas otras) es usar un conversor analógico digital que convierta una tensión (o corriente) de entrada proveniente de un transductor a un número binario directamente proporcional a ésta.

DESCRIPCIÓN:

    El ADC0820 es un "8 bit high speed microprocessor compatible A/D converter with track/hold function". Este convertidor se caracteriza por no necesitar un reloj externo para realizar el muestreo, ofrece un tiempo de conversión de, como máximo 2.5 microsegundos, tiene un bajo consumo, tiene salidas triestado, acepta señales MOS y TTL y no necesita un ajuste, además de conectarse de forma sencilla a cualquier tipo de microcontrolador.

    Este convertidor ofrece dos modos distintos para efectuar las conversiones mediante la puesta a nivel bajo o alto de la señal MODE. El primero de los modos es el denominado RD Mode o modo lectura: en este caso, la línea MODE se pone a nivel bajo. En esta configuración, la conversión se efectúa manteniendo la señal de entrada /RD a nivel bajo hasta que se obtiene el resultado. Para saber cuándo ha terminado de efectuar la conversión este convertidor genera por la línea /INT un nivel bajo o un nivel alto por la línea RDY (mismo pin que la señal /WR).

    Por lo tanto la forma de operar en este modo, que es la que se va a utilizar en el desarrollo de este apartado, pasa por mantener la señal RD a nivel bajo, previa activación de la señal de habilitación del integrado, hasta que la línea INT pase a nivel bajo.

    El segundo modo que ofrece este dispositivo es el denominada WR then RD Mode o modo lectura tras escritura. En este caso, la conversión es iniciada al activarse la entrada /WR. Para efectuar la lectura del resultado se puede optar por dos formas: o bien esperar a que la línea INT pase a nivel bajo, que es la forma más general, o si se necesita una conversión más rápida efectuar directamente una lectura después de 600 ns.; en este caso la línea INT pasa a nivel bajo.

    Visto el funcionamiento del convertidor escogido, la conexión al sistema microcontrolador se puede hacer de diferentes formas. Se utilizará el modo lectura para convertir señales en el rango 0 .. 5V, que equivaldrá a un número binario de 0 a 255.

Descarga Del Esquema Del Módulo Conversor A/D

    El esquema de la Figura ilustra la propuesta de conexión. Como se ve, se ha dispuesto un puerto dedicado para los 8 bits de datos y una línea para seleccionar el conversor /CS y dar la orden de lectura con /RD. Se podrían separar estas líneas para controlarlas independientemente y usar una tercera línea de puerto para conectar /INT y saber cuando ha terminado la conversión.

    Para probar el sistema diseñado se puede usar un potenciómetro conectado como se muestra en la Figura para que actúe de divisor de tensión.

Descarga del ejemplo

 Conexión de un potenciómetro al conversor A/D

PCB:

Descarga Del Pcb Del Módulo Conversor A/D

COMPONENTES:

 

COMPONENTES

CANTIDAD
C.I. ADC0820 1
Condensadores 1µF 1
Conectores Molex 2x5 2
Micro-Switch 8 bits 1
Regleta Circuito Impreso Atornillable 3 Conductores 1
Resistencias 4.7Ohm 1/4W 1
Torretas Separadoras 10mm 4
Placa PCB 1 Cara (90 x 62)mm 1
Zócalo DIP-8 Pines Torneados  1
Zócalo DIP-16 Pines Torneados 1

Montaje Potenciómetro

Resistencia 47K 1/4W 1

Ejemplo Medida Temperatura 1*

C.I. LM335A 1
Resistencia 2k2  1
Ejemplo Medida Temperatura 2*
C.I. LM741 1
Resistencias 10k 1/4W 4
Resistencias 56k 1/4W 2
Resistencias 2k2 1/4W 1
Zócalo Dip-8 Pines Torneados 1

 

EJEMPLO:

(guardar)

    Los siguientes programas muestra en el uso del convertidor A/D. Para ello se conecta el módulo visualizador BCD para que muestre la lectura del conversor. Sabiendo que la tensión leída estará entre 0 y 5 V se realiza un escalado del valor devuelto (entre 0 y 255) para representar en el display voltios y décimas de voltio.

/* testadc.c */
#include "adc.h"
#include "visbcd.h"

void main(void)
{
    unsigned int val;
    while(1)
    {
        val = ((int)adc()*50)/255;
        visualizar(val);
    }
}

/* adc.h */
unsigned char adc(void);

/* adc.c */
#include <io51.h>
#include "adc.h"

#ifndef ADP
#define ADP P1
#endif
#ifndef ADB
#define ADB P3.5
#endif

unsigned char adc(void)
{
    unsigned char val;
    ADB = 0;
    ADB = 0;
    ADB = 0; /* 3 microsegundos a 12 Mhz */
    val = ADP;
    ADB = 1;
    return(val);
}

Otra aplicación del convertidor  podría ser la lectura de una señal proveniente de un sensor de temperatura.

Como sensor de temperatura se propone un LM335A, cuya composición interna se basa en un zener cuya tensión varía en función de la temperatura. La tensión zener es directamente proporcional a 10 mV/ºK (0ºK son -273.15ºC). El error típico de salida está por debajo de 1ºC (a 25ºC).

Descarga del ejemplo

    Como primer circuito de sensor se propone el de este primer esquema, donde una resistencia limita la corriente que circula por el sensor. Si la corriente fuese excesiva, se produciría un efecto de autocalentamiento que sesgaría los resultados. Como se desea alimentar el sensor a 5 V, es importante hacer algunos cálculos antes de construir el circuito. Para una salida de 5V la temperatura del sensor sería de 226ºC, para 0ºC la tensión entregada por el sensor sería 2'73 V. Estos resultados muestran que la conexión directa del sensor al convertidor no permitirá obtener demasiada resolución, pero como primera aproximación es suficiente.

    El siguiente programa muestra por el display BCD la temperatura del sensor. Pruébese experimentalmente que la resolución obtenida no es alta (del orden de 2 grados). Calcúlese a cuantos grados equivale la resolución en voltios del convertidor.

/* temp1.c */
#include "adc.h"
#include "visbcd.h"

void main(void)
{
    float val;
    while(1)
    {
        val = 1.961 * adc() - 273.15;
        visualizar(val);
    }
}

    Los resultados ofrecidos por el circuito anterior pueden no ser suficientes. Para subsanar esto se propone el circuito siguiente, que acondiciona la señal de forma que el rango de temperaturas entre 0 y 100ºC corresponda a una tensión entre 0 y 5 voltios.

Descarga del ejemplo