Sketch arduino pour mesurer une pression différentielle

Montage

Sortie série

Code à téléverser

/** * mesure_pression_differentielle.ino * On utilise un capteur de pression differentielle MPX5010DP * La datasheet donne : tension (V) = Vréf * ( 0.09 ΔP (kPa) + 0.04 ) * Soit, avec Vréf = 5.0 V : ΔP (Pa) = 2222.2 × ( tension (V) - 0.2 ) * On affiche la tension renvoyée par le capteur et la pression différentielle. */ // 1. Déclarations des constantes et variables globales // Durée de la manipulation bool running = true; unsigned long startTime = 0; // Grand entier positif − Le type de milli() const unsigned long EXPERIMENT_DURATION = 240; // durée de la manip en s // Capteur de pression const byte PRESSURE_SENSOR_PIN = A0; // Capteur Pin1 A0, Pin2 GND et Pin3 5 V. // La pression différentielle en Pa est ΔP (Pa) = PENTE × ( tension (V) + VOLTAGE_OFFSET ) const float PENTE = 2222.2; // Coefficient directeur PENTE (Pa/V) – Fourni par la datasheet const float VOLTAGE_OFFSET = -0.2; // Décalage de tension VOLTAGE_OFFSET (V) – Fourni par la datasheet // 2. Setup − Exécuté une seule fois void setup() { Serial.begin(9600); startTime = millis(); // départ de la mesure } // 3. Loop − Boucle infinie void loop() { if (!running) { return; // Sortie } if (millis() - startTime >= EXPERIMENT_DURATION*1000UL) { // Calculs en unsigned long Serial.println("EndOfData"); running = false; } // Détermination de la pression différentielle int pressureSensorRawValue = analogRead(PRESSURE_SENSOR_PIN); // Valeur numérique entre 0 et 1023 float pressureSensorVoltage = pressureSensorRawValue * 5.0 / 1023.0; // Valeur de la tension en volts float differentialPressure = PENTE * (pressureSensorVoltage + VOLTAGE_OFFSET); // Pression différentielle en Pa // Affichage de la valeur Serial.print(pressureSensorVoltage,2); Serial.print('\t'); Serial.println(differentialPressure,2); // On attend une seconde delay(1000); } // 4. Fonctions