ADC en un AVR_present.pdf

18
Dispositivos ADC Los Convertidores de analógico a digital s adquisición de datos. Los Ordenadores digitales utilizan valores Temperatura, presión (viento o líquido), l tratamos todos los días. Una cantidad física se convierte en señale sensor. Sensores de temperatura, velocid tensión (o corriente). Por lo tanto, es necesario un convertidor manera que el microcontrolador pueda le Conexión de un sensor a un microcontrolador a ADC en un AVR se encuentran entre los dispositivos más ampliamente s binarios (discretos), pero en el mundo físico todo es a la humedad y la velocidad son algunos ejemplos de ma es eléctricas (voltaje, corriente) utilizando un dispositiv dad, presión, luz, y muchas otras cantidades naturales analógico a digital para convertir las señales analógica eer y procesar. a través de un ADC Bloque de un ADC de 8bits utilizados para la analógico (continuo). agnitudes físicas que vo llamado transductor o producen una salida que es as a los números digitales de

Transcript of ADC en un AVR_present.pdf

Page 1: ADC en un AVR_present.pdf

Dispositivos ADC

Los Convertidores de analógico a digital se encuentran entre

adquisición de datos.

Los Ordenadores digitales utilizan valores

Temperatura, presión (viento o líquido), la humedad y

tratamos todos los días.

Una cantidad física se convierte en señales eléctricas

sensor. Sensores de temperatura, velocidad, presión

tensión (o corriente).

Por lo tanto, es necesario un convertidor analógico a digital

manera que el microcontrolador pueda leer y procesar

Conexión de un sensor a un microcontrolador a través de un ADC

ADC en un AVR

se encuentran entre los dispositivos más ampliamente utilizados para

utilizan valores binarios (discretos), pero en el mundo físico todo es analógico

, la humedad y la velocidad son algunos ejemplos de magnitudes físicas

señales eléctricas (voltaje, corriente) utilizando un dispositivo llamado

velocidad, presión, luz, y muchas otras cantidades naturales

convertidor analógico a digital para convertir las señales analógicas

leer y procesar.

Conexión de un sensor a un microcontrolador a través de un ADC

Bloque de un ADC de 8bits

más ampliamente utilizados para la

analógico (continuo).

magnitudes físicas que

un dispositivo llamado transductor o

producen una salida que es

las señales analógicas a los números digitales de

Page 2: ADC en un AVR_present.pdf

Características del ADC

Resolución

El ADC tiene una resolución de n bits, donde n puede ser 8, 10, 12, 16, o incluso 24 bits.

El ADC de mayor resolución proporciona un tamaño de paso más pequeño, donde el tamaño de paso es el más pequeño

cambio que puede ser diferenciado por un ADC. Algunas resoluciones ampliamente utilizadas para un ADC se muestran en

la Tabla siguiente. Aunque la resolución de un chip ADC se decide en el momento de su diseño y no se puede cambiar, se

puede controlar el tamaño de paso con la ayuda de lo que se llama Vref o voltaje de referencia. Esto se discute a

continuación.

Resolución versus tamaño de paso para un ADC con Vref = 5v

Tiempo de conversión

Además de la resolución, el tiempo de conversión es otro factor importante para juzgar un ADC. El Tiempo de conversión

se define como el tiempo que tarda el ADC para convertir la entrada analógica a un número digital (binario). El tiempo de

conversión es definido por la fuente de reloj conectado al ADC además del método utilizado para los datos conversión y la

tecnología utilizada en la fabricación del chip ADC tales como MOS o tecnología TTL.

Page 3: ADC en un AVR_present.pdf

Voltaje de referencia (Vref)

Vref es un voltaje de entrada utilizado para la tensión de referencia. El voltaje conectado a este pin, junto con la resolución

del chip ADC, definen el tamaño de paso. Para un ADC de 8 bit , el tamaño del paso es Vref/256 porque es un ADC de 8 bit

y 28

nos da 256 pasos.

Por ejemplo, si el rango de entrada analógica debe ser 0 a 4 voltios, Vref está conectado a 4 voltios. Eso le da 4V/256

=15.62 mV para el tamaño de paso de un ADC de 8 bits.

En otro caso, si necesitamos un tamaño de paso de 10 mV para un ADC de 8 bits, a continuación, Vref = 2.56 V, debido a

que 2.56V/256 = 10 mV. Para el ADC de 10 bits, si el Vref = 5V, a continuación, el tamaño del paso es de 4.88 mV, como se

muestra en la Tabla. Las Tablas muestran la relación entre Vref y el tamaño de paso para los ADCs de 8 y 10 bits,

respectivamente.

En algunas aplicaciones, tenemos que la tensión de referencia diferencial en V ref = V ref (+) - V ref (-). A menudo, el pin

Vref(-) está conectado a tierra y el pin Vref (+) se utiliza como el Vref.

Vref relacionado con voltaje de entrada Vin en ADC de 8 bits Vref relacionado con voltaje de entrada Vin en ADC de 10 bits

Page 4: ADC en un AVR_present.pdf

Salida de datos digitales

En un ADC de 8 bits tenemos una salida de datos digital de 8 bits de D0-D7, mientras que en el 10 bit ADC es la salida de

datos D0-D9. Para el cálculo de la tensión de salida, se utiliza la siguiente fórmula:

����� �� ���� ����� � �� �������

����ñ� �� ����

donde ����� �� ���� = salida de datos digitales (en decimal), ���� � �� ������� = voltaje de entrada analógico, y el

tamaño de paso (resolución) es el cambio más pequeño, que es Vref/256 para un ADC de 8 bits.

Ejemplo

Para un ADC de 8 bits, tenemos Vref = 2,56 V. Calcular la salida D0-D7 si la entrada analógica es: (a) 1,7 V, y (b) 2,1 V.

Solución:

Debido a que el tamaño del paso es 2.56/256 = 10 mV, tenemos lo siguiente:

(a) Dsalida = 1,7 V/10 mV = 170 en decimal, lo que nos da 10101010 en binario para D7-D0.

(b) Dsalida = 2,1 V/10 mV = 210 en decimal, lo que nos da 11010010 en binario para D7-D0.

Page 5: ADC en un AVR_present.pdf

ADC Paralelo frente a un serial

Los chips de ADC tienen sus salidas de datos ya sea en paralelo o en serie.

Un ADC en paralelo, tenemos 8 o más pines dedicados a sacar los datos binarios, pero en un ADC serial tenemos un solo

pin de salida de datos. Esto significa que dentro del ADC serie, hay registro que tipo PISO Parallel In Serial Out responsable

de enviar los datos binarios un bit a la vez. Los pines de datos D0-D7 del ADC de 8 bits proporcionan una ruta de datos en

paralelo de 8 bits entre el chip ADC y la CPU.

Dispositivos como el ADC de serial están siendo ampliamente utilizados. Mientras que los ADCs seriales utilizan menos

pines y los paquetes son más pequeños y toman mucho menos espacio en la tarjeta de circuito impreso, se necesita más

tiempo de CPU para obtener los datos convertidos del ADC porque la CPU debe obtener los datos un bit a la vez, en lugar

de en una sola operación de lectura con el ADC paralelo.

Canales de entrada analógicos

Muchas aplicaciones de adquisición de datos necesitan más de un ADC. Por esta razón, vemos chips de ADC con 2, 4, 8, o

incluso 16 canales en un solo chip.

La Multiplexación de entradas analógicas se utiliza ampliamente como se muestra en el ADC848 y MAX1112. En estas

fichas, contamos con 8 canales de entradas analógicas, lo que nos permite controlar varias magnitudes tales como la

temperatura, la presión, el calor, y así sucesivamente. Chips de microcontroladores AVR vienen con hasta 16 canales de

ADC.

Page 6: ADC en un AVR_present.pdf

Señales de inicio de conversión y fin de conversión.

El hecho de que tenemos varios canales de entrada analógica y un solo registro de salida digital crea la necesidad de las

señales de inicio de conversión (SC) y de fin de conversión (EDC).

Cuando se activa SC, el ADC inicia la conversión del valor de entrada analógica de Vin a un número digital de n bits.

La cantidad de tiempo que se necesita para convertir varía dependiendo del método de conversión como se ha explicado

anteriormente.

Cuando la conversión de datos esta completa, la señal de fin de conversión notifica a la CPU que los datos convertidos

están listos para ser recogidos.

Aproximación sucesiva ADC

Aproximación Sucesiva es un método ampliamente utilizado para convertir una entrada analógica a salida digital. Tiene

tres componentes principales: (a) registro de aproximación sucesiva (SAR), (b) la comparación, y (e) la unidad de control.

Consulte la figura siguiente.

Page 7: ADC en un AVR_present.pdf

Cómo funciona la aproximación sucesiva.

Suponiendo un tamaño de paso de 10 mV, la aproximación sucesiva de un ADC de 8 bits deberá someterse a las medidas

siguientes para convertir una entrada de 1 voltio:

(1) Se inicia con el binario 10000000. Desde 128 x 10 mV = 1.28 V es mayor que la entrada de 1 V, el bit 7 se borra.

(2) 01000000 nos da 64 x 10 mV = 640 mV y el bit 6 se mantiene, ya que es más pequeña que la entrada de 1 V.

(3) 01100000 nos da 96 x 10 mV = 960 mV y el bit 5 se mantiene, ya que es más pequeña que la entrada de 1 V,

(4) 01110000 nos da 112 x 10 m V = 1120 mV y el bit 4 se ha caído ya que es mayor que la de entrada 1 V.

(5) 01101000 nos da 108 x 10 mV = 1080 mV y el bit 3 se ha caído ya que es mayor que la entrada de 1 V.

(6) 01100100 nos da 100 x 10 m V = 1000 mV = V 1 y el bit 2 se mantiene, ya que es igual a la entrada. A pesar de que

encuentra la respuesta no se detiene.

(7) 011 000 110 nos da 102 x 10 mV = 1020 mV y el bit 1 se ha caído ya que es mayor que la entrada de1V.

(8) 0110010 1 nos da 101 x 10m 10m V = 10 V y el bit 0 se ha caído ya que es mayor que la entrada de 1 V.

Observe que el método de aproximación sucesiva pasa por alto los pasos incluso si la respuesta se encuentra en uno de los

pasos anteriores.

La ventaja del método de aproximaciones sucesivas es que el tiempo de conversión está fijado ya que tiene que ir a través

de todos los pasos.

ADC PROGRAMACIÓN EN EL AVR

Page 8: ADC en un AVR_present.pdf

Debido a que el ADC es ampliamente utilizado en la adquisición de datos, en los últimos años un número creciente de

microcontroladores han tenido un periférico ADC en el chip, al igual que los temporizadores y USART.

Un ADC en el chip elimina la necesidad de una conexión a un ADC externo, lo que deja más pines para otras actividades

de I/O. La gran mayoría de los chips AVR vienen con ADC.

Características del ADC en un ATMEGA

El periférico ADC del ATMEGA tiene las siguientes características:

(a) Es un ADC de 10 bits.

(b) Cuenta con 8(6 en el ATMEGA8) canales analógicos de entrada.

(c) Los datos binarios de salida convertida está en manos de dos registros de función especial llamada ADCL y ADCH.

(d) Debido a que los registros ADCH: ADCL nos dan 16 bits y la salida de datos ADC es de sólo 10 bits de ancho, 6 bits de los

16 no se utilizan. Tenemos la opción de no utilizar cualquiera de los 6 bits superiores o los inferiores 6 bits.

(e) Tenemos tres opciones para Vref: Vref se puede conectar a AVCC (VCC analógico) '

Referencia interna de 2.56 V, o pin externo AREF

(f) El tiempo de conversión es definido por la frecuencia del cristal conectado a los pines XTAL (Fosc) y los bits ADPS0: 2.

Consideraciones de hardware del ADC en un AVR

Para las señales de lógica digital una pequeña variación en el nivel de tensión no tiene efecto en la salida. Por ejemplo, 0.2

V se considera baja, ya que en la lógica TTL, toda tensión menor que 0.5V será detectado como estado lógico bajo. Ese no

es el caso cuando se trata de tensión analógica.

Page 9: ADC en un AVR_present.pdf

Ejemplo

Para un ADC de 10-bit, tenemos Vref = 2.56 V. Calcular la salida D0-D9 si la entrada analógica es: (a) 0.2 V, y (b) 0 V. ¿Cuál

es la variación entre (a) y (b )? .

Solución:

Debido a que el tamaño del paso es 2.56/1024 = 2.5 mV, tenemos lo siguiente:

(a) Dsalida = 0.2 V/2.5 mV = 80 en decimal, lo que nos da 1010000 en binario.

(b) Dsalida = 0 V/2.5 mV = 0 en decimal, lo que nos da 0 en binario.

La diferencia es 1010000, lo cual es 7 bits!

Podemos utilizar muchas técnicas para reducir el impacto de la tensión de alimentación y la variación de Vref en la

veracidad de salida del ADC. A continuación, examinamos dos de las técnicas en el AVR ampliamente utilizadas.

Conexión recomendada

Desacoplamiento AVCC desde VCC

El pin AVCC proporciona la alimentación para los circuitos analógicos ADC. Para tener una mejor precisión del ADC en el

AVR debemos proporcionar una fuente de voltaje estable para el pin AVCC. La figura anterior muestra cómo utilizar un

inductor y un condensador para lograrlo.

Conexión de un condensador entre Vref y GND

Mediante la conexión de un condensador entre el pin GND y AVREF puede hacer que el voltaje Vref sea más estable y

aumentar la precisión del ADC.

Page 10: ADC en un AVR_present.pdf

Programación del ADC del AVR en C

En el microcontrolador AVR varios registros se relacionan con la ADC. Son ADCH (parte alta de datos), ADCL (parte baja de

datos), ADCSRA (registro de estado y Control del ADC) y ADMUX (registro de selección de multiplexor en el ADC).

Registro ADMUX

REFS1: 0 Bits de selección de referencia.

Estos bits seleccionan la tensión de referencia para el ADC.

ADLAR Resultados con Ajuste a la Izquierda.

Este bit determina cualquiera de los bits de los bits a la izquierda o derecha del resultado registros ADCH: ADCL que

se utiliza para almacenar el resultado Si escribimos un uno a ADLAR, el resultado será ajustado a la izquierda, de lo

contrario, el resultado está ajustado a la derecha.

Page 11: ADC en un AVR_present.pdf

MUX3: 0 Bits de selección de Canal Analógico y ganancia.

El valor de estos bits selecciona la ganancia para los canales diferenciales y también selecciona la combinación de

entradas analógicas que se conectan al ADC.

La Figura muestra el diagrama de bloques de los circuitos internos de selección Vref.

Como puedes ver, tenemos tres opciones: (a) AREF pines (b) pin AVCC, o (c) interna 2.56 V. La siguiente Tabla

muestra como los pines REFS1 y REFS0 del registro ADMUX se pueden utilizar para seleccionar la fuente del Vref.

Tabla de selección de fuente de Vref

Tenga en cuenta que si conecta el pin VREF a un voltaje fijo externo que no será capaz de utilizar las otras opciones

de voltaje de referencia en la aplicación, ya que un cortocircuito con la tensión externa.

Page 12: ADC en un AVR_present.pdf

Otro punto importante a tener en cuenta es el hecho de que la conexión de un condensador externo de 100 uf entre

el pin VREF y GND aumentará la precisión y la estabilidad del ADC. Especialmente cuando se desea utilizar la

referencia interna 2.56 V.

Si decide 2.56V como Vref el tamaño del paso del ADC será 2.56/1024= 10/4 = 2.5 mV.

Fuente del canal de entrada del ADC

Si selecciona la entrada de una sola terminal, puede elegir el canal de entrada entre ADC0 a ACD7. En este caso, un

solo pin se utiliza como la línea analógica, y GND del chip AVR se utiliza como tierra común. La Tabla muestra los

valores de los pines MUX3-MUX0 de diferentes entradas.

Page 13: ADC en un AVR_present.pdf

Registro ADCSRA

El registro ADCSRA es el registro de estado y de control del ADC. Los bits de este registro controlan o monitorean la

operación de los ADC. En la figura se puede ver una descripción de cada bit del registro ADCSRA.

ADEN ADC Enable

Este bit habilita o deshabilita el ADC. Configuración de este bit a uno habilita el ADC, y limpieza de este bit a cero

deshabilitará incluso mientras una conversión está en progreso.

ADSC ADC Start Conversion

Para empezar cada conversión tiene que establecer este bit a uno.

ADFR ADC Auto disparador

Auto activación del ADC, está habilitado cuando se configura este bit a uno.

ADIF ADC Interrupt Flag

Este bit se establece a uno cuando una conversión se completa y los registros de datos se actualizan.

ADIE ADC Interrupt Enable

Al activar este bit a uno permite al ADC una interrupción cuando completa la conversión.

ADPS2: 0 Bits Preescalar Select

Estos bits determinan el factor de división entre la frecuencia XTAL y el reloj de entrada al ADC.

Page 14: ADC en un AVR_present.pdf

ADCSC bit de Inicio de Conversión

Como dijimos antes, un ADC tiene una entrada de inicio de Conversión. El chip AVR tiene un circuito especial para

desencadenar la conversión inicial. Como se ve en la figura mas abajo, además del bit ADCSC de ADCSRA hay otras

fuentes de activación de inicio de la conversión. Si usted setea el bit ADATE de ADCSRA a uno, se puede seleccionar

la fuente de activación automática mediante la actualización ADTS2: 0 en el registro SFIOR. Si se borra ADATE, el

ajuste en los ADTS2: 0 no tendrán efecto. Tenga en cuenta que hay muchas consideraciones, si desea utilizar el

modo de disparo automático.

Fuentes de disparo en el ADC

Page 15: ADC en un AVR_present.pdf

Un tiempo de conversión A / D

Como se ve en la figura siguiente, mediante el uso de los bits ADPS2: 0 del registro ADCSRA podemos establecer el

tiempo de conversión A / D. Para seleccionar el tiempo de conversión, se puede seleccionar cualquiera de Fosc / 2,

Fosc / 4, Fosc / 8, Fosc/16, Fosc/32, Fosc/64 o Fosc/128 de reloj ADC, donde Fosc es la frecuencia del cristal

conectado al chip AVR. Observe que el multiplexor tiene 7 entradas ya que la opción ADPS2: 0 = 000 está reservada.

Para el AVR, el ADC requiere una frecuencia de reloj de entrada de menos de 200 kHz para la máxima precisión.

Selección del Reloj para el ADC Ejemplo

Un AVR está conectado a un oscilador de cristal de 8 MHz. Calcular la frecuencia para el ADC si : (a) ADPS2: 0 = 001

(b) ADPS2: 0 = 100 (c) ADPS2: 0 = 111

Solución:

(a) Debido a que ADPS2: 0 = 001 (decimal 1), la entrada CK / 2 se activará; tenemos 8 MHz / 2 = 4 MHz (mayor de

200 kHz y no válida)

(b) Debido a ADPS2: 0 = 100 (decimal 4), la entrada CK / 8 se activará; tenemos 8 MHz / 16 = 500 kHz (mayor de 200

kHz y no válida)

Page 16: ADC en un AVR_present.pdf

(e) Por ADPS2: 0 = 111 (7 decimal), se activa la entrada ck/I28, tenemos 8 MHz / = 62 kHz (una opción válida, ya que

es inferior a 200 kHz)

Pasos en la programación del convertidor A / D utilizando sondeo

Para programar el convertidor A/D del AVR, realiza los siguientes pasos :

1. Hacer el pin para el canal ADC seleccionado un pin de entrada

2. Encienda el módulo ADC del AVR porque está deshabilitado para ahorrar energía,

3. Seleccione la velocidad de conversión, usamos los bits ADPS2: 0 para seleccionar la velocidad de conversión en el

registro ADCSRA.

4. Seleccionar referencia de voltaje y los canales de entrada del ADC. Utilizamos los bits REFS0 y REFS1 en el registro

ADMUX para seleccionar la referencia de tensión y los bits MUX4: 0 en ADMUX para seleccionar el canal de entrada

ADC

5. Active el bit de inicio de conversión escribiendo un uno en el bit ADSC de ADCSRA.

6. Espere a que la conversión se complete mediante el sondeo del bit ADIF en el registro ADCSRA.

7. Después de que el bit ADIF se coloque a uno, lea los registros ADCL y ADCH para obtener la salida de datos

digitales. Tenga en cuenta que hay que leer ADCL antes de ADCH, de lo contrario, el resultado no será valido

8. Si quiere leer el canal seleccionado de nuevo, vuelva al paso 5.

9. Si desea seleccionar otra fuente Vref o canal de entrada, vuelva al paso 4.

Page 17: ADC en un AVR_present.pdf

Programa en C Este programa coloca los datos desde el canal 0 del ADC en los puertos PORTB y PORTD de manera infinita.

#lnclude <avr/io.h>

int main (void)

{

DDRB 0xFF; //salida

DDRD 0xFF; //salida

DDRC ; // Entrada

ADCSRA= 0x87; //habilita el ADC y selecciona ck/128

ADMUX= 0XC0; //2.56V Vref, entrada ADC0,data justificada a la derecha

while (1){

ADCSRA|=(1<<ADSC); //Inicio de conversion

while((ADCSRA&(1<<ADIF))==O);//espera fin de conversion

PORTD ADCL; //escribe el byte bajo al PORTD

PORTE = ADCH; //escribe el byte alto al PORTB

}

return 0;

}

Page 18: ADC en un AVR_present.pdf

Utilizando interrupción

#include <avr\io.h>

#include <avr\interrupt.h>

ISR (ADC_vect)

{

PORTD = ADCL; //escribe el byte bajo al PORTD

PORTB = ADCH; //escribe el byte alto al PORTB

ADCSRA|=(1<<ADSC); //Inicio de conversion

}

int main(void) {

DDRB 0xFF; //salida

DDRD 0xFF; //salida

DDRC ; // Entrada

sei ( ) ;

ADCSRA= 0x8F; //habilita la interrupcion,habilita el ADC y selecciona ck/128

ADMUX= OxC0; //2.56V Vref, entrada ADC0,data justificada a la derecha

ADCSRA| = (l<<ADSC) ;//Inicio de conversion

while (1);

return 0;

}