lunes, 23 de abril de 2012

Frecuencímetro 16f628-Frequency_counter

Frecuencímetro 16f628
Frequency_counter
Programación en C y Ensamblador
xsetaseta@gmail.com

Debo tener fijación por los frecuencímetros, pero vuelvo a la carga con ellos.
Después de haber realizado el frecuencímetro con el PIC 16f628 frecupla me he dado cuenta de que debido a los cambios realizados desde el 16f84 al 16f628, todo había mejorado. Cuando se utilizaba el 16f84 se tenía que utilizar el Timer0, que estaba sincronizado por la frecuencia del reloj interno, con lo cual se perdían algunos pulsos. Este problema también me ocurrió con el Atmega88, miATa3 , se perdían pulsos.
Resulta que revisando la estructura del 16f628, resulto que había incorporado un contador
Timer1 que si se quería no se sincronizaba con el reloj interno, además de ser de 16 bits.

Ahora todo es mas fácil, les doy las gracias a los ingenieros de Microchip.
Queda por cambiar la conexión del LCD al PIC y la entrada de la frecuencia,reprogramando todo el programa, quedando el circuito como a continuación se muestra.


Esquema del circuito frecupla2.

Una vez simulado el Proteus se monta el prototipo antes de hacer el circuito impreso.

Prototipo frecupla2.

Se ha realizado dos programas, uno e C y otro en C pero con la rutina en ensamblador y con cuenta de 3bytes.
La realización en C fue bastante fácil, poner los contadores de Timer1 a cero, esperar 1 segundo y visualizar el contenido. Hasta he hecho una rutina que me advierte de si la escala es incorrecta.
Programa frecupla en C.

El segundo programa hecho también en C, pero con la rutina en ensamblador es más complejo debido a que también he incrementado el numero de cuentas a 3 bytes para dar mayor precisión.
Program frecupla en C 3 bytes.

La comparación entre uno y otro programa es difícil de precisar.
Cuando la cuenta es de 3 bytes y con frecuencias altas, la precisión de los cristales es un quebradero de cabeza. Comparas dos cristales de 16Mhz de diferentes marcas y el resultado no es el mismo.
Para una mayor precisión deberíamos colocar condensadores ajustables en el cristal de procesador.

En conclusión , la precisión de utilizar un 16f84 a utilizar el 16f628 es abismal, no hay color, los pulsos no se pierden. Muchos montajes no han aprovechado las ventajas del 16f628, solo han sustituido un procesador por otro sin reprogramar.
Entre utilizar un programa u otro es un dilema. El primer programa cuenta en 2bytes (65536) y el segundo 3bytes (16millones). Realmente las precisiones de los cristales no dan para tanto por lo cual daría lo mismo el de 2bytes o el de 3bytes.

Próximamente lo montare en circuito impreso, hasta entonces...

Saludos
SETA43

Juan Galaz

11 comentarios:

  1. saludos.

    quiero ensamblar tu proyecto me parece bueno.
    en el firmware no encuentro la rutina de inicializacion del lcd.
    ahi como le ago.

    ResponderEliminar
  2. Hola me gusta mucho tu circuito.
    podrias decirme cual fue el compilador que que utilizaste

    ResponderEliminar
    Respuestas
    1. Juan: He realizado el montaje en mi ISIS Proteus y funciona bien. Ahora, he realizado el montaje físico en la protoboard. El LED parpadea a diferente frecuencia cuando ajusto la escala. Es lo único que funciona. He programado 3 16F628A con los diversos programas que tienes. Utilicé el PICKIT3 y certifico que esta bien cargado. Ahora, instalo los componentes todos nuevos en la PB y no muestra nada. Vuelvo a revisar los jumpers y no funciona. Cambio el LCD para descartar cualquier caso y nada. Solamente parpadea el LED. Lee el pulsador cada vez que cambio la escala. Que sucederá? Gracias

      Eliminar
  3. Una pregunta. Veo que tu programa ni funciona por interrupciones, pudiendo usar también el módulo CCP en modo captura. Porque las rutinas del lcd y delays de tu programa pues harán que cualquier algoritmo para ganar precisión no funcione correctamente.

    ResponderEliminar
  4. Hola
    Lo primero gracias por visitar mi página web.
    Hace bastante que realice el montaje e igual no me acuerdo perfectamente de lo que hice.
    Ninguna de la rutinas de Lcd y delays que empleo utilizan cualquier interrupción, de hecho lo primero que hago en el programa es deshabilitar las interrupciones.
    No entiendo lo de "CCP en modo captura"...no se que es eso.
    En la rutina del programa consiste en que se tiene que mirar que sea cual sea la dirección de ejecución de programa el tiempo de espera sea el mismo.
    Un saludo
    Juan

    ResponderEliminar
  5. Hola Juan: He realizado previamente la simulación en ISIS Proteus y este no me funcionó, es de circuito, enciende el LCD, inicia la rutina y todo pero no me cuenta la frecuencia. He realizado los cambios de tus notas anteriores y acyuales y he cargado cuatro de los diferentes .hex que tienes y te repito que no "lee" la frecuencia. He cambiado los pines de entrada y demás y nada. Ahora, me queda la duda para instalarlo y ponerlo a funcionar. Falta Algo???

    ResponderEliminar
  6. Bueno, despues que te escribi la anterior nota, comenzo a funcionar bien en el simulador ISIS Proteus. Gracias. Ahora lo voy a montar en el protoboard y luego en el PCB y te comento como me fue.

    ResponderEliminar
  7. ¿ Que sucedió ? Bueno, con el generador de patrones del Proteus, conectado a 5 Voltios de Amplitud, frecuencias diversas y Uni polar o Bipolar NO FUNCIONO. Ni seno, ni cuadrada, etc. Pero, cuando se le instaló el generador del reloj o CLK con frecuencias de 1 , 2 , etc Hz y KHz, si funcionó.

    ResponderEliminar
  8. He revisado el cristal de 4 MHz y nada, asi mismo los capacitores de 22pFd. La resistencia de 10K del master clear realiza bien su trabajo de reinicio del programa y no aparece nada en la LCD. La he revisado cada uno de sus jumpers y hasta la volví a reemplazar y no funciona la pantalla LED, no aparece nada aunque vario el voltaje de la pantalla para ver su trama y nada.

    ResponderEliminar
  9. Hola.
    Hace 7 años que realice el montaje, he buscado los ficheros de ISIS Proteus, pero no los encuentro.
    Si los encuentro te los mando.
    En su día funcionaba perfectamente.
    Si tengo un rato intento crear otra vez el esquema.
    Saludos

    ResponderEliminar