Essays.club - Ensayos gratis, notas de cursos, notas de libros, tareas, monografías y trabajos de investigación
Buscar

COMPONENTES PARA REALIZAR LA MAQUETA DEL GIROPLAY

Enviado por   •  23 de Agosto de 2018  •  1.127 Palabras (5 Páginas)  •  225 Visitas

Página 1 de 5

...

Se hace uso de un bucle infinito mediante el ciclo while, para que este proceso se repita constantemente y el valor varié sin necesidad de un reseteo de PIC, es decir se adapte al cambio de los pulsos entrantes.

Como modo de prueba se programa una tarea de prender un LED conectado al Pin_B0, esto solo para corroborar el correcto funcionamiento del PIC.

[pic 13]

En la imagen anterior se muestra el montaje físico del Tacómetro Digital, se puede ver un integrado dedicado a la regulación de voltaje de referencia “7805” justo después de la fuente, este cumple la función de entregar 5 Volts y 1A al Pic y a la LCD, lo cual es suficiente para su funcionamiento.

Conclusiones:

En la realización del código para el Tacómetro Digital, se tuvieron inconvenientes con el reloj externo usado que era de 20MHz por lo tanto se agregó un condigo que programara el PIC y usara un reloj interno con un valor de 4Mhz. Se programó no para 20MHz como inicialmente sino para 4Mhz debido a que el PreScaler del Timer1 no acepta por encima de 8 por lo tanto en la ecuación no daba el valor para 500ms, por esto se usa un reloj de 4Mhz interno para evitar ese desbordamiento y no cause conflicto con la LCD. Se programa la interrupción de Timer1 a 500ms debido a que se desbordaba el Timer0 antes de leer su valor.

ANEXOS

CODIGO TACOMETRO DIGITAL:

#include

#use delay(clock=4M)

#fuses INTRC,NOWDT,NOPROTECT,NOLVP,noPUT,NODEBUG,BROWNOUT,NOCPD,NOWRT,nomclr

#include

int16 pulsos=0; //inicializa y declara la variable contador

#int_timer1

void timer1_isr(void) //Función de interrupción por desbordamiento TMR1

{

pulsos=get_timer0(); //Lee el valor actual del Timer0;

pulsos=pulsos*2*120; //COmo el RTCC_DIV_2 entonces se multiplica 60*2

//printf(lcd_putc, "\f %6lu rpm",pulsos); //escribe en la LCD

clear_interrupt(int_timer0);

set_timer0(0); //fija el valor inicial de la cuenta en 0

clear_interrupt(int_timer1);

set_timer1(3036); //carga del TMR1

}

void main()

{

setup_oscillator(OSC_4MHZ|OSC_INTRC); // Configuracion y Uso del Reloj interno del PIC

set_tris_b(0); //Puerto B como salida

output_high(PIN_b0); //Prueba de Funcionamiento del PIC

setup_timer_0(rtcc_ext_h_to_l | rtcc_div_2); // timer0 como contador | RTCC_DIV_2 se incrementa el Timer cada que oprime 2 veces el pulsador

setup_timer_1(t1_internal | t1_div_by_8); //Setup timer: Reloj interno(temporizador), preescaler= 8

delay_ms(500);

set_timer0(0); //fija el valor inicial de la cuenta en 0

set_timer1(3036); //carga del TMR1 //Tiempo = [(65536-carga) * PreScaler] * Tinst ////65536-62500=3036

enable_interrupts(int_timer1); //habilitacion de la interrupcion timer1

enable_interrupts(global); //habilitacion global de interrupcion

delay_ms(100);

lcd_init(); //Inicializa la LCD

delay_ms(500);

printf(lcd_putc, "H.Parra, E.Cabana"); //escribe en la LCD

delay_ms(1000);

printf(lcd_putc, "\f %6lu Rpm",pulsos); //escribe en la LCD

delay_ms(100);

while(1) //Bucle infinito

{

}

}

CODIGO DEL GIROPLAY

#include

#use delay (clock=4M)

#fuses XT,NOWDT,NOPROTECT,NOLVP,PUT,NODEBUG,BROWNOUT,NOCPD, NOWRT

#byte portb=0x06

void main()

{

int16 control=0;

set_tris_b(0x00);

output_b(0x00);

while (1)

{

delay_ms(10);

for(control=1;control

{

output_b(0b000011100); //Primera secuencia Muestra un corazon// LS-MS

delay_ms(2);

output_b(0b000111110);

delay_ms(2);

output_b(0b001111110);

delay_ms(2);

output_b(0b011111100);

delay_ms(2);

output_b(0b001111110);

delay_ms(2);

output_b(0b000111110);

delay_ms(2);

output_b(0b000011100);

delay_ms(2);

output_b(0x00);

delay_ms(10);

}

control=0;

...

Descargar como  txt (11.5 Kb)   pdf (69.1 Kb)   docx (23.6 Kb)  
Leer 4 páginas más »
Disponible sólo en Essays.club