Le capteur de pression MPX5010DP utilise l'entrée A0 et est alimenté entre GND et 5V.
Le moniteur série affiche la tension renvoyée par le capteur et la pression différentielle en Pa.
Sortie série
L’affichage de la sortie série peut se faire en utilisant le moniteur série de l’IDE arduino, accessible par CTRL+MAJ+M
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