Skip to main content

Réalisation d'une burette automatique (Groupe A)

image.png

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ôcontrôle de procédéprocédé 

  • Octobre 2024 - Janvier 2025

Contexte

Dans le cadre de l'UE Optimisation et contrôcontrôle de procédéprocédés, nous devons effectuer la gulation d'un systèsystème àà l'aide d'une carte Arduino. Pour ce faire, nous devons terminer le matématériel cessaire ainsi que les branchements et le code qui permettront l'automatisation de notre procédéprocédé.

Objectifs

Notre sujet porte sur la alisation d'une burette automatique. Pour effectuer la gulation, nous utiliserons un capteur de couleur pour mesurer l'intensitéintensité de la couleur dans le liquide, une éélectrovanne pour contrôcontrôler le bit de liquide colorécoloré. Nous utiliserons éégalement un capteur de distance pour mesurer la volume du liquide verséversé et un moteur DC pour agiter le liquide. Le but est d'atteindre une couleur finie dans le cipient rempli d'eau.

MatéMatériel

  • Arduino

  • Breadboard
  • Moteur DC
  • Electrovanne 
  • Capteur de couleur (TCS3200) 
  • Capteur de distance àà ultrason (Grove-Ultrasonic ranger V2.0)
  • Agitateur (impriméimprimé 3D)

  • Ecran LCD (Grove - 16 x 2 LCD (White on Blue))
  • Relais
  • Module Mosfet
  • sistances 

  • Tuyaux

  • Fils

  • LED rouge
  • Bouteille 

  • PhotoréPhotorésistance (pas utiliséutilisé)

Construction

14/10/2024 

Lors de notre rencontre, nous avons déterminédéterminé nos besoins en termes de matématériel et nous avons commencécommencé àà tester les diffédifférents composants àà tour de le en commençcommençant par la photoréphotorésistance.

21/10/2024 

Nous nous sommes unis afin de mieux finir notre projet. Voici le procédéprocédé que nous souhaitons obtenir:

Dans une boîboîte opaque, nous aurons un cipient contenant de l’l’eau, la photoréphotorésistance et une lampe. La boîboîte opaque nous permet de contrôcontrôler la lumièlumière qui sera détecté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’s’allume, l’l’agitateur se met en route et l’él’électrovanne s’s’ouvre. Tant que la photoréphotorésistance tecte plus de lumièlumière qu’qu’une valeur seuil, l'éélectrovanne reste ouverte donc on fait couler le sirop/colorant. Au fur et àà mesure, la photoréphotorésistance tectera de moins en moins de lumièlumière jusqu’àjusqu’à atteindre la couleur souhaitésouhaitée. Une fois cette couleur atteinte, l’él’électrovanne se ferme, l’l’agitateur s’arrês’arrête et la LED s’és’éteint. On mesure le niveau du colorant àà la fin afin de connaîconnaître la quantitéquantité qui a étéété verséversée pour atteindre la couleur finie; cette valeur sera ensuite affichéaffichée sur un éécran LCD.



Figure 2 : SchéSchéma 3D de la burette automatique

07/11/2024 

Nous nous sommes retrouvéretrouvés dans une salle afin d'avancer sur le projet. L’L’objectif est de finir ce qu’qu’il reste àà faire et de se partir les ches afin que nous puissions ritablement commencer les tests en utilisant directement le matématériel. 

Nous avons ussi àà faire fonctionner l’él’électrovanne en faisant couler de l’l’eau d’d’une bouteille àà l’l’autre. De plus, le capteur pour la mesure de la distance est àà préprésent fonctionnelle.

image.png

Figure 3 : Fonctionnement de l'éélectrovanne

Pour l’l’agitateur, nous utiliserons ce modè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’l’agitateur au moteur. Nous avons utiliséutilisé le logiciel IdeaMaker pour dimensionner l'agitateur et nous avons lancélancé l'impression de notre agitateur de 10 cm. 

image.png

Figure 4 : Agitateur impriméimprimé en 3D

25/11/2024 

Nous nous sommes retrouvéretrouvés au Fablab, l'objectif de la ance est de bien rifier le fonctionnement de chaque éléélément séparéséparé de notre systèsystème, notamment, le moteur utiliséutilisé pour l'agitation. Il s'avè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érécupéré un moteur DC et par la me occasion un capteur de couleur. Nous avons pu tester le moteur DC et l'avons attachéattaché d'une façfaçon un peu préprécaire àà l'agitateur impriméimprimé en 3D. 

Lors de la prochaine ance nous allons tester le capteur de couleur et trouver la manièmanière dont nous allons fixer l'agitateur au moteur. 

09/12/2024 

Nous nous sommes retrouvé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éintensité lumineuse avec diffédifférents filtres et renvoie une valeur en rouge, bleu et vert. Plus la couleur est rouge intense, plus la valeur mesurémesurée est élevéélevée.

image.png

Figure 5 : Image du serial moniteur d'Arduino avec un seuil àà "red" = 175

18/12/2024 

Nous nous sommes retrouvéretrouvés au Fablab dans le but d'avancer dans la partie fixation de notre matématériels sur le support. Le support de la bouteille a étéété réaliséréalisé àà l'aide d'une coupeuse laser, tandis que l'éélectrovanne a étéété fixéfixée àà l'aide d'une presseuse et de vis.

Fixation du support.jpeg

Figure 6 : Fixation éélectrovanne

19/12/2024 

Conception (par coupe laser) et fixation de la boite noire.

Conception de la boite noire.jpegFigure 7 : Fixation de la boite noire

09/01/2025

Nous nous sommes unis au Fablab pour programmer le capteur de couleur, et tester son fonctionnement. En parallèparallèle, nous avons poursuivi l’l’assemblage de notre matématériels sur le support.

15/01/2025

Nous nous sommes unis au FabLab pour avancer sur notre projet. Nous avons recouvert l'intéintérieur de notre boîboîte noire avec du papier adhéadhésif, puis nous avons poursuivi l'installation de notre matématériel sur le support. Nous avons éégalement connectéconnecté la LED et le moteur. Cependant, nous avons rencontrérencontré un problèproblème avec le moteur : bien qu'il s'allume correctement lorsque la broche est régléréglée sur HIGH, il ne s'ééteint pas avec LOW. Pour soudre ce problèproblème, nous avons fixéfixé un rendez-vous avec notre tuteur le 20/01.

image.pngFigure 8 : Montage Arduino avec LED et moteur sur breadboard

20/01/2025

Nous avons rencontrérencontré notre tuteur pour soudre le problèproblème liélié au moteur. Il s'est avéréavéré que l'Arduino ne pouvait pas fournir les 5 V cessaires àà tous les composants. Pour y reméremédier, nous avons connectéconnecté le moteur et l'éélectrovanne àà une alimentation indéindépendante de 12 V, ce qui a permis àà celui-ci de fonctionner correctement. Cependant, cette tension est trop élevéélevée donc nous utilisons un potentiomèpotentiomètre pour gler le la tension qui arrive au moteur et donc la vitesse du moteur. 

Nous avons ensuite gravé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.

ettckh0b.pngFigure 9 : Plaque d'identification du projet

22/01/2025

Notre objectif éétant de tecter un changement de couleur avec du sirop rouge, il s'avèavère êêtre problé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é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èsystème d'éélectrovanne et de capteur de distance. Les deux fonctionnent. Cependant, nous  avons détectédétecté des fuites au niveau de l'éélectrovanne. anmoins, nous avons essayéessayé de tester l'éécran LCD aprèaprès un essai, ce dernier ne nous affichait plus le bon message. Par ailleurs, nous avons solidifiésolidifié notre montage.

image.png WhatsApp Image 2025-01-28 at 14.59.24.jpeg
Figure 10: Montage fixéfixé avec LCD Figure 11 : Nouvel agitateur noir
23/01/2025

Lors de notre rencontre avec notre tuteur, il nous a aidéaidé àà gler les problèproblèmes de fuites en nous fournissant du ruban teflon àà coller sur l'éélectrovanne. Nous avons pu trouver la source du problèproblème pour l'éécran LCD qui ne fonctionnait pas car l'adresse utiliséutilisée n'éétait pas la bonne. En effet, il faut utiliser 0X3E et pas 0X27. 

image.png WhatsApp Image 2025-01-23 at 17.55.17 (1).jpeg
Figure 12: Dos du montage avec tous les branchements Figure 13 : Ecran LCD affichant le volume verséversé

En modifiant le code, nous pouvons àà préprésent afficher le volume verséversé dans notre gobelet. Cependant, la préprécision de notre capteur de distance est de 1 cm ce qui n'est pas assez préprécis car nous allons verser une petite quantitéquantité de sirop. Le problèproblème qui se pose actuellement est que lorsque nous arrêarrêtons totalement l'éélectrovanne l'eau continue de couler au goutte-àà-goutte. De plus, le potentiomèpotentiomètre gage une odeur de brûlébrûlé quand nous actionnons le moteur. 

27/01/2025

Nous sommes alléallés voir notre tuteur pour des problèproblèmes liéliés au moteur et àà l'éélectrovanne. En effet, le liquide continuait de couler  aprèaprès avoir ééteint l'éélectrovanne. En ce qui concerne le moteur, les potentiomèpotentiomètres ne nous permettaient pas de guler la tension au borne du moteur, et donc sa vitesse de rotation. A l'issu de cette rencontre, nous avons utiliséutilisé un relais pour contrôcontrôler l'éélectrovanne et un module mosfet pour le moteur.  Nous sommes ensuite alléallé au Fablab pour tester ces nouveaux composants. Le relay fonctionne, mais pas le mosfet.  Nous ne pouvons toujours pas contrôcontrôler la tension au borne du moteur avec préprécision. 

28/01/2025

Nous sommes alléallé voir notre tuteur pour soudre nos problèproblèmes de moteur. Finalement, nous avons remarquéremarqué que nous n'avons pas besoin de langer. En effet, le lange se fait naturellement par diffusion et nous obtenons une solution bien homogèhomogène. Nous avons donc retiréretiré le moteur et l'agitateur, qui ne sommes donc plus cessaires. 

Description du fonctionnement final de notre systèsystème :

Au part, un verre d'eau est introduit dans notre boite noire, et l'agitateur est positionnépositionné dans le verre. Le systèsystème commence par faire une mesure de la distance du liquide. Ensuite le capteur de couleur mesure l'intensitéintensité du rouge dans le verre en boucle. Tant que la valeur est au dessus du seuil fini, l'éélectrovanne est alimentéalimentée (le liquide colorécoloré coule) et la LED rouge est alluméallumée. s que la valeur seuil est atteinte, l'éélectrovanne n'est plus alimentéalimenté, la LED s'ééteint, et le capteur de couleur mesure une deuxièdeuxième fois la distance. A l'aide de ces deux valeurs de distance, le volume de liquide ajoutéajouté est calculécalculé et affichéaffiché sur l'éécran LCD. 

Conclusion

A l'issue de ce projet, nous avons pu atteindre notre objectif qui est de guler la couleur finale dans un cipient d'eau. MalgréMalgré les complications avec le moteur DC, nous avons su agir rapidement et adapter notre systèsystème avec le maté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édifférentes machines tels que Raise3D pour l'impression 3D et la coupeuse laser.laser pour la plaque d'identification du projet. Nous avons aussi appris àà coder et àà utiliser des composants éélectroniques divers et variévariés. 

 

Voici le code final utilisé pour la réalisation de notre burette automatique:

#include <Wire.h>        //bibliothèbibliothèque pour communiquer avec I2C
#include <Ultrasonic.h>  //bibliothèbibliothèque du capteur àà ultrason
#include "rgb_lcd.h"     //bibliothè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ôcontrôle pour relais de l'éélectrovanne
Ultrasonic ultrasonic(11);  //Pin de contrôcontrôle du capteur àà ultrason

//CréCréation de nos diffédifférentes variables
float DistIni = 0.0;
float DistFin = 0.0;
float Volume = 0.0;
float RayonVerre = 3.4;  //Valeur du rayon en cm
double 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

//finition de l'éécran LCD
rgb_lcd lcd;
const int colorR = 255;
const int colorG = 0;
const int colorB = 0;

void setup() {

  //finition du mode de nos pins
  pinMode(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éfréquence àà 20%
  digitalWrite(S0, HIGH);
  digitalWrite(S1, LOW);

  //Initialisation de l'éécran LCD
  lcd.begin(16, 2);
  lcd.setRGB(colorR, colorG, colorB);
  //lcd.print("Wait...");
}

void loop() {

  //Mesure initiale de la distance
  if (DistIni == 0) {
    DistIni = ultrasonic.MeasureInCentimeters();
    Serial.print("Distance initiale = ");
    Serial.print(DistIni);
    Serial.println(" cm");
  }

  // Mesure de l'intensitéintensité en rouge
  digitalWrite(S2, LOW);
  digitalWrite(S3, LOW);

//Nous 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 atteint
    digitalWrite(valvepin, HIGH);  //Vanne ouverte
    digitalWrite(led, HIGH);       //LED alluméallumée
    lcd.clear();
    lcd.print(rougemoy);
  }

// Nous gardons en moire les trois dernièdernières valeurs de rouge, lorsque les trois sont supésupérieures au seuil, le systèsystème s'arrêarrête.
// En effet nous avons souvent une oscillation autour du seuil qui arrêarrête et redemarre l'éélectrovanne toutes les secondes.
// Attendre trois valeurs au dessus du seuil permet d'ééviter ce problèproblème
  else if (rougemoy >= seuil  and rougemoy1 >= seuil and rougemoy2 >= seuil) {
    DistFin = ultrasonic.MeasureInCentimeters();                  //Mesure de la distance finale
    Volume = (DistIni - DistFin) * PI * RayonVerre * RayonVerre;  //Calcul du volume
    Serial.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éfermée
    digitalWrite(led, LOW);       //LED ééteinte
    delay(1000000);
  }

//Nous gardons en moire les valeurs de rouge des deux éétapes précéprécédentes
  rougemoy2 = rougemoy1;
  rougemoy1 = rougemoy;
}