=========================================== Loi de Mariotte avec capteur Educaduino Lab =========================================== Capteur MPXHZ6400A ================== Le MPXHZ6400A est un capteur piézorésistif de pression absolue (200 hPa à 4000 hPa). .. figure:: images/MPXHZ6400A/MPXHZ6400A_educaduino_lab.png :width: 805 :height: 657 :scale: 33 % :alt: :align: center Capteur pression absolue Educaduino LAB .. figure:: images/MPXHZ6400A/MPXHZ6400A_schematic.png :width: 667 :height: 423 :scale: 50 % :alt: :align: center Schéma électrique (source : Freescale Semiconductor, Inc.) L'électronique interne de ce module modifie les caractéristiques de la tension de sortie du capteur MPXHZ6400A comme le montre le tableau suivant : .. list-table:: :widths: 25 25 :align: center * - Pression - Tension de sortie * - 200 hPa - 0 V * - 4000 hPa - 5,0 V (VCC) La documentation technique donne une précision du capteur de :math:`\pm1,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 suivante : .. math:: \boxed{P = \dfrac{P_{max}-P_{min}}{V_{CC}} \times V_{out} + P_{min}} Soit : .. math:: \boxed{P = \dfrac{3800}{V_{CC}} \times V_{out}+ 200} \qquad\text{avec}\qquad V_{CC} = 5,0~{\rm V} .. warning:: Le module n'intègre pas de régulateur de tension. En conséquence, une mesure au voltmètre de la tension :math:`V_{CC}`, sur la broche :code:`5V` ou :code:`IOREF` de l'Arduino, est vivement conseillée ! Mesure simple de la pression absolue ==================================== Le programme ci-dessous affiche périodiquement une mesure de la pression absolue en hPa ainsi de la tension de sortie du capteur (broche A9). .. code-block:: arduino :linenos: /* * Mesure d'une pression absolue * Capteur pression absolue Educaduino Lab (20 kPa à 400 kPa) * Réference : MPXHZ6400A * 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 } void loop() { tension = analogRead(A9)*VCC/1023.0 ; // Lecture de la tension sur A9 en volt pression = 3800/VCC*tension + 200 ; // Calcul de la pression en hPa Serial.print(tension); // Début affichage Serial.print("V \t"); // caractère "\t" pour une tabulation Serial.print(pression,0); // ... Serial.println(" hPa"); // ... delay(1000); // Temporisation } .. figure:: images/MPXHZ6400A/MPXHZ6400A_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 :linenos: /* Mesure d'une pression absolue - Loi de Mariotte * Capteur pression absolue Educaduino Lab (20 kPa à 400 kPa) * Réference : MPXHZ6400A * David THERINCOURT - 2025 */ float VCC = 5.00; // Tension d'alimentation void setup() { Serial.begin(9600); // Initialisation du port série Serial.println("Saisir à chaque fois le volume au clavier."); Serial.println("---- CSV ----"); Serial.println("V ; P"); Serial.println("mL ; hPa"); } void loop() { while (Serial.available()==0){} // Attente d'un message (Cocher "Pas de fin de ligne") float V = Serial.parseFloat(); // Conversion en flottant float U = analogRead(A9)*VCC/1023.0 ; // Lecture de la tension sur A9 en volt float P = 3800/VCC*U + 200 ; // Calcul de la pression en hPa Serial.print(V,0); // Affichage Serial.print(" ; "); // ... Serial.println(P,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/MPXHZ6400A/mariotte_educaduino_lab_moniteur_serie_ksnip.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 4 mL). .. figure:: images/MPXHZ6400A/mariotte_educaduino_lab_courbe_1.png :width: 640 :height: 480 :scale: 100 % :alt: :align: center .. figure:: images/MPXHZ6400A/mariotte_educaduino_lab_courbe_2.png :width: 640 :height: 480 :scale: 100 % :alt: :align: center