Réalisation d'une burette automatique (Groupe A)
Figure 1 : Image du montage final de la burette automatique
Informations
-
Fatimat ABDULWAHAB, Shola ADENIYI, Aya BOUSSALEH, Hugo LUTZ et Raounaki SAID ABDALLAH
-
fatimat.abdulwahab@etu.sorbonne-universite.fr; shola.adeniyi@etu.sorbonne-universite.fr; Aya.boussaleh@etu.sorbonne-universite.fr ; hugo.lutz@etu.sorbonne-universite.fr ; raounaki.said_abdallah@etu.sorbonne-universite.fr
-
Projet IC 803 - Optimisation et contrôle de procédé
-
Octobre 2024 - Janvier 2025
Contexte
Dans le cadre de l'UE Optimisation et contrôle de procédés, nous devons effectuer la régulation d'un système à l'aide d'une carte Arduino. Pour ce faire, nous devons déterminer le matériel nécessaire ainsi que les branchements et le code qui permettront l'automatisation de notre procédé.
Objectifs
Notre sujet porte sur la réalisation d'une burette automatique. Pour effectuer la régulation, nous utiliserons un capteur de couleur pour mesurer l'intensité de la couleur dans le liquide, une électrovanne pour contrôler le débit de liquide coloré. Nous utiliserons également un capteur de distance pour mesurer la volume du liquide versé et un moteur DC pour agiter le liquide. Le but est d'atteindre une couleur définie dans le récipient rempli d'eau.
Matériel
-
Arduino
- Breadboard
- Moteur DC
- Electrovanne
- Capteur de couleur (TCS3200)
- Capteur de distance à ultrason (Grove-Ultrasonic ranger V2.0)
-
Agitateur (imprimé 3D)
- Ecran LCD (Grove - 16 x 2 LCD (White on Blue))
- Relais
- Module Mosfet
-
Résistances
-
Tuyaux
-
Fils
- LED rouge
-
Bouteille
- Photorésistance (pas utilisé)
Construction
14/10/2024
Lors de notre rencontre, nous avons déterminé nos besoins en termes de matériel et nous avons commencé à tester les différents composants à tour de rôle en commençant par la photorésistance.
21/10/2024
Nous nous sommes réunis afin de mieux définir notre projet. Voici le procédé que nous souhaitons obtenir:
Dans une boîte opaque, nous aurons un récipient contenant de l’eau, la photorésistance et une lampe. La boîte opaque nous permet de contrôler la lumière qui sera détectée dans le milieu. Lorsqu'on appuie sur le bouton, un capteur à ultrason mesure le niveau du colorant/sirop à t=0, la LED rouge s’allume, l’agitateur se met en route et l’électrovanne s’ouvre. Tant que la photorésistance détecte plus de lumière qu’une valeur seuil, l'électrovanne reste ouverte donc on fait couler le sirop/colorant. Au fur et à mesure, la photorésistance détectera de moins en moins de lumière jusqu’à atteindre la couleur souhaitée. Une fois cette couleur atteinte, l’électrovanne se ferme, l’agitateur s’arrête et la LED s’éteint. On mesure le niveau du colorant à la fin afin de connaître la quantité qui a été versée pour atteindre la couleur définie; cette valeur sera ensuite affichée sur un écran LCD.
Figure 2 : Schéma 3D de la burette automatique
07/11/2024
Nous nous sommes retrouvés dans une salle afin d'avancer sur le projet. L’objectif est de définir ce qu’il reste à faire et de se répartir les tâches afin que nous puissions véritablement commencer les tests en utilisant directement le matériel.
Nous avons réussi à faire fonctionner l’électrovanne en faisant couler de l’eau d’une bouteille à l’autre. De plus, le capteur pour la mesure de la distance est à présent fonctionnelle.
Figure 3 : Fonctionnement de l'électrovanne
Pour l’agitateur, nous utiliserons ce modèle que nous allons imprimer en 3D: https://www.thingiverse.com/thing:4676097/files . Par la suite, on utilisera de la colle pour attacher l’agitateur au moteur. Nous avons utilisé le logiciel IdeaMaker pour dimensionner l'agitateur et nous avons lancé l'impression de notre agitateur de 10 cm.
Figure 4 : Agitateur imprimé en 3D
25/11/2024
Nous nous sommes retrouvés au Fablab, l'objectif de la séance est de bien vérifier le fonctionnement de chaque élément séparé de notre système, notamment, le moteur utilisé pour l'agitation. Il s'avère que nous avions un moteur pas-à-pas, alors qu'il nous faudrait un moteur DC pour pouvoir agiter à de vitesses suffisantes. Nous avons donc récupéré un moteur DC et par la même occasion un capteur de couleur. Nous avons pu tester le moteur DC et l'avons attaché d'une façon un peu précaire à l'agitateur imprimé en 3D.
Lors de la prochaine séance nous allons tester le capteur de couleur et trouver la manière dont nous allons fixer l'agitateur au moteur.
09/12/2024
Nous nous sommes retrouvés dans une salle avec notre tuteur pour qu'il nous explique le fonctionnement de capteur de couleur ainsi que le code arduino correspondant pour la mise en marche. Ce capteur de couleur mesure l'intensité lumineuse avec différents filtres et renvoie une valeur en rouge, bleu et vert. Plus la couleur est rouge intense, plus la valeur mesurée est élevée.
Figure 5 : Image du serial moniteur d'Arduino avec un seuil à "red" = 175
18/12/2024
Nous nous sommes retrouvés au Fablab dans le but d'avancer dans la partie fixation de notre matériels sur le support. Le support de la bouteille a été réalisé à l'aide d'une découpeuse laser, tandis que l'électrovanne a été fixée à l'aide d'une presseuse et de vis.
Figure 6 : Fixation électrovanne
19/12/2024
Conception (par découpe laser) et fixation de la boite noire.
Figure 7 : Fixation de la boite noire
09/01/2025
Nous nous sommes réunis au Fablab pour programmer le capteur de couleur, et tester son fonctionnement. En parallèle, nous avons poursuivi l’assemblage de notre matériels sur le support.
15/01/2025
Nous nous sommes réunis au FabLab pour avancer sur notre projet. Nous avons recouvert l'intérieur de notre boîte noire avec du papier adhésif, puis nous avons poursuivi l'installation de notre matériel sur le support. Nous avons également connecté la LED et le moteur. Cependant, nous avons rencontré un problème avec le moteur : bien qu'il s'allume correctement lorsque la broche est réglée sur HIGH, il ne s'éteint pas avec LOW. Pour résoudre ce problème, nous avons fixé un rendez-vous avec notre tuteur le 20/01.
Figure 8 : Montage Arduino avec LED et moteur sur breadboard
20/01/2025
Nous avons rencontré notre tuteur pour résoudre le problème lié au moteur. Il s'est avéré que l'Arduino ne pouvait pas fournir les 5 V nécessaires à tous les composants. Pour y remédier, nous avons connecté le moteur et l'électrovanne à une alimentation indépendante de 12 V, ce qui a permis à celui-ci de fonctionner correctement. Cependant, cette tension est trop élevée donc nous utilisons un potentiomètre pour régler le la tension qui arrive au moteur et donc la vitesse du moteur.
Nous avons ensuite gravé au laser un QR code menant à notre Wiki, nos noms, ainsi que l'UE encadrant notre projet, sur une planche de peuplier de 6 mm.
Figure 9 : Plaque d'identification du projet
22/01/2025
Notre objectif étant de détecter un changement de couleur avec du sirop rouge, il s'avère être problématique d'avoir un agitateur rouge. De ce fait, nous avons fait une autre impression 3D d'un agitateur noir qui ne sera pas détecté par le capteur de couleur. Nous avons fait un trou au niveau de l'agitateur afin de pouvoir le fixer au moteur. Par la suite, nous avons tester notre système d'électrovanne et de capteur de distance. Les deux fonctionnent. Cependant, nous avons détecté des fuites au niveau de l'électrovanne. Néanmoins, nous avons essayé de tester l'écran LCD après un essai, ce dernier ne nous affichait plus le bon message. Par ailleurs, nous avons solidifié notre montage.
![]() |
![]() |
Figure 10: Montage fixé avec LCD | Figure 11 : Nouvel agitateur noir |
23/01/2025
Lors de notre rencontre avec notre tuteur, il nous a aidé à régler les problèmes de fuites en nous fournissant du ruban teflon à coller sur l'électrovanne. Nous avons pu trouver la source du problème pour l'écran LCD qui ne fonctionnait pas car l'adresse utilisée n'était pas la bonne. En effet, il faut utiliser 0X3E et pas 0X27.
![]() |
![]() |
Figure 12: Dos du montage avec tous les branchements | Figure 13 : Ecran LCD affichant le volume versé |
En modifiant le code, nous pouvons à présent afficher le volume versé dans notre gobelet. Cependant, la précision de notre capteur de distance est de 1 cm ce qui n'est pas assez précis car nous allons verser une petite quantité de sirop. Le problème qui se pose actuellement est que lorsque nous arrêtons totalement l'électrovanne l'eau continue de couler au goutte-à-goutte. De plus, le potentiomètre dégage une odeur de brûlé quand nous actionnons le moteur.
27/01/2025
Nous sommes allés voir notre tuteur pour des problèmes liés au moteur et à l'électrovanne. En effet, le liquide continuait de couler après avoir éteint l'électrovanne. En ce qui concerne le moteur, les potentiomètres ne nous permettaient pas de réguler la tension au borne du moteur, et donc sa vitesse de rotation. A l'issu de cette rencontre, nous avons utilisé un relais pour contrôler l'électrovanne et un module mosfet pour le moteur. Nous sommes ensuite allé au Fablab pour tester ces nouveaux composants. Le relay fonctionne, mais pas le mosfet. Nous ne pouvons toujours pas contrôler la tension au borne du moteur avec précision.
28/01/2025
Nous sommes allé voir notre tuteur pour résoudre nos problèmes de moteur. Finalement, nous avons remarqué que nous n'avons pas besoin de mélanger. En effet, le mélange se fait naturellement par diffusion et nous obtenons une solution bien homogène. Nous avons donc retiré le moteur et l'agitateur, qui ne sommes donc plus nécessaires.
Description du fonctionnement final de notre système :
Au départ, un verre d'eau est introduit dans notre boite noire, et l'agitateur est positionné dans le verre. Le système commence par faire une mesure de la distance du liquide. Ensuite le capteur de couleur mesure l'intensité du rouge dans le verre en boucle. Tant que la valeur est au dessus du seuil défini, l'électrovanne est alimentée (le liquide coloré coule) et la LED rouge est allumée. Dès que la valeur seuil est atteinte, l'électrovanne n'est plus alimenté, la LED s'éteint, et le capteur de couleur mesure une deuxième fois la distance. A l'aide de ces deux valeurs de distance, le volume de liquide ajouté est calculé et affiché sur l'écran LCD.
Conclusion
A l'issue de ce projet, nous avons pu atteindre notre objectif qui est de réguler la couleur finale dans un récipient d'eau. Malgré les complications avec le moteur DC, nous avons su réagir rapidement et adapter notre système avec le matériel à notre disposition. Ce projet nous a permis d'élargir nos connaissances en dehors de notre formation initiale. En effet, nous avons pu utiliser différentes machines tels que Raise3D pour l'impression 3D et la découpeuse laser pour la plaque d'identification du projet. Nous avons aussi appris à coder et à utiliser des composants électroniques divers et variés.
Vidéo : Fonctionnement de la burette automatique
Voici le code final utilisé pour la réalisation de notre burette automatique:
#include <Wire.h> //bibliothèque pour communiquer avec I2C#include <Ultrasonic.h> //bibliothèque du capteur à ultrason#include "rgb_lcd.h" //bibliothèque de l'écran LCD
#define led 2#define S0 3 //S0 S1 frequence#define S1 4#define S2 5 //S2 S3 filtre de couleur#define S3 6#define value 9 //valeur que renvoit le capteur de couleur#define valvepin 8 //Pin de contrôle pour relais de l'électrovanneUltrasonic ultrasonic(11); //Pin de contrôle du capteur à ultrason
//Création de nos différentes variablesfloat DistIni = 0.0;float DistFin = 0.0;float Volume = 0.0;float RayonVerre = 3.4; //Valeur du rayon en cmdouble rouge = 0.0;double rougetot = 0.0;double rougemoy = 0.0;double rougemoy1 = 0.0;double rougemoy2 = 0.0;int i = 0;int seuil = 175; //valeur de seuil
//Définition de l'écran LCDrgb_lcd lcd;const int colorR = 255;const int colorG = 0;const int colorB = 0;
void setup() {
//Définition du mode de nos pinspinMode(S0, OUTPUT);pinMode(S1, OUTPUT);pinMode(S2, OUTPUT);pinMode(S3, OUTPUT);pinMode(value, INPUT);pinMode(valvepin, OUTPUT);pinMode(led, OUTPUT);
Serial.begin(9600);
//Choix de l'échelle de fréquence à 20%digitalWrite(S0, HIGH);digitalWrite(S1, LOW);
//Initialisation de l'écran LCDlcd.begin(16, 2);lcd.setRGB(colorR, colorG, colorB);//lcd.print("Wait...");}
void loop() {
//Mesure initiale de la distanceif (DistIni == 0) {DistIni = ultrasonic.MeasureInCentimeters();Serial.print("Distance initiale = ");Serial.print(DistIni);Serial.println(" cm");}
// Mesure de l'intensité en rougedigitalWrite(S2, LOW);digitalWrite(S3, LOW);
//Nous réalisons une boucle for pour calculer une moyenne des valeur de couleur (20 valeurs sur 1 seconde)for (int i=0; i<20; i++){rouge = pulseIn(value, HIGH);rougetot = rougetot + rouge;delay(50);}
rougemoy = rougetot/20;Serial.print("red :");Serial.println(rougemoy);rougetot = 0.0;
if (rougemoy < seuil) { //Seuil de couleur rouge pas encore atteintdigitalWrite(valvepin, HIGH); //Vanne ouvertedigitalWrite(led, HIGH); //LED alluméelcd.clear();lcd.print(rougemoy);}
// Nous gardons en mémoire les trois dernières valeurs de rouge, lorsque les trois sont supérieures au seuil, le système s'arrête.// En effet nous avons souvent une oscillation autour du seuil qui arrête et redemarre l'électrovanne toutes les secondes.// Attendre trois valeurs au dessus du seuil permet d'éviter ce problèmeelse if (rougemoy >= seuil and rougemoy1 >= seuil and rougemoy2 >= seuil) {DistFin = ultrasonic.MeasureInCentimeters(); //Mesure de la distance finaleVolume = (DistIni - DistFin) * PI * RayonVerre * RayonVerre; //Calcul du volumeSerial.print("Distance Finale = ");Serial.print(DistFin);Serial.println(" cm");lcd.clear();lcd.print("Ready !");lcd.setCursor(0, 1);lcd.print("V = ");lcd.print(Volume);lcd.print(" mL");digitalWrite(valvepin, LOW); //Vanne ferméedigitalWrite(led, LOW); //LED éteintedelay(1000000);}
//Nous gardons en mémoire les valeurs de rouge des deux étapes précédentesrougemoy2 = rougemoy1;rougemoy1 = rougemoy;}
No Comments