Skip to main content

Projet : Régulation d'un système de formulation de colorant

Système automatisé de formulation de couleur à base de colorants alimentaires

Informations

Membres du groupe 4
  • BEN ZAID Doha

  • BOUSMARA Imane

  • CHERGUI Amine Sofiane

  • KOLEV Alexandra

Date de début du projet

Octobre 2025

Date de fin prévue

Janvier 2026

Cursus

Master 2 – Ingénierie Chimique, Sorbonne Université

Contexte

Le projet de 823 nous amène à concevoir un système innovant qui illustre les principes de la digitalisation et de l’automatisation appliqués aux procédés. Pour cela, nous avons choisi de développer un dispositif capable de réaliser automatiquement la formulation de couleurs à partir de colorants alimentaires. Ce projet s’inspire des pratiques industrielles où la précision du dosage, la reproductibilité et le contrôle automatique des paramètres sont essentiels. Grâce à l’utilisation de composants électroniques, mécaniques et programmables, ce travail nous permettra d’aborder concrètement l’intégration d’un système automatisé complet : depuis la conception jusqu’aux tests, en passant par la fabrication au FabLab. Ce Wiki servira de support pour documenter l’évolution de notre prototype, étape par étape, afin de suivre la démarche de conception et les choix techniques réalisés tout au long du projet.

Objectifs 

L’objectif de ce projet est de concevoir et réaliser un système entièrement automatisé permettant de formuler des couleurs à partir de colorants alimentaires grâce à un contrôle précis du débit de chaque composant. Le dispositif doit intégrer une logique de digitalisation et d’automatisation inspirée des procédés industriels de formulation, en utilisant des capteurs, actionneurs et une carte de commande pour assurer un dosage fiable, reproductible et propre des différents colorants.

WhatsApp Image 2025-12-09 à 22.05.19_72123c23.jpgFigure 1 : Une représentation de système de formulation de colorant par l'IA

Matériel

  • 8 réservoirs

  • 3 débitmètres 

  • 4 vannes/pompes + une vanne 

  • Plaque tournante 

  • Capteur niveau 

  • Capteur couleur 

  • Agitateur 

  • Arduino 

  • Colorant 

  • Source d'eau 

  • 5 tuyaux

GRAFCET

AVANCEMENT DU PROJET

Séances 1-4 - Ancien sujet (distillation)

Première réunion en ligne avec notre encadrant. Nous avons discuté de la faisabilité du sujet et commencé à rédiger la liste des composants, ainsi qu’à réaliser le schéma Arduino sur Tinkercad. Nous nous sommes également mis d'accord sur le mélange binaire à distiller : eau/éthanol.

Poursuite de la rédaction de la liste des composants et avancement du schéma Arduino sur Tinkercad. Nous avons ainsi pu finaliser une liste avec tous nos composants, en suivant les conseils de notre encadrant.
Capture d’écran 2026-01-30 140819.png
Figure 2 : Schéma sur Tinkercad des branchements nécessaires pour un capteur de niveau et un capteur de température
Deuxième réunion avec M. Belkessa. Suite aux échanges, certaines modifications ont été apportées au sujet et la liste finale des composants a été validée - nous avons notamment opté pour un chauffage du milieu à distiller grâce à un film chauffant pouvant être collé directement sur le ballon. Nous avons également discuté du positionnement optimal du thermomètre (capteur de température), en tête de colonne plutôt que directement dans le bouilleur.

Après discussion avec M. Pulpytel, le sujet initial portant sur la distillation s’est avéré irréalisable. Nous avons donc changé de sujet et collecté le nouveau matériel correspondant au nouveau projet, portant sur la formulation de couleur.

Séance 5

Nous avons récupéré l’ensemble du matériel nécessaire au projet et l’avons installé au sein du FabLab. Cette étape nous a permis de prendre en main les composants physiques, de vérifier leur état, leur compatibilité et de nous familiariser avec l’organisation matérielle du système avant de commencer les premières phases de conception et de modélisation.

Nous avons étudié en détail le fonctionnement global du système de formulation. À cette occasion, nous avons construit un premier schéma fonctionnel permettant d’identifier les flux, les connexions entre les modules et la logique générale du processus. Nous avons également défini le rôle de chaque composant (pompes, réservoirs, tige d’agitation, capteurs, électronique…), ce qui a permis de structurer clairement l’architecture du système avant la phase de modélisation.

Lors de cette étape, nous avions également proposé d’intégrer une plaque tournante motorisée permettant de placer automatiquement le bécher correspondant sous la vanne lors de la récupération des couleurs (par exemple faire pivoter la plaque pour aligner le bécher de l’orange, puis celui du vert, etc.). Après discussion avec notre tuteur, il a été conclu qu’il n’était pas possible de trouver un moteur adéquat capable de supporter les récipients et d’assurer les rotations nécessaires avec précision. Nous avons donc décidé que la récupération des couleurs se fera manuellement, tout en conservant une organisation claire du système.

Nous avons réalisé la modélisation du système dans OpenSCAD, incluant la conception détaillée de la tige d’agitation sous forme d’hélice afin d’optimiser le mélange des solutions. La tige a ensuite été imprimée en 3D pour être testée et ajustée. En parallèle, nous avons fixé une planche destinée à servir de support pour les réservoirs contenant les colorants dilués.

Conception de la tige d’agitation sous OpenSCAD

La tige d’agitation a été entièrement modélisée sous OpenSCAD, ce qui nous a permis de définir un design paramétrique, précis et facilement modifiable. Le modèle intègre un trou axial de 2,1 mm sur toute la longueur pour l’insertion sur l’axe moteur, ainsi qu’une géométrie optimisée pour l’impression 3D. OpenSCAD nous a permis de contrôler précisément les dimensions (longueur de 12 cm, diamètre externe de 6 mm) et d’assurer un positionnement correct de l’hélice au centre de la tige afin de garantir une agitation efficace. Le rendu final est illustré ci-dessous.

image.pngFigure 2 : Modélisation 3D de la tige d’agitation sous OpenSCAD

Séance 6

Le première version de la tige imprimée en 3D présentait plusieurs défauts au regard de notre projet : 

  • diamètre de la pale trop faible pour permettre un mélange efficace des couleurs
  • longueur de la tige trop courte pour pouvoir attendre le fond du récipient
  • conduit interne de la tige - pour permettre son accrochage au moteur - bouché du fait des contraintes d'impression.

Dans ces conditions, où nous avions finalement une tige d'agitation trop petite et impossible à fixer, nous avons dû en réimprimer une nouvelle, avec des dimensions mises à jour par rapport à la nouvelle disposition du procédé (pas de plaque tournant et un seul grand récipient de récupération). Il a également été nécessaire de faire un compromis entre la solidité de la tige et la quantité de fil utilisée pour l'impression 3D. La solution qui a été trouvée a été de créer des pales très fines mais plus larges. Nous avons également remédié aux problèmes liés au conduit interne en ne l'incluant pas dans le modèle sur OpenSCAD. Ainsi, il nous est possible de forer la tige nous-même, nous permettant une meilleure maîtrise du diamètre interne du conduit.

IMG-20260114-WA0031.jpg          IMG-20260114-WA0036.jpg

Figure 3 : Première tige - trop petite                                                                             Figure 4 : Tige corrigée

Nous avons également conçu et imprimé le récipient de récupération sur OpenSCAD. Pour cela, nous avions trois contraintes majeures : 

  • être suffisamment grand et opaque pour permettre un mélange homogène, sans débordement et une lecture par le capteur qui ne soit pas faussée par des couleurs parasites extérieures au mélange ;
  • dans le même temps, être suffisamment bas pour pouvoir entrer dans la structure en bois et aluminium, avec son électrovanne associée ;
  • permettre une fixation solide au support, qui permette également le passage des tuyaux d'alimentation et une sortie suffisamment étroite pour contrôler le débit de sortie.

Voici la solution adoptée pour répondre à toutes les contraintes précédemment citées :

IMG-20260114-WA0034.jpg   IMG-20260114-WA0042.jpg

Figure 5 : Récipient principal, de récupération, avec fixations et sortie

Séance 7

Une fois les modèles d'impression récupérés, il s'agit de prévoir le remplissage et la partie alimentation du processus. Pour cela, nous souhaitons fixer trois récipients différents sur le dessus de la structure et de les relier au récipient principal où a lieu le mélange par des tuyaux. Ces trois récipients vont contenir chacun l'un des trois colorants - rouge, bleu et jaune - dilués dans un même volume d'eau. Par ailleurs, les contenants doivent être dans un matériaux suffisamment rigide et solide pour pouvoir être fixées - par de la colle chaude - sur la partie supérieure du support. Nous avons choisi des gobelets réutilisables en plastique transparent opaque.

Dans le même temps, il est essentiel avant cette étape de prévoir un espace de fixation pur le moteur qui permettra de faire tourner la tige d'agitation. En effet, ce moteur ne doit pas simplement être fixé sur la planche de bois, un trou doit être fait, avec un diamètre correspondant au diamètre extérieur de la tige. 

Comme nous avons pu récupérer le récipient de récupération principal, il a également été possible de percer les trous dédiés au passage des tuyaux d'alimentation.

Nous avons également prévu la fixation du capteur de couleur, de sorte qu'il soit le plus proche possible du niveau de liquide, permettant ainsi une mesure la plus précise possible.

Séance 8

L'étape suivante consiste en la prise en main du moteur, avec pour objectif de comprendre et maîtriser le lien entre le voltage fourni et la rotation, avant de fixer définitivement le moteur et la tige sur le support. En effet, jusqu'à présent, toutes les parties sont vissées les unes aux autres, ce qui permet de les retirer ou de les remettre suivant les besoins. Comme le moteur est quant à lui fixé avec de la colle chaude, une fois positionné, il sera impossible de revenir en arrière. C'est pour cela qu'il est crucial de bien maîtriser la rotation et d'être certain de la solidité de la fixation entre le moteur et la tige.

Le moteur se présente sous la forme d'un cylindre avec un axe d'agitation à l'une des extrémités et de deux tiges pour la fixation des câbles : 

IMG-20260114-WA0027.jpg

La première étape a donc été de souder les deux câbles aux tiges de fixation afin de pouvoir ensuite facilement relier le moteur au générateur. Nous avons donc réalisé la soudure au fer chaud, avec un fil d'étain :

IMG-20260114-WA0026.jpg

Après plusieurs essais infructueux avec plusieurs moteurs différents, nous avons finalement pu en faire fonctionner un. Pour cela, nous avons relié les câbles au générateur avec des pinces crocodile. Dès lors, il s'agissait de trouver le lien entre le voltage fourni par le générateur et la vitesse de rotation. En l'absence d'appareils de mesure, nous l'avons estimé nous-même. Plus le voltage augmente, plus la rotation s'accélère : il a donc un lien de proportionnalité directe entre les deux. Empiriquement, nous avons estimé que le voltage optimal à fournir est de 2,0 V : Rotation tige+moteur.mp4.

Enfin, cette valeur optimale trouvée, nous avons fixé la pompe sur le support et la tige sur la pompe. Pour cela, nous avons tout d'abord foré l'intérieur de la tige d'agitation de sorte à avoir un conduit de la taille de la fixation du moteur puis nous avons collé les deux ensemble.

Séance 9

Comme nous étions satisfaits des résultats obtenus avec la pompe, nous avons pu nous concentrer sur le calibrage du capteur de couleur.

Cette séance a été dédiée au calibrage du capteur de couleur TCS3200, une étape indispensable pour assurer la fiabilité de la reconnaissance des couleurs dans le système automatisé de formulation. La précision de cette calibration conditionne en effet la capacité du dispositif à identifier correctement la couleur obtenue après mélange des colorants alimentaires et à ajuster la formulation en conséquence.

L’objectif principal de cette séance était d’établir des valeurs de référence fiables pour les composantes rouge, verte et bleue (RGB), dans des conditions expérimentales maîtrisées, afin de garantir la reproductibilité des mesures.

Le capteur a été connecté à une carte Arduino Uno et testé dans un environnement volontairement plongé dans l’obscurité. Ce choix méthodologique visait à éliminer toute influence de la lumière ambiante susceptible de perturber les mesures et à garantir que les signaux enregistrés proviennent uniquement de la lumière réfléchie par les surfaces analysées.

bfOimage.png

La procédure de calibration s’est déroulée en deux étapes. Dans un premier temps, des valeurs de référence ont été déterminées à partir de deux étalons : une surface blanche et une surface noire. La surface blanche a permis d’obtenir des valeurs correspondant à une réflexion lumineuse maximale, tandis que la surface noire a servi à caractériser la réponse du capteur en condition de réflexion minimale. Les mesures ont été réalisées avec une distance et un positionnement constants entre le capteur et les surfaces, afin de limiter les variations expérimentales.

Dans un second temps, les valeurs brutes mesurées ont été normalisées afin d’être ramenées sur une échelle RGB comprise entre 0 et 255. Cette normalisation permet de rendre les données exploitables par le système de commande et de limiter l’impact des variations résiduelles liées aux conditions de mesure.

Une phase de validation a ensuite été menée à l’aide de couleurs primaires affichées sur un écran (rouge, vert et bleu). Ces essais ont permis de vérifier la cohérence des valeurs obtenues et d’ajuster les seuils de détection nécessaires à la reconnaissance des différentes couleurs. Si les couleurs primaires ont été correctement identifiées, certaines teintes intermédiaires ont mis en évidence la nécessité d’affiner ultérieurement les seuils de décision.

À l’issue de cette séance, le capteur de couleur a été considéré comme suffisamment calibré pour être intégré au système global. Il sera positionné au niveau du récipient de mélange afin d’analyser la couleur obtenue après chaque ajout de colorant, de fournir un retour d’information à l’algorithme de dosage et de vérifier l’homogénéité du mélange après agitation.

Cette étape de calibrage constitue une phase clé du projet, garantissant la cohérence entre les résultats expérimentaux et leur interprétation par le système automatisé de formulation.

Séance 10

Une fois le capteur calibré et le moteur positionné, l'étape suivante est de faire fonctionner les pompes et de s'en servir pour relier les récipients entre eux. Pour cela, nous avons dû contourner plusieurs difficultés :

  • le diamètre des tuyaux, non adapté à la pompe ;
  • le lien entre les pompes et le générateur ;
  • la force d'aspiration de certaines pompes, qui n'était pas assez puissante.

En effet, nous disposions initialement de tuyaux avec deux diamètres différents - l'un adapté à la pompe et l'autre au contraire, trop petit. Cependant, lors de nos tests de fonctionnement de l'appareil, il s'est avéré que la puissance de la pompe était insuffisante pour aspirer de l'eau à travers un tuyaux avec un tel diamètre. Il a donc fallu fixer les tuyaux de plus petit diamètre sur la pompe, quitte à les déformer, afin de pouvoir poursuivre. 

Plusieurs des pompes fournies n'avaient de plus pas une force d'aspiration suffisante. Ainsi, après avoir asseye de différentes manières de compenser cela - en jouant sur la soudure des câbles, le voltage ou bien l'inclinaison du tuyau - nous nous sommes concertés avec les personnes du FabLab et il s'est avéré que plusieurs de nos pompes étaient en réalité hors-service. 

Une fois ces difficultés contournées, nous avons pu souder les câbles sur toutes les pompes - en veillant à ce qu'aucun défaut de soudure ne vienne se glisser lors de cette étape, au risque de diminuer le passage du courant - et les tester toutes une par une avec le générateur.

Vidéo fonctionnement pompe + générateur : Fonctionnement pompe + générateur.mp4.

Séance 11

A l'exception de trois d'entre elles, toutes les pompes que vous avons testées se sont révélées être hors-service : court-circuit, fonctionnement du moteur sans aspiration, force d'aspiration trop faible pour pouvoir transférer l'eau d'un récipient à un autre.

Nous avons donc décidé de nous pencher, avec le matériel fonctionnant déjà à notre disposition, sur la suite du projet, soit les branchements entre les composants et la carte Arduino. 

Pour pouvoir utiliser la carte Arduino pour contrôler les pompes - qui ont besoin de plus de 5V pour fonctionner - nous avons utilisé un relais. Ce relais permet de relier des composants nécessitant un fort voltage à la carte Arduino. 

Ainsi,Branchement pompe Arduino.jpgBranchement pompe Arduino 2.jpgFigure nous: avonsBranchement branchéd'un chaqueensemble pile+pompe à une pile électrique de 9 V, en reliant ensuite l'ensemble à la carte via le relais :

Arduino

Nous avons ensuite procédé par étapes, ce qui nous a permis de tester le fonctionnement du circuit au fur et à mesure et de corriger les erreurs plus facilement. Pour cela, nous avons d'abord branché une seule pompe avec sa pile sur l'Arduino puis nous avons testé son fonctionnement, puis nous avons rajouté la deuxième et ainsi de suite.

Une fois que les essais étaient concluants pour l'ensemble des pompes individuellement et que nous nous étions assurés de la qualité des branchements, nous avons réfléchi à la meilleure manière de fixer tout l'ensemble des câbles sur le support.

Séance 12

Pour pouvoir fixer les pompes avec les tuyaux, les câbles, la carte Arduino, le relai et la carte de branchement de sorte à pouvoir utiliser efficacement la place à notre disposition, nous avons dû débrancher l'ensemble de notre circuit - après l'avoir compris et mémorisé. Une fois l'ensemble fixé sur le support, nous avons recommencer les tests pour nous assurer du bon fonctionnement de nos composants. 

Fixation circuit pompes support.jpg

Figure : Fixation du circuit de fonctionnement des pompes sur le support

Les pompes 1 et 3 fonctionnaient parfaitement, contrairement à la pompe 2 qui ne s'allumait même pas lorsque nous branchions la carte Arduino. Ne comprenant pas d'où pouvait venir le problème - tout avait fonctionné la veille - nous avons : 

  • Vérifié tous les branchements - ils correspondaient bien à ceux établis avant le montage et à ceux des pompes fonctionnantes ;
  • Vérifié le fonctionnement de la pompe en la branchant uniquement à une pile - elle fonctionnait bien, ce n'était donc pas un problème de composant devenu défaillant ;
  • Vérifié le passage du courant et la tension aux bornes de tous les composants avec un multimètre - la pile n'était pas déchargée mais la tension aux bornes de tous les autres composants était nulle ;
  • Changé tous les fils afin de supprimer la possibilité d'un faux contact - cela n'a pas été concluant ;
  • Changé de relai à plusieurs reprises, dans le cas où il aurait arrêté de fonctionner - cela n'a pas été concluant non plus ;
  • Vérifié notre code - qui correspondait bien à celui pour les pompes fonctionnantes.

A défaut de davantage de temps, nous n'avons donc pas pu, à l'issue de cette séance faire fonctionner les trois pompes fixées sur le support. 

Séance 13

Avec un esprit plus frais, nous avons refait l'ensemble des tests effectuées durant la séance précédente, afin de pouvoir identifier la source de cette absence de réponse de la pompe 2. Finalement, après plus d'une heure de recherche méticuleuse, nous avons trouvé un conflit de masses sur la carte des branchements. Une fois celui-ci résolu, nous avons pu faire fonctionner correctement les trois pompes, fixées sur le support, grâce à la carte Arduino !

Nous avons alors fixé tous les câbles au support - afin de rendre l'ensemble plus clair - ainsi que le capteur de couleur au-dessus du récipient de récupération principal. Par souci de précaution, nous avons également soudé toutes les connexions libres afin de nous prémunir de toute possibilité de débranchement au cours de l'utilisation. Cependant, en raison du manque de temps - plusieurs d'entre nous partant en stage avant la fin du projet - nous avons dû modifier certaines des considérations initiales. Ainsi, la vidange du récipient de récupération principal ne se ferait plus grâce à une électrovanne mais manuellement.

Néanmoins, les pompes étant désormais fonctionnantes, nous avons décidé de nous pencher sur la manière de connecter le moteur actionnant l'agitation à la carte Arduino. Le principal défi résidait cette fois dans le calibrage de la tension d'entrée. En effet, si l'on applique aux bornes du moteur une tension trop importante, il tourne beaucoup trop vite pour les besoins de notre projet et l'agitation n'est donc plus efficace. Lors de la séance 8, nous avons déterminé empiriquement que le voltage optimal de fonctionnement du moteur était de 2V. Nous avons alors souhaité le brancher sur la borne 3.3V de la carte Arduino et d'ensuite moduler la tension à ses bornes grâce à une résistance. Par le calcul, grâce à la loi des mailles et la loi d'Ohm nous avons déterminé que la valeur de résistance optimale serait de 9 Ω. Nous avons donc utilisé une résistance de 10Ω, valeur la plus porche parmi celles disponibles au Fablab. Cependant, une fois les bons branchements faits et le circuit fermé, nous avons constaté que malgré la résistance, la tension aux bornes du moteur était trop importante - et donc l'agitation trop puissante. N'ayant pas à notre disposition des résistances plus faibles et les résistances plus grandes bloquant entièrement le passage du courant, nous avons dû opter pour une alimentation du moteur par une pile électrique de 1.5V.

Interrupteur

Séance 14

Une

une fois toues

tous les composants connectés, nous avons pu lors de cette séance, travailler sur la génération du code Arduino destiné à la formulation automatique de la couleur du verre. Nous avons choisi de commencer par la partie formulation afin de poser les bases du fonctionnement global du système, avec l’objectif d’améliorer et d’optimiser le code par la suite.

La méthode de travail consistait à remplir le réservoir, puis à relever les valeurs détectées par le capteur de couleur après chaque ajout, afin d’évaluer le comportement du code et les corrections nécessaires. Cependant, cette approche s’est révélée peu pratique dans les conditions actuelles.

Néanmoins, la vidange manuelle du réservoir a entraîné des difficultés pratiques, notamment le mouillage de l’espace de travail et une perte de temps entre les essais.

Ces contraintes expérimentales n’ont pas permis de réaliser des tests complets et répétables, et nous n’avons donc pas pu valider pleinement le fonctionnement du code Arduino lors de cette séance. Cette étape a néanmoins permis d’identifier clairement les limites du montage actuel et de confirmer la nécessité de finaliser l’automatisation de la vidange avant de poursuivre les tests et l’optimisation du code.