Comment utiliser Capteur de Pression hydraulique 5V (0-0.5 MPa) avec Arduino pour la surveillance de la pression d’eau
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.
Matériel Requis
- Capteur de pression hydraulique 5 V G1/4 (0-0.5 MPa)
- Carte Arduino (par exemple, Arduino UNO)
- Écran OLED 128X64
- 5 LEDs et résistances correspondantes (360 ohm)
- 2x Condensateur (480 uF)
- 1x Régulateur de tension L7805 5V
- Câbles de connexion
- Réservoir d’eau ou système de distribution
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.
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 :
LED | Broche de l’Arduino |
---|---|
LED1 | Broche numérique 2 |
LED2 | Broche numérique 3 |
LED3 | Broche numérique 4 |
LED4 | Broche numérique 5 |
LED5 | Broche numérique 6 |
Schéma de câblage :
-
20 LED 5mm rouge14,00 DH
-
Régulateur de tension L7805 +5V6,00 DH
-
Produit en promotionCâble de connexion M/F JumperLe prix initial était : 7,00 DH.6,00 DHLe prix actuel est : 6,00 DH.
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.
-
Arduino UNO Avec ATmega328 SMD85,00 DH
-
Produit en promotion65 Fils flexible male – maleLe prix initial était : 30,00 DH.25,00 DHLe prix actuel est : 25,00 DH.
-
Arduino Uno R3 avec câble USB120,00 DH
Vidéo description
Lien outilles
- Pour Télécharger de Bibleotique “Adafruit_SSD1306.h“ : https://www.electroniclinic.com/wp-content/uploads/2020/02/Adafruit_SSD1306.zip
- Pour Télécharger de Bibleotique “Adafruit_GFX.h” : https://www.electroniclinic.com/wp-content/uploads/2020/02/Adafruit_GFX_Library.zip
- Téléchargement de Arduino logiciel “Arduino IDE ” : https://www.arduino.cc/en/software
- Pour plus d’articles : https://www.moussasoft.com/tutoriels-electroniques
- Twitter: Moussa Lhoussaine (@Moussasoft_com) / Twitter