============================================== 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. .. figure:: images/MPLRS0025AP/MPRLS_adafruit.jpg :width: 580 :height: 430 :scale: 33 % :alt: :align: center Capteur pression absolue Educaduino LAB La documentation technique donne une précision de :math:`\pm1,5\%` de la plage totale de variation. A noter que ce module fonctionne aussi bien en :math:`3,3~\rm V` ou :math:`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 :code:`Adafruit MPRLS Library` dans Arduino IDE. .. code-block:: arduino /* * 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 } .. figure:: images/MPLRS0025AP/MPRLS_simple_moniteur_serie.png :width: 1104 :height: 407 :scale: 60 % :alt: :align: center 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 :math:`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. .. code-block:: arduino /* * 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); // ... } .. warning:: Pour commencer une nouvelle série de mesure, il faut relancer le programme en appuyant sur le bouton RESET du microcontrôleur. .. figure:: images/MPLRS0025AP/MPRLS_mariotte_moniteur_serie.png :width: 1104 :height: 407 :scale: 60 % :alt: :align: center Résultats dans le moniteur série Résultats ========= Le volume final est donné par la relation : .. math:: V = V_s + V_0 - :math:`V_s` est la volume de la seringue ; - :math:`V_0` est le volume additionnel contenu dans le tube et le capteur (ici 1,5 mL). .. figure:: images/MPLRS0025AP/MPRLS_mariotte_courbe_1.png :width: 640 :height: 480 :scale: 100 % :alt: :align: center .. figure:: images/MPLRS0025AP/MPRLS_mariotte_courbe_2.png :width: 640 :height: 480 :scale: 100 % :alt: :align: center