La loi des pendules avec Arduino au secondaire

Calcul de l'accélération de la pesanteur g avec Arduino


SECONDAIRE | DIFFICULTÉ MOYENNE | 1 À 2 HEURES

Résumé de l'activité


Voici une activité passionnante de physique expérimentale avec Arduino !
C'est en observant le balancement d'un lustre dans la cathédrale de Pise que Galillée eu l'idée de la loi des pendules simples et determina que la périodicité des mouvements d'un pendule est indépendante de sa masse.
L'objectif de cette activité est d'appliquer une démarche scientifique et expérimentale à la hauteur de celle de Galillée afin de calculer l'accélération de la pesanteur g à partir de la loi des pendules pesants.
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 : fabrication et installation du pendule.
  • Étape 3 : Effectuer des mesures automatiques et régulières de l'oscillation du pendule avec Arduino.
  • Étape 4 : Définir la période d'oscillation du pendule grâce aux données recueillies par Arduino.
  • Étape 5 : Traiter les données afin de calculer l'accélération de la pesanteur g.

Objectif


L'objectif de cette activité est de calculer l'accélération de la pesanteur g en déterminant la période d'oscillation d'un pendule pesant avec Arduino.
Il faudra mettre en place un protocole expérimental permettant de mesurer la position d'un pendule pesant en temps réel et ce de façon automatisée.
Finalement il faudra représenter l'oscillation du pendule de façon graphique afin de déterminer sa périodicité puis calculer g.
Bon travail !

Matériel


  • Arduino
  • Potentiomètre 10kΩ
  • Fils
  • Un morceau de bois de 60 à 70cm de long et de 3 à 5 cm de large, percé en son extrémité afin de pouvoir y insérer le bouton rotatif du potentiomètre


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 potentiomètre !
Les pins extérieures du potentiomètre seront branchées sur 5V et ground. La pin du milieu est la pin de signal et sera branchée sur la prise analogique A0.

Un peu de code...



int c = 0;                    //déclaration de la variable c : compteur 
                              //pour ne prendre qu'un certain nombre de mesures
int mesure = 0;               //délaration de la variable servant a stocker le signal lu

void setup() {
  Serial.begin (9600);        //démarrage de la communication série   
  }

void loop() {
  if (c<1000) {               //si (et tant que) le compteur est inférieur a 1000 mesures
    mesure = analogRead (A0); //on stocke la valeur analogique du potentiomètre dans la 
                              //variable mesure
    Serial.print(millis());   //on affiche le temps dans le moniteur serie, en milliseconde, 
                              //depuis le démarrage du programme
    Serial.print(",");        //on affiche une virgule pour séparer les valeurs
    Serial.println(mesure);   //on affiche la valeur ''mesure'' puis retour chariot 
    c++;                      //on incrémente le compteur (programme stop quand c=1000)
  }
}


Dans un premier temps nous déclarons les variables.

  • La variable mesure dans laquelle sera stockée la valeur lue par le potentiomètre.
  • La variable c : initialisation d'un compteur à 0, nous y reviendrons plus tard.

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

Très simple, il ne comporte qu'une seule ligne :
  • Initialisation de la communication série qui nous permettra de lire la valeur du signal analogique.

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

Éxecution conditionnelle du programme (if)
  • La condition qui doit obligatoirement êre remplie pour permettre l'éxecution du bout de programme compris entre les deux accolades du if est indiquée entre parenthèse : c < 1000. Nous y reviendrons un peu plus tard.
  • La valeur lue par la pin A0 (la tension aux bornes du potentiomètre) est stockée dans la variable mesure.
  • Le temps (en millisecondes) et la valeur lue par le potentiomètre (variable mesure) seront affichés dans le moniteur série, espacés par une virgule (fonction Serial.print).
    Les données seront donc formatées de la manière suivante : t(millis),mesure.
    Ce format nous permettra de séparer et trier facilement nos données dans Excel.
  • Le compteur est incrémenté de +1 (c++).
    Ainsi, à chaque fois que la condition c < 1000 est remplie, l'Arduino exécute la partie de programme comprise entre les 2 accolades du if. A chaque fois qu'il exécute cette partie de programme, la valeur de la variable c augmente de 1. Lorsque la variable c sera égale à 1000, la condition ne pourra plus être remplie et le programme s'arrêtera.
    Le programme va donc éxécuter 1000 fois la condition.



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 un message formatté de la manière suivante :
t(millis),mesure.
Faites tourner le potentiomètre pour voir la valeur mesure varier.
Vous remarquerez que le programme s'arrête rapidement : la variable c est maintenant égale à 1000 et la condition if ne peut plus être remplie.



Nous venons de mettre en place un programme permettant d'afficher une valeur analogique proportionnelle à la position du potentiomètre.
Comment déterminer la période d'un pendule avec ce montage ?



Mise en place de l'expérience


Insérez le potentiomètre dans le trou que vous avez percé dans la planche de bois.
Voilà, vous avez un pendule certes rudimentaire mais qui se balance convenablement.

Positionnez votre pendule à un peu plus de 45°. Ouvrez le moniteur dans le ogiciel Arduino dès que vous avez laché le pendule, afin d'enregistrer le plus de périodes possible.

NOTE : si vous éprouvez des difficultés à obtenir suffisament de données, il vous suffira d'augmenter le nombre de valeurs lues dans la condition if. Vous pourrez aller jusqu'à c < 5000.
Il pourra être nécessaire de maintenir le potentiomètre durant l'oscillation du pendule afin que ce dernier ne frotte pas trop contre votre surface de travail.


Passons maintenant à l'interprétation des données !


Analyse des résultats



Mesure de la période d'oscillation du pendule et calcul de g


Voilà, le pendule est stabilisé et vous êtes maintenant face à 1000 lignes de chiffres dans le moniteur série du logiciel Arduino !
Mais que, quoi, comment faire ? Procédons par étapes :

  1. Commencez par sélectionner toutes les valeurs puis copiez-collez les dans votre éditeur de texte favori (bloc-note sous windows, textedit sous OSX).
    Utilisez les raccourcis clavier :
    • Tout sélectionner : control + a (Windows) / cmd + a (OSX)
    • Copier : control + c (Windows) / cmd + c (OSX)
    • Coller dans votre éditeur de texte : control + v (Windows) / cmd + v (OSX)
  2. Enregistrez votre document au format .txt (exemple : data.txt).
  3. Changez l'extension du document pour l'extension .csv (exemple : data.csv).
    Pour ce faire, allez dans les propriétés du document (clique droit --> propriétés) puis modifiez l'extension.
    L'extension .csv signifie comma separated values. C'est un format de fichier qui permet de séparer en colonnes, dans un tableur, toutes les valeurs séparées par une virgule.
  4. Ouvrez votre tableur favori et créez un nouveau document. Je vais prendre le cas d'Excel pour la suite (cliquez sur les images pour les agrandir).
  5. Allez dans fichier --> importer et selectionnez l'option fichier csv.
  6. schéma expérimental
  7. Choisissez délimité puis cliquez sur suivant.
  8. schéma expérimental
  9. Sélectionnez tabulation et point-virgule puis cliquez sur suivant.
  10. schéma expérimental
  11. Choisissez général puis cliquez sur fin.
  12. schéma expérimental

Vos données apparaissent maintenant sous forme de 2 colonnes dans Excel.
Sélectionnez les 2 colonnes de données et représentez les sous forme de nuage de point avec courbe lissée.
Vour devriez obtenir ceci :

schéma Calcul de la période d'oscillation du pendule.

Dans Excel, déplacez votre souris sur le graphique : vous verrez les coordonnées de chaque point apparaître dans une petite vignette. Notez le temps mis par le pendule pour retourner 2 fois à la même position, tel qu'indiqué dans le schéma suivant : c'est la période.

Calculez toutes les périodes que vous observez dans votre graphique.
Pour ce faire, notez les temps t0, t1, t2 et t3.
La période 1 sera égale à t1 - t0.
La période 2 sera égale à t2 - t1.
La période 3 sera égale à t3 - t2.
Faites la moyenne de toutes les périodes calculées.


Le tableau suivant recense les périodes que j'ai obtenu dans mes conditions :

Temps pics (millisecondes) 449 1807 3190 4594
Période (millisecondes) 1358 1383 1404
Tableau : Calcul de la période d'oscillation du pendule.

Soit une période moyenne de 1381 millisecondes.

Passons aux choses sérieuses ! Il s'agit maintenant de calculer g.


Calcul de g : un peu de mathématiques


Notre pendule est un pendule pesant dont la période d'oscillation peut-être prédite avec la formule suivante (voir ici) :


$$ T\quad =\quad 2\pi \quad \sqrt { \frac { J }{ mgl } } $$

Avec :


  • J : moment d'inertie du pendule.
  • m : masse du pendule.
  • l : distance entre l'axe et le centre de gravité du pendule.

Le moment d'inertie de notre pendule est exprimé ainsi :


$$J\quad =\quad \frac { 1 }{ 3 } m{ L }^{ 2 }$$

En effet, il s'agit du moment d'inertie d'une tige de longueur totale L tournant autour d'un axe perpendiculaire à elle même et passant par son extrémité (trés bien documenté ici).
De plus, dans une barre solide telle que notre morceau de bois, la distance entre l'axe et le centre de gravité (l) sera égale à la moitié de la longueur totale L, soit :

$$l\quad =\quad \frac { L }{ 2 } $$

Nous pouvons donc remplacer l et J dans notre équation de départ, ce qui donne :

$$ T\quad =\quad 2\pi \quad \sqrt { \frac { \frac { 1 }{ 3 } m{ L }^{ 2 } }{ mg\frac { L }{ 2 } } } \\ T\quad =\quad 2\pi \quad \sqrt { \frac { 2{ L }^{ 2 } }{ 3gL } } \\ T\quad =\quad 2\pi \quad \sqrt { \frac { 2 }{ 3 } \frac { L }{ g } } \\ { T }^{ 2 }\quad =\quad 4{ \pi }^{ 2\quad }\frac { 2 }{ 3 } \frac { L }{ g } \\ { T }^{ 2 }\quad =\quad \frac { 8 }{ 3 } { \pi }^{ 2 }\frac { L }{ g } $$

Et nous pouvons maintenant facilement isoler g :

$$g\quad =\quad \frac { 8 }{ 3 } L{ \left( \frac { \pi }{ T } \right) }^{ 2 }$$

Il ne vous reste plus qu'à mesurer la longueur totale de votre pendule (L) pour calculer la valeur de l'accélération de la pesanteur g sous votre lattitude.
Dans mon cas, avec un pendule de 71cm, j'obtiens une valeur de g = 9,78 m.s-2 !
Presque parfait !



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 !

Laissez un commentaire ci-dessous si vous avez aimé / pas aimé / compris / rien compris !


Commentaires ?