Frecuencímetro y medidor de capacidad
16f628
Frequency_counter - capacity meter
Programación en C y Ensamblador
xsetaseta@gmail.com16f628
Frequency_counter - capacity meter
Programación en C y Ensamblador
Como en el anterior montaje frecupl2 teníamos un medidor de frecuencia realizado en torno a un PIC 16f628, me he puesto a realizar un medidor de capacidad aprovechando toda las posibilidades de microcontrolador.
En el montaje Capmeter había realizado un medidor de capacidad, pero no había hecho yo el programa, solo había cogido el firware y lo había grabado en el chip.
Este montaje es una mezcla de ambos montajes, y realizar yo el programa.
El medidor de capacidad se basa en la carga y descarga de un condensador a través de una resistencia.
Esta carga y descarga produce una oscilación de una frecuencia que se mide en el frecuencímetro. Mediante la una formula se despeja C y se visualiza en el LCD.
Vf | V.inicial | V.final | R |
4,8V | 3,6V | 1,5V | 10K |
Estas medidas son reales medidas con el osciloscopio.
Formula general dela carga del condensador
Vt=Vo(1-e -t/RC)
Carga:
T=RC*ln((Vf-Vt)/Vf) C=T/(R*ln((Vf-Vt)/Vf))
Descarga:
T=RC*ln(Vinicial/Vfinal) C=T/(R*ln(Vinicial/Vfinal))
Con estas formulas se saca un algoritmo que nos da una capacidad dependiendo de la frecuencia.
El que quiera sacarlo que se lo trabaje, no es difícil.
Realizamos un oscilador mediante el comparador que se encuentra en el 16F628.
Oscilador biestable.
Esquema de medidor de capacidad y frecuencímetro.
El rango de medidas está entre 4,7uF y 5pF. Para medir valores de mayor capacidad debería cambiar la resistencia de carga, pero eso no está dentro de mis necesidades.
Como la medida de capacidades pequeñas sería difícil debido a la propia capacidad intrínseca del circuito, se coloca un condensador en paralelo de 1,2nf que se resta automáticamente al resultado.
La puesta a cero es automática con el cambio de escala. Cuando se cambia de escala no debe haber ningún condensador en las puntas de medición.
Puede existir variaciones mínimas en el ajuste, pudiendo aparecer un "-" cuando la puesta a cero no es exacta.
Esto no es importante en la mayoría de los casos, solo es mínimamente apreciable en valores pequeños de pico faradios. La precisión en la mayoría de los casos es de +- 1pf .
Vemos el prototipo midiendo un condensador de 47pF, señalado con un punto rojo.
En este caso la precisión es exacta, pero lo normal es +-1pF.
Sigo manteniendo las dos líneas de programación, en C y ASM, teniendo algunas diferencias.
Para cambiar de escala debemos que mantener el pulsador apretado hasta que nos muestre en el LCD "Cambiando escala ",
C | ASM |
0-65500 Hz | 0-16MHz 1S |
0-655 KHz | 0-16MHz 0.1S |
0-6.5 MHZ | 0-65MHZ 0.4S |
0-65 MHz | Medidor C |
Medidor C | |
Ejemplo: 32768 Hz | Ejemplo: 000.032.768 Hz |
frecapC.hex | frecapASM.hex |
Como curiosidad he probado el reloj interno del Chip a 4Mhz y como bien dicen las características tiene margen de error. Para medidor de C valdría, pero como medidor de frecuencia presenta margenes no tolerables. Como ejemplo para medir una base de tiempos de 32768, nos da una medición de 31928, -2,5%.
No me pidáis los códigos fuente, hasta dentro de 1 año no los libero.
Al que le interese el Chip 16F628 con el programa grabado, lo vendo por 6€ incluido el porte.
Me ha llegado una partida de 16F648 que es de 4k en vez de 2k, pero el programa funciona igualmente.
Próximamente realizare el montaje en circuito impreso.
Saludos.
SETA43
Juan Galaz
Hola
ResponderEliminarPic 16f628 o 16f628a?