Electronique > Les bases

6/ Vu mètre

Nous allons nous servir de la base du chenillard réalisé lors du précédent article.

L'objectif est d'arriver à ce résultat : 

Le module détecteur de son.

Pour arriver à ce résultat, nous allons utiliser un module microphone capteur de détection.
Ce module est composé :

  • d'un micro electret,
  • d'un potientiometre pour affiner la sensibilité,
  • d'une sortie numérique.
  • d'une sortie analogique.

Dans ce montage nous allons utilisé la sortie analogique du microphone. La sortie numérique pourrait être utilisé par exemple dans un détecteur de clap.

L'entrée analogique de l'arduino.

A la différence d'une entrée numérique qui peux prendre que 2 états logiques (0 : bas ou 1 : haut), une entrée analogique peux prendre une infinité de valeur sur une durée (de 0 à 5V).

La valeur analogique va etre transformé en valeur numérique grâce à convertisseur analogique / numérique (CAN) présent dans l'arduino.

On lit la valeur analogique grâce à la fonction : analogRead(PIN). Cette fonction va nous retourner une valeur entière entre 0 (0V) et 1023 (5V).

Donc on peux avoir 1023 valeurs sur la plage 0-5V ce qui donne une précision de notre CAN de 4,88mV (5/1023). 

Le schéma.

La partie LED est identique au montage chenillard (sauf qu'on utilise D2 à D7).
On branche la patte G du microphone au GND de l'arduino.
On branche la patte + du microphone au +5V de l'arduino.
On branche la patte A0 du microphone au A0 de l'arduino.

Le branchement sur Breadboard.

Le programme.

int microAnalog,mini;

void setup() {
  // on défini les broches de 2 à 7 en sortie.
  for(int i=2;i<=7;i++) {
    pinMode(i, OUTPUT); 
  }

  // On fait un échantillonnage sur le bruit ambiant
  // pour définir la valeur mini qui correspond à toutes
  // les LEDs éteintes.
  mini=1024;
  for(int i=0;i<=20;i++) {
    // on lit la valeur analogique du microphone
    microAnalog = analogRead(0);
    delay(1);

    if(microAnalog<mini)
      mini=microAnalog;
  }

  // on allume les 6 LEDs pour signaler que l'échantillonnage est terminé
  for(int i=2;i<=7;i++) {
    digitalWrite(i, HIGH);
  }
  delay(1000);
}

void loop() {
  delay(1);
  // on lit la valeur analogique du microphone
  microAnalog = analogRead(0);

  //on éteint les 6 LEDS.
  for(int i=2;i<=7;i++) {
    digitalWrite(i, LOW);
  }

  // en fonction du niveau on allume les LEDS.
  if(microAnalog>mini)
    digitalWrite(2, HIGH);
  
  if(microAnalog>mini+1)
    digitalWrite(3, HIGH);
  
  if(microAnalog>mini+2)
    digitalWrite(4, HIGH);
  
  if(microAnalog>mini+3)
    digitalWrite(5, HIGH);
  
  if(microAnalog>mini+4)
    digitalWrite(6, HIGH);
  
  if(microAnalog>mini+5)
    digitalWrite(7, HIGH);
}

La petite difficulté de ce programme est la partie sur l'échantillonnage. En effet en fonction de la position du potentiomètre du microphone et du bruit ambiant, la valeur analogique aura une valeur différente. 
C'est pour cela qu'au démarrage du programme, on mesure la valeur analogique mini (sur 21 mesures). Et on utilise cette valeur mini en référence pour allumer les leds.