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

A propos du son

https://www.activstudio.fr/eq-equaliseur/

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.

https://evolutiondutelephonedansletemps.wordpress.com/le-fonctionnement-du-telephone/

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 :

  1. 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
  2. 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 :

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

Lien à voir

MInE Prototyper Prototyper avec Nucleo et MBED

Nucléo – Connecter une source sonore