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.
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).
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
|
ou |
F
>= 1 MHz et JP1/DispMode = 0 :
affichage au kHz près
|
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).
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).
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.