Go Down

Topic: Pb capteur de son (Read 743 times) previous topic - next topic

Deadlu17

Nov 19, 2019, 09:30 pm Last Edit: Nov 19, 2019, 09:32 pm by Deadlu17
Bonjour à tous,

Je vous consulté car malgré mes nombreuses recherche je n'ai pas trouvé de réponse..

J'essaie de faire fonctionner un vu metre à aiguille à l'aide d'un arduino et d'un capteur de son

Mon code est bon puisque je l'ai testé avec un capteur de lumière et je lis bien la valeur du capteur sur l'entrée A0.

Mais lorsque j'utilise le capteur de son sur sa sortie A0, la valeur lu par l'arduino ne varie que de 500 à 510 tout au plus.

Avez vous déjà été confronté à ce problème ?

Merci d'avance pour votre aide

elektrax

#1
Nov 20, 2019, 02:51 am Last Edit: Nov 20, 2019, 02:51 am by elektrax
comment as tu cablé le module son A0 D0 G + ?
A0 est une sortie alternative, les entrées CAN (ADC en anglais) sont prévues pour recevoir du continu entre 0 et 5 volts, normal environ 500 sur l'arduino : tension alternative moyenne de la sortie A0 du module = environ 2,5 volts

J-M-L

#2
Nov 20, 2019, 09:41 am Last Edit: Nov 20, 2019, 09:46 am by J-M-L
votre image


A0 est une sortie alternative
@elektrax --> ce module a un amplificateur (et comparateur) et la sortie A0 est toujours positive, directement utilisable sur un Arduino

Hello - Please do not PM me for help,  others will benefit as well if you post your question publicly on the forums.
Bonjour Pas de messages privés SVP, postez dans le forum directement pour que ça profite à tous

Deadlu17

#3
Nov 20, 2019, 11:26 am Last Edit: Nov 20, 2019, 11:27 am by Deadlu17
Je suis câblé de cette manière


Le potentiomètre n'agit que sur l'OFFSET mais pas sur la sensibilité

Mon code (de mémoire car je ne suis pas chez moi):

Code: [Select]

int LED : 3;
int Son : A0;
int ValeurSon;
int ValeurLED;

void Setup{

pinMode (LED, OUTPUT);

Serialbegin(9600);
}

voidloop{

ValeurSon = AnalogRead(Son);

Serial.print(ValeurSon);

ValeurLED = map (ValeurSon, 0, 1023, 0, 255);
}




Merci pour votre aide

J-M-L

#4
Nov 20, 2019, 11:28 am Last Edit: Nov 20, 2019, 12:15 pm by J-M-L
Votre image:



le potentiomètre agit pour le comparateur et la sortie Numérique D0, si vous n'utilisez que la valeur analogique (numérisée), pas la peine de cabler D0

Le code est très approximatif :)

essayez avec ce code:
Code: [Select]
const byte pinMicro = A0;

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

void loop()
{
  Serial.println(analogRead(pinMicro));
}
en ouvrant la console série à 115200 bauds, pas la peine d'aller lentement...
Hello - Please do not PM me for help,  others will benefit as well if you post your question publicly on the forums.
Bonjour Pas de messages privés SVP, postez dans le forum directement pour que ça profite à tous

lesept

Oui, on voit bien deux sorties sur le module : A0 qui fournit un signal analogique et D0 un signal digital. Le premier donne l'amplitude du son, le second indique une détection de son, par le dépassement d'un seuil d'amplitude qui doit être réglable grâce à la vis sur le potentiomètre bleu clair (datasheet)

Donc pour une mesure de l'amplitude du son, il faut brancher la sortie A0 sur une entrée analogique de l'arduino et faire un analogRead
A force d'essayer on finit par réussir... Donc, plus ça rate, plus on a de chances que ça marche (proverbe Sharduinok).

Deadlu17

oui pardon, le schéma je l'ai trouvé sur google. Je n'utilise que la sortie A0 et non D0.

Mon code est approximatif car je ne suis pas un expert et je l'ai fait de tête.

Dans mon code, je fais bien un analog Read mais le problème c'est que.. imaginons:

Aucun bruit: AnalogRead: 500
beaucoup de bruit : 505

ca donne ca quand il n'y aucun bruit puis beaucoup puis plus rien:

500  Aucun bruit
500  Aucun bruit
500  Aucun bruit
502  Bruit
503  Bruit
500  Bruit
505  Bruit
498  Bruit
500  Aucun bruit
500  Aucun bruit
500  Aucun bruit

Je n'ai que très peu de différence entre bruit et pas bruit. Il est la mon problème..

J'ai pensé à une panne du capteur donc je l'ai renvoyé et commandé un autre mais même soucis..

Artouste

#7
Nov 20, 2019, 05:05 pm Last Edit: Nov 20, 2019, 05:10 pm by Artouste
oui pardon, le schéma je l'ai trouvé sur google. Je n'utilise que la sortie A0 et non D0.

Mon code est approximatif car je ne suis pas un expert et je l'ai fait de tête.

Dans mon code, je fais bien un analog Read mais le problème c'est que.. imaginons:

Aucun bruit: AnalogRead: 500
beaucoup de bruit : 505

ca donne ca quand il n'y aucun bruit puis beaucoup puis plus rien:

500  Aucun bruit
500  Aucun bruit
500  Aucun bruit
502  Bruit
503  Bruit
500  Bruit
505  Bruit
498  Bruit
500  Aucun bruit
500  Aucun bruit
500  Aucun bruit

Je n'ai que très peu de différence entre bruit et pas bruit. Il est la mon problème..

J'ai pensé à une panne du capteur donc je l'ai renvoyé et commandé un autre mais même soucis..

Bonjour
ce genre de module est basé sur un simple comparateur (double) LM393
le capteur dans ton cas est un micro electret
la sortie DO est fonction du basculement du comparateur

ce basculement entre niveau haut et bas est fonction du niveau fourni par le micro electret (niveau en mv ) et la reference imposé au comparateur par le potentiometre de réglage du seuil
la sortie DO ne peut prendre que 2 états haut ou bas

la sortie AO elle est simplement une recopie electrique du niveau electrique fournie par le micro
cette "tension" alternative  pour le  micro est de l'ordre de qq mV (~10/20 mV) en +/- centrée sur 2.5V

Tu ne pourra pas utilement exploiter cette tension en utilisant une entrée analogique de l'arduino
avec la reference de base du convertiseur AD  (Valim)
20 mV c'est +/- 5 pas du convertisseur AD en Aref 5V

en passant en Aref interne 1.1V tu peux espérer atteindre une petite 30taine de pas , mais il ne faut pas espérer grand chose de plus

al1fch

#8
Nov 20, 2019, 05:19 pm Last Edit: Nov 20, 2019, 05:22 pm by al1fch
Bonsoir

Pour l'application envisagée il faut passer à une autre type de capteur, celui çi par exemple ou un des ses clones ' (micro électret + amplificateur, avec une sortie à Vcc/2 lors des silences)
https://www.adafruit.com/product/1063


J-M-L

Quote
en passant en Aref interne 1.1V tu peux espérer atteindre une petite 30taine de pas , mais il ne faut pas espérer grand chose de plus
Attention le potentiomètre influence directement la valeur analogique que vous obtenez sur A0.

Donc si vous partez sur AREF à 1.1V il faut tourner le potar avant pour que la valeur ne soit plus dans les 500, mais plutôt 30 (si vous descendez trop bas ça ne marche plus).

--> mais comme il n'y a pas d'amplification, la variation restera minime de toutes façons

Hello - Please do not PM me for help,  others will benefit as well if you post your question publicly on the forums.
Bonjour Pas de messages privés SVP, postez dans le forum directement pour que ça profite à tous

kamill

Attention le potentiomètre influence directement la valeur analogique que vous obtenez sur A0.
Le potentiomètre agit sur la tension du comparateur, mais je ne pense pas qu'il agisse sur la tension de sortie (il n'y a pas d'ampli).

al1fch

#11
Nov 20, 2019, 06:59 pm Last Edit: Nov 20, 2019, 07:04 pm by al1fch
le schéma (entrevu et à retrouver)  tordu.... le potentiomètre forme un pont diviseur auquel aboutit la sortie du microphone  et l'entrée du comparateur , on agit donc sur le seuil ET sur la composante continue du signal A0 , (il modifie la polarisation de l'électret)

J-M-L

#12
Nov 20, 2019, 07:06 pm Last Edit: Nov 20, 2019, 07:08 pm by J-M-L
Oui tout a fait, il agit donc sur la valeur fournie par la pin analogique.

Donc  Si vous avez une AREF à 1.1V il faut s'assurer que cette pin ne donne pas "500" en 5V (soit ~2.4V) sinon le micro donner toujours une lecture au max (1023) en 1.1V.

Hello - Please do not PM me for help,  others will benefit as well if you post your question publicly on the forums.
Bonjour Pas de messages privés SVP, postez dans le forum directement pour que ça profite à tous

al1fch

#13
Nov 20, 2019, 07:15 pm Last Edit: Nov 20, 2019, 07:34 pm by al1fch
l'influence du potentiometre sur l'amplitude crête à crête du signal A0 est probablement faible (légère atténuation variable),  mais il assure une translation significative du signal A0

J-M-L

Pour en avoir le coeur net,  j'ai sorti mon composant qui a l'air identique, avec le code
Code: [Select]
const byte pinMicro = A0;

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

void loop()
{
  Serial.println(analogRead(pinMicro));
  delay(200);
}

en tournant le potentiomètre (et sans faire de bruit particulier) je réussi à faire descendre la valeur affichée à 12 et monter à 1020.

donc oui grosse translation mais pas d'amplification bien sûr

Hello - Please do not PM me for help,  others will benefit as well if you post your question publicly on the forums.
Bonjour Pas de messages privés SVP, postez dans le forum directement pour que ça profite à tous

Go Up