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 (modèle GY-68) comporte quatre connecteurs: deux pour son alimentation électrique, et deux pour la communication I2C avec le microcontrôleur.
(ces connexions supposent l'utilisation d'un Arduino Uno).
Un module BMP180 (modèle GY-68) comporte quatre connecteurs: deux pour son alimentation électrique, et deux pour la communication I2C avec le microcontrôleur.
- Broche VIN du BMP180: 5 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).
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 (Twitter, Facebook)
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
- Mesurer la pression atmosphérique avec BMP180 et Arduino
- Fabrication d'une flûte à bec MIDI (BMP180 et Arduino)
- Capteur de pression BMP180 et STM32 Nucleo (mbed)
- La liste des expériences scientifiques décrites dans ce blog
Yves Pelletier (Twitter, Facebook)
Ce petit montage devrait intéressé de nombreux industriels pour la mesure de niveau d'un fluide dans une cuve . Il faudrait saisir la densité du produit et afficher la hauteur de ce produit par rapport au point bas de la sonde . Une précision de 2 à 3 % et généralement plus que suffisante . A partir de cette mesure il faut prévoir des points d'alarme qui seront introduits dans l'automatisme ( à relais ou automate programmable ). Dans un tel dispositif on ajoute , si possible , une sonde tout ou rien niveau haut et une autre niveau bas ( plus bas que le tube de mesure ) qui permettra un étalonnage automatique .
RépondreSupprimerTechniciens à vos arduino
c'est très courant dans l'industrie des procédés, la mesure de niveau par pression hydrostatique.
Supprimerhttp://www.instrumentation-industrielle.fr/EMERSON/niveau.htm
Et le pressostat de la machine à laver fonctionne sur ce principe...
Bonjour,
RépondreSupprimerMerci pour ce montage très simple et très intéressant. Je compte utiliser ce principe pour mesurer le niveau d'eau de ma piscine. Petite proposition d'amélioration pour tous ceux qui comme moi ont essayé de rendre ce p... d'oeuf Kinder étanche sans succès après plusieurs heures : j'ai finalement utilisé une simple bouteille vide dans laquelle j'ai glissé le capteur et que j'ai retournée dans le liquide à mesurer.
Merci beaucoup pour ce tuto
Bonjour, j'essaie moi-même depuis quelque temps de rendre étanche la boîte où est situé le capteur ce que je n'arrive pas complétement à cause de l'espace laissé à l'air par les câbles arduino (j'ai pris un tupperwar donc hermétique au départ auquelle j'ai percé 2 trous l'un pour les câbles et l'autre pour le tube). J'ai essayé avec de nombreux rubans adhésifs et/ou colle à silicone mais rien n'y fait...J'ai remarqué votre solution de prendre une bouteille vide et la retournée mais auriez-vous plus de détail à ce sujet comme par exemple comment avez-vous fait passé les fils? , avez-vous fixé le capteur au fond de la bouteille?, percé quand même un trou?...
SupprimerSi quelqu'un à des idées pour rendre cette boîte au maximum hermétique à l'air je suis désespéré... ;)
Bonjour et Merci pour ce tuto.
RépondreSupprimersauriez vous jusqu'à quelle profondeur on pourrait aller avec ce capteur?