Skip to main content

Régulation du niveau d'eau dans une cuve (Groupe E)

Informations

Membres du projet :

  • Jonathan LI (jonathan.li@etu.sorbonne-universite.fr)
  • Léa LIN (lea.lin.1@etu.sorbonne-universite.fr)
  • Bernard LUONG (bernard.luong@etu.sorbonne-universite.fr)
  • Nishta RAMKHELAWON (nishta.ramkhelawon@etu.sorbonne-universite.fr)

Formation :  Master 2 Chimie parcours Ingénierie Chimique - MU5CI803 : Optimisation et contrôle des procédés

Date : 07 octobre 2024 - 29 janvier 2025

Contexte

La régulation consiste à maintenir constante une grandeur physique telle que le niveau d’eau d’un réservoir percé, la température ou l’humidité d’un local. Pour cela, la régulation ajuste la "puissance" à apporter en fonction des besoins. En effet pour maintenir la consigne, il faut compenser les perturbations telles que les fuites du réservoir, les variations de la température extérieure ou de l’ensoleillement. La valeur de la grandeur que l’on cherche à maintenir constante est appelée consigne. Il est donc important de réguler le niveau d'eau dans un réservoir pour préserver les équilibres écologiques. De plus, dans les systèmes industriels et domestiques, un bon contrôle permet d'améliorer l'efficacité énergétique et d'éviter le gaspillage, garantissant ainsi une gestion durable des ressources en eau. Enfin, grâce à la régulation, il est possible de surveiller le fonctionnement correct de l’installation. On pourra par exemple éviter le débordement du réservoir.

Objectifs

Dans le cadre du projet de l'UE 5CI803, nous allons réaliser une étude pratique portant sur la régulation du niveau d'eau dans une cuve à l'aide d'une carte Arduino et d'un capteur ultrason. Le but de ce projet est de concevoir et de mettre en œuvre un système automatisé permettant de contrôler le niveau de liquide dans un réservoir se videant dans un autre réservoir de stockage de manière continue dans un circuit fermé. Ce système repose sur l'utilisation d'un capteur ultrason pour mesurer le niveau d'eau, d'une pompe 12V pour ajuster le niveau de liquide, et d'un programme codé sur Arduino pour assurer une régulation précise et stable. Un orifice se trouve en bas du réservoir afin que le liquide se vide sous l'action de la gravité.

Ce projet s'inscrit dans la première partie du cours, dédiée à la régulation et à l'automatisation, et vise à nous initier aux concepts fondamentaux de l'ingénierie chimique. Ce projet vise également à nous rencontrer avec la fabrication d'une maquette de A à Z, et la prise en main d'un microcontrôleur Arduino UNO.

Image WhatsApp 2025-01-29 à 16.13.19_2238b15c.jpg

Fig. 1 Notre régulateur de niveau d'eau prise le 29/01/2025

Matériels

  • Support (en bois et en PMMA)
  • Arduino UNO
  • Écran LCD (16 x 2) I2C
  • Breadboard
  • Pompe 12 V  (+ adaptateur 12 V)
  • Capteur ultrason (HC-SR04)
  • Module relais (pour contrôler la pompe en mode automatique)
  • Câbles électriques x 20
  • Pinces crocodiles électronique x 3
  • Verre en plastique (Réservoir)
  • Boîte de glace (Stockage)
  • Tuyaux (1 m)
  • Equerres de renfort x 2
  • Collier de serrage x 3
Rôles des matériels électroniques

Arduino UNO :
Arduino UNO est une plateforme électronique open-source comprenant une carte de circuit programmable facile à utiliser et un logiciel : Arduino IDE. La carte Arduino UNO sert à raccorder des capteurs et des actionneurs, et elle exécute un programme informatique. 

Breadboard :
Le breadboard sert à construire les montages électroniques sans soudure.

Capteur ultrason : 
C’est un instrument électronique qui utilise des ondes sonores ultrasonores (à travers l'air) pour mesurer la distance de l'objet cible, et le son réfléchi est converti en signal électrique. Ce capteur nous a aidé à mesurer le niveau d’eau qu’il y avait dans le réservoir. Notre capteur ultrason mesure la distance en centimètre en chiffre entier.

L’écran LCD :
Un I2C LCD 16x2 est un dispositif qui peut afficher du texte et des caractères sur un écran à cristaux liquides (LCD) de 16x2 (16 colonnes et 2 lignes) en utilisant le protocole I2C. On utilise un I2C LCD16x2 pour afficher des informations provenant de notre projet Arduino, telles que des relevés de capteurs. Dans notre cas, l'écran LCD affichera "Niveau d'eau %" pour nous indiquer le niveau d'eau dans le réservoir en pourcentage et "pump on" quand la pompe s'allumera.

Pompe :
La pompe nous aide à pomper l’eau du stockage pour remplir le réservoir. Elle va être contrôler par le module relais puisque elle aura besoin de 12 V pour fonctionner.

Module Relais : 
Le module relais est un interrupteur commandé électriquement qui peut être activé ou désactivé pour décider de laisser passer le courant ou non. Il est conçu pour être contrôlé avec de faibles tensions, comme 5V, compatible avec votre Arduino. Notre module relais est celui qui va allumer ou éteindre la pompe quand il reçoit le signal de l’arduino. Grâce à l’alimentation de 12 V que nous avons utilisé, le relais module peut faire fonctionner la pompe puisque cette dernière a besoin de plus de 5V pour s’allumer.

Machines utilisées au FabLab

  • Découpeuse laser Trotec Speedy 360
  • Pistolet à colle
  • Perceuse
  • Multimètre

Construction

Lors de notre première séance, nous avons réalisé un premier schéma du montage afin d'étudier les équipements dont nous aurions besoin pour réaliser notre projet.

5CI803.jpgFig. 2 Schéma de notre montage de régulation du niveau d'eau dans une cuve

Le schéma ci-dessous montre le fonctionnement du capteur à ultrasons que nous utilisons pour mieux le comprendre. Le capteur émet des rayons et ces derniers se transmettent lorsqu'ils arrivent au niveau d'eau et le récepteur reçoit les rayons réfléchis. Le capteur le temps mis pour que le récepteur reçoive les rayons et enregistre ensuite la distance en utilisant la vitesse du son dans l'air.


image.png

Fig. 3 Fonctionnement du capteur Ultrason
( https://www.robotique.tech/tutoriel/capteur-ultrason-arduino/ )

Nous avons ensuite suivi à la lettre ces  5 étapes afin de pouvoir nous organiser au mieux dans le bon déroulement du projet : 

Étape 1
La première étape consiste à rechercher sur le fonctionnement de l'Arduino UNO ainsi que le code et le montage utilisés habituellement pour l'utilisation d'un capteur à ultrasons pour la lecture du niveau d'eau. Les premiers essais sont réalisés sur Tinkercad afin de visualiser le montage dans le global.
Étape 2

Le code d'Arduino est inspiré de ressources diverses sur Internet et sur Youtube. Une fois le Tinkercad effectué avec les différents composants électroniques, nous pouvons réaliser un montage simple pour faire fonctionner l'écran LCD avec le capteur à ultrasons. Les tests du code sont réalisés sur le logiciel Arduino IDE afin de mettre en œuvre notre montage et de modifier le code en temps réel. Nous devons notamment faire attention aux librairies utilisées dans le code car cela nous a coûté beaucoup de temps pour trouver les bonnes librairies à nos matériels électroniques. 

Étape 3

Après avoir bien vérifié que le code Arduino (Annexe) marche correctement avec les objectifs émis au début en testant avec deux verres d'eau et que tous les composants du montage (pompe, alimentation, carte Arduino UNO) fonctionnent comme il le faut, nous passer à l'étape de la construction du montage. En utilisant un support en bois et en PMMA, et divers outils dans le FabLab comme la découpeuse laser Trotec Speedy 360 et la perceuse, nous montons un support simple pour notre dispositif. 

Étape 4

L'avant dernière étape consiste à assembler les dispositifs électroniques et le support afin d'obtenir la maquette finale. Les tests sont réalisés pour s'assurer que l'installation fonctionne bien qu'il n'y ait pas de problèmes inattendus. 

Étape 5

La démonstration de la maquette est réalisée le 29 janvier en présence de M. Jérôme Pulpytel.
Veuillez cliquer sur le lien ci-dessous pour voir une démonstration du montage final de notre projet. Vous pourrez voir nos résultats obtenues où nous avons fixé le niveau d'eau dans le réservoir à 50%.

Vidéo de la démonstration

Journal de bord

07/10/2024

Nous avons fait le choix de notre projet qui est la Régulation du niveau d'eau dans une cuve. Ensuite nous avons fait une schématisation du projet pour pouvoir faire une liste des matériels dont nous aurons besoin.

15/10/2024

Nous avons complété la liste du matériel nécessaire pour envoyer à notre tutrice.

21/10/2024

Récupération du matériel auprès de la tutrice et brainstorming.
Essai d'un montage sur Tinkercad.
Compréhension et recherches sur les différents composés utilisés (ultrasons, LCD) pour mieux comprendre leur utilité.

18/11/2024

Nous avons écrit dans un premier temps le code sur Tinkercad pour le capteur ultrason + l'écran LCD en utilisant la bibliothèque : Adafruit.

Cela a parfaitement fonctionné sur le Tinkercad ; le capteur à ultrasons envoie un signal à l'Arduino qui signale lorsque la pompe doit fonctionner à travers un module relais.

Connexions :

Arduino :
Pin 5V connecté au breadboard dans la colonne positive
GND connecté au breadboard dans la colonne négative

Le capteur ultrason :Capture d'écran 2025-01-03 à 00.55.06.png
VCC : 5V de l'Arduino
GND : GND de l'Arduino
SIG : PIN 7 sur l'Arduino

L'écran LCD :
VCC : 5V de l'Arduino
GND : GND de l'Arduino
SCL : SCL sur l'Arduino
SDA : SDA sur l'Arduino

Module relais :
SIG : PIN 3 sur l'Arduino
VCC : 5V de l'Arduino
GND : GND de l'Arduino

V+ : pôle positif de la pompe
V- : pôle négatif de la pompe

VIN : pôle positif de l'alimentation                                                                      Fig. 4 Schéma de notre Tinkercad
GND : pôle négatif de l'alimentation

21/11/2024

Nous avons fait en premier temps le branchement comme effectué sur le Tinkercad comprenant le breadboard, l'Arduino UNO, le capteur ultrason et l'écran LCD, avec le code correspondant. Sur Tinkercad, le code a bien marché mais lorsque nous avons testé sur le logiciel Arduino IDE , nous avons rencontré un problème de détection de port. Avec le premier ordinateur, aucun port n'est détecté. Sur le deuxième ordinateur, un port est détecté mais il ne semble pas être le bon et c'est affiché un message d'erreur sur Arduino IDE. 

Nous avons changé le Arduino UNO et il n'y a plus de message d'erreur. Le code fonctionne bien pour le capteur à ultrasons mais il faut le modifier encore car il ne donne pas des valeurs cohérentes. Le code n'a pas fonctionné pour l'écran LCD même si nous l'avons échangé comme vous pouvez le voir sur le schéma ci-dessous.

EBBE7960-17F3-4E56-BD67-3374B1261B05.jpg

Fig. 5 Erreur affichée sur l'écran LCD

25/11/2024

Nous avons recherché des nouvelles bibliographies pour faire fonctionner l'écran LCD et le capteur à ultrasons. Nous avons installé ces 2 bibliothèques suivantes sur Arduino IDE : 
1) Grove Ultrasonic Ranger
2) Grove LCD RGB Backlight

28/11/2024

Nous avons réussi à faire fonctionner les 2 équipements : le capteur ultrason et l'écran LCD comme vous pouvez le voir sur le schéma ci-dessous.   (Voir le code en annexe)

9bf7f993-92c5-443d-b6ea-e94f689e5a4a.jpg

Fig. 6 Affichage sur l'écran LCD 

Pour la prochaine séance, nous allons tester si la pompe fonctionne bien ou pas et si nous arrivons à réguler le niveau d'eau.

29/11/2024

Lors de cette séance, nous avons découvert et utilisé Inkscape , un logiciel de dessin vectoriel open source. Ce dernier permet de concevoir et de modifier des fichiers de format SVG, souvent utilisés par l'imprimante laser 360. Inkscape est essentiel pour créer des designs précis, définir les tracés nécessaires pour les découpes et les gravures, et convertir les fichiers dans des formats compatibles avec les machines. Grâce à ses fonctionnalités, nous avons pu préparer des motifs adaptés, ajuster leurs dimensions et optimiser la découpe ainsi que la gravure sur différents matériaux. À l'issue de cette séance, nous avons réalisé deux gravures sur deux matériaux différents, et voici les résultats obtenus :

Image WhatsApp 2025-01-28 à 13.11.54_f3c2f4ff.jpg

Fig. 7 Gravure sur deux plaques différentes

05/12/2024

Nous avons testé la pompe avec différentes batteries de 12 V mais cela n'a pas fonctionné.

12/12/2024

Nous avons changé d'alimentation et la pompe fonctionne bien maintenant avec le module relais.

La pompe s'arrête dès que le niveau d'eau est atteint et se rallume lorsque le niveau d'eau est inférieur au niveau souhaité. Nous avons complété la plupart des objectifs du sujet. Le montage fonctionne bien avec le code. 

Pour la prochaine fois, nous allons commencer à mettre en forme le montage proposé en figure 2. Il faut d'abord trouver le bon diamètre de l'orifice du bas du réservoir qui permet le débit d'eau sortant du réservoir soit inférieur au débit d'eau entrant dans le réservoir via la pompe. 

image.png

Fig. 8 Petite démonstration du montage

19/12/2024

Nous avons réussi à trouver le bon diamètre de l'orifice du bas du réservoir et cela a permis de réguler le niveau d'eau du réservoir jusqu'à 85 %. 

Nous avons ensuite proposé un schéma du montage ci-dessous :

                       Page1 3.png            Page2 3.png

Fig. 9 Schéma de (a) l'avant et (b) de l'arrière du support en bois

20/12/2024

Pour le support du réservoir, nous avons décidé d'utiliser un support en PMMA où nous l'avons coupé en utilisant la découpeuse laser 360. Tout d'abord, nous avons fait des tests sur un bout de PMMA pour avoir le bon diamètre des trous correspondant aux vis que nous allons utiliser et de s'affrenchir des incertitudes de la découpeuse laser. Une fois la réalisation, nous avons trouvé le diamètre correspondant au visse que nous allons utiliser pour le support.

IMG_5793.jpg

Fig. 10 Des tests faits par le laser pour les trous

10/01/2025

Nous avons ensuite procédé à la fabrication du support pour le verre. Pour cela, nous avons découpé un grand cercle de 7,5 cm de diamètre dans une plaque de PMMA afin d'y insérer le verre en plastique servant de réservoir.

IMG_5792.jpg   IMG_5797.jpgIMG_5791.jpg

Fig. 11 Support du réservoir

Nous avons également réalisé un couvercle du réservoir pour le support du capteur à ultrasons. Le couvercle du réservoir recouvre tout le haut du réservoir, tous en laissant passer le capteur à ultrasons et le tuyau.  

                    IMG_5794.jpg            IMG_5796.jpg

Fig. 12 Couvercle du réservoir

24/01/2025

Réalisation des encrages sur le support en bois via des trous.

À l'arrière de ce support, nous avons percé quatre petits trous de la taille des vis, positionnés de manière à permettre une fixation régulière en fonction de l'équerre, afin de l'accrocher solidement au support en bois. Ces trous ont été réalisés avec une perceuse à des emplacements stratégiques pour allier praticité et esthétisme. Nous avons également ajouté de petits trous pour fixer la pompe, l'écran LCD et connecter les équipements à l'Arduino à l'arrière du support en bois. L'ancrage de la pompe et de l'écran LCD sera assuré à l'aide de colliers de serrage.

image.png

Fig. 13 Collier de serrage

27/01/2025

Réalisation du montage final.

Nous avons rassemblé toutes les pièces de puzzle de notre projet : le support pour notre réservoir, l'encrage de la pompe en haut à droite, le LCD en haut à gauche. Le stockage d'eau sera placé en dessous du réservoir relié par un tuyau et une pompe.

Nous avons rencontré un petit problème avec la pompe car nous l'avons placée en haut et donc elle ne pouvait pas bien pomper l'eau dans le réservoir. Quand nous avons placé la pompe beaucoup trop haute, la pression était trop élevée et donc elle ne pouvait pas transporter l'eau dans le tuyau. Pour résoudre ce problème, nous avons décidé de remplir le tuyau avec l'eau manuellement avant de démarrer la pompe. Une autre solution était de placer la pompe au bas près du stockage.

                                           IMG_5869.jpg  Image WhatsApp 2025-01-28 à 13.11.54_7c594163.jpg     

Fig. 14 Montage (presque) final

29/01/2025

Pour notre dernière session, nous avons utilisé la découpeuse laser 360 pour faire la gravure du QR code qui mêne à la page de notre wiki sur une plaque de bois Peltier de épaisseur 6 mm.

                                            IMG_5890.jpg           IMG_5904.jpg

Fig. 15 Gravure du QR code

Présentation du montage final.

Lors de notre dernière séance, nous avons souhaité peaufiner les derniers détails afin de rendre notre projet aussi abouti que possible. Cela inclut notamment l'ajout d'étiquettes pour une meilleure compréhension de notre travail, ainsi que l'organisation optimisée des câbles à l'arrière du support. Ces ajustements nous ont finalement permis d'obtenir le résultat suivant :

                    IMG_5905.jpg               IMG_5891.jpg

Fig. 16 Montage final (devant et l'arrière du support)

Conclusion

En conclusion, ce projet nous a permis de mettre en application les concepts de régulation et d'automatisation en concevant un système de contrôle du niveau d'eau dans une cuve à l'aide d'un capteur à ultrasons et d'une carte Arduino . Grâce à une approche progressive et méthodique, nous avons pu surmonter les différentes difficultés techniques rencontrées, notamment le choix des bibliothèques logicielles, les problèmes de connexion des composants et l'optimisation du débit de l'eau dans le circuit.

L'intégration de la pompe et du module relais a permis d'assurer une régulation efficace du niveau d'eau, validant ainsi les principes de contrôle mis en œuvre. De plus, l'utilisation du FabLab et des outils de fabrication numérique nous a offert une expérience concrète de prototypage, nous initiant aux techniques de découpe laser et de modélisation.

Au-delà de l'aspect technique, ce projet nous a permis de développer des compétences essentielles en gestion de projet, en travail d'équipe et en résolution de problèmes. La démonstration finale a confirmé le bon fonctionnement de notre système, illustrant la pertinence des choix techniques réalisés.

Annexe

Voici le code utilisé :
#include "Ultrasonic.h"
#include <Wire.h>
#include "rgb_lcd.h"


rgb_lcd lcd; // setting up LCD screen


const int colorR = 255;
const int colorG = 0;
const int colorB = 0;


const float water_height_needed_percentage = 80; // en %, choissisez le niveau d'eau souhaité
const float max_height = 14; // en cm, mesurez le profondeur du réservoir
float water_height; // mesure le niveau d'eau dans le réservoir
float water_height_percentage; //calcule le % d'eau dans le réservoir
float distance; // distance entre la surface d'eau et l'ultrason


bool pump;


const int relay_pin = 3; // PIN 3 sur l'Arduino

Ultrasonic ultrasonic(7); // PIN 7 sur l'Arduino


void setup()
{
pinMode(relay_pin, OUTPUT);
digitalWrite(relay_pin, LOW); 
lcd.begin(16, 2); // set up the LCD's number of columns and rows
lcd.setRGB(colorR, colorG, colorB);


// Pour afficher sur l'écran LCD
lcd.print("Niveau d'eau % :"); 


delay(100);
Serial.begin(9600);
}



void loop()
{
distance = ultrasonic.MeasureInCentimeters(); // mesure la distance entre la surface d'eau et l'ultrason par le capteur ultrason
Serial.print(distance); //0~14cm
Serial.println(" cm");
water_height = max_height - distance;
water_height_percentage = (water_height/max_height) * 100.0;


if (water_height_percentage >= water_height_needed_percentage) {
digitalWrite(relay_pin, LOW); // Eteint la pompe si le niveau d'eau est atteint
pump = false;
}
else
{
digitalWrite(relay_pin, HIGH); // Allume la pompe si le niveau d'eau est inférieur à celui souhaité
pump = true;
Serial.print("PUMP ON\n");
}


// Afficher les détails sur l'écran LCD
lcd.setCursor(0, 1);
lcd.print(water_height_percentage);
if (pump)
{
lcd.print(" pump on");
}
else
{
lcd.print(" "); // pour effacer le "pump on" sur l'écran
}


delay(250);
}

Pour mieux comprendre le code, voici un schéma pour expliquer les variables détaillées dans le code.

f3962f5c-33ef-43b2-9250-8f450a636f35.jpg

Remerciements

Nous tenons à remercier chaleureusement M. Pulpytel et Mme Akrour pour leur encadrement tout au long du projet 5CI803. Nous avons énormément apprécié travailler sur ce projet, qui nous a permis d'acquérir de nouvelles compétences et d'approfondir nos connaissances. Votre accompagnement et vos conseils nous ont été très précieux. Merci encore pour votre soutien et votre disponibilité !

De la part de toute l'équipe E !

Image WhatsApp 2025-01-29 à 18.00.43_bbd7b89b.jpg

(Une pensée également pour Jonathan LI)