Traitement d'une eau trouble (mesure de turbidité)
Informations
- Mohammed EL Amine CHOUAF(mohammed_el_amine.chouaf@etu.sorbonne-universite.fr)
- Loréna COPPET (lorena.coppet@etu.sorbonne-universite.fr)
-
Sara Yasmine GAOUA (
)sarra_yasmine.gaoua@etu.sorbonne-universite.fr) - Chaza TOUATI (chaza.touati@etu.sorbonne-universite.fr)
- Master 2 de Chimie parcours Ingénierie Chimique : MU5Ci - 803 Optimisation et contrôle des procédés
- Période: 11/12/2023 -
31/01/12/02/2024
Contexte
On peut définir la turbidité comme la teneur en matériaux en suspension. En d'autres termes, on va mesurer la clarté d'un liquide. La nature de la suspension peut être diverse et variée.
Dans notre cas, on souhaite traiter une eau trouble (synthétique) par filtration (sur colonne contenant différentes couches filtrantes: gravier, sable fin et coton)gros sable). Pour se faire on cherchera à mesurer en continu la turbidité du filtrat et ainsi instaurer une boucle de recyclage en fonction de la valeur obtenue et des critères définis et tout cela en automatisant le système (Arduino).
Deux domaines cohabitent donc et sont le reflets des enjeux technologiques et chimiques d'aujourd'hui. En effet, le fait d'intégrer une part d'automatisation peut faciliter les opérations avec un même niveau de rigueur et de précision, en optimisant le temps.
Mode opératoire
Objectif: Mesure en continu de la turbidité d’une eau trouble traitée par filtration.
-
Alimentation de la colonne via une pompe électrique (pompe 1)
-
Récupération du filtrat et mesure de la turbidité à l’aide d’une sonde (capteur de turbidité)
-
Tant que la consigne n’est pas atteinte, recyclage du filtrat dans la colonne à l’aide d’une pompe (pompe 2)
-
Contrôle du niveau d’eau dans la colonne et celui de la récupération du filtrat avec des capteurs de niveau
Composants
-
2 pompes électriques
-
2 réservoirs
-
2 capteurs de niveau
-
Une colonne de filtration (conçue à l'imprimante 3D)
-
Filtres
-
1 capteur de turbidité
-
Eau trouble synthétique
- 1 carte Arduino
- Branchements
- 2 alimentations 12 V
- 2 moteurs
- 2 agitateurs (conçus à l'imprimante 3D)
Construction
(Fichiers, photos, code, explications, paramètres d'usinage, photos, captures d'écran...)
Étape 1
Plan du procédé
Listing du matériel
Étape 2
Construction de la maquette
Recherche du code
Connexion avec Arduino
Étape 3
Éssais
Journal de bord
16/10/2023
Choix du projet et du groupe de travail
Date 27/10/2023
Réunion de projet: définition des enjeux
Date04/11/2023
2ème réunion de projet: Réalisation du schéma du procédé et listing du matériel
Date08/11/2023
Entretien avec le tuteur afin d'affiner nos idées; discussion sur la faisabilité des réalisations; listing du matériel disponible
Date10/11/2023
Ajustement et correction du schéma suite à l'entretien
Date21/11/2023
Récupération du matériel à Sorbonne Université - plateforme d'Ingénierie Chimique
Date23/11/2023
Rangement du matériel au Fablab dans une boite prévu à cet effet
Date05/12/2023
Récupération de gravier et sable (fin, moyen) nécessaire à la filtration
Date13/12/2023
Récupération du support en bois pour le montage du procédé
21/12/2023
1ère rencontre au fablab pour observer et découvrir le matériel disponible
22/12/2023
Montage du support en bois
28/12/2023
Code préliminaire: recherche du code Arduino pour chaque composant de notre procédé
Date
1ère rencontre au fablab pour observer et découvrir le matériel disponible
Date
Montage du support en bois
08/01/2024
Impression de la colonne de filtration avec l'imprimante 3D disponible au Fablab
Dimensions : il s'agit d'un entonnoir avec un grand diamètre externe de 14 cm, un grand diamètre interne de 13,5 cm, un petit diamètre externe de 2 cm, un petit diamètre interne de 1,3 cm, une hauteur totale de 21 cm, une hauteur du cône de 16 cm et une hauteur du tube de 5 cm
09/01/2024
Dimensionnement du support du filtre
19/01/2024
Fixation de la colonne sur le support en bois
22/01/2024
Impression 3D des mobiles d'agitation
Dimensions : longueur arbre d'agitation 9 cm, diamètre hélice 3 cm
02/02/2024
04/02/2024
Recherche du manuel du capteur de turbidité. Informations sur la relation entre le voltage et la turbidité du capteur (modèle sen0189)
Cette courbe est la fonction de transfert de la tension en turbidité.
Mesure de la turbidité de la solution d'alimentation : 3000 ntu
Détermination de la consigne : 1763 ntu (eau claire)
09/02/2024
Code
#include <Wire.h>
#include <rgb_lcd.h>
const int relaisPompe1 = 3; // Broche de commande pour la pompe d'alimentation
const int relaisRecyclage2 = 2; // Broche de commande pour la pompe de recyclage 2
const int trigPin = 5; // Broche de déclenchement pour capteur de niveau
const int echoPin = 4; // Broche de réception pour capteur de niveau
const int sensorPin = A0; // Broche pour le capteur de turbidité
const int d1 = 2; // Seuil de distance pour le capteur de niveau
const float TS = 1703; // Turbidité souhaitée
void activerPompe(int relais, unsigned long duree);
void activerCapteurNiveau();
int mesurerDistance();
float mesurerTurbidite();
void setup() {
// Initialisation des broches des relais en sortie
pinMode(relaisPompe1, OUTPUT);
pinMode(relaisRecyclage2, OUTPUT);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(sensorPin, INPUT);
Serial.begin(9600); // Initialisation de la communication série
}
void loop() {
// Déclencher la pompe 1 pendant 5 secondes
activerPompe(relaisPompe1, 5000);
// Attendre 10 secondes tout en mesurant la distance avec le capteur de niveau
unsigned long startTime = millis();
while (millis() - startTime < 10000) {
activerCapteurNiveau();
int distance = mesurerDistance();
if (distance == d1) {
digitalWrite(relaisPompe1, LOW); // Arrêter la pompe si la distance atteint d1
float ntu = mesurerTurbidite();
// Si la turbidité est supérieure à la turbidité souhaitée, activer la pompe de recyclage 2 pendant
10 secondes
if (ntu > TS) {
activerPompe(relaisRecyclage2, 10000);
}
// Vérifier si la turbidité a atteint la valeur souhaitée (TS) pour arrêter le processus
if (ntu == TS) {
// Arrêter le processus
return;
}
}
delay(500); // Attendre un court laps de temps avant de refaire une mesure
}
// Attendre 5 minutes avant de répéter le processus
delay(5 * 60 * 1000); // 5 minutes en millisecondes
}
// Fonction pour activer une pompe pendant une durée spécifiée
void activerPompe(int relais, unsigned long duree) {
digitalWrite(relais, HIGH);
delay(duree);
digitalWrite(relais, LOW);
}
// Fonction pour activer le capteur de niveau
void activerCapteurNiveau() {
// Envoyer une impulsion ultrasonique
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
}
// Fonction pour mesurer la distance avec le capteur de niveau
int mesurerDistance() {
// Mesurer la durée du signal écho
long duration = pulseIn(echoPin, HIGH);
// Calculer la distance en centimètres
int distance = duration * 0.034 / 2;
// Afficher la distance mesurée
Serial.print("Distance: ");
Serial.print(distance);
Serial.println(" cm");
return distance;
}
// Fonction pour mesurer la turbidité
float mesurerTurbidite() {
float volt = 0;
for (int i = 0; i < 800; i++) {
volt += ((float)analogRead(sensorPin) / 1023) * 5;
}
volt = volt / 800;
volt = round(volt * 100) / 100; // Arrondir à deux décimales
float ntu;
if (volt < 1) {
ntu = 3000;
} else {
ntu = -1120.4 * volt * volt + 5742.3 * volt - 4353.8; // Utilisation de l'opérateur * pour élever au
carré
}
delay(10);
return ntu;
}