Ago 012015
 
14. Conversión Análogo/Digital (A/D)
5 (100%) 5 votes

Los microcontroladores PIC16F887 poseen un conversor análogo/digital de 10 bits y 14 canales de entrada (AN0, AN1,…,AN13).

analogo digital

Una señal análoga es una señal continua, por ejemplo una señal de 0 a 5V es una señal análoga y puede tomar valores (1V, 2V, 2.5 V, etc.). Una señal digital solo puede tomar dos valores 0V ó 5V, abierto o cerrado, activado o desactivado.

Con el microcontrolador, lo que se hace, es aproximar una señal análoga por medio de pequeños cuadros rectángulos digitales, como  puede apreciarse en la figura de encima. Entre mas resolución tenga nuestro microcontrolador, mas pequeños pueden ser los rectangulos que se forman y más aproximado puede quedar nuestra señal analógica.

 

Un sensor de nivel que me genere una señal análoga no solo me indica si el tanque esta lleno o vacío, sino que además me indica que nivel tiene el tanque en todo momento y la señal será proporcional al nivel del tanque.

Un conversor A/D me convierte la señal análoga en un número digital (binario), él número es proporcional a la señal análoga.

En el caso del microcontrolador PIC16F887 el conversor A/D tiene 10 bits y la señal análoga de entrada puede estar entre 0V y 5V, sin embargo el conversor A/D tiene dos niveles de referencia VREF+ y VREF- que me indican entre que valores será la señal análoga de entrada. El voltaje mínimo diferencial es de 2V, es decir la diferencia entre VREF+ y VREF- no puede ser mayor a 2V.

vref

Pin Rojo(VREF+) Pin Verde (VREF-), Pines morados son las entradas Análogo Digitales

• Con 10 bits el mayor número binario que se puede tener es 1024, por lo tanto la resolución del conversor A/D esta dada por la fórmula:

 

resolucion=\frac{V_{REF+}-GND}{1024}

Así, por ejemplo, si VREF = +5V y VREF- es 0V, la resolución es 5V/1024 = 4.8mV, cuando la señal análoga sea 0V le corresponde un número digital = 0000000000 y para 5V será 1111111111.

Si VREF+ = +5V y VREF- se puede determinar en todo momento a que número digital aproximado corresponde cualquier señal análoga de entrada, con la fórmula:

\frac{V_{Entrada}}{4.8mV}=\frac{V_{Entrada}}{0.0048V}

Por ejemplo si la señal análoga es 2V, el número digital aproximado, es:

\frac{2V}{0.0048V}=416 bits

La tensión de referencia VREF+ puede implementarse con la tensión interna de alimentación VDD, o bien, con una externa que se pone en la patica RA2/AN2/ VREF-.

 

PASOS PARA TRABAJAR CON EL CONVERSOR A/D

1. En el encabezado del programa incluir la siguiente línea, si se va a trabajar el conversor A/D a 10 bits ya que por defecto funciona a 8 bits.

2. En el programa principal

a. Configurar las entradas análogas.
b. Seleccionar el tipo de reloj del conversor A/D.
c. Especificar el canal a utilizar para la conversión.

a. 

Esta función configura los pines del ADC para que sean entradas análogas, digitales o alguna combinación de ambos. Las  combinaciones permitidas varían de acuerdo al microcontrolador.

Las constantes (ALL ANALOG) todas las entradas como análogas y (NO_ANALOG) ninguna entrada como análoga son válidas para todos los microcontroladores.

b.

Selecciona el tipo de reloj del conversor A/D Modo puede ser:

Este es el tiempo necesario para obtener el valor digital de la tensión analógica de entrada. Este tiempo depende de la fuente de reloj que se seleccione para la conversión. Para realizar una correcta conversión A/D, el reloj debe seleccionarse para asegurar un tiempo de 1.6us.

c.

Especifica el canal a utilizar por la función

3. Leer el valor de la conversión

Esta función lee el valor digital del conversor análogo a digital.

 

En la especificación del canal análogo tenemos varias opciones. Por ejemplo el PIC16F887 tiene 13 pines analgos/digital (ADC), que están pintados de morado en la figura de arriba y van desde AN0 hasta AN13. Para designar cual pin del PIC queremos usar como puerto análogo, tenemos la siguiente tabla proporcionada por la librería del propio PIC dentro del compilador PIC C.

En otras palabras si queremos usar el puerto analogo AN0 que vendria a ser el PIN2 del PIC declaramos la instrucción:

o opcionalmente digitando el numero en binario o hexadecimal o decimal:

Calculo de entradas ADC en PICAhora, si por ejemplo queremos combinar varios pines como entradas ADC, por ejemplo, deseamos configurar estas entradas AN0, AN1, AN7 y AN13, debemos configurarla usando directamente los numeros en cualquier (escoge uno de los 3) representación (Binario, Hexadecimal o Decimal), para esto, les recomiendo usar la calculadora de Windows, y Colocarla en Formato Programador, y luego hacer la suma en Hexadecimal del numero que corresponde cada entrada analoga: AN0 (0x01), AN1(0x02), AN7( 0x80) y AN13(0x200000). En lo personal yo prefiero siempre trabajar en Hexadecimal.

 

EJEMPLO

Hacer un termómetro digital en el PIC16F887 utilizando un sensor de temperatura (LM35) conectándolo en el pin RA0. Utilice la conversión análogo digital para poder leer la temperatura del sensor y visualice la temperatura en un LCD16x2.

Como se muestra en proteus, cuando el sensor LM35 marca 25°C, es porque el sensor está enviándole al PIC 0.25V. Con base a este dato se puede hacer la conversión de BITS a Temperatura en grados celcius. (Recordando que cuando el PIC lee el puerto análogo digital, lo que almacena es un numero en bits de 0 – 1024). Utilizando un regla de tres, se puede determinar que.

BITS_{0.25V}=\frac{0.25V*1024bits}{5V}=51.2bits

Teniendo los bits que se leen a los 25 grados calculamos el factor para transformar bits a grados celcius.

gradosC=\frac{25C*Valor_{leido}bits}{51.2bits}=Valor_{leido}*0.4883

ADC

Demostración Práctica

 

Código de Implementación:

A continuación se presenta el código para que lo copies y lo pegues en tu compilador y puedas reproducirlo. Recuerda que para ver el código debes compartir o darle me gusta al contenido de este post para que más personas se beneficien de esta información.

>> CLICK ACA PARA DESCARGAR ESQUEMA Y CODIGO EL EJEMPLO EN PROTEUS 8 <<

Comparte en Redes Sociales

Si te sirvió de algo la información de la pagina, podrías invitarme a un café y ayudarme a seguir manteniendo en pie el sitio WEB. Solo cuesta $2USD y me ayudarías enormemente a seguir con mi trabajo. Muchas Gracias por tu visita.




 Leave a Reply

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">

(required)

(required)