J'ai reçu il y a peu un microphone MEMS de chez Adafruit (celui-là pour être précis).
J'ai beau le tester, il y a plusieurs choses qui ne vont pas :
Ce n'est absolument pas réactif : la valeur du capteur varie de 10/20 en criant dessus, cela varie un peu plus lorsque je tapote dessus mais ce n'est pas le but, je veux interagir avec la voix !
La valeur du capteur,diminue avec le temps et perd 1 à chaque seconde
Je sais que le micro n'est pas amplifié mais la démo sur la vidéo Adafruit (à 7min12) montre le capteur sans amplification, et ça marche très bien !
Et le code que j'utilise (simplement, que l'éclairage d'une led soit proportionnel au volume sonore) :
const int analogInPin = A0; // Analog input pin that the potentiometer is attached to
const int analogOutPin = 9; // Analog output pin that the LED is attached to
int sensorValue = 0; // value read from the pot
int outputValue = 0; // value output to the PWM (analog out)
void setup() {
// initialize serial communications at 9600 bps:
Serial.begin(9600);
analogReference(EXTERNAL);
}
void loop() {
// read the analog in value:
sensorValue = analogRead(analogInPin);
// map it to the range of the analog out:
outputValue = map(sensorValue, 0, 1023, 0, 255);
// change the analog out value:
analogWrite(analogOutPin, outputValue);
// print the results to the serial monitor:
Serial.print("sensor = ");
Serial.print(sensorValue);
Serial.print("\t output = ");
Serial.println(outputValue);
// wait 2 milliseconds before the next loop
// for the analog-to-digital converter to settle
// after the last reading:
delay(2);
}
trimarco232, pepe : merci pour vos conseils (et je ne tapoterais plus sur mon micro, promis
Avec analogReference(INTERNAL), ça marche un peu mieux mais ça marche bien mieux avec les deux résistances, une de 2,7kΩ entre 3V et AREF et une seconde de 1kΩ entre AREF et GND.
Par contre, le problème de stabilisation demeure : lorsque je lance le moniteur série, la valeur du capteur indique environ 880 et bien une bonne minute à se stabiliser à 720. Après, quand je fais du bruit : cette valeur oscille plus ou moins fortement autour de 720.
C'est le fonctionnement normal à votre avis ? Je pensais que cette valeur allait simplement augmenter avec la volume sonore…
Note : j'ai mappé la valeur du capteur et l'ai également contrainte :
Avec analogReference(INTERNAL), ça marche un peu mieux mais ça marche bien mieux avec les deux résistances, une de 2,7kΩ entre 3V et AREF et une seconde de 1kΩ entre AREF et GND.
Il n'y a pas un blème là ?
Qu'elle est la tension sur Aref ?
Moi je trouve 3,3V * 1k /(2,7k + 1k) = 0,89V.
Or dans la datasheet je lis que Vref ne doit pas être inférieur à 1 V,
En lisant entre les lignes on comprend que Vref ne doit pas être inférieur à la valeur minimale que peut prendre la référence interne qui est donnée à 1,1 V +/- 0,1 V
C'est un fonctionnement hors spec donc non garanti. Ce qui est génant avec les fonctionnements en zone hors spec c'est qu'il peut y avoir des effets secondaires imprévisibles.
@pepe@68tjs : merci à vous deux pour vos contributions.
Habituellement, Arduino pour moi c'est surtout du plug'n play et je découvre là mes limites en ce qui concerne.
Pour l'instant, ce capteur n'est pas utilisable pour ce que je veux faire : il est réactif certes mais devoir attendre 1 bonne minute pour qu'il se stabilise, c'est un peu rédhibitoire…
Après, je pourrais l'amplifier avec un bidule là, LM386… mais c'est un peu difficile pour moi l'électronique (je débute
Bien, on peut clore le débat sur le fait que ce capteur est une belle merde dans la mesure où il est présenté comme accessible aux newbees et bricoleurs sur Arduino, alors que pour avoir un résultat probant il vaut mieux s'y connaitre en électronique…