TODOPIC
Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: norgi en 03 de Febrero de 2011, 03:09:20
-
HOLA GENTE SOY NUEVO EN ESTE FORO Y QUISIERA QUE ME AYUDEN CON UN PROBLEMA QUE TENGO
TENGO QUE MOSTRAR LA VELOCIDAD DE UN ENCODER EN UN LCD YA LO TENGO EL PROGRAMA LO HE SIMULADO EN
PROTEUS Y TODO ESTA BIEN HASTA AHI EL PROBLEMA ES QUE CUANDO LO ARMO EL CIRCUITO , QUEMO EL PROGRAMA EN
UN PIC Y LO HAGO FUNCIONAR LA VELOCIDAD DEL ENCODER AUMENTA SIN DETENERSE SE SUPONE POR EJEMPLO QUE DEBE DE QUEDARSE EN 85 RPM LO CUAL NO HACE SI NO QUE VA EN AUMENTO 85,90,100,150,.......EL PROGRAMA LO HICE EN LENGUAJE C Y FUNCIONA BIEN EL SIMULADOR PROTEUS LA VELOCIDAD SE MANTIENE CONSTANTE .
:-/ :P 8) :? :shock: :oops:
-
Hola Norgi y Bienvenido a nuestros Foro Todopic,
Pues bien para ayudarte deberia poner el codigo y el circuito como lo tiene montado, tambien debe saber que el proteus no simula en tiempo real, y otras cosas, por favor leerte la Regla del foro ante de poner un mensaje.
ya que ha cometido un error escribiendo en letras mayuscula, por favor lee las Regla, Gracias!!
Un gran Saludos
-
#include <16f877a.h>
#FUSES NOWDT //No Watch Dog Timer
#FUSES XT //Crystal osc <= 4mhz for PCM/PCH , 3mhz to 10 mhz for PCD
#FUSES NOPUT //No Power Up Timer
#FUSES NOPROTECT //Code not protected from reading
#FUSES NODEBUG //No Debug mode for ICD
#FUSES NOBROWNOUT //No brownout reset
#FUSES NOLVP //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#FUSES NOCPD //No EE protection
#FUSES NOWRT //Program memory not write protected
#use delay(clock=4M)
#include "lcd.c"
#use rs232(baud=9600,xmit=pin_c6,rcv=pin_c7)
int8 contadorIntExt=0;
int8 contadorTimer0=0;
void enviarValor(void);
#int_timer0
void funcion(){
set_timer0(100);
contadorTimer0++;
}
#int_ext
void contadorInterrupciones()
{
contadorIntExt++;
}
void main()
{
lcd_init();
printf("iniciar cuenta\r\n");
enable_interrupts(global);
enable_interrupts(int_rtcc);
setup_counters(rtcc_internal,rtcc_div_64);//preescaler
set_timer0(100);//10ms
enable_interrupts(int_ext);
ext_int_edge(H_to_L);
while(1)
{
if(contadorTimer0==25)
{
contadorTimer0=0;
enviarValor();
}
}
}
void enviarValor(void)
{
float Cuenta,velo;
cuenta=contadorIntExt++;
contadorIntExt=0;
velo=cuenta*60/25;
printf("%3.2f \n\r",velo);
lcd_gotoxy(1,1);
printf(lcd_putc,"velocidad=%3.2f",velo);
lcd_gotoxy(1,2);
printf(lcd_putc,"Nº pulsos=%3.2f",cuenta);
}
hola Rafael gracias por las sugerencias para la proxima no cometere los mismos errores y aqui te envio el progrma para el pic el lenguaje ccs y una foto del armado en proteus , esta simulacion funciona bien pero lo armo tal igual como la simulacion pero no me funciona la velocidad no se estabiliza si no que crece desde por ejemplo 50 rpm ,60,70,80......y no se detiene