================================== Loi de Mariotte avec capteur Grove ================================== Capteur de pression absolue MPX5700AP ===================================== Le MPX5700AP est un **capteur piézorésistif de pression absolue** (150 à 7000 hPa). .. figure:: images/MPX5700AP/MPX5700AP_grove.jpg :width: 1024 :height: 938 :scale: 33 % :alt: :align: center Capteur MPX5700AP Grove (image : seeedstudio) .. figure:: images/MPX5700AP/MPX5700_schematic.png :width: 667 :height: 423 :scale: 50 % :alt: :align: center Schéma électrique (source : Freescale Semiconductor, Inc.) La sortie du capteur est une tension analogique. La relation avec la pression suit une fonction affine telle que : .. list-table:: :widths: 25 25 :align: center * - Pression - Tension de sortie * - 0 hPa - 0,2 V * - 7000 hPa - 4,7 V La documentation technique donne une **précision** est de :math:`\pm2,5~\%` de la plage totale de variation. Cette précision tient compte de la variation de la pression par rapport à la valeur nominale, de la linéarité, de l'hystérésis de pression, de l'hystérésis thermique et de la déviation de la sortie par rapport à la température. .. warning:: Pour une meilleure précision, il convient d'étalonner le capteur à partir d'une mesure précise de la pression atmosphérique. Calcul de la pression ===================== La mesure de pression (en hPa) est donnée par la relation pour une alimentation de 5 V : .. math:: \boxed{P = \dfrac{P_{max}}{V_{max}-V_{min}} \times (v_{out}-V_{min})} Soit : .. math:: P = \dfrac{7000}{4,7-0,2} \times (v_{out}-0,2) \quad\implies\quad \boxed{P = \dfrac{7000}{4,5}\times (v_{out}-0,2)} \quad ({\rm hPa}) Mesure simple de la pression absolue ==================================== Le programme ci-dessous calcule et affiche la pression du capteur à partir de sa tension de sortie. La valeur de la tension de sortie du capteur est donnée à titre informatif. .. code-block:: arduino /* * Mesure d'une pression absolue * Capteur Grove MPX5700AP (150 hPa à 7000 hPa) branché sur la broche A0 * David THERINCOURT - 2025 */ float VCC = 5.00; // Tension d'alimentation de l'Arduino float tension; // Tension du capteur float pression; // Pression calculée void setup() { Serial.begin(9600); // Initialisation du port série Serial.println("-----"); // Affichage initial } void loop() { tension = analogRead(A0)*VCC/1023.0 ; // Lecture de la tension sur A0 en volt pression = 7000/4.5*(tension-0.2) ; // Calcul de la pression en hPa Serial.print(tension); // Affichage Serial.print("V \t"); // ... Serial.print(pression); // ... Serial.println(" hPa"); // ... delay(1000); // Temporisation } .. figure:: images/MPX5700AP/MPX5700AP_simple_moniteur_serie.png :width: 1104 :height: 418 :scale: 70 % :alt: :align: center Exemple de mesures obtenues dans le moniteur série d'Arduino IDE Vérification de la loi de Mariotte ================================== Le programme ci-dessous saisie au clavier le volume :math:`V` puis affiche la mesure de la pression :math:`P` correspondante. Ces mesures sont affichées au format CSV pour permettre une exportation des données par copier-coller dans un grapheur (ex. Regressi, www.desmos.com, ...) .. code-block:: arduino /* * Mesure d'une pression absolue - Vérification de la loi de Mariotte * Capteur Grove MPX5700AP (150 hPa à 7000 hPa) branché sur la broche A0 * David THERINCOURT - 2025 */ float VCC = 5.0; // Tension d'alimentation float volume; // Volume de la seringue float tension; // Tension sortie capteur float pression; // Pression mesurée void setup() { Serial.begin(9600); // Initialisation communication série Serial.println("Saisir le volume au clavier en mL"); // Affichage Serial.println("---- CSV ----"); // ... Serial.println("Vs ; P"); // ... Serial.println("mL ; hPa"); // ... } void loop() { while (Serial.available()==0){} // Attente message (Cocher "Pas de fin de ligne") volume = Serial.parseFloat(); // Extraction de la valeur du volume tension = analogRead(A0)*VCC/1023.0 ; // Lecture de la tension sur A0 en volt pression = 7000/4.5*(tension-0.2) ; // Calcul de la pression en hPa Serial.print(volume,0); // Affichage de mesures en CSV 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/MPX5700AP/MPX5700AP_mariotte_moniteur_serie_ksnip.png :width: 1104 :height: 418 :scale: 70 % :alt: :align: center Exemple de mesures obtenus dans le moniteur série d'Arduino IDE 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. Résultats ========= Le volume :math:`V_0` est négligé. .. figure:: images/MPX5700AP/MPX5700AP_mariotte_courbe_1.png :width: 640 :height: 480 :scale: 100 % :alt: :align: center .. figure:: images/MPX5700AP/MPX5700AP_mariotte_courbe_2.png :width: 640 :height: 480 :scale: 100 % :alt: :align: center