Loi de Mariotte avec le capteur Adafruit MPRLS

Capteur MPLRS0025AP

Le circuit MPLRS0025AP est un capteur piézorésistif de pression absolue (0 à 1700 hPa). La mesure de la pression est directement donnée sous forme numérique (24 bit) via le port I2C.

Capteur pression absolue Educaduino LAB

La documentation technique donne une précision de \(\pm1,5\%\) de la plage totale de variation.

A noter que ce module fonctionne aussi bien en \(3,3~\rm V\) ou \(5~\rm V\).

Mesure simple de la pression absolue

Le programme ci-dessous affiche périodiquement une mesure de la pression absolue en hPa. Une correction du décalage de la pression a été faite à partir d’un capteur atmosphérique de haute précision (ici BMP280).

Il faut installer préalablement la bibliothèque Adafruit MPRLS Library dans Arduino IDE.

/*
 * Mesure d'une pression absolue
 * Capteur Adafruit MPRLS (0 à 1700 hPa) I2C
 * David THERINCOURT - 2025
 */

#include "Adafruit_MPRLS.h"

Adafruit_MPRLS mpr = Adafruit_MPRLS(-1, -1); // Déclaration capteur MPRLS

float Patm_mpr = 998;                        // Pression atmosphérique MPRLS
float Patm_ref = 991;                        // Pression atmosphérique de référence
float correction = Patm_ref - Patm_mpr;      // Correction à appliquer
float Pmpr;                                  // Pression MPRLS

void setup() {
   Serial.begin(9600);                       // Initialisation port série
      if (! mpr.begin()) {                   // Initialisation MPRLS
      Serial.println("MPRLS non trouvé !");  // ...
      while (1) {                            // ...
         delay(10);                          // ...
      }
   }
   Serial.println("MRPLS trouvé !");         // Affichage
   Serial.print("Correction de ");           // ...
   Serial.print(correction);                 // ...
   Serial.println(" hPa");                   // ...
}


void loop() {
   Pmpr = mpr.readPressure() + correction;   // Mesure de la pression
   Serial.print(Pmpr);                       // Affichage
   Serial.println(" hPa");                   // ...
   delay(1000);                              // Temporisation
}

Résultats dans le moniteur série

Vérification de la loi de Mariotte

Le programme ci-dessous saisie manuellement au clavier la valeur du volume \(V\) puis mesure la pression absolue correspondante. Les résultats sont affichés au format CSV dans le moniteur série. L’exportation vers une autre application peut se faire par un copier-coller de ces données CSV.

/*
 * Vérification de la loi de Mariotte
 * Capteur Adafruit MPRLS (0 à 1700 hPa) I2C
 * David THERINCOURT - 2025
 */

#include "Adafruit_MPRLS.h"

Adafruit_MPRLS mpr = Adafruit_MPRLS(-1, -1); // Déclaration capteur MPRLS

float Patm_mpr = 998;                     // Pression atmosphérique MPRLS
float Patm_ref = 991;                     // Pression atmosphérique référence
float correction = Patm_ref - Patm_mpr;   // Correction à appliquer

float volume;
float pression;

void setup() {
   Serial.begin(9600);                      // Initialisation port série
   if (! mpr.begin()) {                     // Initialisation MPRLS
      Serial.println("MPRLS non trouvé !");  // ...
      while (1) {                            // ...
         delay(10);                           // ...
      }
   }
   Serial.println("Capteur MPRLS trouvé."); // Affichage
   Serial.println("---- CSV ----");         // ...
   Serial.println("Vs ; P");                // ...
   Serial.println("mL ; hPa");              // ...
}


void loop() {
   while (Serial.available()==0){}          // Attente de la saisie
   volume = Serial.parseFloat();            // Extraction de la valeur du volume
   pression = mpr.readPressure();           // Mesure de la pression
   Serial.print(volume,0);                  // Affichage
   Serial.print(" ; ");                     // ...
   Serial.println(pression,0);              // ...
}

Avertissement

Pour commencer une nouvelle série de mesure, il faut relancer le programme en appuyant sur le bouton RESET du microcontrôleur.

Résultats dans le moniteur série

Résultats

Le volume final est donné par la relation :

\[V = V_s + V_0\]
  • \(V_s\) est la volume de la seringue ;

  • \(V_0\) est le volume additionnel contenu dans le tube et le capteur (ici 1,5 mL).