mercredi 11 septembre 2019

XR2206 : le Générateur de Fonctions




XR2206 : le Générateur de Fonctions


Le XR2206 est un circuit intégré permettant de réaliser à moindre frais un générateur de fonctions (GBF pour les intimes).

1. Le XR2206


Le XR2206 de Exar est apparu à la fin des années 1970 et il est encore commercialisé de nos jours. On trouve même des kits chez les revendeurs chinois :

Dans cet article nous allons réaliser un générateur assez élaboré à partir de ce circuit, pourvu de toutes les commandes nécessaires pour en faire un véritable outil de tous les jours :
  • sortie sinus / triangle
  • sortie signal carré
  • réglage de fréquence + réglage fin
  • réglage amplitude + offset
  • fréquencemètre
Il est normalement capable de monter à 1MHz, mais il sera plus réaliste de compter sur 500KHz si l'on désire une distorsion raisonnable.

L'idée de départ vient de cet article :
http://www.vwlowen.co.uk/arduino/xr2206/XR2206-function-generator.htm


C'est un projet que j'ai légèrement remanié, en particulier l'alimentation, et je l'ai bien entendu redessiné sous KICAD.
Cela faisait quelques mois que les cartes étaient prêtes et testées. Il ne manquait plus que la partie mécanique à réaliser.

2. Le schéma

On pourrait se demander tout d'abord pourquoi s'imposer la réalisation d'un PCB maison étant donné qu'il existe des modules tout faits pour environ 4€. Voici quelques raisons :
  • ces kits possèdent rarement les réglages indispensables de distorsion et symétrie
  • le choix de la forme de signal et le réglage de la gamme de fréquence est généralement fait par des cavaliers
  • souvent ces modules sont équipés de circuits contrefaits (voir ici : https://www.youtube.com/watch?v=02XtneCHnDA).
Malgré tout, si l'on parvient à trouver un module de qualité, il est parfaitement possible de le monter dans un boîtier, de reporter les potentiomètres en façade et d'ajouter quelques commutateurs et un fréquencemètre pour le rendre plus convivial.

Celui-ci par exemple : https://rhelectronics.net/store/function-generator-xr2206-diy-kit-20hz-100khz.html

Revenons à nos moutons : le générateur de John Owen. Celui-ci possède pas mal d'avantages intéressants :
  • il est alimenté symétriquement en +/-12V ce qui l'autorise à délivrer un signal de +/-10V
  • il possède un amplificateur de sortie
  • il est pourvu également de réglages d'offset, symétrie, distorsion
  • deux réglages de fréquence sont utilisés : réglage grossier, réglage fin
  • la sortie signal carré passe par un comparateur rapide afin de générer un signal 5V propre
  • il est équipé d'un fréquencemètre
Sur le schéma d'origine, les composants de l'alimentation symétrique sont sur la même carte que le générateur. J'ai préféré un montage en deux cartes séparées. 
Cela permet en particulier de pouvoir utiliser une alimentation du commerce, deux modules à découpage par exemple.
Seul le régulateur 5V qui alimente le fréquencemètre et les comparateurs a été laissé sur la carte principale.

2.1. Le générateur


Le schéma n'est pas fondamentalement différent de l'original, mis à part l'ajout d'une gamme de fréquence 0.2Hz - 20Hz, et quelques découplages d'alimentation supplémentaires.

2.2. Le compteur

Le fréquencemètre d'origine est réalisé à l'aide d'un ATMEGA328 DIP et d'un module 8 digits MAX7219.

On peut directement l'utiliser tel quel, ou adopter celui que je propose, qui est basé sur une carte ARDUINO NANO, plus à la portée de l'amateur :


Attention le brochage du connecteur d'entrée est différent :
  • compteur original :
    • 1 : 5V
    • 2 : GND
    • 3 : compteur
  • compteur NANO
    • 1 : 5V
    • 2 : compteur
    • 3 : GND
Le code du fréquencemètre reste identique à l'original.

2.3. L'alimentation

L'alimentation par contre a été recalculée en fonction des consommations réelles sur chaque rail.
Le fréquencemètre à base d'ARDUINO NANO et l'afficheur 7 segments réclament pas mal d'énergie. Le module 8 digits MAX7219 possède 15 pas de réglage de luminosité et la consommation est proportionnelle à la luminosité :
  • 90mA avec une luminosité de 4/15
  • 250mA avec une luminosité de 15/15
Le filtrage du rail positif (1000µF) est largement insuffisant, surtout si l'on choisit une luminosité forte, et l'ondulation sera importante :
  • luminosité de 4/15 : ondulation de 1.5V
  • luminosité de 15/15 :  ondulation de 2.5V
L'ondulation ne serait pas assez forte pour gêner le régulateur LM7812 mais provoquerait un vieillissement prématuré du condensateur de filtrage.

Voici le nouveau schéma :


 
Une varistance 275V protège l'alimentation des surtensions. La résistance fusible de 47Ω est optionnelle si un porte-fusible est installé à l'arrière du boîtier.

3. Le matériel

Les cartes sont équipées de connecteurs pour que l'ensemble soit facilement démontable.
Les connecteurs petits signaux au pas de 2.54 sont du type DUPONT.
Les connecteurs de puissance (JST) peuvent être remplacés par n'importe quels connecteurs au pas de 3.96.

3.1. Le générateur

  • 1 XR2206
  • 1 TL082 
  • 1 LM293
  • 1 LM7805 
  • 1 résistance 100KΩ
  • 1 résistance 33KΩ
  • 3 résistance 1KΩ
  • 1 résistance 300Ω
  • 2 résistances 4.7KΩ
  • 1 résistance 10KΩ
  • 1 résistance 8.2KΩ
  • 1 résistance 1.5KΩ
  • 2 résistances 2.2KΩ
  • 1 résistance 47KΩ
  • 1 condensateur céramique 100pF
  • 1 condensateur polyester 1nF
  • 1 condensateur polyester 10nF
  • 1 condensateur polyester 100nF
  • 1 condensateur polyester 1µF
  • 1 condensateur polyester 10µF
  • 1 condensateur électrolytique 10µF 10V
  • 2 condensateurs électrolytique 10µF 16V
  • 1 condensateur électrolytique 10µF 25V 
  • 2 condensateurs électrolytique 2.2µF 16V 
  • 1 condensateur électrolytique 470µF 10V 
  • 1 condensateur électrolytique non polarisé 10µF 35V 
  • 3 condensateurs polyester 100nF
  • 2 condensateurs polyester 10nF 
  • 3 condensateurs polyester 330nF
  • 2 potentiomètres 47KΩ horizontal au pas de 5.08x10.16
  • 1 potentiomètre 10KΩ horizontal au pas de 5.08x10.16
  • 1 potentiomètre 47KΩ horizontal au pas de 5.08x10.16
  • 1 potentiomètre 10 tours Bourns 3296 1KΩ
  • 1 potentiomètre 10 tours Bourns 3296 22KΩ
  • 1 diode 1N4148
  • 1 dissipateur pour TO220 24x30x12
  • 3 potentiomètres 10KΩ
  • 1 potentiomètre 470KΩ
  • 1 commutateur rotatif 6 positions
  • 1 double inverseur
  • 1 inverseur
  • 2 connecteur mâles 2 broches pin-header au pas de 2.54 
  • 2 connecteur mâles 3 broches pin-header au pas de 2.54 
  • 1 connecteur mâle 3 broches pin-header au pas de 2.54
  • 1 connecteur JST-B3P-VH
  • 4 colonnettes plastique M2.5 ou M3 10mm

3.2. Le compteur

  • 1 ARDUINO NANO
  • 1 condensateur polyester 100nF
  • 1 module afficheur 7 segments MAX7219
  • 1 connecteur mâle 3 broches coudé pin-header au pas de 2.54
  • 1 connecteur femelle 5 broches pin-header au pas de 2.54
  • 1 connecteur mâle 5 broches pin-header au pas de 2.54 
  • 2 barrettes femelles 15 broches (support pour la NANO) 
  • 4 colonnettes plastique M2.5 ou M3 20mm
  • 4 colonnettes plastique M2.5 ou M3 10mm

 3.3. L'alimentation

  • 1 LM7812
  • 1 LM7912
  • 1 résistance fusible 47Ω  (optionnelle)
  • 1 varistance S10K275 
  • 1 pont de diodes KBP2005G
  • 1 condensateur électrolytique 4700µF 25V
  • 1 condensateur électrolytique 1000µF 25V
  • 2 condensateurs polyester 470nF
  • 2 condensateurs polyester 100nF
  • 2 condensateurs céramique 100pF
  • 2 connecteurs JST-B3P-VH
  • 1 dissipateur pour TO220 24x30x12
  • 1 dissipateur pour TO220 20x19x10
  • 4 colonnettes plastique M2.5 ou M3 10mm
  • 1 transformateur pour PCB
    • HAHN BV EI 481 1327 12-12V 10VA
    • ou
    • BREVE TUFVASSONS TEZ10/D230/12-12V 10VA
Si la luminosité de l'afficheur est réduite (jusqu'à 8/15) un autre transformateur peut être utilisé. Dans ce cas, on pourra également réduire le filtrage :
  • HAHN BV EI 422 1260 12-12V 6VA
  • ou
  • BREVE TUFVASSONS TEZ6/D230/12-12V 6VA
  • C3 : 2200µF 25V au lieu de 4700µF

3.4. Le boîtier

Le boîtier que j'ai choisi est un Galaxy GX287 (80x230x170).

Il faudra l'équiper de quelques composants :
  • 1 embase IEC 250V 
  • 1 cordon secteur
  • 1 porte fusible + 1 fusible 500mA (optionnel)
  • 2 embases BNC
  • 5 boutons ⌀20mm
Le porte fusible + son fusible 500mA sont optionnels si l'on préfère souder une résistance fusible sur l'alimentation (R2 : 47Ω).

Voici le câblage :
  • un câble 3 brins de 10cm 0.5mm² + 2 connecteurs JST-VHR-3N (câble d'alimentation 12-12V)
  • un câble 3 brins de 10cm 0.2mm² + 2 connecteurs femelles 3 broches pin-header au pas de 2.54 (câble du compteur)
  • un câble 2 brins de 40cm 0.5mm² + 1 connecteur JST-VHR-3N (alimentation 230V)
  • un câble 2 brins de 25cm + 1 connecteur femelle 2 broches pin-header au pas de 2.54 (câble de la LED de l'alimentation)
  • 30cm de câble blindé
Voici l'afficheur utilisé :
Pour pouvoir l'enficher sur la carte compteur ARDUINO NANO, étant donné la hauteur de la carte NANO + son support, il faut un connecteur 5 broches assez long (sandwich 20mm) :


Mais on peut également fixer la carte compteur sur le fond du boîtier.

4. La réalisation

Commencer par assembler l'alimentation, la raccorder au secteur et vérifier son voltage.

Assembler ensuite la carte du générateur.

Programmer la carte compteur à l'aide du sketch fourni et placer ensuite les colonnettes de 20mm, l'afficheur, puis les colonnettes de 10mm.
Le module assemblé ne permettra pas l'accès au connecteur USB de la NANO. Vu la hauteur du boîtier (80mm) je ne pouvais me permettre de décaler la carte NANO vers le bas.

Après avoir assemblé les cartes et les avoir raccordées entre elles, il faut effectuer quelques petits réglages.
Les potentiomètres à régler sont repérés en rouge :

Le PCB avec les potentiomètres en rouge
Mettre en marche le générateur et le laisser monter en température 15 minutes.
Brancher la sortie SINE/TRIANGLE sur un oscilloscope.

Placer le commutateur TRIANGLE/SINE sur SINE, régler l'amplitude au maximum. régler le bouton DC OFFSET à mi-course.

Ajuster RV2 pour obtenir un signal crête à crête de +/- 10V.

Placer le commutateur TRIANGLE/SINE sur TRIANGLE. Ajuster RV3 pour obtenir un signal crête à crête de +/- 10V.

Placer le commutateur sur TRIANGLE/SINE sur SINE. Ajuster RV1 afin de centrer la sinusoïde verticalement.

Ajuster RV6 et RV7 afin d'obtenir une sinusoïde symétrique et diminuer au maximum la distorsion.

Il faudra probablement procéder par itérations successives sur différentes fréquences pour obtenir les réglages optimums.

5. Photos


L'ensemble après câblage (la LED de l'alimentation n'est pas encore câblée).


Détail de la carte compteur. Les colonnettes de 10mm sont simplement collées contre la face avant.


Le générateur et l'alimentation symétrique empilés.

Et voici le résultat à l'oscilloscope :



6. Téléchargements

Pour télécharger le projet :
https://bitbucket.org/henri_bachetti/xr2206-function-generator.git

Cette page vous donne toutes les informations nécessaires :
https://riton-duino.blogspot.com/p/migration-sous-bitbucket.html

7. Bibliographie

L'XR2206 : https://www.sparkfun.com/datasheets/Kits/XR2206_104_020808.pdf

L'article de John Owen :
http://www.vwlowen.co.uk/arduino/xr2206/XR2206-function-generator.htm

John Owen a réalisé deux autres projets :
http://www.vwlowen.co.uk/arduino/AD9833-waveform-generator/AD9833-waveform-generator.htm
http://www.vwlowen.co.uk/arduino/AD9850-waveform-generator/AD9850-waveform-generator.htm

8. Conclusion

Ce générateur n'est pas un foudre de guerre en terme de rapidité. La sinusoïde est assez propre jusqu'à 100KHz, ensuite elle devient plutôt triangulaire.
Mais comme je compte utiliser ce générateur pour des applications audio, il est rare d'avoir besoin d'une sinusoïde au delà de quelques dizaines de KHz.
Le signal carré reste exploitable comme signal de synchronisation pour un oscilloscope jusqu'à 1MHz.

Voilà un petit outil bien sympathique qui vient compléter utilement le laboratoire déjà bien fourni :

Cordialement
Henri

1 commentaire: