Está en la página 1de 8

UNIVERSIDAD NACIONAL DEL CALLAO

FACULTAD DE INGENIERÍA ELÉCTRICA Y ELECTRÓNICA


ESCUELA PROFESIONAL DE INGENIERÍA ELECTRÓNICA

LABORATORIO Nº3
TEMA:
VOLTAJE Y TEMPERATURA DIGITAL

ASIGNATURA:
MICROCONTROLADORES Y SISTEMAS EMBEBIDOS

PROFESOR:
ASTOCONDOR VILLAR, JACOB

INTEGRANTES:

• Alvarez Sandoval Piero Alessandro 1823220995


• Cjuno Rodríguez Sebastian Renzo 1823210906
• De la Cruz Salvador Kevin Gerzón 1823211016
• More Pumarrumi Jean Carlos 1823220773
• Vilca Perez Ivan Tomas 1823221273
LABORATORIO 3
VOLTIMETRO Y TEMPERATURA DIGITAL

PREGUNTA 1: Realice un voltímetro digital cuyo rango de medición varie entre 0 a


20 V, el valor de la medición reflejarlo en una pantalla LCD.

Diagrama de flujo
Código
#define F_CPU 16000000UL
#include <avr/io.h>
#include <util/delay.h>
#include <stdio.h>
#include "DEF_ATMEGA328P.h"
#include "LCD.h"

void ADC_init(void)
{
ADMUX |= (1<<REFS0); //Seleccionar el voltaje de referencia
ADMUX &=~ (1<<REFS1);
ADMUX &=~ (1<<ADLAR); //Ajustar el resultado

ADCSRA |= (1<<ADPS0); // divisor = 128 16000/128 = 125 KHz


ADCSRA |= (1<<ADPS1);
ADCSRA |= (1<<ADPS2);
ADCSRA |= (1<<ADEN); // Encendemos en ADC
}

uint16_t ADC_read(uint8_t canal)


{
canal&=0b00001111; //Limitar la entrada a 5
ADMUX = (ADMUX & 0xF0)|canal; //Limpiar los últimos 4 bits de ADMUX, OR
con ch
ADCSRA|=(1<<ADSC); //Inicia la conversión
while((ADCSRA)&(1<<ADSC)); //Hasta que se complete la coversión
return(ADC); //devuelve el valor del adc
}

char str[10];
uint16_t dato_adc;
float volataje_x;

int main(void)
{
//1023 - 20V
//dato_adc - X

/* Replace with your application code */


LCD_init();
ADC_init();

while (1)
{
LCD_clear();
dato_adc = ADC_read(1);
itoa(dato_adc, str, 10);
LCD_goto(1,0);
LCD_printf("ADC =");
LCD_goto(8,0);
LCD_printf(str);

volataje_x = 4*((float)(5.0/1023) * dato_adc);


dtostrf(volataje_x, 5, 2, str);
LCD_goto(1,2);
LCD_printf("VOLT =");
LCD_goto(8,2);
LCD_printf(str);

_delay_ms(100);
}
}
Simulación
PREGUNTA 2: Realice un medidor de temperatura cuyo rango de medición varie
entre 0 a 50 ºC, el valor de la medición reflejarlo en una pantalla LCD.

Diagrama de flujo
Código
#define F_CPU 16000000UL //Definimos la velocidad del CPU
#include <avr/io.h> //Libreria del atmega
#include <util/delay.h> //Libreria del delay
#include <stdio.h> //
#include "DEF_ATMEGA328P.h"
#include "LCD.h" //Libreria del LCD

void ADC_init(void)
{
ADMUX |= (1<<REFS0); //Seleccionar el voltaje de referencia
ADMUX &=~ (1<<REFS1);
ADMUX &=~ (1<<ADLAR); //Ajustar el resultado

ADCSRA |= (1<<ADPS0); // divisor = 128 16000/128 = 125 KHz


ADCSRA |= (1<<ADPS1);
ADCSRA |= (1<<ADPS2);
ADCSRA |= (1<<ADEN); // Encendemos en ADC
}

uint16_t ADC_read(uint8_t canal)


{
canal&=0b00001111; //Limitar la entrada a 5
ADMUX = (ADMUX & 0xF0)|canal; //Limpiar los últimos 4 bits de ADMUX, OR
con ch
ADCSRA|=(1<<ADSC); //Inicia la conversión
while((ADCSRA)&(1<<ADSC)); //Hasta que se complete la conversión
return(ADC); //devuelve el valor del adc
}

char str[10]; //Agregamos las variables


uint16_t dato_adc;
float temp_x;

int main(void)
{
//1023 - 5v
//dato_adc - X

LCD_init();
ADC_init();

while (1)
{
LCD_clear(); //limpiamos el lcd
dato_adc = ADC_read(0); //Seleccionamos el canal 0 (PC0) del adc
itoa(dato_adc, str, 10); //TRANSFORMA EL ENTERO "dato_adc" A UN
ARREGLO DE CARACTER
//GUARDADO EN ADC PARA PODER SER VISUALIZADO EN EL LCD
LCD_goto(1,0);
LCD_printf("ADC =");
LCD_goto(8,0);
LCD_printf(str);

temp_x = 100*((float)(5.0/1023) * dato_adc);


dtostrf(temp_x, 5, 2, str);
LCD_goto(1,2);
LCD_printf("TEMP =");
LCD_goto(8,2);
LCD_printf(str);
LCD_goto(13,2);
LCD_printf(" C");
_delay_ms(100);
}
}

Simulación

conclusiones y recomendaciones.
1.1. Conclusiones:

➢ Los programas nos ayudan a poder conocer más acerca del


Software Atmel Studio y del Proteus.

➢ Gracias al tema podemos aprender a como programar en el


microcontrolador ATMega128P.

➢ Existen muchas formas de poder configurar la programación y


se estima que las siguientes sesiones se pueda seguir
aprendiendo más.

1.2. Recomendaciones:

➢ Configurar bien la frecuencia de trabajo del Atmel Studio y del


Proteus.

➢ Revisar las conexiones en el Proteus.

➢ Revisar la configuración del programa y que no existan


errores al momento de compilar.
➢ Lograr saber los conocimientos previos en el informe escrito.

También podría gustarte