PÉRIODEMÈTRE avec le TIMER1.

La mesure des Périodes avec l’ATmega328 :

Glups, mais on prend les mêmes et on recommence ma parole ! En réalité, nous allons retourner la « chaussette » informatique ! Lorsque nous avons expérimenté le programme de démonstration, P11_Frequencemetre_sur_USB_avec_formatage.ino par exemple, une alerte nous invitait à passer en périodemètre dès que la fréquence descendait en dessous de 1000 Hz. On est en droit de se demander pourquoi le programme insiste aussi lourdement. La réponse réside dans un souci maniaque de vouloir à tout prix la plus grande précision possible. Analysons le problème :
Fréquence / Période calculée :
10.000 Hz / 100μS > La fréquence présente plus de chiffres significatifs que la période.
1.000 Hz / 1000μS > Fréquence et période de précisions similaires. (Quatre chiffres dans les deux cas.)
100 Hz / 10000μS > La période présente plus de chiffres significatifs que la fréquence.

Mesure de Période avec affichage formaté.

Persistant à employer le compteur rapide avec la prise en compte des débordements, nous allons « inverser » le processus. Autrement dit, on va effectuer la mesure de la Période et l’on en déduira par calcul la valeur de la fréquence. Globalement la structure du programme P12_Periodemetre_sur_USB_avec_formatage.ino s’avère pratiquement identique à celle développée dans le démonstrateur P11_Frequencemetre_sur_USB_avec_formatage.ino, autant la « copier », puis en adapter quelques séquences. On va élaborer ce croquis directement pourvu d’un affichage formaté. C’est d’autant plus raisonnable que pour le logiciel définitif la procédure de présentation des mesures ne sera écrite qu’une seule fois et utilisée à profusion. C’est… du recyclable !

Fig0Page29

Que peut bien signifier « partir d’une condition et y revenir » ?
Comme montré sur la Fig.1, un signal périodique peut évoluer de façon quelconque. Mais régulièrement la trame recommence. C’est la définition intrinsèque les phénomènes périodiques.

Fig 1

Sur la Fig.1 nous avons un signal électrique complexe. Partir d’une situation initiale et attendre qu’elle ne se reproduise serait très complexe informatiquement. Nous allons limiter nos exigences à des signaux pseudo sinusoïdaux (Avec pour ces derniers une précision moindre.) et surtout des signaux « rectangulaires ». Cette restriction n’est pas pénalisante, car dans le monde des microprocesseurs ce sont les formes électriques de très loin les plus rencontrées. Dans ces conditions, sélectionner une condition initiale, puis être capable de trouver la suivante revient à surveiller à notre choix un front montant ou un front descendant. Par exemple sur la Fig.2 on a choisi le front descendant. La tension de seuil qui permet de surveiller la transition négative est repérée par des triangles bleus sur ce dessin.

Fig 2

Cette tension résulte d’une conversion analogique vers numérique, et nous savons que si l’on ne fait pas du lissage, les mesures sont « floutées » par du bruit électrique. De ce fait, comme le programme que nous utilisons travaille avec une entrée binaire, dans la mesure où le signal ne présente pas des transitions « verticales » il faut s’attendre à du scintillement. C’est à dire que les mesures successives seront relativement instables. Pour éviter une trop importante fluctuation de l’affichage, l’évaluation des périodes est effectuée en réalité par une séquence de dix mesures consécutives dont on fait la moyenne. (Lissage rudimentaire.)

Un caractère « carré » n’est pas forcément mauvais.

L’exemple de signal de type TTL représenté sur la Fig.3 est bien plus significatif de la famille des signaux que l’on rencontre quand on chemine dans le monde des micro automatismes.
On peut déjà citer la PWM que génère P12_Periodemetre_sur_USB_avec_formatage.ino en tâche de fond et que l’on pourra injecter en D5 pour vérifier le comportement du programme. Dans ce cas de figure, ce sont les fronts montants qui sont surveillés et représentés par les triangles rouges. Il serait du reste tout à fait équivalent de réaliser les mesures en prenant en compte les fronts descendants.

(Comme montré en bleu.)

Fig3Page30

Le résultat serait strictement le même. Quand le front est surveillé par une entrée binaire, les fluctuations dans les mesures sont bien moindres lorsque le signal en épreuve présente des transitions courtes. Ceci étant précisé, la mesure des périodes ainsi que celles des impulsions sera bien moins « calme » que celle des fréquences quelle que soit la stabilité des signaux sur D5.

Fig4Page30

Principe du mesurage des PÉRIODES.

L’organigramme de la Fig.4 montre dans le détail comment on procède pour effectuer la mesure d’une période. En (1) le TIMER1 est bloqué, on peut le mettre à zéro en vue d’effectuer une mesure. En (2) on se place en attente de la transition montante initiale. Cette boucle d’attente peut se produire à un moment quelconque lorsque le signal est à « 1 » ou à « 0 » : Peu importe. En (3) le passage à l’état « 1 » annonce que la transition montante s’est produite, donc immédiatement en (4) le TIMER1 est configuré en chronomètre. Il « cavale » à sa cadence maximale possible, c’est à dire à la fréquence de l’horloge d’Arduino qui frétille allègrement à 16 MHz. En (5) on anticipe à nouveau l’arrivée du prochain front montant qui marquera la fin de la période analysée. Enfin en (6) la deuxième transition montante est détectée. Rapidement en (7) on bloque TIMER1. À partir d’ici la mesure est complète, et l’on n’est plus dans l’urgence pour extraire la grandeur de la PERIODE qui sera issue de la valeur résiduelle de TIMER1 et de Nb_IRQ. On divise par 16 pour avoir la période exprimée en μS alors que pour obtenir la meilleure définition possible on a laissé le TIMER1 galoper à 16 MHz, c’est à dire 16 fois « trop rapidement ». Concrètement, pour diminuer par dix les fluctuations de mesures, tout ce qui se trouve encadré en vert et grisé est effectué dix fois et les valeurs des mesures totalisées. Il suffit ensuite de diviser par dix pour en faire la moyenne. On retrouve la technique de lissage déjà utilisée lors des CAN. Quand nous mesurions des fréquences, il suffisait de libérer TIMER1 pendant rigoureusement une seconde. Cette durée était calibrée à la μS près. Pour mesurer des périodes, Passer de (4) à (5), et de (6) à (7) n’est pas instantané. Par ailleurs, même si tester l’état d’une entrée binaire ne prend que quelques cycles par le microcontrôleur, ces instructions très rapides consomment quelques microsecondes. Il est impossible à l’avance de savoir combien, donc impossible de calibrer à 1μS. Mesurer des périodes sera toujours plus fluctuant que mesurer des fréquences.

>>> Page suivante.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *