
Ce générateur a été étudié sur une base de PIC 16 bits 24FJ64GA108, mais le logiciel pourrait tout à fait être adapté à un autre type de microcontrôleur (PIC32 ou ESP32 par exemple). La conversion numérique analogique se fait avec une résolution de 16 bits, à l'aide d'un DAC parallèle 16-bits ou d'un DAC série 16-bits.
Logiciel écrit, simulé avec succès avec PIC24FJ64GA108 et
PIC24FJ32GA002 (sans écran LCD pour le PIC24FJ32GA002 cause nombre de
broches insuffisant), mais
pas encore testé sur prototype réel.

La répartition des raies fondamentale et harmoniques se fait de la même manière dans les deux cas (parallèle et série), mais la répartition spectrale du bruit de fond dépend du type de convertisseur et du filtre passe-bas employé en aval (pour l'exemple, j'ai placé un filtre d'ordre 4 pour le DAC parallèle et un filtre d'ordre 1 pour le DAC série - c'est forcément moins bien pour ce dernier).
Le temps requis pour transmettre chaque échantillon au DAC dépend de son type et de ses caractéristiques intrinsèques. D'une manière générale, les DAC de type parallèle requièrent plus de broches de liaison, mais sont plus rapides que les DAC de type série. Dans le cas qui nous concerne ici avec les DAC sélectionnés, le temps requis est de 0,2 us en mode parallèle et de 7 us en mode série (horloge série 4 MHz). On peut donc en théorie pousser un peu la fréquence de restitution des échantillons au-delà de 50 kHz, au moins à 100 kHz pour le DAC parallèle.Contrairement au principe de fonctionnement qui repose sur la synthèse numérique directe (DDS) utilisée dans mon générateur audio 021, une méthode beaucoup plus simple a pu être mise en oeuvre ici, parce que la fréquence fondamentale est fixe et ne peut pas être modifiée. Comme il fallait tout de même pouvoir modifier l'amplitude de chacune des raies fondamentale et harmoniques, il était exclu de faire appel à une simple et unique table d'échantillons (lookup table) codée en dur. Pour cette raison, un tableau dynamique a été implémenté et ce tableau est automatique reconstruit à chaque modification de l'amplitude de la fréquence fondamentale ou de celle d'une raie harmonique.
Avantages :
Inconvénients :
| 1.000000 | 0.0 dBFS | Niveau maximal |
| 0.500000 | -6 dBFS | 1/2 du niveau maximal |
| 0.250000 | -12 dBFS | 1/4 du niveau maximal |
| 0.100000 | -20 dBFS | 1/10 du niveau maximal |
| 0.050000 | -26 dBFS | 1/20 du niveau maximal |
| 0.010000 | -40 dBFS | 1/100 du niveau maximal |
| 0.001000 | -60 dBFS | 1/1000 du niveau maximal |
| 0.000100 | -80 dBFS | 1/10000 du niveau maximal |
| 0.000000 | -inf | rien |
Comme le nombre de raies pouvant être activées simultanément est élevée et que l'amplitude maximale de chacune correspond à 1.000 pour 0 dBFS, il peut arriver que la somme de toutes les raies occasionne des crêtes dépassant la valeur de 0 dBFS, ce qui à coup sûr occasionne une distorsion plus ou moins élevée du signal de sortie. Pour éviter ce risque, un mécanisme de réduction automatique du niveau est activé si les amplitudes cumulées de la fondamentale et des harmoniques dépasse les capacités du système. Cet ajustement automatique opère en réduisant l'amplitude du signal par paliers successifs de -6 dB, jusqu'à ce que le signal final tienne dans la plage numérique 0-65535 (16 bits) et ne dépasse donc pas la valeur de 0 dBFS.
Bien entendu, cela n'est possible qu'en effectuant un mixage des différentes raies avec une résolution supérieure à 16 bits, ce qui est le cas ici puisque le moteur de mélange travaille sur 32 bits.
Remarques
:
- la
réduction par palier de -6 dB permet de moins déteriorer le signal
qu'un procédé de "normalisation" qui chercherait à placer le niveau
crête max au plus proche du 0 dBFS.
- Le mélange étant effectué en 32 bits alors
que
le microcontrôleur est un modèle 16 bits explique en grande partie le
temps requis pour les calculs - un microcontrôleur 32 bits serait bien
entendu plus approprié.
Fs = 50 kHz, 1 générateur (fondamentale 100 Hz, aucune
harmonique)
Fondamentale seule, harmoniques paires et impaires
d'amplitude 0.0 :
Fs = 50 kHz, 2 générateurs (fondamentale 100 Hz et
harmonique H03)
Fondamentale amplitude 0.9
+ harmonique impaire H03 d'amplitude 0.2 :
Fs = 50 kHz, 42 générateurs (100 Hz + H3..H41, harmoniques
impaires seulement)
Fondamentale, harmoniques paires d'amplitude 0.0,
harmoniques impaires d'amplitude décroissante en 1/(n²) :
Fs = 50 kHz, 20 générateurs (100 Hz + H2..H20, harmoniques paires et impaires)
Fs = 50 kHz, 41 générateurs (100 Hz + H2..H41, harmoniques paires et impaires)
Fs = 50 kHz, 17 générateurs (100 Hz + H2..H17, harmoniques paires et impaires)
Fondamentale,
harmoniques paires et impaires d'amplitude décroissante de -6 dB en -6
dB :
Fs = 50 kHz, 21 générateurs (100 Hz + H3..H41, harmoniques
impaires seulement)
Fondamentale, harmoniques paires d'amplitude 0.0,
harmoniques impaires d'amplitude décroissante en 1/(n*Pi) :
Dans la version actuelle, 5 presets seulement sont implémentés :
- Preset 0 - accessible en écriture et lecture depuis la page principale
et depuis les pages de réglage d'amplitude des raies
- Presets 1 à 4 - uniquement accessibles en écriture et lecture depuis les menus dédiés "Preset".
Afin de limiter le risque de sauvegarde ou de rappel accidentel d'un preset, la durée de la pression sur les boutons ENTER (Save) et Rappel (Load) doit être plus longue que pour les autres fonctions (durée minimale de 1 seconde). Une pression brève du bouton EXIT permet à tout moment de revenir au menu principal.
Un clavier externe comportant 16 touches peut également être raccordé sur le PORT E du PIC, pour rappel instantané des presets ou pour autre usage futur (extension non prévue actuellement). Actuellement, seul le rappel des 5 presets déjà implémentés est possible avec ce clavier additionnel.
Si le présent générateur a été initialement conçu pour une fréquence fondamentale fixe de 100 Hz, il lui est possible de travailler à une fréquence fondamentale de 50 Hz, 64 Hz, 80 Hz, 100 Hz, 125 Hz, 128 Hz, 160 Hz ou 200 Hz avec des performances similaires. A 200 Hz, la 41è harmonique passe à 8,2 kHz, ce qui reste tout à fait correct avec une fréquence de restitution des échantillons de 50 kHz.
En conservant le principe de fonctionnement utilisé, d'autres fréquences intermédiaires comprises entre 50 Hz et 200 Hz sont également utilisables, à condition d'accepter une baisse de la précision et de la stabilité de fréquence. Par exemple, en acceptant une précision de 1% au lieu de 0,01%, les fréquences suivantes peuvent être utilisées : 54 Hz, 55 Hz, 56 Hz, 58 Hz, 59 Hz, 63 Hz, 66 Hz, 67 Hz, 68 Hz, 72 Hz, 73 Hz, 76 Hz, 83 Hz, 84 Hz, 85 Hz, 93 Hz, 96 Hz, 98 Hz, 99 Hz, 104 Hz, 108 Hz, 109 Hz, 112 Hz, 113 Hz, 116 Hz, 117 Hz, 118 Hz, 124 Hz, 126 Hz, 177 Hz, 181 Hz, 199 Hz.
17/08/2026
- Ajout clavier 16 touches pour rappel rapide de presets et pour saisie directe des valeurs d'amplitude des raies.
- Ajout sortie Trigger pour synchro ou comptage externe.
-
Ajout LED OVL (Overload). Cette LED s'allume si un dépassement du 0
dBFS est détecté et que la fonction de réduction automatique du niveau
général est désactivée.
- Ajout choix affichage de une ou deux périodes dans la zone oscilloscope de l'écran OLED.
- Ajout choix affichage de la plage dynamique des raies spectrales sur l'écran OLED.
- Désormais,
les niveaux d'amplitude saisis pour les diverses raies conservent leur
valeur initiale quand une réduction automatique de niveau à lieu (pas
de changement sur les valeurs affichées sur l'écran LCD).
- Correction bug sauvegarde Preset n°4 (les données n'étaient pas stockées au bon endroit dans l'EEprom).
09/08/2026
- Ajout écran OLED pour affichage forme d'onde (vue temporelle/oscilloscope et
composition spectrale).
- Ajout sauvegarde configuration utilisateur (presets) dans mémoire
externe 1 Mb (EEprom 25AA1024).
-
Désormais, il est possible de désactiver le système d'ajustement
automatique du niveau de sortie général (au risque bien sûr de voir
apparaître une éventuelle distorsion).
- Désormais, le convertisseur 16 bits parallèle et le convertisseur 16
bits série peuvent être tous deux utilisés simultanément.
-
Désormais, le générateur continue de délivrer un signal durant la
période de reconstruction du tableau de valeur de l'amplitude de chaque
raie, et on peut voir l'évolution de la forme d'onde au fil de l'eau
(sur la sortie DAC parallèle uniquement).
02/08/2026
- Première mise à disposition.