Anda di halaman 1dari 18

ADC en un AVR

Dispositivos ADC Los Convertidores de analgico a digital se encuentran entre los dispositivos ms ampliamente utilizados para la adquisicin de datos. Los Ordenadores digitales utilizan valores binarios (discretos), pero en el mundo fsico todo es analgico (continuo). Temperatura, presin (viento o lquido), , la humedad y la velocidad son algunos ejemplos de magnitudes fsicas que tratamos todos los das. Una cantidad fsica se convierte en seales elctricas (voltaje, corriente) utilizando un dispositivo llamado transductor o sensor. Sensores de temperatura, velocidad, presin presin, luz, y muchas otras cantidades naturales producen una salida que es tensin (o corriente). Por lo tanto, es necesario un convertidor analgico a digital para convertir las seales analgicas a los nmeros digitales de manera que el microcontrolador pueda leer y procesar procesar.
Conexin de un sensor a un microcontrolador a travs de un ADC

Bloque de un ADC de 8bits

Caractersticas del ADC Resolucin El ADC tiene una resolucin de n bits, donde n puede ser 8, 10, 12, 16, o incluso 24 bits. El ADC de mayor resolucin proporciona un tamao de paso ms pequeo, donde el tamao de paso es el ms pequeo cambio que puede ser diferenciado por un ADC. Algunas resoluciones ampliamente utilizadas para un ADC se muestran en la Tabla siguiente. Aunque la resolucin de un chip ADC se decide en el momento de su diseo y no se puede cambiar, se puede controlar el tamao de paso con la ayuda de lo que se llama Vref o voltaje de referencia. Esto se discute a continuacin.

Resolucin versus tamao de paso para un ADC con Vref = 5v

Tiempo de conversin Adems de la resolucin, el tiempo de conversin es otro factor importante para juzgar un ADC. El Tiempo de conversin se define como el tiempo que tarda el ADC para convertir la entrada analgica a un nmero digital (binario). El tiempo de conversin es definido por la fuente de reloj conectado al ADC adems del mtodo utilizado para los datos conversin y la tecnologa utilizada en la fabricacin del chip ADC tales como MOS o tecnologa TTL.

Voltaje de referencia (Vref) Vref es un voltaje de entrada utilizado para la tensin de referencia. El voltaje conectado a este pin, junto con la resolucin del chip ADC, definen el tamao de paso. Para un ADC de 8 bit , el tamao 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 analgica debe ser 0 a 4 voltios, Vref est conectado a 4 voltios. Eso le da 4V/256 =15.62 mV para el tamao de paso de un ADC de 8 bits. En otro caso, si necesitamos un tamao de paso de 10 mV para un ADC de 8 bits, a continuacin, Vref = 2.56 V, debido a que 2.56V/256 = 10 mV. Para el ADC de 10 bits, si el Vref = 5V, a continuacin, el tamao del paso es de 4.88 mV, como se muestra en la Tabla. Las Tablas muestran la relacin entre Vref y el tamao de paso para los ADCs de 8 y 10 bits, respectivamente. En algunas aplicaciones, tenemos que la tensin 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

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 clculo de la tensin de salida, se utiliza la siguiente frmula:

donde = salida de datos digitales (en decimal), = voltaje de entrada analgico, y el tamao de paso (resolucin) es el cambio ms pequeo, 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 analgica es: (a) 1,7 V, y (b) 2,1 V. Solucin: Debido a que el tamao 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.

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 ms 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 estn siendo ampliamente utilizados. Mientras que los ADCs seriales utilizan menos pines y los paquetes son ms pequeos y toman mucho menos espacio en la tarjeta de circuito impreso, se necesita ms 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 operacin de lectura con el ADC paralelo. Canales de entrada analgicos Muchas aplicaciones de adquisicin de datos necesitan ms de un ADC. Por esta razn, vemos chips de ADC con 2, 4, 8, o incluso 16 canales en un solo chip. La Multiplexacin de entradas analgicas se utiliza ampliamente como se muestra en el ADC848 y MAX1112. En estas fichas, contamos con 8 canales de entradas analgicas, lo que nos permite controlar varias magnitudes tales como la temperatura, la presin, el calor, y as sucesivamente. Chips de microcontroladores AVR vienen con hasta 16 canales de ADC.

Seales de inicio de conversin y fin de conversin. El hecho de que tenemos varios canales de entrada analgica y un solo registro de salida digital crea la necesidad de las seales de inicio de conversin (SC) y de fin de conversin (EDC). Cuando se activa SC, el ADC inicia la conversin del valor de entrada analgica de Vin a un nmero digital de n bits. La cantidad de tiempo que se necesita para convertir vara dependiendo del mtodo de conversin como se ha explicado anteriormente. Cuando la conversin de datos esta completa, la seal de fin de conversin notifica a la CPU que los datos convertidos estn listos para ser recogidos. Aproximacin sucesiva ADC Aproximacin Sucesiva es un mtodo ampliamente utilizado para convertir una entrada analgica a salida digital. Tiene tres componentes principales: (a) registro de aproximacin sucesiva (SAR), (b) la comparacin, y (e) la unidad de control. Consulte la figura siguiente.

Cmo funciona la aproximacin sucesiva. Suponiendo un tamao de paso de 10 mV, la aproximacin 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 ms pequea 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 ms pequea que la entrada de 1 V, (4) 01110000 nos da 112 x 10 m V = 1120 mV y el bit 4 se ha cado 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 cado 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 cado 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 cado ya que es mayor que la entrada de 1 V. Observe que el mtodo de aproximacin sucesiva pasa por alto los pasos incluso si la respuesta se encuentra en uno de los pasos anteriores. La ventaja del mtodo de aproximaciones sucesivas es que el tiempo de conversin est fijado ya que tiene que ir a travs de todos los pasos.

ADC PROGRAMACIN EN EL AVR

Debido a que el ADC es ampliamente utilizado en la adquisicin de datos, en los ltimos aos un nmero creciente de microcontroladores han tenido un perifrico ADC en el chip, al igual que los temporizadores y USART. Un ADC en el chip elimina la necesidad de una conexin a un ADC externo, lo que deja ms pines para otras actividades de I/O. La gran mayora de los chips AVR vienen con ADC. Caractersticas del ADC en un ATMEGA El perifrico ADC del ATMEGA tiene las siguientes caractersticas: (a) Es un ADC de 10 bits. (b) Cuenta con 8(6 en el ATMEGA8) canales analgicos de entrada. (c) Los datos binarios de salida convertida est en manos de dos registros de funcin 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 slo 10 bits de ancho, 6 bits de los 16 no se utilizan. Tenemos la opcin 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 analgico) ' Referencia interna de 2.56 V, o pin externo AREF (f) El tiempo de conversin 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 seales de lgica digital una pequea variacin en el nivel de tensin no tiene efecto en la salida. Por ejemplo, 0.2 V se considera baja, ya que en la lgica TTL, toda tensin menor que 0.5V ser detectado como estado lgico bajo. Ese no es el caso cuando se trata de tensin analgica.

Ejemplo Para un ADC de 10-bit, tenemos Vref = 2.56 V. Calcular la salida D0-D9 si la entrada analgica es: (a) 0.2 V, y (b) 0 V. Cul es la variacin entre (a) y (b )? . Solucin: Debido a que el tamao 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 tcnicas para reducir el impacto de la tensin de alimentacin y la variacin de Vref en la veracidad de salida del ADC. A continuacin, examinamos dos de las tcnicas en el AVR ampliamente utilizadas. Conexin recomendada

Desacoplamiento AVCC desde VCC El pin AVCC proporciona la alimentacin para los circuitos analgicos ADC. Para tener una mejor precisin del ADC en el AVR debemos proporcionar una fuente de voltaje estable para el pin AVCC. La figura anterior muestra cmo utilizar un inductor y un condensador para lograrlo. Conexin de un condensador entre Vref y GND Mediante la conexin de un condensador entre el pin GND y AVREF puede hacer que el voltaje Vref sea ms estable y aumentar la precisin del ADC.

Programacin 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 seleccin de multiplexor en el ADC). Registro ADMUX

REFS1: 0 Bits de seleccin de referencia. Estos bits seleccionan la tensin 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.

MUX3: 0 Bits de seleccin de Canal Analgico y ganancia. El valor de estos bits selecciona la ganancia para los canales diferenciales y tambin selecciona la combinacin de entradas analgicas que se conectan al ADC.

La Figura muestra el diagrama de bloques de los circuitos internos de seleccin 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 seleccin 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 aplicacin, ya que un cortocircuito con la tensin externa.

Otro punto importante a tener en cuenta es el hecho de que la conexin de un condensador externo de 100 uf entre el pin VREF y GND aumentar la precisin y la estabilidad del ADC. Especialmente cuando se desea utilizar la referencia interna 2.56 V. Si decide 2.56V como Vref el tamao 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 lnea analgica, y GND del chip AVR se utiliza como tierra comn. La Tabla muestra los valores de los pines MUX3-MUX0 de diferentes entradas.

Registro ADCSRA El registro ADCSRA es el registro de estado y de control del ADC. Los bits de este registro controlan o monitorean la operacin de los ADC. En la figura se puede ver una descripcin de cada bit del registro ADCSRA.

ADEN ADC Enable Este bit habilita o deshabilita el ADC. Configuracin de este bit a uno habilita el ADC, y limpieza de este bit a cero deshabilitar incluso mientras una conversin est en progreso. ADSC ADC Start Conversion Para empezar cada conversin tiene que establecer este bit a uno. ADFR ADC Auto disparador Auto activacin del ADC, est habilitado cuando se configura este bit a uno. ADIF ADC Interrupt Flag Este bit se establece a uno cuando una conversin se completa y los registros de datos se actualizan. ADIE ADC Interrupt Enable Al activar este bit a uno permite al ADC una interrupcin cuando completa la conversin. ADPS2: 0 Bits Preescalar Select Estos bits determinan el factor de divisin entre la frecuencia XTAL y el reloj de entrada al ADC.

ADCSC bit de Inicio de Conversin Como dijimos antes, un ADC tiene una entrada de inicio de Conversin. El chip AVR tiene un circuito especial para desencadenar la conversin inicial. Como se ve en la figura mas abajo, adems del bit ADCSC de ADCSRA hay otras fuentes de activacin de inicio de la conversin. Si usted setea el bit ADATE de ADCSRA a uno, se puede seleccionar la fuente de activacin automtica mediante la actualizacin ADTS2: 0 en el registro SFIOR. Si se borra ADATE, el ajuste en los ADTS2: 0 no tendrn efecto. Tenga en cuenta que hay muchas consideraciones, si desea utilizar el modo de disparo automtico.

Fuentes de disparo en el ADC

Un tiempo de conversin 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 conversin A / D. Para seleccionar el tiempo de conversin, 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 opcin ADPS2: 0 = 000 est reservada. Para el AVR, el ADC requiere una frecuencia de reloj de entrada de menos de 200 kHz para la mxima precisin.

Seleccin 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 Solucin: (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 vlida) (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 vlida)

(e) Por ADPS2: 0 = 111 (7 decimal), se activa la entrada ck/I28, tenemos 8 MHz / = 62 kHz (una opcin vlida, ya que es inferior a 200 kHz) Pasos en la programacin 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 mdulo ADC del AVR porque est deshabilitado para ahorrar energa, 3. Seleccione la velocidad de conversin, usamos los bits ADPS2: 0 para seleccionar la velocidad de conversin 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 tensin y los bits MUX4: 0 en ADMUX para seleccionar el canal de entrada ADC 5. Active el bit de inicio de conversin escribiendo un uno en el bit ADSC de ADCSRA. 6. Espere a que la conversin se complete mediante el sondeo del bit ADIF en el registro ADCSRA. 7. Despus 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.

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; }

Utilizando interrupcin #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; }

Anda mungkin juga menyukai