FACULTAD DE INGENIERIA ELECTRICA Y ELECTRONICA
LABORATORIO N°5: USO DEL MODULO ADC OBJETIVO:
Comprobar el funcionamiento del módulo adc del Atmega8
Familiarizarse aún más con las funciones en c para Atmega8.
FUNDAMENTO TEORICO: DESCRIPCIÓN DEL CIRCUITO El siguiente proyecto se trata de un dispositivo electrónico que muestra el valor del voltaje ingresado por potenciómetro conectado a la entrada análoga PC0. Estos valores se muestran a través de una pantalla LCD.
DESCRIPCIÓN DEL ADC DEL ATMEGA8 Un conversor analógico digital, también llamado ADC, es un dispositivo electrónico que toma un voltaje de entrada analógico y después de cierto tiempo produce un código de salida que representa la entrada analógica. La figura presenta el esquema general de un ADC:
n
Para el proceso de conversión, la señal máxima de entrada se divide en 2 niveles, donde “n” es el número de bits que indica la resolución del conversor; con ello, se establece una relación entre el nivel de señal de entrada y el valor digital a la salida resultante de la conversión. En la figura 2 se puede observar una señal digitalizada con una resolución de 3 bits; si hubiera habido un mayor número de bits de resolución, la separación vertical de la cuadrícula (denominado LSB) sería menor, obteniendo así una mejor calidad en la digitalización. El tiempo que tarda la conversión es la diferencia de T i+1 – Ti. La tabla 1 muestra el código de salida para cada muestra.
MICROCONTROLADORES -2013V
FACULTAD DE INGENIERIA ELECTRICA Y ELECTRONICA
Código de
Señal analógica de
11 11 10 10 01 01 00 00 T T T T T T T
T T T
T T
tiem
Número de
Número de muestra T0 T1 T2 T3 T4 T5 T6 T7 T8 T9 T10 T11
Código digital a la salida 001 001 001 010 101 111 110 101 100 100 011 010
DESCRIPCIÓN DEL CONVERSOR ANÁLOGO DIGITAL DEL ATMEGA8L
El Atmega8L cuenta con un ADC de aproximaciones sucesivas de 10 bits de resolución. Mediante un multiplexor se conectan 8 canales (el Atmega8L en empaque DIP posee 6 canales) cuyas entradas se encuentran en el Puerto C según se puede observar en el diagrama esquemático del conversor:
MICROCONTROLADORES -2013V
FACULTAD DE INGENIERIA ELECTRICA Y ELECTRONICA
Registros utilizados para el manejo del ADC Registro ADCSRA
Bit 7 – ADEN: habilitador del ADC. Al escribir un “1” en ADEN, el ADC se habilitará. Si se escribe “0” el ADC es apagado.
Bit 6 – ADSC: Inicio de conversión del ADC. En el modo “Conversión Simple”, al escribir “1” en este bit se inicializa cada conversión. En el modo de “Carrera Libre”, escribir “1” en ADSC indica el inicio de la primera conversión. ADSC permanecerá en “1” durante todo el tiempo de conversión, y cambiará a “0” al completar la conversión.
MICROCONTROLADORES -2013V
FACULTAD DE INGENIERIA ELECTRICA Y ELECTRONICA
Bit 5 – ADFR: Selector de carrera libre del ADC. Para seleccionar el modo de “Carrera Libre”, el ADFR debe estar en “1”
Bit 4 – ADIF: Bandera de interrupción del ADC. Se pone automáticamente en “1” cuando el ADC completa su conversión y el registro de datos se actualiza. Si los bits ADIE y el bit I del registro SREG estan en “1”, se genera una interrupción al estar ADIF en “1”; luego del salto al correspondiente vector de interrupción ADIF pasa a “0”. De manera alternativa se puede poner el bit ADIF en “0” escribiendo un “1” en el mismo bit.
Bit 3 – ADIE: Habilitador de interrupción del ADC. Cuando éste bit y el bit I del SRGE están en “1”, la interrupción por conversión completa del ADC es activada.
Bits 2:0 – ADPS2:0: Bits de selección del pre escalador. Estos bits determinan el factor de división entre la frecuencia del cristal y la entrada de reloj del ADC según la Tabla.
Registro ADMUX
Bits 7:6 – REFS1:0:
Bits de selección de voltaje de referencia. Seleccionan el voltaje de
referencia del ADC según se muestra en la tabla 2. Si se modifican durante una conversión, el cambio se efectuará en la siguiente conversión (ADIF in ADCSRA es “1”)
Bit 5 – ADLAR:
Ajusta a la izquierda el resultado de la conversión, si ADLAR es “1”.
Caso contrario el resultado es ajustado a la derecha (revisar la descripción de los registros de datos ADCH y ADCL de este manual). Bits 3:0 – MUX3:0: Seleccionan el canal de referencia al que será conectado el ADC.
Registros de datos ADCH y ADCL Cuando la conversión termina, el resultado se almacena en estos registros. La forma de su presentación depende del estado del bit ADLAR
MICROCONTROLADORES -2013V
FACULTAD DE INGENIERIA ELECTRICA Y ELECTRONICA
Parte I.- MOSTRAR MENSAJE: UNAC – FIEE MICRO_ATMEGA8
MICROCONTROLADORES -2013V
FACULTAD DE INGENIERIA ELECTRICA Y ELECTRONICA
2.- Realizar el programa para mostrar el mensaje que se muestra en la figura 01 mediante el entorno AVR STUDIO 6 #include "avr_compiler.h" //inclusion de librerias #include "lcd.h” void delay_ms(unsigned int t) //function delay ms a partir de us { while(t--) delay_us(1000); } int main(void) { lcd_init(); // Inicializar LCD while(1) { lcd_gotorc(1,7); // Cursor a fila 1 posición 7 lcd_puts(“UNAC-FIEE"); // Escribir Hello lcd_gotorc(2,7); // Cursor a fila 2 posición 7 lcd_puts(“MICRO -ATMEGA8"); //mensaje delay_ms(600); // Pausa de 600 ms lcd_clear(); // Limpiar pantalla delay_ms(400); //delay 400ms } }
MICROCONTROLADORES -2013V
FACULTAD DE INGENIERIA ELECTRICA Y ELECTRONICA
Diagrama de flujo
Realizar la simulación
MICROCONTROLADORES -2013V
FACULTAD DE INGENIERIA ELECTRICA Y ELECTRONICA
CÓDIGO DEL PROGRAMA: #include
#include "lcd.h" #include void InitADC() //funcion de inicializacion de adc { ADMUX=(1<
void print(uint16_t voltaje) function para mostrar valor adc { lcd_putc((voltaje/200)+48);//separamos cada digito mayor voltaje%=200; //residuo lcd_puts("."); //punto decimal lcd_putc((voltaje/20)+48);//digito medio voltaje%=20; //residuo lcd_putc((voltaje/2)+48);//digito menor } void print2(uint16_t voltaje) {//separacion de digitos para mostrar de uno en uno lcd_putc((voltaje/1000)+48); voltaje%=1000; lcd_putc((voltaje/100)+48); voltaje%=100; lcd_putc((voltaje/10)+48); voltaje%=10; lcd_putc((voltaje/1)+48); MICROCONTROLADORES -2013V
FACULTAD DE INGENIERIA ELECTRICA Y ELECTRONICA
} void main() //función principal { int adc; //variable adc int adc2; //variable adc2 while(1) { lcd_init(LCD_DISP_ON); //funcion para inicializar lcd lcd_clrscr(); //limpiado de pantalla lcd_gotoxy(0,0); // posicionar el mensaje lcd_puts("ADC="); // imprimir el mensaje InitADC(); //invoacion a funcion InitAdc adc2=ReadADC(0); //signación de valores a adc2 print2(adc2); //impresión de pantalla adc2 _delay_ms(100); //delay de 100ms lcd_gotoxy(0,1);// posicionar el segundo mensaje //en la segunda fila lcd_puts("Voltaje="); //imprimir en la segunda fila InitADC(); adc=ReadADC(0); print(adc); //impresión de voltaje lcd_puts("v"); _delay_ms(100); } }
MICROCONTROLADORES -2013V
FACULTAD DE INGENIERIA ELECTRICA Y ELECTRONICA
Diagrama de flujo
MICROCONTROLADORES -2013V
FACULTAD DE INGENIERIA ELECTRICA Y ELECTRONICA
PARTE III SISTEMA DE MEDICION DE TEMPERATURA
DISEÑO DEL PROGRAMA:
#include #include "lcd.h" #include "math.h" #include
//Cargando las librerias necesarias para usar...
//...el LCD y la funcion retraso y operaciones matematicas
void InitADC() //Funcion de configuracion del convertidor analogo digital { ADMUX=(1<
FACULTAD DE INGENIERIA ELECTRICA Y ELECTRONICA
lcd_gotoxy(5,1); lcd_puts("T=");
// Cursor a fila 1 posición 5 //Escribir T
InitADC(); //Se llama la funcion InitADC V=ReadADC(0); //Se toma el valor que retorna: ADC=valor digital T=((1/(((log(V*0.00488/(2*(5-V*0.00488))))/4050)+1/298.5))-273.5); //funcion para converison de voltaje a temperatura print(T); //Escribe T lcd_putc(0xDF); //Escribe el simbolo: º cuyo valor hexadecimal es DFh lcd_puts("C"); //Escribe C _delay_ms(100); //Llama un retraso de 100ms } }
MICROCONTROLADORES -2013V
FACULTAD DE INGENIERIA ELECTRICA Y ELECTRONICA
Diagrama de Flujo
MICROCONTROLADORES -2013V
FACULTAD DE INGENIERIA ELECTRICA Y ELECTRONICA
Aplicaciones de los circuitos y programas señalados:
El módulo ADC nos permite convertir cualquier señal analógica en digital, lo que nos lleva a manejar datos en forma digital , para un procesamiento más rápido y efectivo
El modulo ADC tiene infinidad de aplicaciones en la vida diaria , ya que todo es anlogico y requiere de un procesamiento digital.
Conclusiones
Hemos visto la importancia del modulo ADC del microcontrolador Atmega8
Se observo la importancia del estudio de los registros para el control del modulo ADC
Es importante incluir todas las librerías para los dispositivos mencionados
MICROCONTROLADORES -2013V