Electronique > Réalisations > Affichage / Mesures > Fréquencemètre 006

Dernière mise à jour : 05/05/2019

Présentation

Ce fréquencemètre de dimensions et performances modestes est basé sur un PIC 24FJ32GA002. Il permet d'effectuer une mesure de fréquence sur deux entrées simultanément, jusqu'à une fréquence maximale de 10 MHz.

frequencemetre_006_disp_000

L'étage d'entrée est identique pour les deux entrées de mesure. Les valeurs de fréquence sont simultanément envoyées sur un port série UART et affichées sur un écran LCD économique.

Schéma

Le comptage et l'affichage sont assurés par un PIC 24F associé à un afficheur LCD de 2 lignes de 20 caractères. L'étage d'entrée est la partie qui comporte le plus de composants, mais cette apparente complexité est moins frappante qu'un flash causé par un condensateur de 1 farad chargé sous 100 V dont on court-circuite les bornes (la curiosité est parfois un vilain défaut).

frequencemetre_006

Les deux entrées de mesures sont matérialisées sur le schéma par les lignes CLK_IN_1 et CLK_IN_2, qui sont de type "logique 3V3". Pour un usage avec des signaux de forme et d'amplitude inadaptés à ce type d'entrée, voir le paragraphe Etage d'entrée, plus loin dans le texte.

Comptage et affichage
Deux comptages sont mis en oeuvre en même temps, chacun s'appuyant sur un compteur (tiens donc) intégré au PIC. Les deux compteurs sont en fait un assemblage de deux compteurs/timers, Timer2 et Timer3 pour la première entrée de mesure, Timer4 et Timer5 pour la seconde entrée de mesure. Les quatre compteurs/timers Timer2 à Timer5 sont de type 16 bits, ce qui leur permet de compter de façon individuelle jusqu'à 65535. En les concaténant deux à deux, on obtient deux compteurs 32 bits qui permettent de compter jusqu'à 4294967295. On peut donc en théorie compter sans problème jusqu'à 50 millions (pour 50 MHz) sans avoir à gérer de débordements. On est toutefois limité par la vitesse maximale autorisée sur les entrées du PIC, qui place le maximum pratique à quelques dizaines de MHz. Un jour peut-être verrons-nous apparaître un PIC à 1 euro capable de traiter des signaux d'entrée à 1 GHz...

Fréquence de rafraîchissement et précision
Une mesure de fréquence peut se faire très simplement, il suffit de compter le nombre d'impulsions dans un intervalle de temps de 1 seconde. En procédant ainsi, la précision de mesure peut être de l'ordre du hertz, en admettant bien sûr que la fenêtre de mesure soit rigoureusement de 1 seconde. Cette fenêtre de mesure de 1 seconde impose un taux de rafraichissement ne pouvant descendre en dessous de la seconde, ce qui peut s'avérer lent dans certains cas. Pour cette raison, on peut doubler la récurrence des mesures (durée de mesure de 500 ms) sous réserve de multiplier par deux le nombre d'impulsions comptabilisées, pour que la valeur affichée reste exprimée en hertz. Cette façon de faire réduit toutefois la précision d'un facteur 2. Avec une fenêtre de mesure de 250 ms, on dispose de 4 mesures par seconde, mais la précision est encore réduite (en multipliant par 4 une erreur de mesure de 1 Hz, on obtient au final une erreur de 4 Hz).
Le logiciel a été écrit pour travailler avec une fenêtre de mesure de 1 s, 500 ms, 250 ms ou 125 ms. La version disponible ici est figée à 250 ms, soit 4 mesures par seconde et une précision de 4 Hz. Si un signal de fréquence 999.996 kHz peut être affiché 999.996 kHz, et si un signal de fréquence 1.000000 MHz peut être affiché 1.000000 MHz, en revanche un signal de fréquence 999.999 kHz ne pourra pas être affiché 999.999 kHz (il sera affiché 1.000000 MHz).
Remarque : la précision dépend grandement de la fréquence réelle d'oscillation du quartz, qui idéalement devrait être de 8.000000 MHz. Une solution élégante (et luxueuse) consiste à utiliser un oscillateur externe stabilisé en température (TCXO).

Affichage des unités (Hz, kHz, MHz)
Il existe plusieurs façons de faire (toujours afficher en hertz, avec un ou plusieurs points pour séparer les milliers), j'ai opté pour la méthode qui me semblait la plus judicieuse :
- si la fréquence mesurée est inférieure ou égale à 999 Hz, elle est affichée sous la forme xxx Hz
- si la fréquence mesurée est comprise entre 1 kHz et 999,999 kHz, elle est affichée sous la forme xxx.xxx kHz
- si la fréquence mesurée est supérieure ou égale à 1 MHz, elle est affichée sous la forme xxx.xxxxxx MHz
Pour une valeur supérieure ou égale à 1 MHz, il est en outre possible de n'afficher que 3 décimales au lieu de 6, si désiré :
- si JP1/DispMode = 0, alors affichage sous la forme xxx.xxx MHz
- si JP1/DispMode = 1, alors affichage sous la forme xxx.xxxxxx MHz

F >= 1 MHz et JP1/DispMode = 1 :
affichage au Hz près
frequencemetre_006_disp_001a
ou F >= 1 MHz et JP1/DispMode = 0 :
affichage au kHz près
frequencemetre_006_disp_001b

Bien entendu, le choix peut être rendu définitif en câblant directement la ligne RB14 du PIC au +Valim ou à la masse. Personnellement, je préfère voir en permanence les chiffres des unités, même s'ils bougent un peu (JP1/DispMode = 1).

Sortie série (UART)
Les valeurs de fréquences mesurées sont régulièrement envoyées sur le port UART du PIC (point marqué Tx sur le schéma), à la vitesse de 250 kbps (vitesse adoptée pour les transmissions de données DMX en éclairage de scène).

frequencemetre_006_term_001a

Afin de faciliter un éventuel traitement informatique externe, les données transmises le sont dans leur plus simple expression, sans suffixe d'unité (la valeur transmise est toujours exprimée en hertz) et avec un préfixe "1:" ou "2:" permettant de repérer l'entrée concernée. La longueur de la chaîne de caractère (pour la valeur de fréquence seule) est volontairement fixée à 10 et se termine par un retour chariot pour, là encore, faciliter la récupération des données. Chaque chaîne envoyée comporte donc en tout 13 caractères.

Etage d'entrée
Les entrées CLK_IN_1 et CLK_IN_2 sont de type "logique 3V3" et aucune protection n'est prévue sur le schéma qui précède, où seule la partie purement logique est montrée. Pour pouvoir utiliser ce fréquencemètre avec des signaux d'origine variée, il faut lui adjoindre l'étage d'entrée présenté ci-après, ou tout autre étage délivrant en sortie un signal dont l'amplitude crête à crête ne dépasse pas 3,3V (entre 0V et +3V3, surtout pas centré sur le 0V de la masse).

frequencemetre_006_inputs

Pour changer un peu, j'ai remplacé le traditionnel transistor FET par un comparateur rapide. Le LMV7219M5 est très rapide, n'essayez pas de le remplacer par un AOP monté en comparateur, ni même par un comparateur passe-partout de type LM311 ou LM393. L'impédance d'entrée est ici voisine de 20 kO, et la sensibilité est de l'ordre de 50 mV. Les diodes Dx1 et Dx2 limitent l'amplitude des signaux appliqués aux comparateurs de tension Ux1 (U11 et U21). Les condensateurs de découplage Cx4 et Cx5 doivent être placés au plus près de Ux1.
Si vous envisagez d'attaquer les entrées du PIC sans passer par cet adaptateur d'entrée, je vous conseille vivement d'ajouter, au strict minimum, une résistance série de 100 ohms et une diode zener parallèle de 3V3 pour chacune des entrées CLK_IN_1 et CLK_IN_2.

Prototype

Prototype réalisé sur plaque d'expérimentation sans soudure.
Remarque : seule la section avec le PIC24 et l'afficheur LCD a été testée. L'étage d'entrée a seulement été simulé.

Logiciel du PIC

Le code binaire compilé (*.hex) est disponible dans l'archive suivante. 
Fréquencemètre 006 - 24FJ32GA002 - (05/05/2019)
Si vous souhaitez recevoir par la poste un PIC préprogrammé et prêt à utiliser, merci de consulter la page PIC - Sources.

Circuit imprimé

Non réalisé.

Historique

05/05/2019
- Première mise à disposition.