Librairie Python pour les sciences physiques au lycée
Installation
A partir des dépôts de PyPi
Lancer dans un terminal :
pip install physique
DĂ©pendance Ă installer :
pip install pyserial
A partir de l'archive de la bibliothèque
Télécharger ici le fichier physique-x.x.whl
. Les caractères x
sont à remplacer par les numéros de version.
Dans une console Python dans le même répertoire que l'archive et lancer la commande suivante :
pip install physique-x.x.whl
Utilisation
modelisation
Le module Fonctions pour réaliser une modélisation d'une courbe du type y=f(x)
.
Fonctions disponibles
Fonctions | Valeurs de retour | Type de fonction modélisée |
---|---|---|
ajustement_lineaire(x, y) |
a |
y=ax​ |
ajustement_affine(x, y) |
a et b
|
y=ax+b​ |
ajustement_parabolique(x, y) |
a , b et c
|
y=a x^2+bx+c​ |
ajustement_exponentielle_croissante(x, y) |
A et tau
|
y = A*(1-exp(-x/tau)) |
ajustement_exponentielle_croissante_x0(x, y) |
A , tau et x0
|
y = A*(1-exp(-(x-x0)/tau)) |
ajustement_exponentielle_decroissante(x, y) |
A et tau
|
y = A*exp(-x/tau) |
ajustement_exponentielle_decroissante_x0(x, y) |
A , tau et x0
|
y = A*exp(-(x-x0)/tau) |
Exemple :
import numpy as np
import matplotlib.pyplot as plt
from physique.modelisation import ajustement_parabolique
x = np.array([0.003,0.141,0.275,0.410,0.554,0.686,0.820,0.958,1.089,1.227,1.359,1.490,1.599,1.705,1.801])
y = np.array([0.746,0.990,1.175,1.336,1.432,1.505,1.528,1.505,1.454,1.355,1.207,1.018,0.797,0.544,0.266])
[a, b, c] = ajustement_parabolique(x, y)
print(a, b, c)
x_mod = np.linspace(0,max(x),50)
y_mod = a*x_mod**2 + b*x_mod + c
plt.plot(x_mod, y_mod, '-')
plt.plot(x, y, 'x')
plt.show()
CSV
Le module Modules d'importation de tableau de données au format CSV à partir des logiciels Aviméca3, Regavi, ...
Quelques fonctions disponibles
-
import_avimeca3_txt(fichier)
ouimport_avimeca3_txt(fichier, sep=';')
-
import_regavi_txt(fichier)
ouimport_regavi_txt(fichier, sep=';')
Le paramètre sep
(séparateur de données) est optionnel. La tabulation (sep='\t'
) est le séparateur par défaut.
Exemple :
import matplotlib.pyplot as plt
from physique.csv import import_avimeca3_txt
t, x, y = import_avimeca3_txt('data1_avimeca3.txt')
plt.plot(x,y,'.')
plt.xlabel('x (m)')
plt.ylabel('y (m)')
plt.grid()
plt.title("Trajectoire d'un ballon")
plt.show()
Le fichier data.txt
est obtenu par l'exportation de données au format CSV dans le locigiel Aviméca3.
pyboard
Le module Module d’interfaçage d'une carte microcontrôleur (PyBoard, ESP32, Micro:bit, ...) fonctionnant avec MicroPython à partir d'un ordinateur sous Python classique par le port série (USB, Bluetooth, ...) ou par le réseau.
Exécuter des instructions MicroPython dans un programme Python
from physique.pyboard import Pyboard
pyboard = Pyboard("COM3") # Port série de la carte ("/dev/ttyACM0" pour linux)
pyboard.enter_raw_repl()
pyboard.exec('import pyb') # Exécute une instruction MicroPython
pyboard.exec('pyb.LED(1).on()') # Exécute une autre instruction MicroPython
pyboard.exit_raw_repl()
Ou plusieurs instructions Ă la fois :
from physique.pyboard import Pyboard
from time import sleep
pyboard = Pyboard("COM3") # Port série de la carte ("/dev/ttyACM0" pour linux)
pyboard.enter_raw_repl() # Entre dans le mode REPL
pyboard.exec(""" # Execute plusieurs instructions
from pyb import LED
led = LED(1)
""")
for i in range(10):
pyboard.exec("led.toggle()")
sleep(1)
pyboard.exit_raw_repl() # Sort du mode REPL
Exécuter un fichier MicroPython dans un programme Python
-
exec_file(nomFichier)
Exécute un programme MicroPython sur le microcontrôleur à partir d’un fichier
.py
présent sur l’ordinateur. -
exec_file_to_data(nomFichier)
Exécute un programme MicroPython sur le microcontrôleur à partir d’un fichier
.py
présent sur l’ordinateur. Retourne un tuple envoyé par une fonctionprint(tuple)
placée dans le programme MicroPython.
Exemple :
Programme MicroPython read_adc.py
pour carte PyBoard (lecture sur entrée analogique) :
from pyb import Pin, ADC
from time import sleep_ms
adc = ADC(Pin('A0')) # Broche X1 ou A0 en entrée analogique
x, y = [], [] # Tableaux vides au départ
for i in range(10): # Mesures
x.append(i)
y.append(adc.read()) # Lecture sur CAN
sleep_ms(500) # attendre 500 ms
data = x, y # Tuple de données
print(data) # Envoie des données
Programme Python sur l'ordinateur dans le même répertoire que le programme MicroPython :
import matplotlib.pyplot as plt
from physique.pyboard import Pyboard
pyboard = Pyboard("COM3") # Port série de la carte ("/dev/ttyACM0" pour linux)
x, y = pyboard.exec_file_to_data("read_adc.py")
plt.plot(x,y,'r.')
plt.ylim(0,5000)
plt.show()
Exécuter un script MicroPython dans un programme Python
-
exec_script(nomFichier)
Exécute un script Micropython sur le microcontrôleur dans un programme Python classique.
-
exec_script_to_data(nomFichier)
Exécute un script Micropython sur le microcontrôleur dans un programme Python classique. Retourne un tuple envoyé par une fonction
print(tuple)
placée dans le programme Micropython.
Exemple :
Idem que l’exemple précédent mais dans un seul programme.
import matplotlib.pyplot as plt
from physique.pyboard import Pyboard
script = """
from pyb import Pin, ADC
from time import sleep_ms
adc = ADC(Pin('A0')) # Broche X1 ou A0 en entrée analogique
x, y = [], [] # Tableaux vides au départ
for i in range(10): # Mesures
x.append(i)
y.append(adc.read()) # Lecture sur CAN
sleep_ms(500) # attendre 500 ms
data = x, y # Tuple de données
print(data) # Envoie des données
"""
pyboard = Pyboard("COM3") # Port série de la carte ("/dev/ttyACM0" pour linux)
x, y = pyboard.exec_script_to_data(script)
plt.plot(x,y,'r.')
plt.ylim(0,5000)
plt.show()