Des sketchs à ajouter à ArdPyLog


Voici de nouveaux sketchs à ajouter à la base de données d’ArdPyLog.


1. TP_Vitesse_Son
(Détermination de la vitesse du son dans l’air à l’aide
d’un capteur ultrasonique – Catégorie:
Ondes ultrasonores)

 

Dans cette activité, nous allons déterminer expérimentalement la vitesse de propagation des ondes sonores en mesurant, à l’aide d’un capteur à ultrasons, le HC-SR04, la durée de propagation Dt de l’onde sonore entre l’émetteur et le récepteur situés à une distance d connue d’un obstacle.

Les mesures des durées de propagation Dt de l’onde sonore entre l’émetteur et le récepteur commencent après un appui sur le bouton poussoir et sont arrêtées en appuyant de nouveau sur celui-ci.

Le programme

Voici le code de l’activité :

// Déclaration des constantes et variables

int TRIGGER_PIN = 8;
int ECHO_PIN = 9;
const int PinButton = 7;

const unsigned long MEASURE_TIMEOUT = 25000UL;

int ValButton = 0;
int OldValButton = 0;
int State = 0;
int OldState = 0;

long DtMesure = 0;
long Dt = 0.0;
int Distance = 0;


// Initialisation des entrées et sorties

void setup()
{
Serial.begin(9600);

pinMode(PinButton,INPUT);
pinMode(TRIGGER_PIN, OUTPUT);
digitalWrite(TRIGGER_PIN, LOW);
pinMode(ECHO_PIN, INPUT);

Serial.println(”Appuyez sur le bouton poussoir pour mesurer la duree de propagation de l’onde sonore.”);
Serial.println();
}


// Fonction principale en boucle

void loop()
{
ValButton = digitalRead(PinButton);
delay(10);

if ((ValButton == HIGH)&&(OldValButton == LOW))
{
State=1-State;
}
OldValButton = ValButton;

if (State==1)
{
if (OldState == 0)
{
while(Distance<3 || Distance>200)
{
int Val=0;
char tampon[10]=””;
Serial.println(”Veuillez entrer la distance en cm entre le capteur et l’obstacle (valeur entre 3 et 200):”);
while(!Val)
{
delay(200);
Val=Serial.available();
}
for (int i=0; i < Val; i++)
{
tampon[i]=Serial.read();
delay(15);
}
Distance = atoi(tampon);
}
Serial.print(”Distance entre le capteur et l’obstacle = ”);
Serial.print(Distance); Serial.println(” cm”);Serial.println(””);
Serial.println(”Mesure de la duree de propagation de l’onde sonore en cours.”);
Serial.println(””);
Serial.println(”d (cm) ; Dt (microS):”);
OldState=1;
}

digitalWrite(TRIGGER_PIN, HIGH);
delayMicroseconds(10);
digitalWrite(TRIGGER_PIN, LOW);
Dt = pulseIn(ECHO_PIN, HIGH, MEASURE_TIMEOUT);

if (DtMesure != Dt)
{
Serial.print(Distance); Serial.print(” ; ”); Serial.println(Dt);
DtMesure = Dt ;
}
Serial.flush();
delay(100);
}
else
{
if (OldState == 1){
Serial.println(”Fin des mesures.”);
Serial.println(””);
Distance = 0;
OldState = 0;}
}
}

 

Déroulement du programme :

– Déclaration des constantes et variables :

– Initialisation des entrées et sorties :

– Fonction principale en boucle :


Il est donc possible d’acquérir des couples de données (Dt, d) afin de déterminer la vitesse du son dans l’air par le tracé de la caractéristique Dt=f(d):


et de modéliser la caractéristique Dt = f(d) :


On en déduit la vitesse de propagation de l’onde ultrasonore:

v = 2*d / Dt = 2 / a
v = 2 / 58,1 = 0,03442 cm/microS = 344,2 m/s