Projet de fréquencemètre

 


Au cours du développement d'un système à micro contrôleur dans le cadre de mon job, j'ai constaté être assez proche de ce qui pourrait être un fréquencemètre très simple.


Ce féquencemètre peut être construit avec un AT89S2051, AT89S4051, AT89C2051, AT89C4051 ou même une version DIP 40 du 8051 (AT89C52 ...).

 


Schema 1

Le principe


 Le principe de ce fréquencemètre est de compter les cycles issus d'une fréquence de référence durant une période ou bien un nombre connu de périodes du signal à mesurer

 


 

Schema 2

Le principe rapproché des possiblités offertes par un micro contrôleur



La porte reliant la source 1MHz est conductrice durant une période complète du signal à mesurer, ce qui correspond à la durée à "1" de la sortie "Q" de la bascule.
Le signal fin de comptage est tout simplement le front descendant de la dite sortie.

 



 

Schema 3

La configuration du micro contrôleur-fréquencemètre en ordre de fonctionnement

A noter que TF1 et IE1 sont des bits ou états internes qui forcent l'exécution de leur interruption associée.


 

Le schéma de configuration du micro contrôleur montre l'utilisation qui est faite du Timer T1.
Les bits GATE, TR1 et C/T configurent l'entrée /INT1 vis à vis du Timer T1.
Le bit EX1 valide l'interruption matérielle de l'entrée /INT1 et le bit IT1 fait générer l'interruption sur un front descendant.


Le fait que l'entrée /INT1 pilote la porte de transmission du signal 1MHz vers le timer élimine tout problème de timing lié à un traitement logiciel.

Le code de l'interruption générée par le front descendant de /INT1 (fin d'une période du signal à mesurer) copie les deux octets du compteur matériel (TH1 et TL1) ainsi que les deux octets du compteur soft vers un double mot exploitable par le niveau supérieur de l'application. 
Ce double mot représente la durée d'une période du signal à mesurer exprimée en µs.
Les quatre octets du compteur matériel de T1 et du compteur soft sont à cette occasion remis à zéro.



Les 16 bits de poids forts du compteur

Pour incrémenter le compteur soft, l'interruption de débordement du timer est utilisée.
Avec une horloge à 12MHz, le signal entrant dans le compteur est de 1MHz.

Le débordement se produit donc toutes le 65,536 ms. Ceci est parfaitement compatible avec un traitement sûr de l'interruption dont le code d'incrémentation du compteur soft est de quelques µs.




Calcul de la fréquence mesurée

Si  fRef = 1MHz  alors  tRef = 1 µs (0.000 001s)

tFx = tRef * compteur => Fx = 1 / tFx
Fx = 1 / ((1 / fRef) * compteur)  =  fRef / compteur


Fx =  fRef / compteur





Essai et résultats

Le fréquencemètre est essayé et fonctionne. 
A quelques Hz, la résolution affichée et exploitable est de 0.01Hz. A 1000Hz, la résolution exploitable est de 1Hz.

Le fréquencemètre est constitué d'un 8051, d'un afficheur LCD, d'un 74LS74.
Le circuit de mise en forme se résume à un transistor NPN pour adapter le 74LS74 à mon générateur BF.
La fréquence de référence est simplement le quartz connecté au 8051 dans la configuration basique.




A faire :

Utiliser un oscillateur 12MHz sérieux : colpitts ou bien TCXO 12.800MHz récupéré dans une radio.

Prévoir la possibilité de prélever le signal à mesurer dans une chaîne de diviseurs de façon à augmenter la période de mesure pour les fréquences élevées.