Pages Menu
TwitterFacebook



BANNER2_ALT

Posted by on Abr 15, 2014 in AVR | 0 comments

ADC AVR

ADC AVR

ADC AVR Uso en un ATmega8

Descripción

Con este programa podremos visualizar a través de los LEDs, el valor en binario tomado del ADC AVR conectado a un potenciómetro. El ADC se trabajara a manera de conversión simple y se tomaran solo 8 de los 10 bits, de los cuales se ajustaran para que la salida vaya de 0 a 63, que será representada por los LEDs conectados al microcontrolador. Para mas referencia del ADC visitar: http://es.wikipedia.org/wiki/Conversi%C3%B3n_anal%C3%B3gica-digital

 

Diagrama Esquemático

ADC AVR

Diagrama esquemático.

Materiales

 

Introducción

El ADC AVR

El ADC AVR convierte señales continuas a números discretos. El ADC es un dispositivo electrónico que pasa un nivel de voltaje de entrada a un valor digital proporcional a la magnitud de la entrada, la salida digital puede estar descrita por diferentes codificaciones.

En este caso, el ADC a utilizar es el del microcontrolador ATega8 el cual es un ADC de 10 bits, de los cuales solo usaremos 8. Las características principales del ADC del ATmega8 son:

  • -Resolución de 10 bits
  • -± 2 bits de precisión
  • -13 a 260 us de tiempo de conversión
  • -6 Canales de entrada multiplexados
  • -Rango de voltaje de entrada de 0-Vcc
  • -Selector de voltaje de referencia de 2.56v
  • -Tipos de conversión continuo o simple
  • -Interrupción de conversión
  • -Ahorro de energía

 

Potenciómetro

El potenciómetro es un tipo de resistencia variable el cual varia conforme se gira la perilla que tiene, en este caso el potenciómetro es usado para generar un divisor de voltaje el cual al variar la resistencia, la salida de voltaje también cambiara proporcionalmente.

El potenciómetro tiene 3 patas las cuales son:

ADC AVR

Potenciometro

 

Programa en C

#include<avr/io.h>
#include<util/delay.h>

int main (void)
{
int ADC_val;
DDRD = 0xFF;
ADCSRA = 0xC0;         //Configurar el registro ADCSRA
ADMUX  = 0x22;         //Configurar el registro ADMUX

while(1) {
ADCSRA|=_BV(ADSC);     //Activar el bit ADSC del registro ADCSRA inicio de conversión
ADC_val=(ADCH*63)/255; //Ajustar la recta para que vaya de 0 a 63
PORTD = ADC_val;
}
}

 

Detalles del programa

ADCSRA = 0xC0;
ADC AVR

ADCSRA

Para el registro ADCSRA se asigno 0xC0 o 0b11000000, hexadecimal o binario respectivamente. El bit 7 ADEN habilita el uso del ADC, y el bit 6 ADSC al escribirle un uno inicia la conversión.

ADMUX  = 0x22;
ADC AVR

ADMUX

Se activan los bits 5 y 2 por lo que el registro nos queda como 0b00100010 (lo que es igual en hexadecimal a 0x22), al activar el bit 1 le indicamos al ADC que tome la entrada del pin del ADC2

ADC AVR

ADMUX

 

con el bit 5 (ADLAR) del registro ADMUX configuramos la manera en la que nos deposita el valor en los dos registros, para este caso se configuro de la siguiente manera, en la que como se puede ver se ignoraron los dos bits más significativos.

ADC AVR

ADLAR

 

ADCSRA|=_BV(ADSC);

Al estar trabajando el ADC en este modo es necesario indicarle cada cuando tiene que realizar la conversión, con esta instrucción solo entra al bit ADSC del registro y lo habilita, no se modifica cualquier otro valor del registro ADCSRA.

ADC_val=(ADCH*63)/255;

Ya que el valor del ADCH es de 8 bits (como se ve en la imagen al ajustar el ADLAR), se tiene que ajustar la salida a que sea de 6 bits, ya que se están usando solo 6 LEDs, esto se hace ajustando la recta, multiplicando por el máximo de nuestra salida ideal y dividiéndolo por el máximo de la salida obtenida

ADC AVR

y=mx+b

 

Post a Reply

Tu dirección de correo electrónico no será publicada. Los campos necesarios están marcados *