Está en la página 1de 5

Voltímetro digital

Objetivo general
*Aprender sobre el uso y programación del pic18f4550.
Objetivo particular
*Hacer un voltímetro digital.

Programas
Micro c
Proteus

Marco teórico
Voltímetro
Un voltímetro es un instrumento que sirve para medir la diferencia de potencial entre dos puntos
de un circuito eléctrico.
Voltímetros digitales
Dan una indicación numérica de la tensión, normalmente en una pantalla tipo LCD. Suelen tener
prestaciones adicionales como memoria, detección de valor de pico, verdadero valor eficaz
(RMS), autorrango y otras funcionalidades.

El sistema de medida emplea técnicas de conversión analógico-digital (que suele ser empleando
un integrador de doble rampa) para obtener el valor numérico mostrado en una pantalla numérica
LCD.

El primer voltímetro digital fue inventado y producido por Andrew Kay de "Non-Linear Systems"
(y posteriormente fundador de Kaypro) en 1954.

Display LCD
Las pantallas de cristal líquido (LCD) se han popularizado mucho en los últimos años, debido a su
gran versatilidad para presentar mensajes de texto (fijos y en movimiento), valores numéricos y
símbolos especiales, su precio reducido, su bajo consumo de potencia, el requerimiento de solo 6
pines del PIC para su conexión y su facilidad de programación en lenguajes de alto nivel (por
ejemplo, lenguaje C). Desde todo punto de vista el empleo del display LCD 16x2 (LCD 2x16)
debería considerarse como la primera opción a la hora de decidir por un dispositivo de
presentación alfanumérica, excepto cuando las condiciones de iluminación ambiental no sean las
más favorables. En este último caso se debería pensar en el empleo de displays de 7 segmentos,
que aunque no tienen la misma versatilidad tienen la ventaja innegable de sus mejores
características de visibilidad aún en los ambientes más desfavorables. En la actualidad existen
diversos modelos de display LCD, aunque los más comunes son los LCD 16x2 (16 caracteres x 2
filas) o LCD 2x16, gobernados por el controlador Hitachi HD44780, que se ha convertido en el
estándar de facto para las aplicaciones con microcontroladores PIC.

Específicamente se hará referencia al display LM016L, que tiene las características mencionadas,
aunque cualquier otro display LCD con el controlador HD44780 o compatible se puede utilizar.
Existen LCD 16x2 con diferentes combinaciones de colores de fondo y texto.

El LCD 16x2 (LCD 2x16) tiene en total 16 pines (tome en cuenta que la posición correcta del
display es con los pines en la parte superior, aunque existen modelos en los que la posición
correcta es con los pines en la parte inferior) . La datasheet (pdf) muestra 14 pines, los dos pines
adicionales son el ánodo (15) y el cátodo (16) del LED de fondo. Debe notarse que el controlador
Hitachi HD44780 se encuentra incorporado al circuito impreso del módulo LCD y que sirve de
interfaz entre la propia pantalla LCD (donde se muestran los caracteres) y el microcontrolador
PIC. Por lo tanto, de todos los pines del HD44780 únicamente se tiene acceso a aquellos
necesarios para la conexión al PIC y para el control de contraste.
PIC18f4550

Código utilizado
// Modulo LCD Conecciones
sbit LCD_RS at RB1_bit;
sbit LCD_EN at RB3_bit;
sbit LCD_D4 at RB4_bit;
sbit LCD_D5 at RB5_bit;
sbit LCD_D6 at RB6_bit;
sbit LCD_D7 at RB7_bit;

// Direccion Pin

sbit LCD_RS_Direction at TRISB1_bit;


sbit LCD_EN_Direction at TRISB3_bit;
sbit LCD_D7_Direction at TRISB7_bit;
sbit LCD_D6_Direction at TRISB6_bit;
sbit LCD_D5_Direction at TRISB5_bit;
sbit LCD_D4_Direction at TRISB4_bit;

const char character[] = {


31,31,31,31,31,31,31,31,
0,31,0,31,0,31,14,4, // llenado total
0,0,0,31,0,31,14,4, // segunda barra
0,0,0,0,0,31,14,4, //primera barra
};

//char hola[3];

int i=1;

void CustomChar(void);

void Out_CustomChar(char pos_row, char pos_char,char carac);

int poo = 0,resto2;

float resto;

char pp,bb;

char j[15];

char jj[7];

float ladc;

float vol=0.0;

void main(void)

{ TRISB = 0x00;

TRISA = 0x0F;

PORTA = 0x0f; // Limpiando los latches de salida del PORTA (PORTA = 0)

LATA = 0x00; // Metodo alternativo para limpiar los latches de salida

ADCON1 = 0x0e; // Configurando A/D para entrada digital

CMCON = 0x00; // Configurando los comparadores como entrada digtal


Lcd_Init();

Lcd_Cmd(_LCD_CURSOR_OFF); //apagando el cursor

// Sound_Init(&PORTA,0); // Inicializando el Generador de Sonido

Delay_ms(20);

// CustomChar();

while(1)

{
Lcd_Out(1,11,"voltaje");
ladc=ADC_Read(0);
vol=(5*ladc)/1023;
IntToStr(ladc,j);
Lcd_Out(1,1,j);
FloatToStr(vol,j);
Lcd_Out(2,2,j);
}
}

void Out_CustomChar(char pos_row, char pos_char,char carac)

{
LCD_Chr(pos_row, pos_char, carac);
}
void CustomChar(void)
{
char i,carac,pos;

for(carac=0;carac< 3 ;carac++)
{
pos=8*carac;
LCD_Cmd(64+pos);
for (i = 0; i<=7; i++) {
LCD_Chr_Cp(character[pos+i]);
}
}

Esquema del circuito

Conclusiones
Se pudo cumplir con la realización del voltímetro digital y además al realizar este mismo pudimos
ampliar nuestros conocimiento sobre el uso del pic18f4550 y del LCD 16x2

También podría gustarte