Electronique > Réalisations > Générateurs > Générateur audio 021x - Pro

Dernière mise à jour : 02/08/2026

Présentation

Ce générateur audio permet de produire un signal sinus de fréquence fondamentale définie au moment de la programmation et non modifiable, avec 1 à 40 harmoniques correspondantes (raies H2 à H41) dont les amplitudes sont ajustables indépendement les unes des autres en utilisation (après programmation). 
   
gene_audio_021a_pcb_3d_front
   
La fréquence de la fondamentale est ici fixée à 100 Hz. La première harmonique H2 se situe donc à 200 Hz et l'harmonique H41 se situe à 4,1 kHz. La fréquence de restitution des échantillons est fixée à 50 kHz, ce qui facilite le filtrage au-delà de 10 kHz (valeur au-delà de laquelle on ne souhaite pas avoir trop de résidus).

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.

   

Avertissements

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é avec prototype réel.

   

Schéma 021x

Générateur audio construit autour d'un PIC24, même base matérielle que le générateur audio 021a.
   
gene_audio_021x
   
Principe de fonctionnement

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 l'une de ses raies harmoniques. 

Cette façon de faire à un revers : celui de nécessiter plusieurs secondes pour la reconstruction du tableau quand le nombre de raies harmoniques utilisées est élevé (2 secondes pour 4 raies actives, 9 secondes pour 20 raies actives). Une raie dont l'amplitude est fixée à 0.0 ne réclame aucune ressource processeur au moment de la reconstruction de la table de valeurs des échantillons.


Nombre maximal de raies
En utilisant une fréquence fondamentale et des harmoniques paires et impaires associées, le nombre de "générateurs" peut être porté au nombre de 40. Le niveau de chaque harmonique peut être ajusté individuellement entre 0.000000 (-inf) et 1.000000 (0 dBFS).
   
gene_audio_021x_disp_001a gene_audio_021x_disp_001b gene_audio_021x_disp_001c gene_audio_021x_disp_001d
   
Contrôle automatique du niveau global

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. 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 (le mélange étant effectué ici en 32 bits alors que le microcontrôleur est un modèle 16 bits explique en grande partie le temps requis pour les calculs).

L'exemple suivant montre un cas de figure où le signal crête atteint (après mixage des raies) la valeur de +6,4 dB. Une réduction de -6 dB s'avère insuffisante et donc une seconde réduction de -6 dB est opérée à la suite de la première (réduction totale de -12 dB).
   
gene_audio_021x_disp_002a gene_audio_021x_disp_002b gene_audio_021x_disp_002c
   
Quelques exemples de configurations...
Dans les graphes qui suivent (matériel PIC24 et DAC parallèle 16 bits) et pour une fréquence de restitution des échantillons de 50 kHz, on voit que la fréquence fondamentale est de 100 Hz et que les harmoniques peuvent monter jusqu'au 41è rang (de H2 à 200 Hz jusqu'à H41 à 4,1 kHz). La sortie analogique est filtrée avec un passe-bas d'ordre 4 (24 dB/oct). En fonction des besoins, un filtre de pente plus raide peut bien sûr être adopté.

   
Fs = 50 kHz, 1 générateurs (fondamentale 100 Hz, sans harmonique) :
gene_audio_021x_graph_50k_42v_c
Fondamentale seule, harmoniques paires et impaires d'amplitude 0.0 

   
Fs = 50 kHz, 42 générateurs (100 Hz + H3..H41, harmoniques impaires seulement) :
gene_audio_021x_graph_50k_42v_b
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) :
gene_audio_021x_graph_50k_20v
Fondamentale, harmoniques paires et impaires d'amplitude égale 

   

Fs = 50 kHz, 41 générateurs (100 Hz + H2..H41, harmoniques paires et impaires) :
gene_audio_021x_graph_50k_41v
Fondamentale, harmoniques paires et impaires d'amplitude égale 

   

Fs = 50 kHz, 21 générateurs (100 Hz + H3..H41, harmoniques impaires seulement) :
gene_audio_021x_graph_50k_42v
Harmoniques paires d'amplitude 0.0, harmoniques impaires d'amplitude décroissante en 1/(n*Pi)

 

Prototype(s)

Aucun prototype réalisé à ce jour par mes soins.

   

Circuit imprimé (PCB)

Non réalisé par mes soins. Vue 3D uniquement pour aperçu des composants utilisés.

    

Historique

02/08/2026
- Première mise à disposition.