Você está na página 1de 3

UNIVERSIDAD NACIONAL DEL CALLAO

FACULTAD DE INGENIERIA ELECTRICA Y ELECTRONICA


ESCUELA DE INGENIERIA ELECTRONICA

MICROCONTROLADORES Y SISTEMAS EMBEBIDOS

LABORATORIO: PROYECTO

TITULO: DESARROLLO DE VOLTIMETRO DIGITAL CON DSPIC30F4013


OBJETIVO:
Estudiar el funcionamiento del módulo ADC del dsPIC30F y mostrar caracteres y
números

INTRODUCCION

1. Circuito del voltímetro:


El voltaje a medir se realiza de un potenciómetro atraves del canal AN0
La tensión medida va desde 0 hasta 5,0 voltios en corriente continua.
La visualización es una pantalla lcd de 2x16.
Cualquier pantalla lcd 2x16 que lleve el controlador Hitachi HD44780 o compatible (datasheet
del controlador Hitachi HD44780) podrá servir para visualizar la medida en voltios.
El circuito se basa en el conocido microcontrolador dsPIC30F de la casa Microchip (datasheet
de la familia de controladores dsPIC30F4013)

..
Esquema Experimental

Lo primero que tenemos que saber es que nuestro dsPIC sólo admite tensiones de 5 voltios
como máximo en sus entradas.
Entonces ¿cómo podemos medir tensiones superiores?; muy sencillo, con un divisor resistivo
esto se realiza para medir tensiones superior a 5 V

JACOB ASTOCONDOR VILLAR 1


UNIVERSIDAD NACIONAL DEL CALLAO
FACULTAD DE INGENIERIA ELECTRICA Y ELECTRONICA
ESCUELA DE INGENIERIA ELECTRONICA
Hemos utilizado una conexión de 4 hilos (puerto D) para los datos, para mostrar los datos en
la pantalla y pines de control del LCD ( conectados al puerto F)

2. Diseño del programa:


El diseño esta realizado para utilizar el software PIC C

// configuración de los fuses


#include <30F4013.h>
#FUSES NOWDT // Sin temporizador de vigilancia
#FUSES HS2_PLL16 //Crystal osc <= 4mhz for PCM/PCH , 3mhz to 10 mhz for PCD
#FUSES PR_PLL //Primary Oscillator
#FUSES NOCKSFSM // Clock Switching is disabled, fail Safe clock monitor is disabled
#FUSES WPSB16 //Watch Dog Timer PreScalar B 1:16
#FUSES WPSA512 //Watch Dog Timer PreScalar A 1:512
#FUSES PUT64 //Power On Reset Timer value 64ms
#FUSES NOBROWNOUT //No brownout reset
#FUSES BORV47 //Brownout reset at 4.7V
#FUSES LPOL_HIGH //Low-Side Transistors Polarity is Active-High (PWM 0,2,4 and 6)
//PWM module low side output pins have active high output polar
#FUSES HPOL_HIGH //High-Side Transistors Polarity is Active-High (PWM 1,3,5 and 7)
//PWM module high side output pins have active high output polarity
#FUSES NOPWMPIN //PWM outputs drive active state upon Reset
#FUSES MCLR //Master Clear pin enabled
#FUSES NOPROTECT //Code not protected from reading
#FUSES NOWRT //Program memory not write protected
#FUSES NODEBUG //No Debug mode for ICD
#FUSES NOCOE //Device will reset into operational mode
#FUSES ICSP1 //ICD uses PGC1/PGD1 pins
#FUSES RESERVED //Used to set the reserved FUSE bits

#device adc=12 //ADC 12 bits


#use delay(clock=120000000)
//código

#define LCD_ENABLE_PIN PIN_F4 ////


#define LCD_RS_PIN PIN_F6 ////
#define LCD_RW_PIN PIN_F5 ////
#define LCD_DATA4 PIN_D2 ////
#define LCD_DATA5 PIN_D8 ////
#define LCD_DATA6 PIN_D1 ////
#define LCD_DATA7 PIN_D0

#include <lcd.c>
#include <math.h>
#include <stdlib.h>

float voltaje;
float Lect_adc;

void main()
{

Lect_adc=0;// valor adc


voltaje=0;
lcd_init();
setup_adc_ports (sAN0 VREF_VREF);
setup_adc(ADC_CLOCK_DIV_32|ADC_TAD_MUL_2); // especificamente configurado a 120
while(true)
{
set_adc_channel(0);
Lect_adc = read_adc();
delay_ms(20);

JACOB ASTOCONDOR VILLAR 2


UNIVERSIDAD NACIONAL DEL CALLAO
FACULTAD DE INGENIERIA ELECTRICA Y ELECTRONICA
ESCUELA DE INGENIERIA ELECTRONICA
voltaje=((5.0*Lect_adc)/4095);
lcd_putc("\f");
lcd_gotoxy(0,1);
printf(lcd_putc,"Voltaje = %f ",voltaje);
lcd_gotoxy(0,2);
printf(lcd_putc,"ADC = %f",Lect_adc);
delay_ms(500);
}
}

3. Simulación en el proteus se realiza con los dsPIC33F


4. Pruebas se realiza con el dsPIC30F4013
5. Se pide diseñar para medir para otras escalas por ejemplo para: 12 v, 16v,18,24v

JACOB ASTOCONDOR VILLAR 3

Você também pode gostar