lundi 20 décembre 2021

Étude du pendule avec un potentiomètre et Arduino

Récemment, mon attention a été attirée par un article de la revue The Physics Teacher* dans lequel on présente un montage expérimental qui permet d'étudier le mouvement d'un pendule au moyen d'un potentiomètre branché à une carte Arduino. Dans ce montage, le potentiomètre est utilisé pour mesurer en temps réel la position angulaire du pendule.

L'article du Physics Teacher propose l'analyse d'un "pendule pesant"  constitué d'une tige rigide de masse non-négligeable et d'une masse oscillante de taille non-négligeable. De mon côté, j'ai fait quelques essais avec un dispositif s'apparentant plutôt à un "pendule simple" (qui est, en principe, constitué d'une masse ponctuelle suspendue à une ficelle de masse négligeable).

Mon pendule était constitué d'une masse de 500 grammes suspendue à un fil de fer de 91 cm de longueur. L'autre extrémité du fil de fer était attachée à l'axe d'un potentiomètre.


Il faut prendre soin de fixer le fil de fer de façon à ce qu'il oblige la partie rotative du potentiomètre à tourner en suivant le mouvement du pendule.


Bien entendu, le potentiomètre était branché à une des entrées analogiques de l'Arduino. Puisque le signal n'excédait jamais 3,3 V pendant l'oscillation du pendule, j'ai choisi d'utiliser une tension de 3,3 V comme référence, afin d'améliorer un peu la résolution de la conversion analogique-numérique (j'ai relié la sortie 3V3 à l'entrée AREF, et j'ai ajouté la commande "analogReference(EXTERNAL)" au début du sketch). 

Dès les premiers essais, le moniteur série de l'IDE Arduino a montré des résultats encourageants. Je m'attendais à un amortissement plus important, à cause du couple nécessaire pour faire tourner le potentiomètre. Avec une masse de 500 grammes, on peut facilement le négliger si on se limite à quelques oscillations.


J'ai ensuite utilisé un sketch qui mesurait également le temps associé à chaque mesure de position angulaire afin de coller dans un tableur les mesures affichées dans le moniteur série.



Mis à part un aplatissement un peu suspect au sommet,  la courbe concorde assez bien avec ce que prévoient les équations théoriques. La période du pendule, mesurée au moyen des données obtenues, est de 1,92 seconde, ce qui correspond bien avec ce qu'on peut calculer théoriquement pour un pendule  simple de 91 cm de longueur.


* Inexpensive Physical Pendulum with Arduino, par Milentije Lukovic, Vanja Lukovic, Milos Bozic et Vojislav Vujicic, The Physics Teacher vol. 59, numéro 6, Septembre 2021, pages 432-435 (American Association of Physics Teachers).


À lire également


Yves Pelletier (Facebook)



dimanche 24 octobre 2021

Écriture et lecture de fichiers avec le Raspberry Pi Pico (micropython)

Puisque l'environnement MicroPython comporte un système de fichiers, il est très facile de créer et de lire des fichiers dans la mémoire flash interne du Raspberry Pi Pico. De cette façon, vous pouvez stocker des informations dont votre script a besoin pour bien fonctionner (des préférences de l'utilisateur, par exemple) , enregistrer des mesures prises périodiquement (data logging), etc.  

Évidemment, vos fichiers ne doivent pas être trop volumineux (nous disposons d'un espace total de 1,4 Mo) et leur mise à jour ne doit pas être trop fréquente (afin de ne pas provoquer une usure prématurée de votre Raspberry Pi Pico). Pour de nombreuses applications, l'utilisation d'une carte SD (ou d'un autre périphérique de stockage) s'avère préférable, voire nécessaire.


Exemple #1

Dans ce premier exemple, un nombre aléatoire est écrit à l'intérieur d'un fichier texte intitulé "hasard.txt". Le fichier sera automatiquement créé s'il n'existait pas déjà. Puisque j'ai utilisé l'argument "a" (append), le nouveau nombre est ajouté à la fin du fichier, dont le contenu initial demeure intact.

Dans un deuxième temps, le fichier est lu (notez l'utilisation de l'argument "r": read) et son contenu est affiché dans la console.

-

-

Exemple #2

Dans ce deuxième exemple, j'enregistre dans un fichier la date et l'heure de la dernière exécution du script. Dans un premier temps, on ouvre le fichier "date.txt" pour connaître la date et l'heure de l'exécution précédente du fichier.  Il est possible que ce fichier n'existe pas encore, d'où l'utilisation de try/except pour éviter que le script s'interrompe avec un message d'erreur.

Ensuite, le fichier est ouvert en écriture pour remplacer l'ancienne date par la nouvelle (cette fois, l'argument est "w", write, et le contenu précédent est donc remplacé par la nouvelle information).

-

-

Gestion des fichiers

Si vous programmez votre Pico avec Thonny, le volet "Fichiers" affiche la liste de tous les fichiers enregistrés dans la mémoire interne du Pico. Il est possible d'effacer un fichier grâce à un clic droit de la souris­.

e

(Si ce volet n'est pas visible, vous pouvez le faire apparaître en cochant "Fichiers" dans le menu "Affichage".)


Il est également possible de gérer les fichiers grâce à un script en micropython.  Le script ci-dessous, par exemple, affiche la liste des fichiers présents sur le Pico:

-

-

À lire également

Yves Pelletier (Facebook)