Dernière mise à jour :
26/07/2026
Présentation
Ce générateur est capable de délivrer un signal carré (rapport cyclique de 50%) dans la plage de fréquence des signaux
audio, à savoir entre 20 Hz et 20 kHz, avec une
fréquence ajustable au hertz près (résolution de 1 Hz).
Voir aussi le
générateur audio 008b qui s'appuie sur la même base et offre en complément une résolution de 0,01 Hz et une sortie sinus.
Avertissements
- Le projet présenté ici s'appuie sur les travaux de Bob Ammerman et Roman Black publiés sur le site de RomanBlack, précisément dans la section High resolution frequency. La précision de la fréquence "moyennée dans le temps" de ce générateur est très bonne, mais l'instabilité de phase (jitter) augmente au fur et à mesure qu'on monte dans les hautes fréquences.
- La
fréquence réelle du signal délivré par le PIC dépend étroitement de la
précision du quartz utilisé pour l'horloge du PIC. Si la fréquence
réelle d'oscillation du quartz est de 15,999900 MHz au lieu de
16,000000 MHz, alors une fréquence programmée à 1000,00 Hz donnera en
réalité un signal de fréquence égale à 999,99 Hz. Détails supplémentaires exposés dans l'article Générateur audio 008b.
Schéma
Le montage est construit autour d'un PIC dont le nombre élevé de
broches peut questionner (mais tout s'explique).
Il
est vrai que j'aurais pu utiliser un PIC moins encombrant (avec moins
de broches) pour ce générateur. La réalité est que j'ai débuté l'étude
du
générateur audio 008b
et que cette version simplifiée 008 est venue après. Pour faciliter mes
tests, j'ai tenu à garder le même brochage pour les deux versions.
Principe de fonctionnement
Quand on veut faire délivrer par un microcontrôleur un signal de fréquence donnée, il existe différentes façons de procéder :
- avec un module PWM (
Pulse Width Modulation)
- avec un module NCO (
Numerically Controlled Oscillator) basé sur le principe du DDS (
Direct Digital Synthesis)
- avec un
Timer simple (sans rien d'autre)
- avec un
Timer associé à un accumulateur
Un
module NCO est assez pratique et peut-être plus facile à
utiliser, mais malheureusement une grande précision de la fréquence de
sortie n'est pas
aussi facile à obtenir (elle est souvent un peu moindre ou un peu plus élevée que
la valeur attendue). C'est pourquoi la dernière solution a été adoptée
ici, avec le Timer2 du PIC. Si elle peut sembler un peu plus
compliquée à
mettre en oeuvre, elle permet en revanche d'obtenir une fréquence
plus proche de celle désirée.
Réglage de la fréquence
Il s'effectue de façon très simple, avec plusieurs boutons-poussoirs :
- SW5 = incrément unités (+1 Hz)
- SW6 = décrément unités (-1 Hz)
- SW7 = incrément milliers (+1000 Hz)
- SW8 = décrément milliers (-1000 Hz)
- SW9 = incrément centaines (+100 Hz)
- SW10 = décrément centaines (-100 Hz)
- SW11 = incrément dizaines (+10 Hz)
- SW12 = décrément dizaines (-10 Hz)
La
fréquence min est de 20 Hz et la fréquence max est de 20000 Hz. 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.
Commandes "grisée" ?
Actuellement,
les boutons SW1 à SW4 n'ont aucune action. Il s'agit de lignes
d'entrées de commandes prévues pour un usage futur, par exemple pour
des presets.
Sortie rectangulaire
La sortie LFout (LF =
Low Frequency)
délivre un signal périodique carré de rapport cyclique 50%. Aucun étage
de sortie n'est proposé ici, mais je vous suggère fortement d'ajouter
au moins un buffer logique (par exemple SN7404) ne serait-ce que pour
protéger la sortie du PIC contre toute fausse manoeuvre qui pourrait
lui être fatale (remplacer un 7404 grillé engendre moins de risques de dépression que
remplacer un PIC programmé avec efforts). Et tant qu'à ajouter un étage de
sortie, pourquoi ne pas prévoir en même temps un réglage de niveau par
commutateur multi-positions ou par un simple potentiomètre ? Je
dis cela comme ça, mais injecter un signal carré d'amplitude 5 V dans
l'entrée ligne d'un préamplificateur ou d'un amplificateur risque de
faire mal (aussi bien aux oreilles qu'à certains matériels)...
Logiciel du PIC
Le logiciel est disponible en libre service
Generateur audio
008 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.