Générateur BF à base d'XR2206
From Eric
Contents |
Objectifs
Réaliser un générateur BF à l'aide du merveilleux petit XR2206-qui-fait-tout.
Ce montage est dans la lignée du générateur de fonctions à base d'EPROM, du générateur BF à PLL, à base de PIC 16F628A et du Générateur de fréquence à base de DDS AD9850. Un sujet inépuisable...
Réalisation
Le schéma est donné ci-dessous. C'est une très légère adaptation de la note d'application TAN-005 d'Exar. J'y ai simplement rajouté un ampli op de puissance et un affichage numérique de la fréquence...
Voici la carte une fois achevée, sans et avec la face avant.
La génération de fréquence à base de XR2206
Pour l'essentiel, le montage reprend celui donné par EXAR dans sa note d'application (voir ci-après). Je n'y ai apporté que de mineures modifications, indiquées en rouge sur la figure.
L'alimentation est réalisée par un transformateur 220V/9V, un couple 7806/7906 et leurs capacités de lissage.
L'affichage de la fréquence
L'XR2206 génère un signal rectangulaire de période égale à celle de la sinusoïde sur sa broche 11. Ce signal est en collecteur ouvert (porté à VSS lorsqu'il est actif et en l'air sinon). Dans notre montage, ce signal est polarisé à +5V via une résistance de 10K. On utilise une diode et une résistance supplémentaire avant d'attaquer le PIC16F628, de sorte que le signal varie alors entre OV et VDD-0.6V, environ. Le schéma est donné ci-après.
Le signal rectangulaire issu du XR2206 est connecté à la broche T1CK (clock timer 1). Ainsi, le compteur du timer n°1 est incrémenté à chaque front montant du signal, donc à chaque nouvelle période du signal de sortie sinusoïdal ou triangulaire.
Pour mesurer la fréquence, plusieurs solutions sont envisageables :
- On peut compter le nombre d'impulsions pendant une durée fixée par un timer ou par par une simple boucle.
- On peut appliquer une règle de trois entre le nombre d'impulsions issues du signal inconnu et le nombre d'impulsion d'un signal de référence. Le signal de référence peut être fournie par une horloge externe ou, plus simplement (et de façon moins précise) correspondre simplement à la valeur d'un compteur incrémenté par un instruction du microcontroleur.
La seconde solution est la plus simple à mettre en oeuvre lorsque la plage de fréquence est très large (dans notre cas, entre 0Hz et 1 MHz environ).
Soit
- Cref le compteur incrémenté à chque itération de la boucle, de fréquence Fref,
- Cinc le compteur incrémenté à chaque période du signal inconnu, de fréquence Finc
A chaque itération de la boucle, l'approximation de la fréquence Finc est Finc # Fref * Cinc / Cref. Il faut naturellement être vigilant avec les débordements du compteur du timer Cinc et de la variable contenant Cref.
Dans le cas du PIC16F628, le timer est sur 16 bits, l'overflow est donc très rapide pour Finc = 1Mhz. L'idée est d'adapter la fréquence de référence à la fréquence du signal.
On commence par une durée de boucle compatible d'un signal à 1Mhz (c'est-à-dire que le compteur Cinc ne dépasse pas une valeur de 50000 (par exemple) entre deux tours de boucle, puis on allonge la durée de la boucle jusqu'à ce que l'erreur relative devienne inférieure à un seuil fixé.
Conclusions et leçons
Inutile d'acheter ce que l'on peut très facilement faire soi-même...