Projet 6 – Activité 3

Vérification de la loi de Boyle-Mariotte


. Objectif

L’objectif de cette activité est de vérifier la loi de Boyle-Mariotte à l’aide de notre capteur de pression MPX4250AP et de la seringue d’un volume utile de 60 mL selon le même montage que l’activité précédente.

 

. Énoncé de la loi de Boyle-Mariotte :

À température constante, pour une quantité de matière donnée de gaz, le produit de la pression P par le volume V de ce gaz ne varie pas :

P × V = constante

Si un gaz subit une transformation qui l’amène d’un état n°1 (son volume est V1 et sa pression P1) à un état n°2 (son volume est V2 et sa pression P2) alors la loi de Boyle-Mariotte peut s’écrire:

P1.V1 = P2.V2

Cette relation est valable à condition que:

– La transformation soit à température constante,

– Les deux pressions P1 et P2 soient exprimées dans la même unité de pression qui peut être le pascal, l’hectopascal, le bar, etc…,

-Les deux volumes soient exprimés dans la même unité de volume qui peut être le litre, le mètre cube, le centimètre cube, etc.

 

. Descriptif de l’activité

En déplaçant le piston, initialement placé sur la graduation 30 mL, on fait varier le volume de l’air enfermé dans le corps de la seringue reliée au capteur de pression.

Après avoir appuyé sur le bouton poussoir, le volume lu (entre 10 et 60 mL) sur le corps de la seringue est saisi au clavier dans la fenêtre Python Shell ou le moniteur série.

La pression est ensuite mesurée par le capteur qui délivre une tension électrique proportionnelle à la pression. Une moyenne est réalisée sur dix mesures et le résultat de la pression moyenne (p en kPa) pour le volume (V en mL) est affiché dans la fenêtre Python Shell ou le moniteur série.

Les mesures pour le volume V sont arrêtées en appuyant sur le bouton poussoir.

Une nouvelle mesure de la pression pour un volume différent est réalisable en appuyant de nouveau sur le bouton poussoir.

Il est donc possible d’acquérir des couples de données (p, V) afin de vérifier la loi de Boyle-Mariotte.

Remarque :

La DEL rouge est allumée si la pression est inférieure ou supérieure aux seuils de pression correspondant à un volume de 10 ou de 60 mL.

 

. Le programme


Voici le code de l’activité en Python et en langage Arduino :

. Programme en Python (Projet6\Activity3\PY\Activity3.py)


Déroulement du programme
 :

Importation des librairies et définition de fonctions :

. Le module ”ConnectToArduino.py”, contenant les fonctions de connexion à l’Arduino via le protocole ”Firmata Satandard”,

. Le module ”PyFirmataDef.py” regroupant toutes les fonctions utiles à l’utilisation de PyFirmata (fonction de déclaration des entrées et sorties, de lectures, d’écritures…),

. La bibliothèque time pour la gestion des temps de pause,

. La fonction InputValpour la saisie du volume de la seringue en mL.

Déclaration des constantes et variables :

. PinSensor = 0 (cst correspondant au n° de la broche A0 sur laquelle le capteur de pression est connecté)

. PinButton= 12 (cst correspondant au n° de la broche sur laquelle le bouton poussoir est connecté)

. PinLed = 9 (cst correspondant au n° de la broche sur laquelle la DEL est connectée)

. PMax = 240 (Pression maximale admissible en kPa)

. PMin = 50 (Pression minimale admissible en kPa)

. ValSensor = 0 (variable pour stocker la valeur de la broche du capteur de pression)

. tension = 0 (variable correspondant à la valeur de la tension en V de la broche du capteur de pression)

. Pression = 0 (variable correspondant à la pression en kPa calculée à partir de la valeur de la broche du capteur)

. OldPression = 0 (variable correspondant à la pression en kPa calculée précédemment)

. Vol=0 (variable correspondant au volume de la seringue en mL)

. ValButton = 0 (variable pour stocker la valeur de l’état logique de la broche du bouton poussoir)

. OldValButton = 0 (variable pour stocker la valeur précédente de l’état logique de la broche du bouton poussoir)

. State=0 (variable correspondant à l’action à effectuer)

. OldState = 0 (variable pour stocker la valeur précédente de la variable state)

. PortComArduino (port COM sur lequel l’Arduino est connecté) 

Connexion à l’Arduino :

. Détection du port COM, tentative d’ouverture du port COM sélectionné et connexion à l’Arduino:

PortComArduino = SelectPortCOM()

board = OpenPortCom(PortComArduino)

. Si la connexion à l’Arduino est réussie :

– Déclaration de la broche du capteur de pression en entrée analogique :

InputPinSensor = AnalogInput(board, PinSensor)

– Déclaration de la broche du bouton poussoir en entrée numérique :

InputPinButton = DigitalInput(board, PinButton)

– Lancement de l’itérateur :

ArduinoIterateur = Iterateur(board)

– Attente de 500 ms pour le lancement de l’itérateur :

time.sleep(0.5)

Boucle principale du programme (boucle ”while True”) :

 

Résultats dans la fenêtre Python Shell :

 

. Programme en langage Arduino (”Projet6\Activity3\INO\Activity3.ino”)


Le code de l’activité en langage Arduino a déjà été étudié dans la partie:

Activités pour les lycées / Pression / Activité 3


Exploitation des mesures


L’exploitation des mesures a également déjà été étudiée dans la partie:

Activités pour les lycées / Pression / Activité 3 / Exploitation des mesures