laboratorio 5 micro

17
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: Para el proceso de conversión, la señal máxima de entrada se divide en 2 n 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 MICROCONTROLADORES -2013V

Upload: hhenrir

Post on 11-Aug-2015

78 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Laboratorio 5 Micro

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:

Para el proceso de conversión, la señal máxima de entrada se divide en 2n 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

Page 2: Laboratorio 5 Micro

FACULTAD DE INGENIERIA ELECTRICA Y ELECTRONICA

Número de muestra

Código digital a la salida

T0 001T1 001T2 001T3 010T4 101T5 111T6 110T7 101T8 100T9 100T10 011T11 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

tiem

Señal analógica de Código de

Número de

1111101001010000

TTT9T8T7T6T5T4T3T2T1T0

Page 3: Laboratorio 5 Micro

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

Page 4: Laboratorio 5 Micro

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

Page 5: Laboratorio 5 Micro

FACULTAD DE INGENIERIA ELECTRICA Y ELECTRONICA

Parte I.- MOSTRAR MENSAJE: UNAC – FIEEMICRO_ATMEGA8

MICROCONTROLADORES -2013V

Page 6: Laboratorio 5 Micro

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

Page 7: Laboratorio 5 Micro

FACULTAD DE INGENIERIA ELECTRICA Y ELECTRONICA

Diagrama de flujo

Realizar la simulación

MICROCONTROLADORES -2013V

Page 8: Laboratorio 5 Micro

FACULTAD DE INGENIERIA ELECTRICA Y ELECTRONICA

CÓDIGO DEL PROGRAMA:

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

void InitADC() //funcion de inicializacion de adc

{ADMUX=(1<<REFS0);

Aref=AVcc;ADCSRA=(1<<ADEN)|(1<<ADPS2)|(1<<ADPS1)|(1<<ADPS0); //Prescalar div factor =128}

uint16_t ReadADC(uint8_t ch)//funcion para leer adc{//ch=0b00000101

ch=ch&0b00000111;ADMUX|=ch;ADCSRA|=(1<<ADSC);while(!(ADCSRA & (1<<ADIF)));ADCSRA|=(1<<ADIF);return(ADC);

}

void print(uint16_t voltaje) function para mostrar valor adc{

lcd_putc((voltaje/200)+48);//separamos cada digito mayorvoltaje%=200; //residuolcd_puts("."); //punto decimallcd_putc((voltaje/20)+48);//digito mediovoltaje%=20; //residuolcd_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

Page 9: Laboratorio 5 Micro

FACULTAD DE INGENIERIA ELECTRICA Y ELECTRONICA

}void main() //función principal{

int adc; //variable adcint adc2; //variable adc2while(1){

lcd_init(LCD_DISP_ON); //funcion para inicializar lcdlcd_clrscr(); //limpiado de pantallalcd_gotoxy(0,0); // posicionar el mensaje lcd_puts("ADC="); // imprimir el mensaje

InitADC(); //invoacion a funcion InitAdcadc2=ReadADC(0); //signación de valores a adc2print2(adc2); //impresión de pantalla adc2_delay_ms(100); //delay de 100ms

lcd_gotoxy(0,1);// posicionar el segundo mensaje //en la segunda filalcd_puts("Voltaje="); //imprimir en la segunda filaInitADC();adc=ReadADC(0);print(adc); //impresión de voltajelcd_puts("v");_delay_ms(100);

}}

MICROCONTROLADORES -2013V

Page 10: Laboratorio 5 Micro

FACULTAD DE INGENIERIA ELECTRICA Y ELECTRONICA

Diagrama de flujo

PARTE III SISTEMA DE MEDICION DE TEMPERATURA

MICROCONTROLADORES -2013V

Page 11: Laboratorio 5 Micro

FACULTAD DE INGENIERIA ELECTRICA Y ELECTRONICA

DISEÑO DEL PROGRAMA:

#include <avr/io.h> //Cargando las librerias necesarias para usar...#include "lcd.h"#include "math.h"#include <util/delay.h> //...el LCD y la funcion retraso y operaciones matematicas void InitADC() //Funcion de configuracion del convertidor analogo digital{

ADMUX=(1<<REFS0); //Se asigna como voltaje de referencia a AVccADCSRA=(1<<ADEN)|(1<<ADPS2)|(1<<ADPS1)|(1<<ADPS0); //Prescalar=128

}

uint16_t ReadADC(uint8_t ch){

ch=ch&0b00000111; //Selecciona canal 0ADMUX|=ch;ADCSRA|=(1<<ADSC); //Empieza conversion simplewhile(!(ADCSRA & (1<<ADIF))); //Espera a que termine la conversionADCSRA|=(1<<ADIF); //ADIF se limpia al escribir un 1 logicoreturn(ADC); //Se retorna el valor digital

}

void print(uint16_t tem) //Funcion para escribir digito por digito...{

lcd_putc((tem/10)+48);tem%=10;lcd_putc((tem/1)+48); //...el valor de la temperatura

}void main() //Funcion principal{

int V, T; //Se declaran las funciones de tipo entero: V y Twhile(1) //Bucle while infinito{

lcd_init(LCD_DISP_ON); // Inicializar LCDlcd_clrscr(); //Limpiar pantalla

lcd_gotoxy(3,0); // Cursor a fila 0 posición 3lcd_puts("TEMPERATURA"); //Escribir TEMPERATURA

lcd_gotoxy(5,1); // Cursor a fila 1 posición 5

MICROCONTROLADORES -2013V

Page 12: Laboratorio 5 Micro

FACULTAD DE INGENIERIA ELECTRICA Y ELECTRONICA

lcd_puts("T="); //Escribir T

InitADC(); //Se llama la funcion InitADCV=ReadADC(0); //Se toma el valor que retorna: ADC=valor digitalT=((1/(((log(V*0.00488/(2*(5-V*0.00488))))/4050)+1/298.5))-273.5);

//funcion para converison de voltaje a temperaturaprint(T); //Escribe Tlcd_putc(0xDF); //Escribe el simbolo: º cuyo valor hexadecimal es DFhlcd_puts("C"); //Escribe C_delay_ms(100); //Llama un retraso de 100ms

}}

Diagrama de Flujo

MICROCONTROLADORES -2013V

Page 13: Laboratorio 5 Micro

FACULTAD DE INGENIERIA ELECTRICA Y ELECTRONICA

Aplicaciones de los circuitos y programas señalados:

MICROCONTROLADORES -2013V

Page 14: Laboratorio 5 Micro

FACULTAD DE INGENIERIA ELECTRICA Y ELECTRONICA

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