Dernière mise à jour :
14/05/2017
Présentation
Fréquencemètre de "moyennes dimensions", simple et peu
coûteux à réaliser. Bien que basé sur un PIC 16F628A, 18F2420 ou
18F2520 et cadencé à 4 MHz, 8 MHz ou 16 MHz, le code utilisé est
totalement différent de celui mis
en oeuvre dans mon
fréquencemètre
004,
et la base de temps est ici figée à 100 ms pour toute la
gamme de mesure, qui s'étend de 10 kHz à 20 MHz (en-dessous de 10 kHz
c'est instable, et à 27 MHz ça fonctionne encore bien). Trois versions
sont proposées, une seule fonctionnelle :
-
Schéma 005
: version avec PIC 16F628A - simulation OK mais
ne fonctionne pas bien en pratique.
-
Schéma 005b
: version avec PIC 18F2420 - simulation OK mais pas testé pratiquement.
-
Schéma 005c
: version avec PIC 18F2520 - simulation OK et
testé
OK.
L'étage d'entrée est identique pour les trois versions et fonctionne bien,
testé pratiquement avec succès par au moins deux personnes (en plus de moi).
Avertissements
Avant d'aller plus loin...
- Le fréquencemètre en
version 16F628A ne fonctionne pas bien
au niveau logiciel PIC. Dans un premier temps, j'ai effectué une
simulation sous Proteus, qui semblait donner satisfaction. Puis les
tests pratiques ont été vite faits (mal faits), avec une
porte d'un CD4093
montée en oscillateur
RC basique. La mesure de
fréquence que j'obtenais sur mon "multimètre fréquencemètre" était de
47 kHz et le fréquencemètre 005 quant à lui affichait 48 kHz. La valeur
affichée fluctuait pas mal, mais je mettais ça sur le
compte d'un oscillateur RC pas très stable monté sur plaque
d'expérimentation sans soudure, et je n'ai pas
poussé les tests plus loin que ça. Puis quelques mois
après, Michel, qui a tenté sa réalisation,
m'écrit pour me dire que ça ne fonctionne pas,
l'affichage étant instable au possible. J'ai du coup ressorti
tout mon équipement et ai cette fois utilisé un
générateur de précision pour des tests un peu
moins "amateur". Et effectivement, ça n'allait pas du tout,
l'affichage n'était pas stable du tout. L'étage d'entrée
fonctionne
bien mais pas la section comptage. Bref, ne tentez pas la
version avec PIC 16F628A en l'état actuel. En
passant, merci encore à Michel pour son message d'avertissement,
j'ai fait suivre à l'auteur du code source de la section comptage
(voir Remerciements ci-après). Je dois préciser que le code source est
à l'origine pour PIC18F et que je l'ai utilisé pour un PIC16F (on
m'avait dit que ça devait fonctionner et je me rend compte que non,
j'ai probablement dû louper un truc dans un coin de code).
- J'ai
finalement terminé mes tests avec un PIC 18F2520 et là ça
va nettement mieux ! Cependant j'attire votre attention sur le
fait que la précision et la stabilité d'affichage ne sont pas terribles
aux basses fréquences (< 10 kHz). Ce n'est donc
pas un montage fait pour de la mesure en bande audio ;-)
- Aucun
test pratique n'a été mené avec le PIC 18F2420, mais ce microcontrôleur
est tellement proche du 18F2520 que j'ose espérer que le code que j'ai
mis à disposition fonctionne aussi.
Remerciements
Le
code logiciel utilisé pour ce fréquencemètre est
basé sur une librairie
mise gracieusement à disposition par yo2lio (pseudo d'un des
membres de l'équipe de développement MikroElektronica),
que je remercie
chaleureusement.
The PIC code used
here for the frequency measurement is based on a library written by
yo2lio (from MikroElektronica team), that I thanks a lot for this works
and for allowing me to use
it for this electronic application.
Annonce
sur
forum MikroElektronica
Librairie
"Frequencemetre" de yo2lio que j'ai utilisée
Schéma 005 - Avec 16F628A
L'étage d'entrée est la partie qui contient le plus de
composants, les fonctions de comptage et d'affichage étant
assurées par un petit PIC associé à un afficheur
LCD de 2 lignes de 16 caractères.
Etage d'entrée
Voir descriptif à la page
Etage
d'entrée 001 pour fréquencemètre.
Comptage et affichage
Je
vais être franc : comme le code logiciel utilisé ici n'est
pas de moi et qu'il contient de l'assembleur, je ne maîtrise rien
du tout. Bonne excuse pour laisser traîner ce projet qui ne fonctionne
pas bien... du côté où je ne comprend rien. Voir les versions
suivantes, plus prometteuses.
Schéma 005b - Avec 18F2420
Même chose mais cette fois avec un
microcontrôleur de la famille 18F, j'ai là encore utilisé la
librairie de yo2lio dans sa version pour PIC18 (fichier frecv_lib_P18
disponible sur son site).
Simulation effectuée avec succès mais
circuit pas testé en grandeur nature. Voir circuit 005c avec 18F2520,
qui lui a été testé.
L'étage d'entrée vu avant convient tout autant pour cette version 005b.
Schéma 005c - Avec PIC18F2520
Eh
bien voilà, il n'aura fallu qu'un peu plus de deux ans pour ressortir
ce montage de sa boîte. Et encore, si on ne m'avait pas relancé sur le
sujet, il y serait sans doute encore. Bref, circuit testé en
vrai et ça donne enfin un truc à peu près potable, voir
résultats
affichés un peu plus loin, au paragraphe Prototypes.
Aucun changement lourd dans le logiciel, j'ai simplement changé le type
de PIC pour passer du 18F2420 au 18F2520.
Prototypes
Deux
prototypes réalisés sur plaque d'expérimentation sans soudure,
avec liaison directe vers la platine EasyPic4 (pour tests avec PIC
16F628A) et EasyPic7 (pour tests avec 18F2520).
Mon prototype circuit 005 (avec 16F628A)
Comme dit en début d'article, montage pas vraiment fonctionnel,
surtout sur les fréquences basses (affichage très instable).
Lors de mes secondes manips sur ce projet (30/08/2009), j'en ai
profité pour essayer un afficheur LCD 4 x 20 charactères,
récupéré sur une vieille machine.
La valeur "19000" sur la deuxième photo est codée en dur,
ce n'est pas une valeur comptée. Mais peu importe, le but
était de vérifier le bon fonctionnement de cet afficheur,
dont je n'ai trouvé aucun document technique, faute de
référence précise (je suis parti de
l'hypothèse que le brochage était standard et identique
à mon afficheur 2 x 16 caractères).
Mon prototype circuit 005c (avec 18F2520)
Circuit
fonctionnel, testé avec ma platine EasyPic7 et une petite plaque sans
soudure pour faire l'interface avec l'afficheur LCD et ajouter un
oscillateur à quartz intégré (pour tests), les deux platines
sont reliées par des connecteurs 10
points et câbles en nappe.
Quartz de 4 MHz, 8 MHz et 16,384 MHz (et non 16,000 MHz, voir remarque
plus loin) pour les diverses vitesses d'horloge prévues.
Remarque importante concernant les
tests avec horloge PIC à 16 MHz
: comme je n'ai pas remis la main sur mon quartz de 16 MHz, j'ai fait
mes premiers tests "16 MHz" avec un oscillateur à quartz externe de
16,000 MHz, dont la sortie était simplement reliée à la broche RA7/CLKI
du PIC, la broche RA6/CLKO étant laissée en
l'air, configuration
horloge en mode Quartz HS (High Speed et non Hors Service).
Ca
marchait
bien par moment et pas à d'autres, l'écran LCD affichait parfois de
drôles de choses et pas seulement pour l'affichage de la valeur de
fréquence (sans doute une instabilité liée à la longueur des fils, je
n'ai pas investigué plus avant). Du coup, je me suis rabattu sur l'usage
d'un quartz 16,384
MHz disposé directement sur la platine de développement et là tout
fonctionnait bien, mais évidement avec un décalage de la
valeur affichée puisque les compensations logicielles sont
calculées
pour une fréquence de 16 MHz. J'ai toutefois décidé d'indiquer dans le tableau
récapitulatif les valeurs
mesurées en appliquant un coefficient correcteur de 1,024 (16,384 /
16,000), mais bien sûr je me le permet en précisant que ce n'est pas la
bonne méthode à suivre et qu'elle permet juste de voir que ça
fonctionne aussi à cette fréquence de "16 MHz".
Sources de signal à
mesurer
J'ai
utilisé des oscillateurs à quartz intégrés standards (non compensés en
température) de différentes valeurs : 8,192 MHz, 12,288 MHz, 16 MHz et
27 MHz. La première chose que j'ai faite est d'en prendre un au hasard
(allez, le 12,288 MHz) et de voir ce qu'affichaient mes appareils de
mesure.
Pour
les fréquence plus basse, j'ai utilisé l'oscillateur 8,192 MHz que j'ai
fait suivre par un compteur / diviseur à plusieurs sorties de type CD4040.
Méthodologie des tests
Je
ne suis pas un professionnel de la mesure et mes
fréquencemètres Racal-Dana et Microwave sont
vieux et
n'ont pas subi de recalibrage depuis plus de 10 ans. Le Racal-Dana
a tendance à afficher une valeur un poil inférieure à la
réalité,
mais ça reste dans le domaine du supportable. J'utilise
ces appareils en connaissance de cause et je ne recherche
jamais
une
précision au Hz. De temps en temps je compare les résultats qu'ils
donnent avec mon plus récent Centrad GF265 dont j'utilise l'entrée
compteur externe (mais ce dernier ne peut grimper très haut en fréquence). J'ai le gros avantage de disposer de plusieurs
appareils et même s'ils ne sont pas tout frais, c'est bien pratique
en cas de doute. Les indications qui font
suite sont données
à titre d'information. Bien entendu, j'ai laissé chauffer les bouzins
au moins une heure avant de m'en servir (attente de la stabilisation
thermique de l'oscillateur de référence).
Freq d'entrée |
18F2520 / 4 MHz |
18F2520 / 8 MHz |
18F2520 / 16 MHz |
B = 1,333 kHz |
C = 0,800 kHz |
C = 1,700 kHz |
C = 1,177 kHz |
B = 42,660 kHz |
C = 41,020 kHz |
C = 41,060 kHz |
C = 42,752 kHz |
B = 682,566 kHz |
C = 683,350 kHz |
C = 683,190 kHz |
C = 683,018 kHz |
B = 1,365134 MHz |
C = 1,366870 MHz |
C = 1,366710 MHz |
C = 1,365575 MHz |
A = 8,192 MHz
B = 8,190715 MHz |
C = 8,191990 MHz |
C = 8,191980 MHz |
C = 8,191959 MHz |
A = 12,288 MHz
B = 12,287342 MHz |
C = 12,290530 MHz |
C = 12,290510 MHz |
C = 12,289280 MHz |
A = 16,0000 MHz
B = 15,999966 MHz |
C = 16,002550 MHz |
C = 16,002540 MHz |
C = 16,003819 MHz |
A = 27 MHz
B = 26,999892 MHz |
C = 27,002870 MHz |
C = 27,002870 MHz |
C = 27,003432 MHz |
A
= fréquence théorique / attendue du signal à mesurer (valeur spécifiée
sur l'oscillateur externe)
B = valeur affichée par mon fréquencemètre
Racal-Dana
C = valeur affichée par le fréquencemètre
005c
Sans
trop de surprise, baisse de la précision et affichage moins
stable
sur les basses fréquences (< 10 kHz), ce qui est logique vu que
la
durée de la
fenêtre de mesure reste constante (100 ms) sur toute la plage de
mesures. Les valeurs affichées par le fréquencemètre à PIC sont
sensiblement égales quel que soit la fréquence d'horloge utilisée (4, 8
ou 16 MHz). On pourrait se dire, à la vue de ces chiffres, que la
précision n'est pas terrible. Et pourtant... si on regarde ce qu'on obtient avec
source 8,192 MHz et horloge PIC à 8 MHz, on constate que l'écart
entre valeur attendue et valeur affichée n'est pas si grand :
A = 8,192000 MHz
C = 8,191980 MHz
A-C = 0,000020 MHz soit seulement 20 Hz !
De même pour la source 27 MHz et horloge PIC à 8 MHz :
A = 27 MHz
C = 27,002870 MHz
A-C = -0,002870 MHz soit seulement -2,8 kHz !
Dans
le domaine des fréquences élevées (> 100 kHz) on reste avec une
précision bien inférieure à 0,1% et pour les fréquences inférieures la
précision reste inférieure à 1%. Pas si mal que ça, non ?
Prototype de Guillaume
Guillaume,
qui s'est appuyé sur les mêmes schéma et code, fait le même constat que
moi : le fréquencemètre n'est guère utilisable en dessous de 10 kHz,
même si un moyennage des dernières valeurs mesurées arrange un peu les
choses.
La
dernière photo fait état de ce qui ressemble à un bug (absence de valeur de fréquence en Hz). Cet affichage
est sans doute lié au remplacement du transistor FET 2N4416 par un
bipolaire 2N2222 à 5 broches...
Prototype de Alain
Version 005c (avec 18F2520) réalisée avec quartz 8 MHz.
Très jolie mise en boîte, merci Alain !
Logiciel du PIC
Le
code binaire compilé (*.hex) et le code source de ce fréquencemètre
sont disponibles dans l'archive suivante. Pour des questions de droit
d'auteur, je n'ai pas inclus la librairie de yo2lio dans l'archive zip,
vous devez la récupérer sur le lien cité en début d'article (elle n'est
requise que si vous souhaitez modifier et recompiler le code source).
Fréquencemètre
005 - 16F628A
Fréquencemètre
005b - 18F2420 - (16/12/2012)
Fréquencemètre
005c - 18F2520 - (14/05/2017)
Pour les versions avec PIC 18F2420 et 18F2520, trois fichiers compilé vous sont gracieusement proposés :
- electronique_frequencemetre_005x_18f2x20_xtal_04.hex : pour usage
avec quartz 4 MHz
- electronique_frequencemetre_005x_18f2x20_xtal_08.hex : pour usage
avec quartz 8 MHz
- electronique_frequencemetre_005x_18f2x20_xtal_16.hex : pour usage
avec quartz 16 MHz
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é pour les deux versions.
Historique
14/05/2017
- Recompilation des fichiers de la
version 005c (18F2520) pour quartz 4 MHz, 8 MHz et 16 MHz. Je m'étais
un peu mélangé les pinceaux lors des précédentes compilations de 2012
(merci à Alain pour son oeil attentif). Le code source est inchangé.
- Ajout photo prototype de Alain, que je remercie pour ses retours.
23/12/2012
- Ajout photos du prototype de Guillaume, que je remercie.
16/12/2012
- Finalisation des tests avec un PIC 18F2520, je n'ai pas retrouvé mon
18F2420 :-(
18/04/2010
- Mise à disposition du code logiciel pour PIC 18F2420.
30/08/2009
- Suite à message de Michel, j'ai ressorti le montage 005 (version avec
PIC 16F628A) et ai
confirmé le mauvais fonctionnement du logiciel du PIC qu'il a
mis en évidence. Toutes mes excuses pour les tests insuffisants
que j'avais menés avant de mettre en ligne ce projet.