Mesure de la vitesse du son à l'aide d'un microcontroleur

Objectif

On détourne l'usage initialement prévu pour déterminer la vitesse de l'onde ultrasonore en mesurant le temps mis par l'onde pour parcourir une distance connue

MéthodePrincipe de la mesure

Il s'agit de connecter l'émetteur/récepteur d'ultrasons comme indiqué précédemment puis de placer un obstacle permettant la réflexion de l'onde.

On mesure le plus précisément possible la distance qui sépare le composant de l'obstacle en prenant comme référence les capsules protégées par la grille du capteur.

Cette valeur peut être entrée dans un programme en tant que variable. Le programme mesure le temps mis par l'onde pour effectuer un aller-retour et renvoie la valeur en microsecondes. Il est alors possible de calculer la vitesse du son et de l'afficher.

Pour afficher le résultat, on visualise sur les diodes, ou on affiche la valeur dans le REPL de l'éditeur Mu.

1
""" mesure vitesse du son"""
2
3
from microbit import *
4
from machine import time_pulse_us  #gestion des µs
5
6
def mesure_vitesse(distance):
7
    """ Calcule la vitesse du son en m/s distance est exprimée en cm """
8
    pin2.write_digital(1)          		 # pin2 au niveau haut pour démarrer une salve US
9
    sleep(10)                      		# salve de durée 10 ms
10
    pin2.write_digital(0)          		 # fin de l'impulsion
11
    pin2.read_digital()             		# configuration de pin2 en INPUT
12
    duree = time_pulse_us(pin2, 1) 	 # durée pdt laquelle le pin2 est à l'état haut depuis la ligne précédente =  durée de parcours de la salve en µs
13
    vitesse = 2 * distance / (duree/1000000) 
14
    vitesse = round(vitesse/100,1)  	# conversion en m/s(arrondie au dixième)
15
    return vitesse
16
17
DISTANCE = 50                       	# distance utilisée pour mesurer la vitesse du son, exprimée en cm !
18
19
while True:
20
    if button_a.was_pressed():  		# bouton A pour effectuer une mesure
21
        vitesse = mesure_vitesse(DISTANCE)
22
        print(vitesse)         			 # retour REPL dans la console de l'éditeur
23
        display.show("v="+str(vitesse)+" ", delay=500, loop=True, wait=False)