Medidor de frecuencia de red eléctrica de 1 a 255 Hz
Este instrumento lo diseñé allá por 2005 cuando impulsado por los constantes cortes de luz eléctrica y el potencial riesgo de perder lo almacenado en freezer y heladera decidí comprar un generador eléctrico y tras oír como se aceleraba y ralentizaba en su marcha el motor a sabiendas que en las RPM del mismo radica la frecuencia de red decidí controlarlo en forma permanente y así hice este instrumento. Luego se convirtió en un producto vendido a través de este sitio hasta que se me agotaron las plaquetas que había mandado a hacer así como los frentes de acrílico que había mandado a grabar con láser. Por supuesto que por aquellos años, si bien dentro de este siglo distantes también, no era frecuente comprar en china a través de la incipiente internet por lo que ahora sería una locura ponerse a fabricar y vender localmente algo de este tipo. Así que he decidido compartirlo por este medio.
Como se ve en la foto constaba de dos placas de circuito impreso, una con la electrónica de potencia desde la cual salen dos cables con la alimentación de cinco voltios regulados y un tercer cable que si bien tiene potencialmente 220V lo cierto es que el par de diodos dentro del microcontrolador hacen que dicha tensión no pueda superar la propia alimentación por la deriva de ambos y es con este cable que determina la frecuencia de red, contando los pulsos que recibe en el tiempo de un segundo y mostrándolo en el display. Quizás no muchos recuerden que por aquellos años Argentina estaba intentando acomodarse a la salida de la convertibilidad y el desastroso gobierno de Fernando De La Rua y familia y por ende en el comercio electrónico las cosas estaban en una situación muy delicada por lo que no se tenía acceso a demasiada variedad de componentes. Uno de los componentes que no teníamos disponibles eran los displays de mas de un dígito, sólo se conseguían los simples y tuve que emplear dos simples en paralelo desordenado. Y no es paralelo absoluto (segmento A de uno con segmento A del otro y así) sino que lo hice de tal forma de evitar hacer un circuito doble cara o incluso usando uno de simple cara no emplear puentes de alambre desnudo como se suele usar. Por ello es que en ese equipo el segmento A si estaba en paralelo al otro segmento A pero el B iba a dar con el F del otro, el C con el D el D con el G y así. Por ende cada display tenía su propia tabla de caracteres! Y ustedes dirán "Uy que laburo!" Si, lo fue, de cuanto ? Un minuto ? Con toda la furia dos minutos ? Pero nunca mas soldé un puente de alambre! En aquel entonces no contemplé como necesario un tercer display aunque la capacidad del programa y de como esta acomodado el circuito le permiten contar hasta 255Hz (y mas también empleando interrupciones por desborde de TMR0). Lo cierto, como pueden observar en este video, es que a veces se superan los 99Hz haciendo necesario el uso de un tercer display.
Este circuito corresponde a la versión actualizada del frecuencímetro diseñado hace quince años, he mantenido el mismo microcontrolador sólo porque tengo muchos aún y en algo tengo que usarlos pero si no tuviera stock y necesitara armar uno lo migraría a uno moderno y sobre todo económico; quizás me orientaría por un PIC16F1 cuyo oscilador interno es tan bueno o incluso mejor que un cristal externo con sus capacitores de desacople. El display usado ahora es un módulo de tres dígitos en configuración cátodo común por lo que cada segmento recibe tensión y cada dígito masa. La fuente fría se mantiene puesto que tiene capacidad suficiente para la corriente insumida por el proyecto que curiosamente sigue siendo la misma que antes con sólo dos dígitos. Hay que tener presente que sólo uno de los dígitos está iluminado mientras los otros dos restantes permanecen apagados y al efectuar este barrido o multiplexión a alta velocidad (pocos milisegundos por display) nuestros ojos lo ven como todos encendidos. En este video pueden ver el circuito puesto a prueba con un generador de señales durante toda su escala.
Si quieren investigar un poco cómo esta hecho el programa del microcontrolador pueden bajarlo haciendo clic acá mientras que si sólo quieren armarlo y grabar el HEX en el micro pueden descargarlo de este otro link. Adicionalmente está disponible el circuito para ser cargado en Proteus 8 y ver su versión de prueba virtual y pueden acceder a el para bajarlo haciendo clic acá.
El programa en sí no encierra ningún secreto indescifrable tras el arranque del microcontrolador y la correcta inicialización de sentido de operación de los puertos, configuración apropiada del RTC o Timer0 todo lo que hace es dejar pasar un segundo exacto, mirar el valor acumulado en el RTC que es coincidente con la frecuencia de la señal de entrada, dividir dicho valor en centenas, decenas y unidades para su posterior visualización y volver a esperar un segundo exacto. Mientras espera este tiempo todo lo que hace es mostrar la frecuencia capturada el segundo anterior. Normalmente las rutinas de display llevan a cabo internamente la conversión BCD (pasar de un valor único a unidades, decenas y centenas en tres posiciones independientes de memoria cada una de ellas con un valor de 0 a 9) y a su vez tienen la lógica necesaria para evitar mostrar ceros no significativos. Como se aprecia en el video del aparato funcionando sólo muestra los dígitos significativos. Estas comprobaciones usualmente insumen tiempo de CPU o mejor escrito ciclos de instrucción que no afectan al funcionamiento del sistema en general excepto en aplicaciones como esta donde la no precisión del tiempo implica una imprecisión de medida de frecuencia. Por tal motivo y como truco barato pero muy eficiente la rutina de display sólo muestra en el display unidades, decenas y centenes sin importar si tienen o no tienen valor, no lo saben, solo muestran. Hay un caracter especial en la posición A de la tabla de caracteres que es equivalente a un display apagado (ningún segmento se ilumina). Dicho en otras palabras para mostrar 5 Hz el programa envía a pantalla AA5. Insume los mismos ciclos de instrucción siempre y por ende es un cálculo perfecto.
Dado que empleo el contador en tiempo real o RTC y este funciona sobre un registro de 8 bits el mismo sólo puede contar hasta 0xFF o 255 en decimal por ende hoy por hoy esa es la máxima capacidad de este instrumento. De todas formas los microcontroladores PIC en general tienen la habilidad de permitir al RTC interrumpir ante un desborde del conteo (cuando de 0xFF quiere sumar uno mas y por supuesto no le entra entonces vuelca a 0 pero produce una interrupción al programa). Con dicha interrupción se podría sumar 1 a un contador adicional ubicado en otra posición de memoria el cual albergue la parte alta de la frecuencia y ya con sólo usar dos bits de este contador podríamos medir frecuencias de hasta 1023 Hz lo que en la práctica para este instrumento sería 999 Hz como límite ya que no tiene mas dígitos en su pantalla. Por lo pronto no me interesa hacerlo, pero a quien le interese es solo programar y lo puede hacer muy fácilmente, si luego de hacerlo lo quiere compartir con gusto lo publicaré en este sitio.
Pablo Canello, 10/04/2020