Ressources scientifiques
pour l’enseignement de la physique

Un partenariat entre

ENS Lyon Eduscol
Outils personnels
Navigation

Aller au contenu. | Aller à la navigation

Vous êtes ici : Accueil

Mots-clés

fluide pression isobare Arduino Python

Statique des fluides - Application pratique à l'aide d'une carte Arduino programmée en Python

Mauger Cyril

LMFA, INSA Lyon

Delphine Chareyron

ENS Lyon / DGESCO

22/06/2020

Résumé

Nous proposons ici une expérience pour retrouver les lois de la statique des fluides en utilisant un microcontrôleur piloté par un programme en Python.


1. Utilisation d’un Arduino Uno avec Python3 : Comment réaliser un capteur de niveau d’eau

1.1 Introduction – présentation de l’expérience

Les capteurs de niveau de liquide sont couramment utilisés dans de nombreux domaines (assainissement de l’eau, surveillance des cours d’eau,  industrie chimique…) pour assurer le bon fonctionnement d’un process ou pour sécuriser une installation. Leur technologie (ultrason, imagerie...) diffère selon l’application visée et les besoins.

Nous nous proposons ici  de réaliser un capteur de niveau d’eau basé sur la mesure de pression. Ceci nous permettre de mettre en application la relation fondamentale de la statique des fluides vue dans l'artcicle «  Statique des fluides - Lois et exemples d'applications ».

Pour réaliser le montage, nous aurons besoin de :

  • 1 Carte Arduino Uno ;
  • 1 Capteur de pression différentielle MPX5010DP ;
  • 3 Straps flexibles M-F de longueur 15 cm (connectiques entre le capteur de pression et la carte Arduino) ;
  • Un tuyau de diamètre intérieur égal à 4 mm et d'une longueur supérieure à 2 m ;
  • Un contenant (idéalement d'une hauteur de 1 m), type éprouvette ou tuyau transparent bouché.

Un schéma du montage est présenté ci-dessous, figure 1.

L’expérience consiste à ajouter dans le contenant (dont le diamètre D interne est connu) un volume de liquide V . De cette manière, nous pouvons connaître la hauteur réelle de liquide h théo introduite dans le contenant par la relation : h théo = 4 V π D 2 et la comparer à la hauteur mesurée par le capteur. Cette manipulation peut être répétée plusieurs fois dans l’expérience.

Dans l’expérience présentée ici, la manipulation sera répétée 5 fois.

Figure 1 : Schéma du montage de mesure du niveau d'eau.

1.2 Modélisation du problème

Le capteur de pression différentielle permet de mesurer simultanément deux pressions : la pression au fond de l’éprouvette p 1 et la pression p 3 .

       

Écrivons la relation qui permet de relier p 1 à p 3 , et la hauteur h d’eau.

L’équation fondamentale de la statique des fluides donne : p 1 + ρ eau g z 1 = p 2 + ρ eau g z 2

        et

        p 2 + ρ air g z 2 = p 3 + ρ air g z 3

En sommant les deux relations nous obtenons :

        p 1 - p 3 = ρ eau g ( z 2 - z 1 ) + ρ air g ( z 3 - z 2 )

En comparant, la masse volumique de l’air ρ air  ≈  1,23 kg.m-3 et celle de l’eau ρ eau  ≈ 997 kg.m-3, il semble évident que le poids de la colonne d’air sera négligeable devant le poids de la colonne d’eau.

Ceci implique aussi que la position du capteur a très peu d’influence sur notre mesure.

Finalement, notre dernière équation devient :

        h = p 1 - p 3 ρ eau g               avec         h = z 2 - z 1

Nous avons trouvé la relation qui nous donnera le niveau d’eau dans notre éprouvette en fonction de la mesure différentielle de pression de notre capteur.

Figure 2 : Modélisation du problème.

1.3 Codage en Python3 et acquisition du signal

Dans un premier temps, on importe les bibliothèques Python nécessaires à la communication avec la carte Arduino, au traitement des données et à l'affichage des graphiques, figure 3.

Figure 3 : Code Python pour l'import des bibliothèques Python nécessaires à la communication avec la carte Arduino, au traitement des données et à l'affichage des graphiques.

Essayons de communiquer avec la carte :

Figure 4 : Code Python pour communiquer avec la carte.

À partir de ce stade, nous déclarons les variables physiques qui seront nécessaires à la modélisation du problème, figure 5.

Figure 5 : Déclaration des variables.

On déclare ensuite les paramètres qui seront utiles pour le script :

Figure 6 : Déclaration des paramètres.

Nous allons maintenant passer à l’étape de l’acquisition des données et du calcul du niveau de liquide, figure 7.

Figure 7 : Acquisition des données et du calcul du niveau de liquide.

Les mesures sont stockées dans la variable « Data ». Nous allons maintenant tracer les résultats et enregistrer le graphique obtenu. Nous allons tracer un graphique avec deux axes y, un pour la pression différentielle, un autre pour la hauteur de liquide, figure 8.

Figure 8 : Code Python pour le tracé des résultats.

Le graphique, figure 9, montre l’évolution du niveau de liquide dans le contenant en fonction du volume introduit au cours de 5 manipulations (ajout de liquide). Le capteur donne une mesure assez proche de la hauteur attendue (tracé en pointillés).

Dans le tracé, nous avons choisi de faire coïncider les 2 axes verticaux (variation de pression et hauteur d'eau) pour mettre en évidence plus facilement la validation des mesures par le modèle. On peut ainsi comparer les hauteurs déduites expérimentalement (ΔP = ρgh) aux hauteurs théoriques.

Figure 9 : Évolution du niveau d'eau dans l'éprouvette.

Dans ce graphique les incertitudes de mesures n'apparaissent pas mais elles existent, sur les points obtenus expérimentalement (incertitudes sur la position de la mesure, précision du capteur...) et sur la prédiction théorique (mesure de la quantité d'eau ajoutée, présence d'un ménisque...)

Télécharger le programme « Mesure-statique-fluide.py »