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@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 : 21 octobre 2024 - 29 janvier 2025

Contexte

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. 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.

Objectifs

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 vidant 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. Ce projet vise également à nous familiariser avec les concepts d'automatisation, de boucle de régulation et d'optimisation des procédés.

Image WhatsApp 2025-01-28 à 13.11.54_8a1d40c8.jpgPhoto de notre régulateur de niveau d'eau prise le 27/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
  • Verre en plastique (Réservoir)
  • Boite de glace (Stockage)
  • Tuyaux (1 m)
  • Equerres de renfort x 2
  • Planche à pain?
  • Eau

Machines utilisées au FabLab

  • Imprimante laser 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.jpgSchéma de notre montage de régulation du niveau d'eau dans une cuve

Le schéma ci-dessous montre le fonctionnement du capteur ultrason que nous utilisons pour mieux le comprendre. Le capteur émet des rayons et ces derniers se reflètent quand ils arrivent au niveau d'eau et le récepteur reçois les rayons reflétés. Le capteur enregistre le temps mis pour que le récepteur reçois les rayons et ensuite calcule la distance en utilisant la vitesse du son dans l'air.


image.png

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
Réalisation du montage électronique (Arduino)
Étape 2

Recherche d'un code Arduino et test sur tinkercad 

Étape 3

Construction du montage de la régulation du niveau d'eau dans une cuve

Étape 4

Finale de l'installation : Remplissage des réservoirs par de l'eau dans un circuit fermé et tests

Étape 5

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 un schématisation du projet pour pourvoir faire une liste des matériels que 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 (ultrason, LCD) pour mieux comprendre leurs utilité.

18/11/2024

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

Cela a fonctionné parfaitement sur le Tinkercad; le capteur ultrason envoyé un signal à l'Arduino qui signalé quand la pompe doit fonctionner à travers un module relais.

Screenshot 2025-01-03 at 00.55.06.png

Schéma de notre Tinkercad

21/11/2024

Nous avons fait en premier temps les branchement comme effectués 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 ultrason 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

25/11/2024

Rechercher des nouveaux bibliographies pour faire fonctionner l'écran LCD et le capteur ultrason. 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

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érentes, et voici les résultats obtenus :

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

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 relai.

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 1. 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

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.pngPage2.png

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 allons le couper en utilisant le 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 visses 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 utilisé pour le support. 

IMG_5793.jpg

10/01/2025

Nous avons alors entrepris la réalisation du support pour le verre. Sur une plaque de PMMA, on a fait un gros rond de diamètre 7,5 cm pour loger le verre en plastique qui servira de réservoir. 

IMG_5792.jpg   IMG_5797.jpgIMG_5791.jpg

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

                                IMG_5794.jpg            IMG_5796.jpg

24/01/2025

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

À l'arrière de ce support, nous avons fait 4 petits trous de la taille des visses et disposer de façon que nous pourrions mettre en fonction de l'équerre pour l'accroché sur le support en bois à l'aide d'une perceuse à des endroits stratégiques pour que cela soit pratique et esthétique. Nous avons aussi fait des petits trous pour les encrages de la pompe, de l'écran LCD et pour connecter les équipements à l'Arduino à l'arrière du support en bois. L'encrage de la pompe et de l'écran LCD sera réalisé avec des colliers 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 cuve, l'encrage de la pompe en haut à droite. Le réservoir d'eau sera placé en dessous de la cuve relié par un tuyau. 

Réalisation aussi de la plaque de présentation pour le projet à la gravure sur une plaque en aluminium ? . Une étape de lavage à l'éthanol était nécessaire. 

Montage final 

Annexe

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

f3962f5c-33ef-43b2-9250-8f450a636f35.jpg
#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, mesurer le profondeur du réservoir
float water_height; // mesure le niveau d'eau dans le réservoir
float water_height_percentage;
float distance;

bool pump;

const int relay_pin = 3; // pin n° 3 sur l'Arduino

Ultrasonic ultrasonic(7); // pin n° 7 sur l'Arduino


void setup()
{
pinMode(relay_pin, OUTPUT);
digitalWrite(relay_pin, LOW); // set up the LCD's number of columns and rows
lcd.begin(16, 2);
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 du niveau d'eau jusqu'au capteur ultrason
Serial.print(distance); //0~400cm
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);
}