Arduino, Tutoriels

Comment utiliser Capteur de Pression hydraulique 5V (0-0.5 MPa) avec Arduino pour la surveillance de la pression d’eau

Capteur de pression hydraulique avec afficheur OLED et Arduino

Introduction

Ce projet vise à créer un système de surveillance de la pression de l’eau à l’aide d’un capteur de pression hydraulique 5V (0-0.5 MPa) et d’une carte Arduino. Cette solution permettra de mesurer et d’afficher en temps réel la pression de l’eau dans un réservoir ou une conduite. Vous pourrez ainsi éviter le gaspillage d’eau, surveiller le niveau d’eau dans un réservoir, ou être alerté lorsque la pression de l’eau atteint un certain seuil.

système de surveillance de la pression de l'eau à l'aide d'un capteur de pression 5V
Système de surveillance de la pression de l’eau à l’aide d’un capteur de pression hydraulique

Matériel Requis

C’est quoi le Capteur de Pression hydraulique ?

Capteur de pression hydraulique 5V (0-0.5 MPa) est un composant électronique qui mesurer et rapporter la pression d’un fluide hydraulique, tel que l’eau, dans un système. Il fonctionne en convertissant la force exercée par le fluide sur une surface en une valeur électrique proportionnelle, généralement une tension électrique.

Capteur de pression hydraulique 5V (0-0.5 MPa) est un composant électronique qui mesure la pression d'un fluide, généralement de l'eau, dans un système hydraulique.
Capteur de pression hydraulique 5V (0-0.5 MPa)

Interfaçage du Capteur de Pression avec Arduino

Alimentation et Connexion du Capteur

Nous alimenterons le capteur de pression avec une tension de 5V provenant de l’Arduino. Les connexions seront les suivantes :

  • Fil jaune (Signal) du capteur → Broche A0 de l’Arduino
  • Fil rouge (VCC) du capteur → 5V de l’Arduino
  • Fil noir (GND) du capteur → GND de l’Arduino

Connexion de l’Écran OLED

Nous connecterons un écran OLED SSD1306 pour afficher la pression de l’eau en Kpa. Les connexions seront les suivantes :

  • VDD et GND de l’écran OLED → 3.3V et GND de l’Arduino respectivement
  • SCK (ou SCL) de l’écran OLED → SCL de l’Arduino
  • SDA de l’écran OLED → SDA de l’Arduino

Connexion des LEDs

Nous utiliserons 5 LEDs pour indiquer le niveau de pression de l’eau. Chaque LED représente un intervalle de pression. Les connexions seront les suivantes :

LEDBroche de l’Arduino
LED1Broche numérique 2
LED2Broche numérique 3
LED3Broche numérique 4
LED4Broche numérique 5
LED5Broche numérique 6

Schéma de câblage :

Schéma de câblage pour la surveillance de la pression d'eau en utilisant le capteur de pression hydraulique avec Arduino .
Schéma de câblage pour la surveillance de la pression d’eau

Calibration du Capteur de Pression

Avant de commencer la surveillance, nous devons calibrer le capteur de pression. Assurez-vous que le réservoir ou la conduite d’eau est vide pour cette étape. Téléchargez le code de calibration et chargez-le dans l’Arduino.

Code de calibration

/************************************************************
  Étalonnage du capteur d'eau

  La tension de sortie du capteur a un décalage de 0,5V (nominal).
  Cependant, en raison de la dérive zéro du circuit interne, la
  tension de sortie à vide n'est pas exactement de 0,5V. Une étalonnage
  doit être effectuée comme suit.

  Étalonnage : connectez le fil à 3 broches à l'Arduino UNO (VCC, GND et Signal)
  sans connecter le capteur au tuyau d'eau et exécutez le programme
  une fois. Notez la valeur de tension LA PLUS BASSE via le moniteur série
  et corrigez la valeur "OffSet" pour terminer l'étalonnage.

  Après l'étalonnage, le capteur est prêt à mesurer !
**************************************************************/
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define SCREEN_WIDTH 128 // Largeur de l'écran OLED, en pixels
#define SCREEN_HEIGHT 64 // Hauteur de l'écran OLED, en pixels
#define OLED_RESET -1 // Broche de réinitialisation # (ou -1 si partage de la broche de réinitialisation Arduino)
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
const float OffSet = 0,254 ; // ajustez cette valeur

float avgV = 0,0;

float V=0;
float P;

void setup()
{
  Serial.begin(9600); // ouvre le port série, définit le débit en bauds à 9600 bps
  Serial.println("/** Démo du capteur de pression d'eau **/");
  Serial.println("/** Démo du capteur de pression d'eau **/");
  display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
  delay(2000);
  display.clearDisplay();
  display.setTextColor(WHITE);
}
void loop()
{
  //Connectez le capteur à Analog 0

  V = analogRead(0) * 5.00 / 1024; // Tension de sortie du capteur

  P = (V - OffSet) * 250; // Calcule la pression de l'eau

  Serial.print("Tension :");
  Serial.print(V, 3);
  Serial.println("V");

  Serial.print(" Pression :");
  Serial.print(P, 1);
  Serial.println(" kPa");
  Serial.println();
  display.clearDisplay();
  display.setCursor(25,0);
  display.setTextSize(1);
  display.setTextColor(WHITE);
  display.println("Étalonnage");
  display.setCursor(10,20);
  display.setTextSize(2);
  display.print("P:"+String(P));
  display.print("kPa");

  display.setCursor(10,45);
  display.setTextSize(2);
  display.print("V: ");
  display.print(V);
  display.display();
  delay(1000);
}

Le code de calibration mesure la tension de sortie du capteur lorsque la pression est nulle. Vous devrez ajuster la valeur d’offset dans le code jusqu’à obtenir une lecture proche de zéro Kpa lorsque la pression est nulle.

Code pour la surveillance de la pression d’eau

/************************************************************
  Calibration du capteur d'eau

  Le décalage de tension de sortie du capteur est de 0,5 V (nominal).
  Cependant, en raison de la dérive à zéro du circuit interne, la
  tension de sortie à vide n'est pas exactement de 0,5 V. La calibration doit
  être effectuée comme suit.

  Calibration : connectez le fil à 3 broches à l'Arduino UNO (VCC, GND et Signal)
  sans connecter le capteur au tuyau d'eau et exécutez le programme
  une fois. Notez la valeur de tension la PLUS BASSE via le moniteur série
  et révisez la valeur de "OffSet" pour effectuer la calibration.

  Après la calibration, le capteur est prêt à mesurer !
**************************************************************/
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define SCREEN_WIDTH 128 // Largeur de l'écran OLED en pixels
#define SCREEN_HEIGHT 64 // Hauteur de l'écran OLED en pixels
#define OLED_RESET     -1 // Broche de réinitialisation # (ou -1 si elle partage la broche de réinitialisation de l'Arduino)
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
const float OffSet = 0,454 ;
int psensor = A0;
int led1 = 2;
int led2 = 3;
int led3 = 4;
int led4 = 5;
int led5 = 6;
float V, P;

void setup()
{
  Serial.begin(9600);        // ouvrir le port série, définir le débit en bauds à 9600 bps
  pinMode(psensor, INPUT);
  pinMode(led1, OUTPUT);
  pinMode(led2, OUTPUT);
  pinMode(led3, OUTPUT);
  pinMode(led4, OUTPUT);
  pinMode(led5, OUTPUT);

  digitalWrite(led1, LOW);
  digitalWrite(led2, LOW);
  digitalWrite(led3, LOW);
  digitalWrite(led4, LOW);
  digitalWrite(led5, LOW);
  Serial.println("/** Démo du capteur de pression d'eau **/");
  display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
  delay(2000);
  display.clearDisplay();
  display.setTextColor(WHITE);
}
void loop()
{
  // Connectez le capteur à l'Analogique 0
  V = analogRead(psensor) * 5.00 / 1024;     // Tension de sortie du capteur
  P = (V - OffSet) * 250;             // Calcul de la pression de l'eau

  Serial.print("Tension :");
  Serial.print(V, 3);
  Serial.println("V");

  Serial.print(" Pression :");
  Serial.print(P, 1);
  Serial.println(" kPa");
  Serial.println();
  display.clearDisplay();
  display.setCursor(10, 0);
  display.setTextSize(2);
  display.setTextColor(WHITE);
  display.print("Valeur :");
  display.setCursor(10, 30);
  display.setTextSize(2);
  display.print(P);
  display.print(" kPa");
  display.display();

  // Pression totale lorsque le tambour d'eau est complètement rempli = 112 kPa
  // mais je vais le considérer comme 100 kPa
  if ((P > 0) && (P <= 10))
  {
    digitalWrite(led1, LOW);
    digitalWrite(led2, LOW);
    digitalWrite(led3, LOW);
    digitalWrite(led4, LOW);
    digitalWrite(led5, LOW);
  }
  else if ((P > 10) && (P <= 20))
  {
    digitalWrite(led1, HIGH);
    digitalWrite(led2, LOW);
    digitalWrite(led3, LOW);
    digitalWrite(led4, LOW);
    digitalWrite(led5, LOW);
  }
  else if ((P > 20) && (P <= 40))
  {
    digitalWrite(led1, HIGH);
    digitalWrite(led2, HIGH);
    digitalWrite(led3, LOW);
    digitalWrite(led4, LOW);
    digitalWrite(led5, LOW);
  }
  else if ((P > 40) && (P <= 60))
  {
    digitalWrite(led1, HIGH);
    digitalWrite(led2, HIGH);
    digitalWrite(led3, HIGH);
    digitalWrite(led4, LOW);
    digitalWrite(led5, LOW);
  }
  else if ((P > 60) && (P <= 80))
  {
    digitalWrite(led1, HIGH);
    digitalWrite(led2, HIGH);
    digitalWrite(led3, HIGH);
    digitalWrite(led4, HIGH);
    digitalWrite(led5, LOW);
  }
  else if (P >= 95)
  {
    digitalWrite(led1, HIGH);
    digitalWrite(led2, HIGH);
    digitalWrite(led3, HIGH);
    digitalWrite(led4, HIGH);
    digitalWrite(led5, HIGH);
  }

  delay(100);
}

Explication bref de ce projet:

Le code Arduino pour ce projet effectue les opérations suivantes :

  • Lecture de la tension du capteur de pression
  • Conversion de la tension en pression en utilisant la valeur d’offset calibrée
  • Affichage de la pression en Kpa sur l’écran OLED
  • Contrôle des LEDs en fonction de la plage de pression

Lorsque la pression de l’eau augmente, les LEDs s’allument progressivement pour indiquer le niveau de pression.

LEDs s'allument progressivement pour indiquer le niveau de pression.
LEDs s’allument progressivement pour indiquer le niveau de pression de l’eau

Vidéo description

Lien outilles

  1. Pour Télécharger de Bibleotique “Adafruit_SSD1306.h : https://www.electroniclinic.com/wp-content/uploads/2020/02/Adafruit_SSD1306.zip
  2. Pour Télécharger de Bibleotique “Adafruit_GFX.h” : https://www.electroniclinic.com/wp-content/uploads/2020/02/Adafruit_GFX_Library.zip
  3. Téléchargement de Arduino logiciel “Arduino IDE ” : https://www.arduino.cc/en/software
  4. Pour plus d’articles : https://www.moussasoft.com/tutoriels-electroniques
  5. TwitterMoussa Lhoussaine (@Moussasoft_com) / Twitter

Arduino – Home