Aller au contenu

Activité 3 - Ondes mécaniques

1. Types d’ondes, matière et énergie⚓︎

  • Animation d'introduction au principe d'ondes : elle permet de créer des ondes avec de l'eau, du son et de la lumière. Cela permet de faire le lien entre l'onde mécanique et l'onde électromagnétique. De plus, elle nous permettra de discutez des propriétés pour mettre en avant le vocabulaire adéquat.

  • Animation SimulaCORDE montrant la propagation d'une onde transversale.

  • Animation SimulaSON montrant la propagation d'une onde longitudinale (ici la propagation du son).

2. Représenter une onde mécanique périodique progressive⚓︎

En l'absence de logiciel permettant l'interprétation d'un programme python (ex: édupython), on peut utiliser des outils en ligne comme ce compileur.

On utilisera ici le programme suivant :
🐍 Script Python
from pylab import *
import matplotlib.pyplot as plt

print("")
print("*************************************")
print("* Propagation d'une onde périodique *")
print("*  Mouvements en fonction du temps  *")
print("*************************************")
print("")

## Données non modifiables
L=30            # longueur totale de la cuve en cm
tmax=250        # date de fin en ms
Amax=10         # amplitude maximale en mm

## Valeurs de l'onde de référence
A0=5
T0=50
v0=40

###########################
### Données modifiables ###
###########################

##Valeurs modifiables pour déterminer les paramètres d'influence d'une onde mécanique périodique progressive
A=5  # amplitude en mm (entre 0 et Amax)
T=50  # période en ms (entre 10 et 100)
v=50     # célérité en cm/s (entre 10 et 100)



### Test pour les valeurs
probleme=[]
if T<10 or T>100:
    probleme.append("T doit être comprise entre 10 ms et 100 ms")
if v<10 or v>100:
    probleme.append("xM doit être comprise entre 0 m et",L,"cm")
if A<=0 or A>Amax:
    probleme.append("A doit être comprise entre 0 mm et",Amax,"mm")
if len(probleme)!=0:
        for i in range(len(probleme)):
                print(probleme[i])
        sys.exit("Modifiez les paramètres et réessayez")

### Affichage des paramètres
print("Amplitude de l'onde de référence : A =",round(A0,1),"mm")
print("Période de l'onde de référence : T =",round(T0,1),"ms")
print("  d'où la fréquence f =",round(1000/T0,1),"Hz")
print("Célérité de l'onde de référence : v =",round(v0,1),"cm/s")
print("  d'où la longueur d'onde de l'onde : lambda =",round(v0*T0/1000,1),"cm")
print("")

print("Amplitude de l'onde modifiable : A =",round(A,1),"mm")
print("Période de l'onde modifiable : T =",round(T,1),"ms")
print("  d'où la fréquence f =",round(1000/T,1),"Hz")
print("Célérité de l'onde modifiable : v =",round(v,1),"cm/s")
print("  d'où la longueur d'onde de l'onde : lambda =",round(v*T/1000,1),"cm")
print("")

### Définition de t (500 points)
t=linspace(0,tmax,500)

### Définition de la fonction périodique de référence
def y0(t):
    return 0.56*A0*(sin(2*pi*t/T0))

### Définition de la fonction périodique modifiable
def y(t):
    return 0.56*A*(sin(2*pi*t/T))

### Définition des graphiques
fig=figure()
gcf().subplots_adjust(hspace=0.7)

### Graphique à la source
fig.add_subplot(2,1,1)
plt.plot(t,y0(t),'-b',label="Référence")
plt.plot(t,y(t),'-r',label="Modifiée")
plt.title("y(t) à la source")
plt.xlabel("t (en ms)")
plt.ylabel("y (en mm)")
plt.legend(loc='upper right')
plt.grid(True)
plt.ylim(-Amax,Amax)
plt.xlim(0,tmax)

### Affichage
plt.show()

3. Principe d'un sonar⚓︎

Il faudra compléter les données ou formules manquantes dans le programme ci-dessous pour pouvoir utiliser le microcontrôleur comme sonar.

On utilisera ici le programme suivant :
Arduino
#include <Wire.h>     // inclure la bibliothèque permettant la communication par le protocole I2C
#include "rgb_lcd.h"  // inclure la bibliothèque pour l'écran LCD

rgb_lcd lcd;   // création d'un objet lcd

// Définition des fiches émetteur et récepteur
const int emetteur=A0;
const int recepteur=A1;
// Typage des grandeurs duree et distance
float duree, distance;
// Valeur de la célérité en millimètres par microseconde (µs) à compléter
const float vitesse=;// <----- À COMPLÉTER

void setup()
{
Serial.begin(9600);
// Initialisation des fonctions d'émission et réception
pinMode(emetteur, OUTPUT);
pinMode(recepteur, INPUT);
digitalWrite(emetteur, LOW);
lcd.begin(16, 2);
}


void loop()
{
// Déclenchement de l'envoi de l'onde : émetteur en état haut...
digitalWrite(emetteur, HIGH);
// ... pendant 10 µs
delayMicroseconds(10);
// Fin du signal d'envoi de l'onde : émetteur en état bas
digitalWrite(emetteur, LOW);
// Durée d'aller-retour du son en microsecondes (µs)
duree = pulseIn(recepteur, HIGH);

// Calcul de la distance en millimètres
distance = ;//<----- à compléter
// Fin des choses à compléter

// Écriture série de la distance mesurée
Serial.print("distance = ");
Serial.print(distance,0);
Serial.println(" mm");
// Affichage de la pression sur l'écran LCD
lcd.clear();   // effacer l'écran
lcd.setCursor(0, 0);  // mettre le curseur à la première colonne, première ligne
lcd.setColor(0); // mettre un fond coloré blanc
lcd.print("d = ");
lcd.print(distance,2);   //0 pour 0 décimale, 2 pour 2 décimales
lcd.print(" mm");
// Attente avant la mesure suivante, en millisecondes
delay(1000);
}

Si besoin, il est possible de s'aider de la fiche d'accompagenement proposée par le manuel.