Electronique > Réalisations > Générateurs > Générateur audio 008b - Pro

Dernière mise à jour : 26/07/2026

Présentation

Ce générateur est capable de délivrer des signaux audio carré et sinusoïdal avec une fréquence stabilisée par quartz et ajustable au centième de hertz près (résolution de 0,01 Hz), sur une plage allant de 20 Hz à 20 kHz.

gene_audio_008b_disp_001a gene_audio_008_disp_001a

Ce montage basé sur un microcontrôleur PIC18F46K22 permet de choisir la fréquence du signal de sortie (carré et sinus) par le biais de boutons-poussoirs et d'un écran LCD. Pour ceux qui n'ont que faire de la sortie sinus et d'une résolution à 0,01 Hz, voir la version simplifiée générateur audio 008 qui n'offre qu'une sortie signal carré et dispose d'un réglage de fréquence au hertz près.

   

Avertissements

   

Schéma

Le montage est construit autour d'un PIC, composant programmable nécessitant un logiciel interne pour rendre un quelconque service (par chance, une version allégée LE du programme vous est proposé gracieusement à la fin de cet article).

gene_audio_008b

Notons tout de suite la présence des trois sous-ensembles suivants :
   
Principe général de fonctionnement
Un signal carré de fréquence F (fréquence désirée par l'utilisateur) ajustable à 0,01 Hz près, est délivré par le PIC. Ce signal est dirigé : 
- vers l'entrée analogique d'un filtre à capacités commutées monté en filtre passe-bande étroit.
- vers une PLL qui permet de multiplier la fréquence F par 50 (taux de multiplication fixe)
Le signal de fréquence F*50 est orienté vers l'entrée d'horloge du filtre à capacités commutées. Le signal carré de fréquence F ressort filtré (harmoniques atténuées) ce qui lui permet de ressembler à une sinusoïde.

Par exemple, pour obtenir un signal sinus de 1 kHz en sortie du filtre, on doit appliquer un signal carré de 1 kHz sur la broche d'entrée analogique du filtre (pin 8) et un signal carré de fréquence 50 kHz sur la broche d'entrée d'horloge du filtre (pin 16). Avec un signal d'horloge de 50 kHz (requis pour un signal audio utile de 1 kHz), la réponse en fréquence du filtre est celle visible sur le graphe du centre ci-après :

   
gene_audio_008b_graph_001a
Filtre passe-bande centré sur 1 kHz : le signal carré entrant (1 kHz) ressort du filtre avec une forme sinusoïdale 
 
Rappelons qu'un signal carré (de rapport cyclique 50%) ne possède que des harmoniques d'ordre impaire (H3, H5, H7, etc).
Dans l'exemple précédent avec un signal utile de 1 kHz, la réjection de la première harmonique du signal carré (H3 = 3 kHz) est de -70 dB (taux d'atténuation d'environ 3000) et la: seconde harmonique du signal carré (H5 = 5 kHz) est de -80 dB (taux d'atténuation de 10000). Les harmoniques suivantes (H7, H9, etc) sont encore plus atténuées.

Pour produire un signal sinus à d'autres fréquences, un calcul simple nous montre que la fréquence d'horloge doit être de 1 kHz pour centrer le filtre sur un sinus de 20 Hz (20 Hz * 50) et qu'elle doit être de 1 MHz pour centrer le filtre sur un sinus de 20 kHz (20 kHz * 50).

Remarques


Section PIC (18F46K22)
Si j'ai choisi ce PIC, c'est parce qu'il répond parfaitement au besoin que je me suis fixé. Son oscillateur qui travaille à 16 MHz (Fosc interne de 4 MHz) suffit pour produire le signal basse fréquence très précis dans la bande 20 Hz à 20 kHz, et le nombre de broches d'entrées/sorties permet de raccorder un afficheur LCD classique et plusieurs boutons-poussoirs. On attribue à ce PIC les deux rôles suivants :
- génération d'un signal carré périodique de fréquence comprise entre 20 Hz et 20 kHz (Nota 1)
- réglage et affichage de la fréquence sur un écran LCD 2x16 ou 2x20 caractères
Nota 1 - La fréquence du signal carré délivré par le PIC peut en réalité descendre à 0,01 Hz (période de 100 secondes) tout en conservant la même précision, mais la PLL n'accroche plus ou mal en-dessous de 10 Hz et le signal sinus n'est plus exploitable (même en modifiant la valeur des composants de la PLL, la constante de temps de la boucle serait trop grande et la fréquence serait de ce fait très instable).
 
Méthode de réglage de la fréquence
Pour cette réalisation, j'avais au moins deux possibilités pour régler la fréquence à la valeur désirée :
- soit avec seulement 4 boutons pour se déplacer dans la valeur de la fréquence affichée sur l'écran LCD et incrémenter ou décrémenter le chiffre sélectionné
- soit avec une paire de boutons pour les unités, une autre paire pour les dizaines, une pour les centaines, etc...
Préférant disposer de beaucoup de boutons-poussoirs pour un accès plus direct, j'ai opté pour la seconde solution (cette façon de faire impose bien sûr un nombre plus élevé de lignes d'entrée/sortie sur le PIC).

La fréquence min est de 20,00 Hz et la fréquence max est de 20,00 kHz. Si l'incrément ou le décrément demandé fait sortir la fréquence actuelle de cette plage, la demande n'est pas prise en compte. Par exemple, si la fréquence en cours est 19200 Hz et que vous pressez le bouton-poussoir SW7 (incrément milliers) alors il ne se passe rien. Autre exemple : si la fréquence en cours est 27 Hz et que vous pressez le bouton-poussoir SW12 (décrément dizaines) là encore il ne se passe rien.

Pour les deux boutons-poussoirs de presets SW1 et SW2, une pression brève est caractérisée par une durée de pression supérieure à 100 ms et inférieure à 1 seconde. Une pression longue quant à elle est caractérisée par une durée de pression supérieure à 3 secondes.
Une pression simultanée sur SW1 et SW2 pendant au moins 3 secondes provoque la sauvegarde de la valeur de fréquence en cours, valeur qui sera rappelée lors de la prochaine mise sous tension. Une pression simultanée sur SW1 et SW2 pendant au moins 100 ms et moins de 1 seconde provoque le rappel de la fréquence de démarrage (ce qui évite un arrêt/marche pour revenir à cette configuration).

 
Section PLL (74HCT4046)
Le 74HCT4046 (version TTL du célèbre circuit CMOS CD4046) est utilisé ici pour multiplier la fréquence du signal délivré par le PIC. J'ai choisi cette solution pour la simple raison que le PIC utilisé ici est un modèle 8 bits dont il est difficile de tirer un signal à 1 MHz avec la méthode employée (bien sûr, ce même PIC en serait tout-à-fait capable si on ne lui demandait que cela, et à condition de pousser sa fréquence d'horloge à 64 MHz). L'avantage de cette approche avec PLL externe est qu'elle m'a fait perdre plusieurs heures pour arriver à faire fonctionner correctement ladite PLL dans la plage de fréquence 1 kHz (pour signal sinus de 20 Hz) à 1 MHz (pour signal sinus de 20 kHz).
Eh oui, j'aime perdre du temps quand il s'agit d'apprendre.
   
Choix des composants de la PLL
Il y a ici deux ensembles de composants dont les valeurs sont critiques pour le bon fonctionnement de la PLL :
- composants qui déterminent la plage de capture et d'accrochage (R1, R2 et C1)
- composants qui constituent le filtre de boucle qui restitue la tension continue de commande du VCO (R3, R4, C2 et C3).

Remarque : pour parfaire l'accrochage de la PLL, la valeur du condensateur C1 est automatiquement ajustée par mise en ou hors service des condensateurs C1B et C1C, en fonction de la fréquence de sortie demandée (uniquement dans la version Pro).

   
Multiplicateur de fréquence 50x

La multiplication par 50 de la fréquence du signal audio est assurée par la PLL, grâce au diviseur de fréquence réalisé avec U4 (compteur programmable câblé pour une division par 25) et U5 (bascule D montée en diviseur par 2). Le diviseur par 2 (U5) nécessaire ici pour disposer d'un signal carré de rapport cyclique 50% permet en même temps d'obtenir le facteur de division souhaité, à savoir 1:50.

Le fonctionnement est simple : on utilise le VCO intégré au 74HCT4046 pour délivrer le signal d'horloge requis par le filtre LTC1067. Ce signal en sortie du VCO doit posséder une fréquence comprise entre 1 kHz et 1 MHz (1 kHz pour signal audio de sortie 20 Hz et 1 MHz pour signal audio de sortie 20 kHz). Le comparateur de phase de la PLL reçoit deux signaux carrés qui doivent avoir la même fréquence (tout sera fait pour que cette condition soit remplie) :
- signal carré provenant du PIC (sortie LFsq) pouvant évoluer entre 20 Hz et 20 kHz
- signal carré provenant de la sortie du diviseur de fréquence par 50, lui aussi évoluant entre 20 Hz et 20 kHz

Si la fréquence de sortie du VCO une fois divisée par 50 (PhCompIn) est différente de celle délivrée par le PIC (LFsq), alors la tension de commande du VCO (VCO_In) augmente ou diminue pour corriger automatiquement la dérive. Cette tension de commande est obtenue par un filtrage passe-bas en sortie du comparateur de phase (PC2OUT, broche 13 du 74HCT4046).

   
Section Filtre (LTC1067)
Préambule : le circuit LTC1067 existe en deux versions : LTC1067 (Fclk = F*100) et LTC1067-50 (Fclk = F*50).
Le circuit intégré LTC1067 - que j'ai déjà utilisé dans un projet pro - s'avère redoutablement efficace, dommage qu'il coûte si cher. Ce composant permet de réaliser un filtre passe-bande ou passe-bas assez facilement, si pour un résultat similaire on le compare à la panoplie de composants à mettre en oeuvre pour un système basé sur des AOP. La broche 16 (CLK) reçoit un signal d'horloge dont la fréquence doit être de 50x la fréquence centrale du filtre passe-bande pour le LTC1067-50 (modèle que j'ai choisi), cette fréquence d'horloge doit être de 100x la fréquence centrale du filtre passe-bande pour le LTC1067.

Evolutions futures possibles

Comme dit en section Avertissements, la fréquence réelle du signal délivré par le PIC dépend de la fréquence réelle du quartz utilisé pour l'horloge du PIC. On sait que le quartz permet une grande stabilité de fréquence, mais la fréquence réelle d'oscillation peut légèrement différer de celle qu'il est censé produire. L'idéal ici n'est pas d'avoir un quartz "parfait", mais de connaître sa fréquence réelle d'oscillation. Le logigiel du PIC s'appuie en effet sur la fréquence "supposée" du quartz pour produire le signal à la fréquence désirée. Pour corriger tout écart de fréquence du quartz, je vois deux solutions :

- solution #1 : utiliser un signal de référence 1 pps (1 Hz) provenant d'un récepteur GPS ou autre source de référence de laboratoire pour effectuer en interne (par le PIC lui-même, au démarrage ou après un certain temps de chauffe) une mesure de fréquence réelle du quartz et utiliser cette valeur lue en remplacement de la fréquence "supposée".
- solution #2 : permettre à tout moment l'ajustement de la fréquence "supposée", sans référence externe. 

Actuellement, la fréquence réelle d'oscillation est mesurée avec deux fréquencemètres différents et la valeur moyennée des deux mesures est utilisée pour coder en dur la fréquence utilisée par le timer 2. Dans les deux cas, il ne faut pas oublier que la fréquence du quartz dépend aussi de la température ambiante. Une solution au top consiste à utiliser un oscillateur thermostaté et ultra-précis... mais bien évidement, le coût de revient du système s'en ressent ! Ceci dit, rien ne vous interdit de construire vous même un oscillateur thermostaté en enfermant un oscillateur à quartz dans une petite enceinte chauffée par un transistor de puissance, avec une thermistance pour l'asservissement en température.

   

Logiciel du PIC

Le logiciel est disponible en deux versions : Pro et LE.
Dans la version Pro, la résolution du réglage de la fréquence est de 0,01 Hz et la PLL accroche plus vite aux fréquences extrèmes.
Dans la version LE, la résolution du réglage de la fréquence est de 1 Hz et les presets sont inactifs.
Pro - Logiciel complet non disponible en libre service
LE - Generateur audio 008b - 18F46K22 - Version V1.0 du 25/07/2026

Si vous souhaitez recevoir par la poste un PIC préprogrammé et prêt à utiliser, merci de consulter la page PIC - Sources.

   

Historique

26/07/2026
- Première mise à disposition.