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).

Capteur MPX5700AP Grove (image : seeedstudio)

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 :
Pression |
Tension de sortie |
0 hPa |
0,2 V |
7000 hPa |
4,7 V |
La documentation technique donne une précision est de \(\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.
Avertissement
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 :
\[\boxed{P = \dfrac{P_{max}}{V_{max}-V_{min}} \times (v_{out}-V_{min})}\]
Soit :
\[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.
/*
* 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
}

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 \(V\) puis affiche la mesure de la pression \(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, …)
/*
* 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); // ...
}
Avertissement
Pour commencer une nouvelle série de mesure, il faut relancer le programme en appuyant sur le bouton RESET du microcontrôleur.

Exemple de mesures obtenus dans le moniteur série d’Arduino IDE
Le volume final est donné par la relation :
\(V_s\) est la volume de la seringue ;
\(V_0\) est le volume additionnel contenu dans le tube et le capteur.
Résultats
Le volume \(V_0\) est négligé.

