Frecuencimetro pantalla lcd, pic 16f84a

#1
buenas noches...les escribo pq estoy monmtando un frecuencimetro lcd con la implementacion del pic 16f84a.
en la red he encontrado algunos diseños incluso con sus programas...pero...mi duda esta en q el mio debe medir hasta 500 hz solamente, y poseer base de timpo de 500 hz.

quisiera q me ayudaran en cuanto a esto por favor ya q soy novata en el uso de pics..

http://es.geocities.com/ea5chq/frecuencimetro_digital_lcd.htm


en esta pagina esta el codigo fuente q tngo pensado utilizar,,, debo ajustarlo para mis requerimientos (medir hasta 500 hz solamente, y poseer base de timpo de 500 hz.)

el cosdigo esta al final de la pagina..

de verdad estoy un poco desesperada pq soy novata en el tema..

agradezco cualquier ayuda gracias


Código:
 

Adjuntos

#5
no se a q te refieres con frecuencimetro analogo


...necesito un frecuencim etro q mida frecuencias de señales analogicas....en la primera hoja explique bien
 
#7
ina85 dijo:
buenas noches...les escribo pq estoy monmtando un frecuencimetro lcd con la implementacion del pic 16f84a.
en la red he encontrado algunos diseños incluso con sus programas...pero...mi duda esta en q el mio debe medir hasta 500 hz solamente, y poseer base de timpo de 500 hz.

Código:
La verdad es que es sorprendente tu propuesta, amiga.

En general, el problema de estos instrumenteos reside en lograr que lean frecuencias altas y muy altas.
Sin embargo, tampoco sé cual es el problema para limitar "algo" este frecuencímetro. Si lees con cuidado, verás que sólo manteniendo Q2 instalado tal cómo lo muestra el diagrama original, queda limitado a un máximo de 500KHz (1Hz ~ 500KHz).
Con eso tienes resuelto tu problema. Si mide más de 500 Hz... Mejor qué sobre... ¿O no?

Ahora, lograr que un PIC funcione con una base de tiempo de 500Hz... Sería otra cosa.
Para lograr conciliar tus límites deberás rehacer muchas cosas. No creo que alguien se moleste en diseñar un instrumento tan limitado. Así que creo que deberás hacerlo tú misma, desde cero.

Saludos:
 
#9
Es el tiempo que se toma la muestra y eso da la resolucion de la medicion para 500Hz se toma tiempo de muesta a 1s para que salga la medicion hasta las unidades. En caso de Mhz la base de tiempo son milisegundos cuya resolucion es hasta el mil.
Del ejemplo anterior hay una correccion esta en hex
 

Adjuntos

#10
Al parecer ya no le dieron seguimiento a este tema. Pero para dar mi opinion, es facil hacer un frecuencimentro con un PIC16F84A. utilizas la entradas RA4 como contador de impulsos. Y como comentaban utilizan una base de tiempo de 100ms para poder medir frecuencias que vayan desde los 10Hz hasta los 2.55KHz. Les anexo el programa y la simulacion en proteus.. Saludos

estoy viendo que hay un pequeño problema. estan recorridos los numeros abra que modificarse con las subrutinas de BIN a BCD
 

Adjuntos

#13
Hola a todos, he visto que INA85 quiere construir un frecuencimetro y por lo que he leido parece ser que hay algunas pegas (por ser frecuencias muy bajas), en mi caso os dire que tengo casi todo preparado para construir un frecuencimetro de precision (de 0 a 500 ciclos) con el PIC 16F628 pero me falta programarlo, la señal a meter es digital, lo quiero hacer con un PIC, el cristal de cuarzo es de 20 MHz. y lleva un condensador ajustable, , no se si sera pedir mucho, pero mi peticion es, si hay alguien que tenga el programa ó lo pudiera hacer, no se programar, tengo un amigo que sabe meter los datos en el PIC (el tampoco sabe programar), en espera de noticias y dando las GRACIAS a todos por adelantado y mis mejores saludos desde España.
 
#14
Hola a todos tengo el codigo de este frecuenciometro y compila bien pero cuando lo monto en proteus no muestra nada en la lcd me gustaria saber si alguno de ud sabe el por que sucede esto y si lo montan en proteus y funciona pues les agradeceria me enviaran el archivo o un imagen

Hola a todos tengo el codigo de este frecuenciometro y compila bien pero cuando lo monto en proteus no muestra nada en la lcd me gustaria saber si alguno de ud sabe el por que sucede esto y si lo montan en proteus y funciona pues les agradeceria me enviaran el archivo o un imagen
Código:
#include    <16f877a.h>
#device adc=10 // Configuracion del Analo. a 10 bits
#fuses      XT
#fuses      NOWDT
#fuses      NOPROTECT
#fuses      PUT
#use        delay    (clock = 4000000) //Definimos el valor del Crystal
#include "LCD.C"   // Cargamos la libreria del LCD
 
int cont1,cont2; // Declaracion de variables
int32 ppm = 0;
float algo;
 
#int_EXT    // Configuracion de interrupciones externas
void EXT_isr()
{
 disable_interrupts(int_EXT);
 enable_interrupts(int_EXT);
 ++ppm;
}
#int_timer0   // Configuracion de las interrupciones internas
void TIMER0_isr()
{
 set_timer0(0);
 ++cont1;
 if (cont1 == 245)  // Aproximadamente es un Segundo por desbordamiento de banderas
 {
    cont1 = 0;
    ++cont2;
 }
}
void presenta (void)  // presentacion de incio al encender el PIC
{
 lcd_gotoxy(6,1);
 lcd_putc("medida");
 lcd_gotoxy(6,2);
 lcd_putc("Frecuencimetro..");
}
void main()
{
 
 set_tris_a(0xff);  // configuracion de las salidas y entradas
 set_tris_b(0x01);
 set_tris_c(0x00);
 set_tris_d(0x00);
 set_tris_e(0x00);
 enable_interrupts(GLOBAL|INT_EXT|INT_TIMER0); // Habilitamos las interrupciones
 ext_int_edge (L_TO_H);
 setup_timer_0(RTCC_DIV_16);
 output_c(0);
 lcd_init(); //Inicializamos el LCD
 presenta();  // Llamadod e la funcion presenta
 while(TRUE)
 {
    if (cont2 == 1)
      {
      cont2 = 0;
      cont1 = 0;
      algo=ppm/1;
      lcd_putc("\f");
      lcd_gotoxy(6,1);
      printf (lcd_putc, "# Pulsos: %ld",ppm);
      delay_ms(500);
      lcd_gotoxy(6,2);
      printf (lcd_putc, "Frecuencia:%f%%",algo);
      delay_ms(500);
      ppm = 0;
      algo = 0;
}
}
}
 
Última edición por un moderador:
#18
en esta pagina viene un frecuencimetro con 16f84 llega a 35mhz tambien esta el hex. alguien que me saque de dudas se puede medir esos 35mhz con un pic????

http://www.foxdelta.com/products/fc1.htm
En realidad tienen dos modelos, uno que llega hasta 400 Mhz y otro a 3.5Ghz
Es posible medir estas frecuencias con un PIC ya que se emplean integrados divisores.
En el modelo de 400 Mhz utilizan el MC12080 que puede divir entre 10/20/40/80 selecionable por medio de unos Micro-Interruptores.

Saludos.
 
#19
estoy implementando un frecuencimetro de la siguiente manera, genero una señal de 1 hz, que entra a rb7 del pic, y la señal a medir la frecuencia a rb0 que es donde esta la interrupcion externa y esta se activa mientras esta el pulso positivo y se incrementa un contador y en el pulso negativo se imprime el valor del contador en la lcd y se pone contador en cero. el programa lo he revisado mil veces pero me da de frecuencia=0 adjunto el programa y el archivo en proteus. :confused:

Código:
/*
this program is a frecuency counter*/
#include <18f2525.h>
#fuses XT,NOWDT,PUT,NOWRT,NOPROTECT,NOLVP
#use delay(clock= 4000000)
#use fast_io(B)
#include <flex_lcd.c>
long i=0;
long c=0;
#INT_EXT
void EXT_isr(void){
         i++;
}
void main(){
   set_tris_B(0xff);
   port_b_pullups(FALSE);
   lcd_init();
   while (TRUE) {

      i=0;
      disable_interrupts(int_ext);
      disable_interrupts(GLOBAL);
      lcd_gotoxy(1,1);
      printf(lcd_putc,"HZ=%Lu",c);
      while(input(PIN_B7)==1){
         enable_interrupts(int_ext);
         ext_int_edge(L_TO_H);
         enable_interrupts(GLOBAL);
         c==i;      
      }
   }
}
 

Adjuntos

Última edición por un moderador:
#20
bueno al archivo de proteus hay que conectarle un generador de funciones con señal cuadrada amplitaud 5v y de unos 10khz porque guarde el diagrama en la version 7.0 y no se guardo el generador ni el osciloscopio, necesito que cuente hasta 30 khz, espero y sea posible con el pic......

ya identifique el error
esta en c==i; //creo bederia de pasar el valor de i a c pero no lo esta haciendo:enfadado:
 
Última edición:

Temas similares

Arriba