Dernière mise à jour :
10/08/2014
Présentation
Ce montage doté de 7 LED donne une indication sur la stabilité de la
fréquence du secteur 50 Hz ou 60 Hz.
Il fait appel à un PIC 16F628A et quelques composants courants, et
dispose d'une mémorisation de la valeur la plus faible et la plus
élevée détectées depuis la dernière remise à zéro. Ce circuit,
moyennant quelques modifications logicielles mineures, peut également
servir à afficher la stabilité de la vitesse d'un moteur, d'une roue ou
de tout autre système doté d'un capteur qui fournit des impulsions à
intervales réguliers (capteur optique ou à effet hall par exemple).
Schéma
En plus du PIC 16F628A, on trouve quelques composants qui ne posent aucune difficulté d'approvisionnement.
Principe de fonctionnement
Il repose sur le comptage
d'impulsions, les tops de départ et de fin de comptage correspondent
aux crêtes positives de la tension sinusoïdale dont on souhaite
indiquer la fréquence (on pourrait aussi utiliser les passages par zéro
de l'onde, mais ces derniers se produisent deux fois plus souvent et la
résolution de mesure s'en trouverait divisée par deux). A chaque
nouvelle montée positive de la tension sinus à surveiller, un compteur
est remis à zéro. Ce compteur est incrémenté à raison de 1 point par
microseconde, son contenu (sa valeur) représente donc directement la
période du signal. Et comme vous le savez peut-être, la période T d'un
signal périodique correspond à l'inverse de sa fréquence F :
F = 1 / T ou T = 1 / F
Si
le compteur est mis à zéro lors d'une alternance et qu'il est stoppé à
l'alternance suivante, sa valeur représente le temps (en microseconde)
qui s'est écoulé entre le top de départ et celui de fin. Si par exemple
l'écart de temps T est de 20000 us (20 ms), on en déduit que la
fréquence F est de :
F = 1 / 0.00020000 (s) = 50.000 Hz
formule qu'on peut aussi écrire de la façon suivante :
F = 1000000 / 20000 (us) = 50.000 Hz
Si le compteur contient la valeur 19997, alors cela veut dire que la fréquence est un poil plus élevée que 50 Hz :
F = 1000000 / 19997 (us) = 50.007 Hz
Avec
un comptage cadencé à 1 us, on peut espérer une résolution globale de
0.002 ou 0.003 Hz, ce qui n'est pas mal ! Ici, on se contente d'une
indication avec des écarts "larges" de -1,5 Hz à +1,5 Hz : plage de
48,5 Hz à 51,5 Hz sur 7 LED, pas de 0,5 Hz.
Quand la fréquence
du signal d'entrée est inférieure au seuil le plus bas (ou en absence
de signal), la première LED clignote rapidement.
Descriptif détaillé
Le
schéma peut être divisé en deux parties, celle du haut (avec le
transformateur) correspond à l'alimentation secteur et à l'extraction
des "impulsions" de mesure, celle du bas (avec le PIC) correspond au
circuit de mesure et d'affichage. L'alimentation est des plus simples,
un transformateur abaisseur de tension (230 V / 9 V) est suivi d'une
diode de redressement (D1) et d'un "gros" condensateur de filtrage
(C3). On a affaire à un redressement mono-alternance qui suffit dans
notre application car la consommation générale du montage est faible
(quelques mA). La diode D2 permet de prélever la tension "demi-sinus"
issue du transformateur d'alimentation, cette tension fait conduire le
transistor FET Q1 à peu près la moitié du temps (lors des alternances
positives). Le signal obtenu en sortie du transistor Q1 (point
noté 50/60Hz) est presque un signal carré, c'est lui qu'on oriente sur
la broche RB0 du PIC et qui va déclencher les interruptions
externes du PIC, lequel PIC compte tranquilement le temps qui passe
tant qu'on ne l'incite pas à faire autre chose. Le compteur interne du
PIC est mis en route et s'arrête sur les fronts montants du signal
50/60Hz, ce procédé ressemble bien à celui adopté par les
périodemètres, qu'on préfère au fréquencemètre quand il s'agit de
mesurer avec précision des signaux dont la fréquence est faible. Le
temps qui s'est écoulé entre deux impulsions start/stop
est converti en fréquence et est comparé à des valeurs prédéfinies
qui correspondent aux "seuils" suivants :
Pour 50 Hz (broche RA5 du PIC à 0, interrupteur SW1 fermé) :
- Led_Minus3 := (iFreq < 48.75)
- Led_Minus2 := (iFreq > 48.75) and (iFreq <= 49.25)
- Led_Minus1 := (iFreq > 49.25) and (iFreq <= 49.75)
- Led_Center := (iFreq > 49.75) and (iFreq <= 50.25)
- Led_Plus1 := (iFreq > 50.25) and (iFreq <= 50.75)
- Led_Plus2 := (iFreq > 50.75) and (iFreq <= 51.25)
- Led_Plus3 := (iFreq > 51.25)
Pour 60 Hz (broche RA5 du PIC à 1, interrupteur SW1 ouvert) :
- Led_Minus3 := (iFreq < 58.75)
- Led_Minus2 := (iFreq > 58.75) and (iFreq <= 59.25)
- Led_Minus1 := (iFreq > 59.25) and (iFreq <= 59.75)
- Led_Center := (iFreq > 59.75) and (iFreq <= 60.25)
- Led_Plus1 := (iFreq > 60.25) and (iFreq <= 60.75)
- Led_Plus2 := (iFreq > 60.75) and (iFreq <= 61.25)
- Led_Plus3 := (iFreq > 61.25)
Une compensation est ajoutée dans la routine de mesure pour tenir compte du temps de traitement et de mesure, qui ici dure 8 us.
Fonctions annexes
Les boutons-poussoirs SW2 à SW4 permettent d'afficher et d'effacer les valeurs min et max mémorisées :
SW2 : affiche la valeur min de fréquence détectée depuis la dernière RAZ.
SW3 : affiche la valeur max de fréquence détectée depuis la dernière RAZ.
SW4 : efface les valeurs min et max de fréquence détectées depuis la dernière RAZ.
Le cavalier (jumper) JP1 permet de spécifier si les mesures doivent être ou non moyennées :
JP1 retiré (RB1 = 1) : moyennage effectué en glissant sur les trois dernières mesures
JP1 en place (RB1 = 0) : moyennage désactivé
Sortie Tx ?
Ah,
vous l'avez remarquée... Cette sortie délivre un message ASCII (texte)
en mode série (9600 bauds, 8 bits données, 1 bit stop) qui n'est rien
d'autre que la valeur mesurée entre deux impulsions, en microsecondes.
Par exemple si la dernière mesure est de 50 Hz, un message "20000"+#13
est envoyé. Le temps pris pour envoyer ce message ne perturbe pas le
compteur, qui s'incrémente en arrière-plan. A noter que la valeur du
compteur n'est pas transmise en absence de signal à l'entrée, car ce
sont les fronts montants du signal d'entrée qui provoquent l'envoi des
données.
Logiciel du PIC
Fichier binaire compilé *.hex à flasher dans le PIC disponible dans l'archive zip
suivante. Développé et compilé avec MikroPascal V6.x.
Indicateur fréquence 001 - 16F628A - (10/08/2014)
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
10/08/2014
- Première mise à disposition.