PRINCIPE

Synoptique

C’est une structure de compteur nommée « réciproque » dans la littérature (voir références). Cette structure effectue toujours une mesure de N périodes du signal à l’entrée, puis selon le cas, on calculera la fréquence ou la période afin de garantir une très bonne précision.

 

Chaque signal Fq et Fx (ou Fx/prediv) alimente un compteur après avoir été autorisé par une porte. On peut faire les mesures avec les deux signaux Fx et Fq non corrélés, ni rephasés, la mesure est appelée « asynchrone ».

 

 

La porte est armée par le signal « Enable » et s’ouvre sur le premier front descendant de Fx. Elle se fermera sur le premier front descendant suivant la disparition du signal « enable ».

 

 

A la fin de la mesure, le compteur Nx contient le nombre de périodes du signal d'entrée qui correspond à la durée de la porte.

Le compteur Nq contient très exactement un nombre = Fq*Nx/Fx, et on pourra calculer Fx = Fq * Nx/Nq

et c'est là où on voit tout le potentiel de cette méthode, car la durée de la porte n'intervient plus directement.

Pour des signaux de fréquence faible, Nx sera assez petit, voire égal à 1, mais Nq sera énorme, et l'opération gardera sa précision.

Pour des signaux de fréquence élevée, Nx va augmenter et devenir très fort (1000 pour un signal de 1000Hz avec une porte de 1sec), et l'opération gardera encore toute sa précision.

 

Une troisième compteur « N3 » est ajouté pour permettre la mesure de phase, de rapport cyclique ou de durée d’impulsion. Il totalise une fréquence Fq seulement lorsque le signal Fx est à 1 (durée T+x).

 

On peut aussi rephaser Fx sur Fq, ce qui permet de ne pas avoir d’erreur technologique (la fameuse erreur +/-1) sur les compteurs, dans ce cas on est en mode « synchrone ».

 

Principe détaillé des calculs

Une fois le cycle accompli,

- le compteur Nq contient Tgate * Fq . SI Nq déborde, la fréquence Fx est trop basse.

- le compteur Nx contient Tgate * Fx, nombre entier de périodes Fx . Si Nx déborde, la durée de porte est trop gande.

- le compteur N3 contient Nx * Fq * T+x . Si N3 déborde, la durée de porte est trop gande.

 

On peut  calculer :

- Frequence Fx = Prediv  * Nx * Fq / Nq

- Période Px = Nq / ( Prediv * Nx * Fq )

- Impulsion posistive T+x = N3 / ( Prediv * Nx * Fq )

- Rapport cyclique RCx = 100 * N3 / NQ

- Phase Phx = 360 * N3 / NQ

Circuits d’entrée

 

 

On prévoit 4 canaux d’entrée.


Les entrées A et B sont analogiques, avec un trigger de schmitt réglable en seuil.

 

L’entrée C est logique avec des seuils TTL.

 

La dernière entrée est une VHF/UHF qui alimente directement un prédiviseur.

 

En interne, on fabrique un signal A→B, avec un circuit  détecteur de phase comme celui utilisé dans les PLL. Ce signal permettra de mesurer la phase entre A et B, mais aussi l’intervalle de temps entre A et B.

 

 

 

 

Réferences

  1. Fundamentals of the Electronic Counters, HP AN 200, HP 5965-7660E
  2. Understanding Frequency Counter Specifications, HP AN 200-4, HP 5965-7664E

MODES

MODE 1 : Mesure de fréquence/période asynchrone

Dans ce premier cas, les signaux Fx et Fq ne sont pas corrélés, et on n’utilise pas le compteur N3. La mesure n’utilise que Nx et Nq.

 

Algorithme

  1. Configuration, reset
  2. Enable = 1, start timer
  3. Attente gate = 1
  4. Attente timer = Tgate
  5. Enable = 0
  6. Attente gate = 0
  7. Lecture compteur
  8. Calcule
    1. K = Prediv  * Nx * Fq
    2. Cherche l’échelle « scale »
    3. Détermine un multiplicateur pour la fréquence « MultF », et un multiplicateur pour la période « MultP »
    4. Calcule K * MultF ( = MultF * Prediv  * Nx * Fq )
    5. Divise par Nq et on obtient la fréquence Fx multiplée par MultF = MultF * Fx = MultF * Prediv  * Nx * Fq / Nq
    6. Calcule Nq * MultP
    7. Divise par par K et on obtient la période Px multiplée par MultP  = MultP * Px = MultP * Nq / (Prediv  * Nx * Fq )
  9. Affiche Fx et Px simultanément

 

 


MODES 2&3 : Mesures synchrones : rapport cyclique, phase, impulsion

Dans ce deuxième mode, on utilise un compteur N3 qui totalise une fréquence Fq seulement  lorsque Fx=1, cela permet d’avoir accès à des informations de rapport  cyclique, phase ou impulsion.

 

 

 

Afin de minimiser l’erreur dûe à l’asynchronisme entre Fx et Fq, les signaux Fx est rephasé par une bascule pilotée par Fq.

Sur l’exemple, ci contre, en supposant que Fq=1 on applique les formules de base :

En asynchrone

En synchrone

Donc globalement, les mesures synchrones sont plus précises, car on échange une précision de +/-1 sur Nq ou N3, par un erreur de 1 période de Fq sur la mesure de pulse ou de période.

 


Algorithme

  1. Configuration, reset
  2. Enable = 1, start timer
  3. Attente gate = 1
  4. Attente timer = Tgate
  5. Enable = 0
  6. Attente gate = 0
  7. Lecture compteur
  8. Calcule
    1. K = Prediv  * Nx * Fq
    2. Cherche l’échelle « scale »
    3. Détermine un multiplicateur pour la fréquence « MultF », et un multiplicateur pour la période « MultP »
    4. Calcule K * MultF ( = MultF * Prediv  * Nx * Fq )
    5. Divise par Nq et on obtient la fréquence Fx multiplée par MultF = MultF * Fx = MultF * Prediv  * Nx * Fq / Nq
    6. Calcule Nq * MultP
    7. Divise par par K et on obtient la période Px multiplée par MultP  = MultP * Px = MultP * Nq / (Prediv  * Nx * Fq )
    8. Calcule duty_cycle = 1000000 * N3/Nq
    9. Calcule phase = 3600000 * N3/Nq
    10. Calcule pulse=(MultP * N3 )/ (Nx * Fq)
  9. Affiche Fx, duty_cycle ou Fx,phase ou Px,pulse

MODE 4 : Mesures d’intervalle de temps

Dans ce troisème mode, on fait une mesure de temps basée sur un comptage dans le compteur N3, c’est à dire autorisé par le signal Fx (« Gated »).

 

 

Normallement, à la fin de la mesure, Nx doit être égal = 1.

La durée du pulse vaut  N3 / (Nx * Fq)

Ce mode s’adresse en priorité à des signaux apériodiques.

Il n’est pas nécessaire de calculer une échelle, ou des multiplicateurs.

 

Algorithme

  1. Configuration, reset
  2. Enable = 1, start timer
  3. Attente gate = 1 et timer < time_out
  4. Lecture compteur
  5. Calcule
    1. Calcule N3 * 10 000 000 000
    2. Divise par ( Nx * Fq )
  6. Affiche Nx et résultat sous format 11.8

 

MODE 5: Totalisateur

Dans ce cinquième mode, l’instrument totalise les impulsions et affiche la valeur du compteur,, jusqu’à ce qu’une touche soit activée.

 


MODES & TACHES

Mode

   

>--->--->---> Suite des tâches>--->--->--->

0

Asynchrone

Frequence + Période

Reset counters, FF

Set enable

Wait Gate=1

Wait Tgate

Reset Enable

Wait gate=0

Post increment

Compute F

Compute P

1

Synchrone

Fréquence + rapport cyclique

Reset counters, FF

Set enable

Wait Gate=1

Wait Tgate

Reset Enable

Wait gate=0

Post increment

Compute F

Compute Dcycle

2

Synchrone

Fréquence + phase

Reset counters, FF

Set enable

Wait Gate=1

Wait Tgate

Reset Enable

Wait gate=0

Post increment

Compute F

Compute Phase

3

Synchrone

Période + pulse

Reset counters, FF

Set enable

Wait Gate=1

Wait Tgate

Reset Enable

Wait gate=0

Post increment

Compute P

Compute Pulse

4

Gated

Intervalle de temps

Reset counters, FF

Set enable

Wait Gate=1

Wait Tgate

Reset Enable

Wait gate=0

Post increment

Compute Time

 

5

 

Compteur

             

 


 


REALISATION - logique

L’implantation de ce genre de processus dans un microcontrolleur est simple, il suffit de trouver une astuce pour disposer de 3 compteurs de grande largeur.

Un micro-controlleur de la série 80C32 offre 3 compteurs 16 bits, accessibles de l’extérieur.

 

 

Il suffit de les faire précéder d’un diviseur 8 bits, et de les faire suivre par un compteur logiciel 8 bits pour disposer de 3 compteurs 32 bits.

On utilise la technique de post-incrément qui consiste à avoir un diviseur externe, précédent un compteur interne. A la fin de la mesure, on applique à l’entrée du diviseur externe une série d’impulsion jusqu’à le faire déborder. Il suffit de compter le nombre d’impulsion appliquée pour en déduite l’état orginal.

 

Exemple de code :

 

   

reset NQLL

   
   

reset NXLL

 

 

   

reset N3

     

loop:

1

A=TF2||TF1||TF0

 
 

1

A=not A

     
 

2

pulse EXTINC

   
 

1

dec N

     
 

1

A=A or TF2||TF1||TF0

 

2

si A (T0) eq 0 alors T0 vient de tomber

     

NQLL = N

 
 

2

si A (T1) eq 0 alors T1 vient de tomber

     

NXLL = N

 
 

2

si A (T2) eq 0 alors T2 vient de tomber

     

N3LL = N

   
 

2

si N>0 goto loop

 

Avec ce code, la durée maximale du post incrément = 256*14 = 3584 uS


Dimensionnement

En utilisant de la technologie HCMOS, on peut considérer une fréquence maximale de l’ordre de 30MHz. On sélectionne un oscillateur standard Fx=24MHz.

La largeur des compteurs sera préférentiellement multiple de 8 bits. La largeur de Nq conditionne la fréquence Fx minimale, car dans ce cas, la durée de la porte va faire exactement une période Fx donc Nqmax = Fq/Fxmin. Avec 24MHz et 16bits, Fxmin=366 Hz trop fort, avec 24 bits Fxmin=1,4 Hz trop fort, avec 32 bits Fxmin=5.6 mHz acceptable. On choisit une largeur de 32 bits pour Nq.

 

L’analyse du bilan d’erreur va déterminer le nombre de digits

 

L’erreur s’exprime : dFx/Fx = dFq/Fq + dNx/Nx + dNq/Nq

Min

Max

Précision sur Fq

Un oscillateur à Quartz ordinaire va présenter une précision de l’ordre de 10-5, on peut améliorer d’un facteur 10 avec une conception plus fine. Au delà, il faudra utiliser une régulation ou une compensation de température.

10-6

10-5

Comptage Nx

Par construction, Tgate est toujours un multiple parfait de 1/Fx. Donc il n’y a pas d’erreur sur Nx.

0

0

Comptage Nq

Les signaux Fx et Fq étant asynchrones, le nombre Nq est entaché d’une erreur de +/- 1.

1/Nqmax

1/Nq

Affichage

L’erreur d’arrondi à l’affichage est d’une ½ unité, soit 0.5/Fx.

Si on a une gamme automatique (de 1000 à 9999 pour 4 digits), on a toujours au moins Nda-1 digits donc l’erreur maximale est au minimum de 0.5 10-Nda et au maximum de 5 10-Nda .

0.5 10-Nda

5 10-Nda

Calcul

On peut se débrouiller pour que la précision de calcul et donc le nombre de digits calculés soit strictement supérieurs au nombre de digits affichés Nda. Moyennant cette condition, ce poste d’erreur devient négligeable sur le bilan global.

epsilon

epsilon

 

 

Tgate

1/Nq en ppm

Nda équivalent

0,0625

0,667

6,2

0,125

0,333

6,5

0,25

0,167

6,8

0,5

0,083

7,1

1

0,042

7,4

2

0,021

7,7

4

0,010

8,0

8

0,005

8,3

16

0,003

8,6

32

0,001

8,9

64

0,001

9,2

128

0,000

9,5

La largeur de porte minimale, conditionne la valeur de Nq minimale, et on peut exprimer cette précision de comptage 1/Nq en nombre de digits équivalent. On constate qu’en dessous de 0,5 seconde de porte, la précision 1/Nq passe en dessous de celle d’un affichage de 7 digits.

En considérant une durée minimale de porte de 0,250 seconde, la valeur minimale de Nq est de 6000000, soit une erreur de 0.167 ppm, du même ordre que celle amené par un affichage à 7 digits.

On voit bien qu’on a interet à toujours avoir une très grande valeur de Nq, pour minimiser le terme 1/Nq, au moins qu’il soit du même ordre que dFq/Fq, donc avec une valeur minimale de Nq toujours supérieure à 106 par exemple.

Moyennant cette hypothèse et celle relative aux nombre de digits calculés, le seul poste d’erreur est relatif à la précision d’affichage. 6 digits vont amener une erreur maximale de 5 ppm, comparable à celle d’un quartz dans un oscillateur standard. On choisit 7 digits (erreur max de ½ ppm) pour que cette précision soit bien en dessous de celle du quartz.


Gammes

Le compteur peut mesurer une fréquence aussi basse que 6mHz, et moyennant l’usage d’un prédiviseur, on peut envisager de monter jusqu’à plusieurs GigaHertz. Dans ces conditions on identifie 13 gammes.

En dessous de 1 Hz, on va privilégier le traitement sur la période, au dessus ce sera la fréquence. En fait on constate dans le tableau ci-dessous qu’une zone d’égale précision entre fréquence et période (7 digits affichés) existe sur les échelles 0 et 1, c’est à dire entre 0.1 Hz et 10 Hz.

 

Fréquence

Période

Echelle

Gamme

Mult.

Format

Unité

Gamme

Mult.

Format

Unité

-2

1.000 0 mHz : 9.999 9 mHz

109

7.4

mHz

100.000 0  s : 999.999 9  s

106

7.4

s

-1

10.000 0 mHz : 99.999 9 mHz

109

7.4

mHz

10.000 00  s : 99.999 99  s

107

7.5

s

0

100.000 0 mHz : 999.999 9 mHz

109

7.4

mHz

1.000 000  s : 9.999 999  s

108

7.6

s

1

1.000 000  Hz : 9.999 999  Hz

108

7.6

Hz

100 000.0 us : 999 999.9 us

109

7.1

us

2

10.000 00  Hz : 99.999 99  Hz

107

7.5

Hz

10 000.0 us : 99 999.9 us

109

7.1

us

3

100.000 0  Hz : 999.999 9  Hz

106

7.4

Hz

1 000.0 us : 9 999.9 us

109

7.1

us

4

1 000.000  Hz : 9 999.999  Hz

105

7.3

Hz

100.0 us : 999.9 us

109

7.1

us

5

10 000.00  Hz : 99 999.99  Hz

104

7.2

Hz

10.0 us : 99.9 us

109

7.1

us

6

100 000.0  Hz : 999 999.9  Hz

103

7.1

Hz

1.0 us : 9.9 us

109

7.1

us

7

1 000 000  Hz : 9 999 999  Hz

102

7.0

Hz

0.1 us : 0.9 us

109

7.1

us

8

10.000 00 MHz : 99.999 99 MHz

10

7.5

MHz

0.0 us

109

7.1

us

9

100.000 0 MHz : 999.999 9 MHz

1

7.4

MHz

0.0 us

109

7.1

us

10

1 000.000 MHz : 9 999.999 MHz

0,1

7.3

MHz

0.0 us

109

7.1

us

 

 


 


MENUS

Le controle de l'appareil se fait via 4 touches (droite/gauche, bas/haut) et d'un afficheur LCD.

On se déplace dans des menus avec

 

1er menu, sélection du mode de fonctionnement :

MODE 0

asynchro

Freq+Per

MODE 1

synchrone

Freq+Dcycle

MODE 2

synchrone

Freq+Phase

MODE 3

synchrone

Per+Pulse

MODE 4

Time interval

MODE 5

counter

2ème menu, sélection de l'entrée :

Input A

Input B

Input C

Input A to B

Input VHF

3ème menu, sélection de la polarité :

Polarity +

A to B

Polarity -

B to A

4ème menu, sélection de la durée de mesure :

Gate 0.1s

Gate 0.25s

Gate 0.5s

Gate 1s

...

Gate 128s

4ème menu, sélection du type d'armement :

Arming auto

Arming auto

 

 

Type d'affichage selon le mode, on essaye d'utiliser au mieux les 2 fois 16 caracteres disponibles sur l'afficheur LCD :

...123.456 7 Hz

...123.456 7 µs

...123.456 7 Hz

99.999 %

...123.456 7 Hz

359.999 °

...123.456 7 µs

...123.456 7 µs

NX=1234

123.456 789 01 s

 

1 234 567 890

 

 

 


REALISATION - schémas

L'appareil dispose de 4 entrées :

Les signaux A, B, C et HF alimentent aussi des LED pour montrer l'activité du signal en face avant.

 

 

 

La partie logique est directement issue du schéma bloc du compteur.

Un multiplexeur HC151 en entrée sélectionne les signaux à mesurer. Dans l'ordre : C, B, A, A>B, HF. Des canaux libres sont possibles et la fréquence d'horloge Fq est cablée sur la dernière entrée pour un autotest. Ce multiplexeur délibre gratuitement le signal et son complément.

 

Le deuxième multiplexeur HC151 sélectionne le signal ou son complément, ainsi que le signal resynchronisé ou son complément.

 

Le troisième multiplexeur HC153 est le multiplexeur de mesure qui va aiguiller Fq, Fx ou une clock du microcontrolleur vers les 3 compteurs Nq, Nx et N3, chacun réalisés par 1 compteur 8 bits HC393.

 

L'horloge est réalisé par un générateur autonome 24MHz.

 

Un registre série CMOS 4094 reçoit les informations du CPU sous forme série pour controller la carte.

3 leds signalent l'activité : une pour le signal AtoB, une pour signaler que l'armement est actif, la dernière pour indique une mesure en cours (présence de Fq sur l'entrée du compteur Nq).

 

 

 

La sélection des modes est fait comme suit :

Mode
signal TI
signal ASYN
0 asynchrone, mesure Frequence + Période
0
1
1 synchrone, mesure Fréquence + Rapport cyclique
0
0
2 synchrone, mesure Fréquence + Phase
0
0
3 synchrone, mesure Période + Impulsion
0
0
4 intervalle de temps
1
1

si Pol=0, mesure d'une impulsion positive, si Pol=1, mesure d'une impulsion négative

 

Le CPU est standard, basé sur un 80C32

 


REALISATION - face avant et photo