Calcul de la vitesse du son avec Arduino

Un projet simple de physique expérimentale


SECONDAIRE | DIFFICULTÉ MOYENNE | 1 À 2 HEURES

Résumé de l'activité


Voici une activité passionnante de physique expérimentale avec Arduino !
Le son peut être défini comme la vibration mécanique d'un fluide, qui se propage sous forme d'ondes [...] grâce à la déformation élastique de ce fluide (Wikipédia).
En résumé, tout comme l'onde qui se propage au fil de l'eau lorsque vous y jetez un caillou, l'onde sonore, ou accoustique, se déplace dans l'air (ou tout autre fluide, liquide ou gazeux) sous forme de compressions régulières de ce fluide (voir illustration ci-contre).
Plus les compressions se succèdent rapidement, plus la fréquence du son est élevée, donc le son perçu aigu. Plus elles sont lentes, plus la fréquence est basse et le son grave.
Entre 2 zones de compressions existe une zone de dépression du fluide. Plus le son est fort, plus la pression du fluide sera élevée dans la zone de compression, et basse dans la zone de dépression. Il y a par conséquent un bruit maximal, un son tellement fort que la pression du fluide est nulle dans la zone de dépression. Ce son maximal correspond à un niveau sonore supérieur à 150dB.
L'onde sonore a une vitesse propre, qui dépend de la densité du fluide dans lequel elle se déplace et sa température (2 paramètres qui influent sur la pression du fluide).
L'objectif de cette activité est d'appliquer une démarche scientifique afin de mesurer expérimentalement la vitesse du son dans l'air à température ambiante
Une démonstration de physique expérimentale très simple et très élégante qui sera des plus facile à mettre en place en classe ou à la maison avec un minimum de matériel.

  • Étape 1 : Mettre en place le système expérimental : montage électronique et programmation.
  • Étape 2 : Mettre en place le système expérimental : émetteur, récepteur et surface de réflexion du son.
  • Étape 3 : Effectuer des mesures automatiques du temps de réception d'un écho.
  • Étape 4 : Mesurer la vitesse du son grâce aux données recueillies par Arduino.

Objectif


L'objectif de cette activité est de vérifier la vitesse du son dans l'air en mesurant de façon précise, avec Arduino, les temps de réception d'un écho d'ultrason se répercutant sur un obstacle situé à différentes distances.

Il faudra mettre en place un protocole expérimental permettant d'émettre un signal ultrasonore et mesurer le temps mis pour recevoir son écho dans différentes conditions expérimentales et ce de façon automatisée.
Bon travail !

Matériel


  • Arduino
  • Capteur de distance
    Dans ce tutoriel, nous utiliserons le capteur de distance Sparkfun HC-SR04 qui a l'avantage d'être simple d'utilisation et très bon marché (moins de 4$ US chez Sparkfun)
  • Fils

Le capteur de distance fonctionne sur le principe de l'écholocalisation : il est équipé d'un émetteur et un récepteur ultrason, ce qui lui permet de détecter des obstacles distants à la manière des chauves-souris ou des cétacés. Il peut être programmé pour émettre un court ultrason et calculer le temps de reception de son écho, qui est fonction de la distance de l'obstacle et de la vitesse du son.




Mise en place du protocole expérimental

Montage electronique

schéma
Vous remarquerez que le câblage est on ne peut plus simple : un Arduino et un capteur de distance !
Les pins "vcc" et "GND" du capteur de distance seront branchées sur 5V et ground respectivement. La pin "Trig" (émetteur) sera branché sur la prise 13 de l'Arduino, et la pin "Echo" (récepteur) sur la prise 12 de l'Arduino..

Un peu de code...




//Calcul de la vitesse du son avec Arduino
//Affichage du temps de reception d'un écho

int emetteur = 13;  //branché sur trig du HC-SR04
int recepteur = 12; //branché sur echo du HC-SR04
long dureeEcho;    //variable type long  

void setup() {
  Serial.begin (9600);
  pinMode(emetteur, OUTPUT); 
  pinMode(recepteur, INPUT);
}

void loop() {
  //Émission d'un pulse ultrason sur la pin 13: emetteur allumé pour 10 microsecondes
  digitalWrite(emetteur, HIGH);
  delayMicroseconds(10); // Added this line
  digitalWrite(emetteur, LOW);

  //Mesure du temps de reception de l'écho sur la pin 12
  dureeEcho = pulseIn(recepteur, HIGH);

  //Affichage du temps, rafraichi toutes les 200ms
  Serial.println(dureeEcho);
  delay (1000);
}


Dans un premier temps nous déclarons les variables.

  • Les variables "emetteur" et "recepteur" dans lesquelles seront déclarés les numéros de pin utilisées respectivemnent par "Trig" et "Echo" du capteur HC-SR04.
  • La variable "dureeEcho" de type long dans laquelle sera stocké le temps écoulé entre deux réceptions de l'écho.

Puis vient la partie d'initialiation : le void setup.

Très simple, il ne comporte que trois lignes :
  • Initialisation de la communication série qui nous permettra de lire la valeur de "dureeEcho", c'est à dire le temps mis par l'écho pour parvenir au récepteur.
  • Initialisation de la pin "emetteur" (pin 13) en sortie (afin de produire un signal sonore).
  • Initialisation de la pin "recepteur" (pin 12) en entrée (afin de recevoir un signal sonore).

Et pour finir, la boucle principale : le void loop.

  • Les trois premières lignes permettent d'émettre un pulse ultrason :
    1. La pin "emetteur" est mis à l'état HIGH : l'émetteur du capteur produit un ultrason.
    2. Pause de 20 microsecondes
    3. La pin "emetteur" est mis à l'état LOW : l'émetteur du capteur ne produit plus d'ultrason.

    En résumé, nous venons d'émettre une onde sonore à très haute fréquence (domaine des ultrasons) durant 20 microsecondes.

  • La variable "dureeEcho" prend la valeur de "pulseIn (emetteur, HIGH)".
    La fonction pulseIn permet de mesurer une durée d'impulsion.

    En résumé, la pin nommée "recepteur" va se mettre à l'écoute d'un signal (état HIGH). Lorsqu'elle aura atteint l'état demandé (HIGH), le programme va compter le temps écoulé (en microsecondes) jusqu'à ce que la pin perde son état (donc retourne à LOW). Pour plus de détails, consultez ceci.
    La variable "dureeEcho" correspond donc au temps écoulé entre 2 états HIGH de la pin "recepteur", soit 2 réceptions de signal. Ce qui correspond à un aller-retour de l'onde sonore entre l'émetteur et l'obstacle.

  • Affichage du "pulseIn" dans le moniteur série.
  • Délai d'une seconde (1000ms) entre 2 affichages de mesure.

Vous pouvez maintenant brancher votre arduino et téléverser le programme.

Cliquez sur la loupe en haut à droite de la fenêre Arduino pour faire apparaître le moniteur série. Par défaut il sera réglé sur le débit de 9600 bauds.
Vous verrez alors dans la nouvelle fenêtre une succession de nombre : c'est le temps de réception de l'écho, en microsecondes, rafraichi toutes les secondes (la variable "dureeEcho")



Nous venons de mettre en place un programme permettant d'afficher le temps de parcours d'une onde sonore.

Comment déterminer la vitesse du son avec ce montage ?




Mise en place de l'expérience


Nous allons mesurer le temps de parcours de l'écho pour plusieurs distances. Il faudra donc positionner un obstacle face au capteur de distance.
J'ai choisi les distances capteur-obstacle suivantes :

  • 50 cm
  • 100 cm
  • 150 cm

Étant donné que nous mesurons le temps mis par l'écho pour parvenir au récepteur, la distance parcourue par l'onde sonore sera le double (un aller-retour), soit :

  • 100 cm
  • 200 cm
  • 300 cm

Positionnez l'obstacle à la distance souhaitée puis démarrez l'expérience en ouvrant la fenêtre du moniteur série (pour rappel, il s'agit d'appuyer sur la loupe en haut à droite de la fenêtre Arduino).
Vous verrez s'afficher dans cette fenêtre le temps, en microsecondes, mis par l'onde sonore pour faire un aller-retour entre le capteur et l'obstacle.
Les données devraient être relativement stables, particulièrement pour les plus courtes distances.
Notez 5 valeurs parmi les données recueillies, dans chaque condition.
Voici un exemple :


schéma expérimental

J'ai sélectionné les valeurs maximales et minimales ainsi que celles qui semblent le plus représentatives. Il se peut que vos valeurs soient beaucoup plus constantes que cela.
Passons maintenant à l'interprétation des données !


Analyse des résultats



Mesure du temps de parcours de différentes distances par l'onde sonore


Valeur 1 Valeur 2 Valeur 3 Valeur 4 Valeur 5 Moyenne
Distance de l'obstacle (50cm) 3102 3077 3078 3053 3076 3077,2
Distance de l'obstacle (100cm) 5824 5847 5831 5854 5828 5836,8
Distance de l'obstacle (150cm) 8666 8693 8641 8674 8700 8674,8
Tableau : Mesure du temps de parcours (en microsecondes) de différentes distances par une onde sonore.


Le tableau suivant résume les résultats précédents, c'est à dire les distances et les temps de parcours moyens obtenus dans mes conditions :

Distance de l'obstacle (cm) 50 100 150
Distance parcourue par l'onde sonore (cm) 100 200 300
Durée moyenne du parcours (microsecondes) 3077,2 5836,8 8674,8
Tableau : Mesure du temps de parcours de différentes distances par une onde sonore.

Calcul de la vitesse du son


Un calcul de vitesse s'exprime comme suit :

$$v\quad =\quad \frac { d }{ t } $$

Avec :

  • v = vitesse (m/s)
  • d = distance parcourue par l'onde sonore (mètres - m)
  • t = temps de parcours (secondes - s)

A partir de cette formule et du tableau précédent, pour les 3 distances, nous calculons :


Distance 1 : 100cm


    Avec :
  • d = 1 mètre
  • t = 3077,2 microsecondes, soit
    t = 0,0030772 secondes
$$v\quad =\quad \frac { d }{ t } \\ v\quad =\quad \frac { 1 }{ 0,0030772 } \\ \\ v\quad =\quad 325\quad m/s$$

Distance 2 : 200cm


    Avec :
  • d = 2 mètre
  • t = 5836,8 microsecondes, soit
    t = 0,0058368 secondes
$$v\quad =\quad \frac { d }{ t } \\ v\quad =\quad \frac { 2 }{ 0,0058368 } \\ \\ v\quad =\quad 342\quad m/s $$

Distance 3 : 300cm


    Avec :
  • d = 3 mètre
  • t = 86748 microsecondes, soit
    t = 0,0086748 secondes
$$v\quad =\quad \frac { d }{ t } \\ v\quad =\quad \frac { 3 }{ 0,0086748 } \\ \\ v\quad =\quad 345\quad m/s$$


Soit une vitesse du son moyenne de :

$$v\quad \quad =\quad \frac { 325\quad +\quad 342\quad +\quad 345 }{ 3 } \\ \\ \\ \\ \\ v\quad \quad =\quad 337\quad m/s$$
Pour une valeur théorique, à 20° au niveau de la mer, de 340 m/s !!
Pas mal !!


BRAVO, VOUS AVEZ FINI ! ;)
Encore une fois, Arduino me surprend toujours pour le potentiel qu'il offre pour mettre en place de si belles et élégantes démonstrations avec si peu de matériel !
Et quelle précision !
Laissez un commentaire ci-dessous si vous avez aimé / pas aimé / compris / rien compris !


Commentaires ?