GÉNÉRATEUR basses fréquences.

La génération de signaux « carrés » périodiques avec l’ATmega328 :

Jusqu’à cette page, toutes les applications étudiées étaient relatives à du mesurage. Autrement dit, on « injectait » un signal quelconque dans notre système « électronicoinformatique » et l’on déduisait des caractéristiques relatives à ces derniers. Nous ne possédions qu’un multimètre très polyvalent. L’un des domaines dans lesquels les microcontrôleurs sont particulièrement à l’aise, c’est celui de la génération de créneaux binaires calibrés dans le temps. Avec ses sorties PWM et ses divers TIMERS, l’ATmega328 est tout particulièrement adapté à la génération de signaux périodiques, et l’on ne va pas se priver de cette faculté. Le projet va donc pouvoir générer une foule de signaux plus utiles les uns que les autres. Du coup, le multimètre polyvalent est génétiquement modifié pour devenir un vrai petit laboratoire très complet pour électronicien informaticien.

Un générateur B.F. de signaux carrés niveaux TTL.

Quand on annonce « BASSES FRÉQUENCES », il faut relativiser. Autrefois, il y a très longtemps dans une autre galaxie, l’électronique utilisait des tubes cathodiques que l’on nommait des lampes car un filament interne chauffait une cathode. Ils étaient légèrement rougeoyants.
Haaaaa… quelle époque fantastique. Par B.F. on faisait référence aux vibrations audibles par un humain. Quand un tel générateur commençait à atteindre les 20 kHz, nous étions déjà largement dans le domaine des ultrasons. Les tubes cathodiques ont été chassés par les transistors, qui ont été balayés par les circuits intégrés qui à leur tour disparaissent au profit des microcontrôleurs qui à leur tour seront définitivement supplantés par… Chépas !

Ce que l’on peut affirmer, c’est que dans cette évolution les électroniques sont devenues de plus en plus rapides. Les ondes courtes ont laissé leur place aux VHF, puis UHF et l’on a glissé du mégahertz au gigahertz et plus si affinité. La notion de signal B.F. a subi une inflation analogue, ce sigle empiète largement dans le domaine des ultrasons. Le petit générateur émulé par le démonstrateur P14_Generation_SIGNAL_sur_D12.ino va couvrir entre 31 Hz et environ 50 kHz en quatre gammes pour étaler à convenance les plages d’ajustement.

Matériellement on va devoir investir, car il faudra sur notre mini laboratoire avoir un quelconque bouton pour ajuster la fréquence générée en fonction des besoins. Le changement de gamme utilisera les deux B.P. mais pour la variation linéaire de fréquence rien ne vaut un « truc qui tourne ». On va donc investir dans un potentiomètre et un beau bouton à fixer sur son axe. Ce choix reste raisonnable, car ajouter ce composant n’augmentera que faiblement la taille de notre mini laboratoire, et ce d’autant plus que le bouton de commande n’a pas besoin d’avoir un disque gradué. La valeur de la fréquence sera indiquée soit sur l’afficheur LCD, soit sur la ligne série USB.
Comme un générateur B.F. délivre des signaux audibles, on peut aussi casser la tirelire et se financer un BUZZER piézoélectrique passif. C’est un composant peu onéreux, et pouvoir entendre le son généré est souvent très utiles … sans compter que dans la foulée il va permettre d’ajouter au menu des fonctions un TESTEUR DE CONTINUITÉ. C’est décidé, on peut passer au schéma électrique. La Fig.1 montre que le potentiomètre P branché en interne fournit sur une borne V une tension comprise entre 0 et +5Vcc. Si l’on ponte V avec l’entrée E du voltmètre, on pourra déjà réaliser un « auto test » de bon fonctionnement.

Fig 1

Mais surtout, ce potentiomètre devient un bouton rotatif de commande pour plusieurs fonctions de notre projet. Le signal sera généré par le microcontrôleur sur la sortie binaire D12. Comme il n’est jamais exclus de ponter par erreur la sortie S à la masse, la résistance R2 de 1kΩ pare tout incident.
Quand à R1 le courant qu’elle limite à 1 mA maximum met à l’abri P des fausses manipulations toujours possibles. Le potentiomètre P est choisi avec une valeur faible de 4,7kΩ pour présenter une impédance réduite et ainsi minimiser le « bruit » sur la tension continue qu’il fournit en V. L’antiparasitage logiciel se chargera d’éliminer totalement les parasites collectés par la liaison de V vers E procurant une très bonne stabilité à la fréquence du signal généré. Le potentiomètre P est constamment branché sur le +5V interne de notre instrument polyvalent.
Mais il consomme moins de 2 mA et dissipe chichement 6 mW. Cette puissance reste dérisoire, rien à craindre pour l’alimentation régulée ni pour le potentiomètre P.

Générer une tonalité avec le langage C propre à Arduino.

Produire un signal « carré » (Le rapport cyclique est exactement de 0.5) précis et stable en fréquence n’a rien d’élémentaire si on désire pouvoir en changer à convenance la fréquence. La méthode consiste, vous l’avez deviné, à calculer la Période en fonction de la fréquence désirée par l’utilisateur, puis de mettre à contribution un TIMER cadencé par l’horloge interne du microcontrôleur. En parallèle à la tâche de fond qui fait alterner D12 entre « 0 » et « 1 » à une cadence très précise, il faut surveiller les boutons poussoir sur A0. Indépendamment de ces missions, il importe également de surveiller la tension en A1 par l’entremise du Convertisseur Analogique Numérique. Visiblement l’ATmega328 ne va pas lambiner, quand à nous on va devoir encore solliciter un TIMER, les interruptions sur débordement et tout le tralala. ENCORE !
Bonne nouvelle, on va utiliser toutes ces ressources, mais à travers une instruction spécifique à l’environnement de développement d’Arduino qui fait tout le travail en une seule ligne de code.
Ouvrez P14_Generation_SIGNAL_sur_D12.ino dans lequel on utilise l’instruction : tone(Broche, Fréquence, Durée) ;
Cette ligne de code très facile à comprendre réalise un travail considérable. Elle conditionne l’ATmega328 de façon à ce qu’il génère sur une broche binaire déclarée en sortie nommée ici BBroche un signal périodique. Ce signal est généré en continu, (Des créneaux carrés compris entre 0 et +5V de rapport cyclique 0,5.) et présente une Fréquence précise calibrée à un hertz près. Fabuleux non ? On peut aussi ajouter le paramètre optionnel Durée qui précise en millisecondes la durée pendant laquelle la note sera délivrée. Pour faire du Morse ou un BIP sonore c’est très bien, mais dans notre application ce paramètre sera ignoré. Notez que l’instruction tone monopolise le TIMER2 qui devient indisponible. Pour le libérer, il suffit d’utiliser l’instruction notone(Broche) ; Pour comprendre le reste du programme, il suffit de savoir qu’une boucle mesure en permanence la tension analogique appliquée sur l’entrée A1. Le CAN délivre un entier compris entre 0 et 1023.
Les instructions de type map(NOMBRE, Min, MAX, A, B) ; effectuent la transposition des plages de valeurs de la variable NOMBRE allant de Min à MAX en une gamme allant de A à B.
Dans notre programme, par exemple QRG = map(Tension_lue, 11, 1005, 150, 2000) ; est une instruction qui lit le contenu de la variable Tension_lue issue de la conversion analogique numérique sur A1 qui varie en théorie entre 0 et 1023. Mais ici on a resserré les bornes pour obtenir au minimum la gamme annoncée dans les caractéristiques sur D12. Quand la tension injectée sur l’entrée E variera entre 0 et +5Vcc, l’instruction fournira un entier compris entre 150 et 2000. Il suffit alors de soumettre au compilateur l’instruction tone(D12,QRG) ; et la sortie génèrera une tonalité comprise entre 150 Hz et 2000 Hz en fonction de l’ajustement du potentiomètre P. Avec quatre instructions map on obtient avec une facilité déconcertante quatre gammes à notre convenance pour le générateur.

La génération de signaux ÉTALON avec l’ATmega328 :

Abusant des deux instructions décrites dans le chapitre précédent, nous pouvons créer très facilement des signaux de fréquence quelconque. Hors, très souvent ce sont des fréquences précises et « qui tombent juste » dont on a besoin. Dans ce cas on utilise le vocable Étalon de fréquence.
Si vous chargez et observez le programme P15_Generateur_ETALON.ino, vous allez constater que c’est une variante très proche du programme précédent. Au lieu de calculer une valeur entière à partir de la tension issue du potentiomètre, et d’en générer « la fréquence », on soumet directement à l’instruction tone la fréquence désirée. Dans notre démonstrateur on a limité à quatorze le nombre de valeurs possibles, mais vous pouvez en ajouter autant que vous voulez. Ces dernières sont échantillonnées globalement dans des séries de type 1, 2, 5. La dernière fréquence de 440 Hz est présente pour bien vous convaincre que tone est conçue pour faire de la musique. Du 440 Hz correspond au LA indice 3 bien connu des musiciens, c’est à dire la note que fait entendre un diapason mécanique « à fourche ».
Comme pour le générateur B.F. la sortie de cette fonction utilise notone qui libère le TIMER2.
C’est important car ce dernier participe à la génération PWM dont il est question plus avant.
REMARQUE : QRG signifie FREQUENCE dans le code Q toujours en vigueur dans la marine, en aviation etc.

>>> Page suivante.

Laisser un commentaire

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