Está en la página 1de 2

UNIVERSIDAD NACIONAL DEL CALLA0

FIEE

MICRO CONTROLADOR ATMEGA8

VOLTIMETRO DIGITAL CON PROCESADOR ATMEGA8


Descripcin del proyecto a continuacin:
Hay seis grandes bloques en el dispositivo:
El selector de gama potencimetro
RMS a DC
no se realiza el voltaje se toma de una fuente fija de
5V
ADC de 10 bits
configuracin y control por software
unidad de microcontrolador (MCU), ATMEGA8
El teclado
se remplaza por un potenciometro
La pantalla LCD.
LCD de 2x16
El rango de seleccin de las escalas de la tensin de entrada a un valor conocido, bajo
el control de la MCU-atmega8.
Tambin NO incluye la proteccin de circuitos, para evitar daos en el resto del
circuito en caso de alta tensin que se debe aplicar con un bajo factor de escala
seleccionado.
El rango de medida es de : 0 -6V

El selector de entrada de tensin es un potencimetro el cual alimenta a la


a la entrada del ADC. El ADC es 10-bits que incorpora el ATMEGA8
El ADC del ATMEGA8 es configurado y controlado por software y que tiene que
darse formato de los datos requeridos, la conversin y el almacenamiento de datos
Adems, se implementa la interfaz de usuario a travs de un LCD alfanumrico de
16x2
CIRCUITO EXPERIMENTAL

UNIVERSIDAD NACIONAL DEL CALLA0


FIEE

MICRO CONTROLADOR ATMEGA8

DESARROLLO DEL PROGRAMA

/*
* voltimt1.c
* DESARROLLO DE VOLTIMETRO DE 0 -5V
* Created: 13/02/2013 07:37:10
* Author: JACOB ASTOCONDOR VILLAR
*/
#include "avr_compiler.h"
#include "lcd.h"
void adc_setup(void);
unsigned int adc_read(char channel);
int main(void)
{
char cadena[14],cadena2[14];
int n,vol1,vol2;
float vol;
lcd_init();
adc_setup();
lcd_gotorc(1,1);
lcd_puts("ADC:");
lcd_gotorc(2,1);
lcd_puts("voltaje:");
while(1)
{

n=adc_read(0);
vol=n*5.0/1023;
vol1=vol;
vol2=(vol-vol1)*100;
sprintf(cadena,"%0004u",n);
lcd_gotorc(1,11);
lcd_puts(cadena);
sprintf(cadena2 ,"%d.%02d v.",vol1,vol2);
lcd_gotorc(2,11);
lcd_puts(cadena2);

void adc_setup(void)
{
ADMUX=0X40;
ADCSRA=0X86;
}
unsigned int adc_read(char channel)
{
ADMUX&=0XF8;
ADMUX|=channel;
ADCSRA|=(1<<ADSC);
while(ADCSRA&(1<<ADSC));
return ADC;
}

También podría gustarte