Captation du son

Bonjour

Je voudrais savoir pourquoi je ne peux pas capter la tension qui sort d'un microphone électrodynamique par une entrée analogique de mon arduino.

Est-ce par ce que la tension est trop basse et que l'arduino n'est pas assez sensible ?

Le montage que j'ai fait est simple : - La masse du micro est branchée sur le GND de la carte - Le signal est dans l'entrée A0 de la carte.

Voici le programme :

const byte mic1 = A0;

void setup() {
  Serial.begin(9600);
}

void loop() {
  unsigned long mesure = analogRead(mic1);
  Serial.println(mesure*1000000);
}

// La console n'affiche que des 0

Je précise que je débute dans le merveilleux monde arduino, des capteurs et des actionneurs.

++ ;)

Le microphone à besoin d'une tension pour fonctionner.

Les statiques et les piézoélectriques, oui. Mais pas les dynamique. C'est la bobine qui est mobile sur un dynamique. Ça fonctionne un peu comme un moteur CC.

++ ;)

Oui je suis d'accord mais ou est l'amplificateur d'instrumentation ?

Un microphone électrodynamique délivre une tension alternative et d'amplitude faible. Il vous faut donc :

  • l'amplifier,
  • la décaler du zéro par un potentiel égal à la moitié du VCC de l'Arduino pour qu'une entrée (A0 par exemple) puisse l'exploiter correctement. Cordialement.

Pierre

D'accord, je comprends bien qu'il faut l'amplifier pour pouvoir s'en servir comme un microphone mais mais ce n'était pas le but. Ce que je veux, c'est m'en servir comme un détecteur. Je pensais que s'il y avait une tension à son entrée, même très faible, l'arduino pouvait la capter et que l'amplification pourrait se faire en aval pour une exploitation.

au sujet de la conversion de l'alternatif en continue je n'y avait pas pensé. Je ne sais pas trop comment il faut faire.

++ ;)

Effectivement, si vous voulez simplement vous en servir en détecteur, votre montage est suffisant sauf si votre micro ne sort pas assez de tension. Par contre, cela ne sert à rien de multiplier votre lecture par 1000000, simplement écrire :

Serial.println(mesure);

Pour avoir un signal d’amplitude maximum, tapez sur votre micro.

Quel type d’Arduino utilisez-vous ?

Cordialement.

Pierre

C'est une leonardo.

Et que je multiplie ou pas, j'ai toujours un 0 dans la console. A tout hasard, j'ai tenté sur une autre entrée analogique (A5) en vain.

++ ;)

Essayez de visualiser avec "Outils/Traceur série" et tapotez sur votre micro, vous percevrez plus aisément un signal transitoire.

A ChPr : Non, rien du tout. une sinusoïde apparait quand je débranche le mic de l'entrée analogique mais ça tombe à 0 dès que je le rebranche, même quand je me le cogne sur la tête.

++ ;)

Philk: ...une sinusoïde apparait quand je débranche le mic de l'entrée analogique ...

Pour que la sinusoïde soit détectée, elle doit avoir une amplitude crête de 5 mV au minimum (résolution du CAN).

Placez cette instruction dans le setup() :

pinMode(mic1, INPUT);

Mais normalement les voies analogiques sont en entrée par défaut.

Cordialement.

Pierre

5 mV : je pense que le problème vient de là. Les micros dynamiques, d'après les infos que j'ai trouvées sur internet, ne délivrent que des tensions inférieures à cela.

Par contre, j'ai bien des transitoires sur le traceur quand je remplace le micro par une petit HP de 30 mm (trouvé sur un jouet HS). C'est donc que c'est possible. Sans doute est-ce mon micro qui délivre une tension trop faible qui nécessiterait une amplification en amont. La question est donc quel cellule de micro dynamique faut-il pour faire ça ?

Je ne veux pas utiliser de piézo parce que, justement, ça demande une alimentation. Idem pour les micro à électrets.

++ ;)

Il y a peut-être une solution pour réduire le pas de quantification (je ne l'ai pas essayée) : Utiliser la borne AREF en lui appliquant une tension de l'ordre de 0.5 V en faisant un pont diviseur avec deux résistances :

  • du +5V à AREF : 10 kOhms
  • de AREF à GND : 1 kOhms ainsi le pas de quantification passe à 0.5 mV ; la précision doit s'en prendre un grand coup, mais dans votre application, cela n'a pas d'importance. Dans le setup(), ajoutez l'instruction :
analogReference(EXTERNAL);

Cordialement.

Pierre

Philk: 5 mV : je pense que le problème vient de là. Les micros dynamiques, d'après les infos que j'ai trouvées sur internet, ne délivrent que des tensions inférieures à cela.

Par contre, j'ai bien des transitoires sur le traceur quand je remplace le micro par une petit HP de 30 mm (trouvé sur un jouet HS). C'est donc que c'est possible. Sans doute est-ce mon micro qui délivre une tension trop faible qui nécessiterait une amplification en amont. La question est donc quel cellule de micro dynamique faut-il pour faire ça ?

Je ne veux pas utiliser de piézo parce que, justement, ça demande une alimentation. Idem pour les micro à électrets.

Bonjour,

Un micro électrodynamique peut, sans alimentation continue, délivrer un signal alternatif d'amplitude très faible.

Un petit HP de récup peut faire sensiblement la même chose avec comme différence : - L'amplitude sera plus élevée - La fidélité de reproduction sera très inférieure.

Dans le principe tenter, d'exploiter directement un signal alternatif de faible amplitude directement sur une entrée analogique arduino est très peu fiable voire pas possible.

Comme issues : 1- Amplifier le signal variable avec un simple transistor associé à quelques composants et alimenté par le 5V arduino. On peut multiplier par 10 ou même un peu plus l'amplitude. 2- Utiliser un transfo spécifique élévateur de tension en espérant que cela sera suffisant.

Dans l'environnement arduino perso je préfère la solution 1. (préampli classe A à transistor ce qui nous ramène à une technologie de plusieurs dizaines d'années) Ou bien utiliser un AOP linéaire associé a quelques composants. Dans les deux cas le +5V de l'arduino est bien suffisant pour alimenter les quelques mA du préamplificateur. Serge .D

Merci pour ces réponses.

Vu que tout ça dépasse un peu mes capacités actuelles en électronique, je mets ce projet en attente le temps d'en savoir un peu plus.

Je reviens dès que possible :)

++ ;)