samedi 16 mars 2019

Mesure de la pression dans un liquide avec BMP180 et Arduino

J'ai déjà eu l'occasion de vous présenter le capteur de pression et de température BMP180 pour la mesure de la pression atmosphérique; je l'avais également utilisé lors de la fabrication d'une flûte à bec MIDI. Cette-fois, j'utilise le même capteur pour mesurer la pression dans un liquide, à différentes profondeurs.

Principe de fonctionnement

Évidemment, il n'est aucunement question de plonger un circuit électronique dans l'eau. C'est plutôt une extrémité d'un tube de plastique qui est plongée dans l'eau. L'autre extrémité du tube est reliée à une coquille de plastique hermétiquement fermée (sans fuite d'air) dans laquelle se trouve le capteur BMP180.

Au départ, lorsque le tube est hors de l'eau, la pression dans la coquille est égale à la pression atmosphérique ambiante. Si on plonge l'extrémité du tube dans l'eau, un peu d'eau monte dans le tube, poussée par la pression du liquide qui est plus grande que la pression atmosphérique. Cette montée de liquide dans le tube a pour effet de comprimer l'air enfermé dans la coquille, et d'augmenter sa pression, jusqu'à ce qu'un équilibre s'installe: la pression atmosphérique dans la coquille (mesurée par le BMP180) est alors égale à la pression dans le liquide (à la position de la surface du liquide dans le tube).



Circuit

Un module BMP180 comporte quatre connecteurs: deux pour son alimentation électrique, et deux pour la communication I2C avec le microcontrôleur.


  • Broche VIN du BMP180: 3,3 V de l'Arduino
  • Broche GND du BMP180: GND de l'Arduino
  • Broche SCL du BMP180: broche A5 de l'Arduino
  • Broche SDA du BMP180: broche A4 de l'Arduino


(ces connexions supposent l'utilisation d'un Arduino Uno; les broches I2C sont différentes pour certains modèles d'Arduino).




Fabrication de la sonde

Le capteur de pression BMP180 est inséré dans une coquille rigide. J'ai utilisé une coquille en plastique de Kinder Surprise qui était inutilement grosse (ce qui a pour inconvénient de faire monter le liquide très haut dans le tube: il est donc impossible de mesurer la pression jusqu'au fond du récipient qui contient le liquide). Autant que possible, essayez de trouver un récipient rigide tout juste assez grand pour contenir le capteur.


Des trous permettent le passage du tube (à plonger dans le liquide) et des fils (pour la connexion à l'Arduino).


Il faut ensuite rendre la coquille parfaitement hermétique, pour éviter toute fuite d'air. Pour ce faire, j'ai utilisé une généreuse quantité de ruban gommé. Si le niveau de liquide dans le tube monte jusqu'au niveau de liquide dans le récipient, c'est qu'il y a une fuite d'air et il faut trouver une façon de l'éliminer­.


Sketch

Après avoir installé la bibliothèque SFE_BMP180 proposée par Sparkfun, j'ai modifié un des exemples fournis afin de n'afficher que la pression (en Pascal) dans le moniteur série.




Expérimentation et résultats

J'ai cherché à vérifier expérimentalement cette relation entre la pression dans un liquide et la profondeur:

        p = ρgh

où p est la pression relative (par rapport à la surface du liquide) en Pascal (Pa)
     ρ est la masse volumique du liquide en kg/m3 (1000 kg/m3 pour l'eau)
     g est l'accélération gravitationnelle à la surface de la terre (9,8 m/s2)
     h est la profondeur, mesurée par rapport à la surface du liquide (en mètres)

Compte tenu de notre façon de mesurer la pression, la profondeur "h" est la distance verticale entre la surface du liquide dans le récipient et la surface du liquide à l'intérieur du tube de la sonde.

Il faut également noter que le BMP180 mesure la pression absolue: la valeur mesurée est déjà d'environ 100 000 Pa à la surface du liquide (pression atmosphérique), alors que l'équation suppose une pression relative (nulle à la surface).

J'ai donc démarré le sketch présenté plus haut afin d'afficher dans le moniteur série la pression mesurée, et j'ai noté cette pression pour plusieurs profondeurs différentes, par bonds de 5 mm.

Après transcription des mesures dans un tableur (Excel ou LibreOffice Calc) et transformation de la pression absolue en pression relative (en soustrayant de chaque pression mesurée la pression atmosphérique normale), j'ai produit un graphique de la pression (en Pa) en fonction de la profondeur (en mètre).




J'ai obtenu une droite dont la pente est de 9690 Pa/m.  En divisant la pente par 9,8 m/s2, on trouve une masse volumique expérimentale de 989 kg/m3 , ce qui n'est pas très loin des 1000 kg/m3 prévus.

À lire également



Yves Pelletier   (TwitterFacebook)

Aucun commentaire:

Enregistrer un commentaire