fréquencemètre Portable: auto-calibré par GPS
sur

Un fréquencemètre abordable manque souvent de précision et de stabilité. Nous avons ici un fréquencemètre avec une précision garantie sur 8 chiffres et à un prix acceptable. Un afficheur OLED fournit une lisibilité excellente. L'étalonnage est automatique grâce au signal GPS. Une batterie rechargeable interne rend l'instrument portable.
Principe de fonctionnement
Ce fréquencemètre utilise une méthode de comptage réciproque. Un nombre de cycles complets est compté à l'entrée du signal. Pendant cette période, les cycles d'un signal de référence d'une fréquence défini, la fréquence de référence (fref), sont comptés. Avec la formule

la fréquence du signal d'entrée (fin) est calculée. Pour acquérir le nombre de cycles d'entrée (nin) et le nombre de cycles de notre fréquence de référence, le comptage nref est nécessaire. Si nous voulons un résultat avec une précision sur 8 chiffres, nref devrait être supérieur à 108.
Ainsi, la valeur de la fréquence de référence définit la durée de la période pendant laquelle les cycles du signal d'entrée sont comptés. Ce temps est le temps minimal pour mesurer la fréquence du signal d'entrée avec une précision de 8 chiffres. Par conséquent, plus la fréquence de référence est haute, plus vite nous obtenons un résultat. Pour les calculs, un microprocesseur est nécessaire. Les microcontrôleurs modernes tournent à des hautes fréquences et incorporent souvent plusieurs compteurs dans leurs puces.

Considérations relatives à la conception d'un compteur de fréquence
Le microcontrôleur Microchip PIC18F26Q83 possède toutes les caractéristiques nécessaires pour cette application. Il fonctionne à une fréquence maximale de 64 MHz. Les processeurs fonctionnant à une fréquence plus élevée sont disponibles à un prix beaucoup plus élevé et sont trop compliqués pour l'application décrite ici.

Un oscillateur à quartz compensé en température (TCXO) fournit le signal d'horloge de 64 MHz au processeur, car l'oscillateur interne ne serait pas suffisamment stable. Avec cette fréquence, un compteur ayant une précision à 8 chiffres peut être obtenu avec une mise à jour de moins de 1,6 secondes. Cependant, les compteurs du processeur ne peuvent gérer les signaux que jusqu'à une fréquence maximale de 20 MHz.
Heureusement, il y a 8 Cellules Logiques Configurables (CLC) dans la puce et elles sont assez rapides pour faire face à une fréquence de 64 MHz. C'est donc la fréquence maximale que nous pouvons mesurer avec ce processeur. Avec deux CLC, nous formons un prédiviseur contrôlé à 2 bits (voir Figure 1) dont la sortie possède une fréquence maximale de 16 MHz. Celle-ci est acceptable pour tous les compteurs du microprocesseur.

Comme mentionné précédemment, nous devons compter pendant au moins 1,6 s. Compter des cycles de 64 MHz pendant une telle durée nécessite un compteur d'au moins 27 bits. Deux bits sont fournis par le prédiviseur et un compteur interne devrait avoir une résolution d'au moins 25 bits. Comme les compteurs sont tous en 8-bit ou un multiple de 8, nous utilisons des compteurs de 32-bit. Le processeur fournit six compteurs en 16 bits : TMR0, TMR1, TMR3, TMR5, UTMRA et UTMRB.
Ces compteurs peuvent être chaînés pour en faire des compteurs en 32-bit. Nous avons chaîné ici les compteurs TMR1 et TMR3 et les compteurs UTMRA et UTMRB. CLC5 et CLC6 sont le prédiviseur pour les UTMR en 32-bit et, CLC7 et CLC8 sont le prédiviseur pour la combinaison TMR1/TMR3. Avec le module PWM1, une impulsion de 1,6 s est générée. Dès qu'un cycle du signal d'entrée arrive, la bascule de CLC4 est activée (voir figure 2).

Cette bascule fournit le signal de déclenchement du premier étage des prédiviseurs. Elle est remise à zéro par le premier cycle du signal d'entrée après que la sortie de PWM1 passe à zéro. La sortie de CLC4 passant à l'état bas, entraîne une interruption. Dans la routine du service d'interruption, les compteurs sont lus, les calculs sont faits et le résultat est affiché. Après ceci, les compteurs sont remis à zéro et la procédure recommence à nouveau.
La précision est atteinte en utilisant un TCXO 64-MHz très stable avec lequel nous mesurons la fréquence de façon très précise au travers du signal GPS. La sortie du module de réception GPS est un signal ayant une fréquence de 1 Hz extrêmement stable (meilleur que 10-15). En utilisant du compteur 8-bit TMR2, nous générons une impulsion de 10 s. Pendant cette période, un prédiviseur formé de CLC1 et CLC2 compte les impulsions de sortie du TCXO. Le signal de sortie de ce prédiviseur sert de signal d'horloge pour le compteur 32-bit composé des compteurs chaînés TMR0 et TMR5.
Le signal de sortie de TMR2 entraîne une interruption dès qu'il passe au niveau haut. La routine du service d'interruption lit la valeur du compteur TMR0/TMR5, qui représente exactement dix fois la fréquence du TCXO. Cette valeur est utilisée dans les calculs pendant les mesures de fréquence. Une variation possible de ±1 n'a pas d'influence sur la précision à 8 chiffres du compteur, puisque la période de mesure est de 10 secondes. Après avoir mesuré plusieurs fois la fréquence du TCXO, le résultat est stocké dans l'EEPROM du processeur. Ceci assure — lorsque le fréquencemètre est mis en marche — que cette valeur est disponible. La pratique montre que seul le vieillissement modifie la fréquence du TCXO.
Circuit du compteur de fréquence
Comme indiqué sur la figure 3, le microcontrôleur s'occupe de toutes les fonctions logiques et des calculs. Mais un fréquencemètre nécessite plus. Les signaux — dont la fréquence qui doit être mesurée — ne sont pas nécessairement numériques. Nous devons amplifier ou éventuellement atténuer le signal. Ceci est pris en compte par un préamplificateur. Un écran est branché au microcontrôleur pour afficher le résultat des mesures. Et, comme mentionné ci-dessus, un TCXO et un récepteur GPS sont aussi branchés pour fournir la fréquence de référence.

Le schéma complet du circuit est montré dans la figure 4. Le processeur U2 avec le TCXO, le récepteur GPS U4 et l'afficheur U3 sont les parties numériques du compteur.
Le préamplificateur a une impédance d'entrée de 1 MΩ (R1). Le transistor JFET Q1 possède une très grande impédance d'entrée et fournit un peu d'amplification (D1 est une protection de la grille sensible contre les tensions alternatives). Le transistor émetteur suiveur Q2 est couplé en continu avec le transistor amplificateur de sortie Q3. U1 est un comparateur à haute vitesse. Il transforme le signal en signal carré, générant un signal impulsionnel bien formé pour l'entrée d'échantillonnage du microcontrôleur.
Ce type de circuit a suffisamment de bande passante pour le compteur, ce qui a été confirmé par une simulation SPICE. La tension crête-à-crête du signal d'entrée peut être aussi faible que 50 mV pour donner un bon signal de sortie, qui sera entré dans le comparateur à haute vitesse. Un peu d'hystérésis est fourni par la résistance de réaction R13.
Même si la tension d'entrée à la broche 1 du comparateur dépasse sa tension d'alimentation, le circuit ne sera pas endommagé parce que le courant d'entrée ne dépassera pas la valeur limite. Le signal de sortie du comparateur arrive ensuite au microcontrôleur pour y être traité. En raison de son entrée sensible, la première partie du préamplificateur est blindée.
Alimentation
BT1, une batterie rechargeable Li-ion de type 18650, fournit l'énergie au circuit. La tension nominale de la batterie est 3,7 V. Le récepteur GPS nécessite une tension de 3,3 V. Comme il est branché directement au processeur, nous faisons tourner le processeur et le TCXO également sous 3,3 V. Un simple régulateur (U5) s'occupe de ça. L'amplificateur d'entrée nécessite une alimentation de 5 V pour fonctionner correctement. Le régulateur élévateur U6 convertit la tension de la batterie en une tension légèrement supérieure à 5 V.
L2 et C13 supprimeront l'ondulation de la sortie du convertisseur. La chute de tension de la self amène la tension d'alimentation du préamplificateur à exactement 5 V. Comme l'écran intègre son propre régulateur, il est alimenté directement depuis la batterie. Le bouton-poussoir SW1 rend passant le MOSFET Q6 qui à son tour rend passant le MOSFET Q5, qui sert à alimenter le circuit. Le processeur commence à fonctionner et enclenche le MOSFET Q4, qui conserve la connexion avec la batterie lorsque le bouton-poussoir est relâché.
Avec une batterie entièrement chargée, le fréquencemètre pourra fonctionner pendant environ une vingtaine d'heures. Pour la recharge, on utilisera une source de courant USB. Le circuit chargeur U7 s'occupe de cette fonction. Les broches 3 et 4 du connecteur USB ont chacune besoin d'une résistance reliée à la masse.
Sans celles-ci, les chargeurs rapides, comme on les appelle, ne fourniront pas de courant. La LED rouge s'allume pendant la charge et la bleue s'allume lorsque la batterie est entièrement chargée. Le connecteur J2 sert pour programmer le processeur et le cavalier J4 permet de brancher la batterie en permanence, ce qui peut être utile pendant la recherche de bogues et pendant la programmation.
Les conditions environnementales pour avoir une bonne réception GPS peuvent, parfois, être insuffisantes. Un connecteur en option pour une antenne externe est fourni dans le cas de cette éventualité (J3).
Logiciel
Le logiciel est écrit en assembleur sans utiliser de bibliothèque et peut être télécharger ici <span>. La programmation en assembleur donne un logiciel plus efficace en ressources mémoire et plus rapide qu'un logiciel écrit en langage de plus haut niveau. Ainsi, il ne consomme qu'environ 5 % de la mémoire programme du processeur.
Après la configuration obligatoire des E/S, CLC, compteurs et autres modules internes, on entre dans le programme principal. Cette partie ne s'occupe que d'afficher le symbole de l'onde pendant que le récepteur GPS envoie une impulsion et d'effacer le point de mise à jour (voir les détails de ces symboles plus loin dans l'article). Toutes les autres fonctions sont prises en charge par les routines de service d'interruption, cinq en tout.

Les logigrammes de ces routines sont montrés à la figure 5. Elles sont explicites. Les routines d'interruption des anciens microcontrôleurs commencent par chercher quel périphérique a provoqué l'interruption. Après avoir trouvé la cause, un saut est effectué vers la routine qui la traite. Le microcontrôleur utilise ici des interruptions soi-disant vectorielles. Ceci veut dire que chaque périphérique possède son propre vecteur unique pointant vers la routine de service d'interruption, de telle sorte qu'à l'intérieur de la routine d'interruption, il n'est pas nécessaire de savoir quel périphérique l'a provoqué. La gestion des interruptions est très rapide de cette manière.
Construction
Un simple PCB de 100 × 70 mm2 reçoit tout le circuit, comme montré à la figure 6. Du soin a été apporté pour bien séparer les circuits de l'amplificateur d'entrée, du processeur, du récepteur GPS et de l'alimentation.
A part les connecteurs, l'afficheur et le TCXO, tous les composants sont en CMS. Cela permet de gagner de la place, de faciliter le routage et d'obtenir un circuit compact de petite dimension. Les résistances de l'amplificateur d'entrée sont au format 1206. Elles ont une plus faible capacitance parasite que celle au format 0805 qui sont utilisées pour le reste du circuit.

et face arrière, montée dans le boîtier (à droite).
En supprimant le cuivre de certaines parties, la capacité d'entrée de l'amplificateur a pu être limitée à environ 15 pF. Le circuit imprimé est logé dans un boîtier OKW Datec-Mobil-Box S. En raison de la hauteur de l'afficheur OLED, la procédure suivante a été suivie pour le monter. L'afficheur a d'abord été monté sur des entretoises de 5 mm.
Ensuite, le connecteur a été mis en place depuis l'arrière de la carte. Pour assurer un contact optimal, les broches du connecteur ont été ensuite poussées, une par une, aussi loin que possible. La hauteur maximale de la carte complète est passée à 19 mm, pour entrer parfaitement dans le logement disponible de 22 mm du boîtier OKW. Seules quelques connexions vers le module d'affichage étaient nécessaires; ainsi, seuls les connexions nécessaires ont été montées et quelques autres pour maintenir le module en place.
L'afficheur Waveshare OLED est configuré par défaut pour être géré par un bus SPI. Dans notre cas, nous utilisons à la place le bus I2C. Par conséquent, six résistances de 0 Ω ont dû être retirées du module. La figure 7 montre la différence après la modification. Il faut faire bien attention parce que ces pièces sont très petites.

à résistance 0 Ω pour la sélection du bus I2C.
Utilisation du fréquencemètre
On met l'instrument en marche en appuyant sur le bouton-poussoir SW1. Un appui, pendant la mesure d'une fréquence, gèle la valeur affichée et le message hold est affiché. Une deuxième pression relance la mesure. Le fréquencemètre s'éteint automatiquement au bout de 60 s en l'absence de signal d'entrée.

de sortie du GPS (au milieu) et réception réussie de 10 impulsions GPS successives (à droite).
On peut également arrêter le fréquencemètre en appuyant plus de 2 s sur le bouton, action confirmée par un écran noir. La figure 8 montre tout ce qui peut être affiché dans le coin de l'écran. À chaque actualisation de l'écran, un petit point s'allume dans le coin supérieur gauche (figure 8, à gauche). Pendant que le récepteur GPS envoie une impulsion, une icône en forme d'onde est affichée (photo du milieu de la figure 8).

i.e. (from the top) the regular reading, the low battery status,
the frequency hold status and the no input (dashed display) condition.
Lorsque le processeur reçoit correctement une série de dix impulsions successives du récepteur GPS, le caractère "coche" apparaît sur l'écran pendant une seconde (photo de droite de la Figure 8). La figure 9 montre tous les affichages possibles de l'écran avec, (à partir du haut) l'affichage standard, l'indication de batterie faible, le gel de l'affichage de la fréquence et l'indication d'absence d'entrée (traits interrompus). La tension de la batterie est vérifiée toutes les 30 s environ ; si elle chute en dessous de 3,2 V, le message batterie faible est affiché, indiquant que la batterie doit être rechargée.
Questions or commentaires ?
Envoyez un courriel à l'auteur wdenhollander@solnet.ch, ou contactez Elektor redaction@elektor.fr.
Discussion (0 commentaire(s))