Projet 6 – Activité 4

Principe fondamental de la statique des fluides


. Objectif

L’objectif de cette activité est de déterminé la profondeur d’immersion dans une colonne d’eau d’un tuyau relié à un capteur de pression MPX4250AP en appliquant le principe fondamental de la statique des fluides au montage suivant :

 

. Énoncé du principe fondamental de la statique des fluides

La statique des fluides constitue l’étude des fluides au repos.

Les fluides se déforment sous l’effet de forces très faibles, un fluide n’a pas de forme propre.

On distingue les liquides et les gaz :

– Le liquide prend la forme du récipient qui le contient, mais il est incompressible (ρ varie peu avec P et T).

– Le gaz occupe tout le volume mis à sa disposition et il est compressible (ρ varie beaucoup avec P et T)

La pression est la même en tout point d’un même plan horizontal d’un fluide homogène au repos.

La différence de pression (en Pa) entre deux points A et B (Cf. schéma ci-dessous) d’un fluide homogène au repos est égale à :

PB – PA = ρ g (ZB – ZA)


Où :  . B est en-dessous de A,

         . ρ = masse volumique du fluide en kg.m-3,

         . g = champ de pesanteur (g = 9,81 m.s-2),

         . ZB – ZA = distance entre les plans horizontaux passant par A et B en m.


. Descriptif de l’activité

Après avoir positionné le tuyau au niveau du point A, constituant l’origine du repère (ZA=0), et mesuré la pression PA de ce point, on déplacera l’extrémité du tuyau (Point B) dans la colonne d’eau. Le microcontrôleur mesurera en continu la pression du point B et calculera la distance (en m) entre les 2 points :

Remarques :

La sensibilité du capteur de pression MPX4250AP est de 20 mv/kPa.

La résolution par défaut du convertisseur analogique/numérique de l’Arduino étant de l’ordre de 5 mV, il est possible de mesurer des différences de pression de 0,25 kPa, soit une différence de profondeur d’immersion (Dz) d’environ 0,025 m (2,5 cm).

La précision de la mesure de Dz (ZB – ZA) sera donc de ± 2,5 cm.

 

. Le programme


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

. Programme en Python (”Projet6\Activity4\PY\Activity4.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.

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é)

. 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)

. PRef = 0 (variable correspondant à la pression en kPa du point de référence)

. Dz=0 (variable correspondant à la profondeur d’immersion du tuyau en cm)

. OldDz = 0 (variable correspondant à la profondeur d’immersion du tuyau en cm précédente)

. 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)

. BtnAppui = False (variable booléenne permettant de savoir si le bouton poussoir a été appuyé)

. 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)

Mesure de la pression à la position de référence.

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

 

. Résultats dans la fenêtre Python Shell :

 

. Programme en langage Arduino (”Projet6\Activity4\INO\Activity4.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é 4