Comment connecter une source sonore à un système d’acquisition numérique ?
NIVEAU 2
Objectifs
- Câbler une interface pour une source sonore
Pré-requis
- Déboguer son programme et utiliser l’affichage série 1
- Récupérer un signal analogique 1
- Générer une tension analogique 1
A propos du son
Cette plage de fréquence reste théorique. Elle évolue au cours de la vie d’un être humain, notamment la fréquence maximale qui a tendance à diminuer avec l’age.
D’autre part, les fréquences entre 1 et 50 Hz sont également difficilement perceptibles par l’oreille humaine. Par contre, elles peuvent être ressenties par les corps.
Signaux électriques
Si le son est avant tout une onde vibratoire perceptible par l’oreille humaine, il est souvent transporté par un signal électrique de même fréquence que l’onde initiale.
Ces ondes sont récupérées à l’aide d’un microphone (par exemple), qui est une membrane reliée à un système de conversion électrique. Le signal résultant est alors une tension électrique centrée autour de 0V et dont le signe de la variation dépend du sens de déplacement de la membrane.
Ces signaux sont ensuite souvent stockés sous la forme de données numériques (CD, disque dur…). Afin de pouvoir respecter le critère de Nyquist-Shannon, les systèmes d’acqusition numérique du son ont des fréquences d’échantillonnage allant de 44kHz à 96kHz. La plupart convertisse ces données sur 16 bits. C’est le cas par exemple des CD audio : 16 bits à une fréquence de 44kHz.
Les sources sonores et leurs contraintes
Il existe une multitude de sources sonores, en dehors des sources naturelles…
Pour les sources “électriques” de son, il s’agit souvent de la restitution de données numériques en signal analogique utilisable pour déplacer par la suite une membrane de haut-parleur (moyennant un étage de puissance pour amplifier le mouvement de cette dernière).
Les amplitudes des signaux de sortie sont assez faible :
- smartphone : +/- 200 mV
- PC : +/- 500 mV
Les impédances d’entrée des appareil standard (table de mixage, pré-amplificateur audio…) sont de 47 \(k\Omega\).
Les systèmes de restitution et leurs contraintes
La restitution d’un son se fait dans le sens inverse de son acquisition. Un signal électrique vient déplacer une membrane qui elle-même fait vibrer l’air qui l’entoure. Mais faire déplacer une membrane, aussi petite quelle soit, nécessite souvent un courant important et donc de la puissance.
Les haut-parleurs standards ont souvent des impédances caractéristiques de 4, 8 ou 32 \(\Omega\)
Nécessité d’amplificateur audio :
– Basse puissance (Casques, mini-haut-parleur) : LM386 (1W), LM380 (2.5W)
– Moyenne puissance : amplificateur audio intégré (TDAxxxx – selon puissance souhaitée)
– Forte puissance : ampmlificateur “maison” à base de transistors
Sources sonores et traitement numérique
Echantillonnage numérique et traitement
Les systèmes d’échantillonnage numérique étant souvent alimentés par des alimentations uniques, ils sont capables d’échantillonner uniquement des tensions positives. Il n’est donc pas possible d’échantillonner directement le signal sortant d’un appareil de restitution.
Il est donc nécessaire de décaler le signal électrique, pour que le signal résultant soit strictement positif.
Schéma de cablage
Les deux montages suivants vont permettre :
- de supprimer une éventuelle composante continue (filtre C-R passe-haut avec \(C = 10\mu{}F\) polarisé et \(R_{eq} = R/2\)) et ajouter un offset constant égal à \(V_{CC} / 2\) – en entrée
- de supprimer les paliers dus à l’échantillonnage (CNA) et supprimer la composante continue – en sortie
Le filtre d’entrée a une fréquence de coupure égale à \(\frac{1}{\pi{} \cdot R \cdot C}\).
Exemple de code de test
Le code suivant se base sur la mise en oeuvre des deux modules de conversion :
- analogique-numérique (ADC) – voir tutoriel Récupérer un signal analogique
- numérique-analogique (DAC) – voir tutoriel Générer une tension analogique
Le principe est celui représenté dans la figure suivante.
#include "mbed.h" #define TE 0.00003 #define SAMPLE_RATE 1/TE void convert(void); /* E/S */ AnalogIn mesure(A0); // A0 on Arduino Header AnalogOut analog_out(PA_5); /* Timer a repetition */ Ticker tik; float in, out; int main() { /* Association de la fonction convert à un timer */ tik.attach(&convert, TE); while(1) { } } void convert(void){ in = mesure.read(); // Lecture de l'entree analogique out = in; analog_out.write(out); // Ecriture de la sortie analogique }
Dans cet exemple, le signal de sortie recopie le signal d’entrée. Cela permet de vérifier le bon fonctionnement de ces deux étages de conversion, avant même l’ajout d’un calcul intermédiaire.
La relation entre l’entrée et la sortie est alors du type : \(s[n] = e[n]\).
Dans le code précédent, on peut également noter que l’acquisition du signal d’entrée (nommé mesure) et de la restitution de ce même signal vers la sortie (signal nommé analog_out) se fait à intervalle régulier (ici 30 us – soit une fréquence d’échantillonnage de 33kHz) grâce à l’utilisation d’un module de gestion du temps par interruption, le Ticker tik.
Microphone à electret
Pour pouvoir récupérer une information sonore, on peut utiliser un microphone à électret. Pour pouvoir l’utiliser, on peut l’insérer dans un schéma du type suivant :
source : https://www.instructables.com/id/Pre-amp-to-electret-mic/
Capteurs Ultrasons
MInE Prototyper Prototyper avec Nucleo et MBED