Skip to main content

Régulation et mesure de la couleur par spectrophotométrie

Régulation et mesure de la couleur par spectrophotométrie en utilisant Arduino

Le concept de ce projet est de pouvoir produire un ensemble de couleurs spécifiques par le mélange des trois couleurs primaires (Rouge, Jaune et Bleu) utilisées pour produire ces dernières, cela sera possible par l'utilisation d'un spectrophotomètre qui mesure la couleur de l'échantillon de départ que nous avons (transparent par exemple) ce qui permet au système de savoir quelle quantité des couleurs primaires doit être administrée pour notre résultat final, le spectromètre effectuera ensuite une seconde mesure pour évaluer la qualité de la couleur et si c'est bien le résultat escompté, avec une petite marge d'erreur qui, si elle est dépassée, l'échantillon est administré en quantités appropriées pour atteindre la marge d'erreur acceptée.

Le choix des couleurs utilisés pour le mélange est plutôt simple, le RYB (rouge-jaune-bleu, Red-Yellow-Blue en anglais) est un ensemble historique de couleurs utilisé dans le mélange soustractif de couleurs, et est un ensemble de couleurs primaires couramment utilisé. Elle est principalement utilisée dans l'enseignement de l'art et du design, notamment en peinture.

Les RYB constituent donc les critères de couleur primaire, en concevant la roue chromatique standard de l'artiste. Le secondaires (violet-orange- vert) constituent une autre triade. Les couleurs de la triade (violet-orange- vert) parfois appelée (violet-orange- vert) constitue une autre triade. Les triades sont formées par trois couleurs équidistantes sur une roue de couleur particulière.

Pour créer une large gamme de nouvelles couleurs, les couleurs primaires peuvent être mélangées en utilisant différentes quantités de couleurs proportionnelles les unes aux autres. Mélanger des peintures, des pigments ou des colorants en utilisant des formules de mélange de couleurs proportionnelles garantit qu'une couleur spécifique peut être reproduite, ce qui permet à un artiste d'assurer la cohérence et la prévisibilité du mélange des couleurs.

Le mélange proportionnel des couleurs peut impliquer des rapports simples, comme utiliser deux fois plus de rouge que de jaune, ou des formules complexes, comme mélanger une partie de rouge, deux parties de bleu et trois parties de jaune. Chaque combinaison produira un résultat nouveau et intéressant. L'image de mélange de couleurs jointe ci-dessous présente quelques formules de mélange proportionnel de couleurs.

Pour appliquer cette logique à notre idée de projet, nous utiliserons bien sûr l'Arduino pour le stockage interne d'instructions pour la mise en œuvre de fonctions telles que la logique, le séquençage, la synchronisation, le comptage et l'arithmétique pour contrôler, par le biais de modules d'entrée/sortie numériques ou analogiques, différents types de composants qui constituent notre système.
 L'image jointe ci-dessous montre un schéma fonctionnel de ce dernier.

            Le mélange dans le récipient sera soit géré par arduino également, soit nous pourrions utiliser un mélangeur magnétique manuellement.

Le premier modèle :

            La première option est assez simple, une source de lumière normale avec un capteur spectromètre qui, comme son nom l'indique, détecte les différents spectres de la lumière avec un prix élevé à payer pour cette commodité.

Partie Régulation :


Électrovanne


Relais

La partie Régulation est assez simple en ce qui concerne le matériel, les électrovannes étant utilisées comme moyen d'administrer les pigments de couleur avec précision pour obtenir les résultats souhaités.

Conception du support du projet

Matériel utilisé :

  • Trois goblets en plastique
  • Tuyaux de 8 mm de diamètre.
  • Planches en bois faible épaisseur (5-6 mm d’eppaisseur) pour le decoupage laser.
  • 16 visses M5
  • 16 écrous M5
  • 4 équerres

Appareils utilisés :

  • Découpeuse Laser
  • Perceuse à colonne
  • Imprimante 3D

Logiciels utilisés :

  • Blender (Pour la conception 3D).
  • Ink Scape (Puisque la découpeuse laser à besoin d'un fichier au format svg).
  • IdeaMaker (Pour le découpage du modèle 3D).

Des supports pour le spectrophotomètre et d'autres composants étaient nécessaires, le composant principal étant une plateforme utilisant trois planches dont deux ont les dimensions suivantes (28x20 cm) et ont été utilisées comme support pour où la carte Arduino, la boîte du spectrophotomètre et les récipients à trois couleurs, les deux planches étant collées sur la plus grande planche (58x28 cm). Ce dernier étant conçu à l'aide d'une découpeuse laser.

Le capteur du spectromètre n'ayant besoin que d'une seule source de lumière, il lui fallait un boîtier fermé faisant face à la source de lumière (LED blanche) pour capter la lumière traversant la cuvette remplie de son contenu coloré, voici des photos dudit boîtier modifié à l'aide du logiciel de modélisation gratuit Blender.


Boitier Spectromètre dans Blender


Boitier spectromètre avec composants

Un problème que nous avons rencontré lors de cette phase est le problème de mélange des couleurs administrées, d'autant plus que la cuvette est très petite et ne peut pas entrer dans n'importe quel appretus de mélange, la solution que nous avons trouvé est une sorte de mélangeur en forme d'embout qui regroupe les trois tuyaux qui viennent des électrovannes et les condense en une seule sortie où les trois couleurs mélangées sont versées à l'intérieur de la cuvette, sa conception a également été rendue possible en utilisant le logiciel de modélisation Blender.

Mixeur dans Blender

Mixeur imprimé

Montage :

Pour le montage, on a placé nos gobelets, qui contiendront chacun un de nos 3 colorants, en hauteur sur la plateforme. Nos gobelets sont liés à nos électrovannes via des tuyaux en caoutchouc, et ces mêmes électrovannes sont liées à un mélangeur de la même manière. Nous avons utilisé un embout d’aspirateur pour voiture comme base pour fabriquer notre mélangeur. Le liquide, après être passé dans le mélangeur, entrera dans la cuve afin d’être analysé par le spectrophotomètre. Notre montage est fait de sorte à ce que la gravité suffit à acheminer notre liquide jusqu’à la cuve. Nos électrovannes sont reliées à des relais qui seront fixés à proximité sur la plateforme (juste en dessous).


Les relais serviront à gérer le passage du courant vers l’électrovanne, et donc à gérer son ouverture. Ces relais sont branchés directement sur un breadbord, qui sera posé à la base de notre support. Ce breadbord sera, quant à lui, lié à la carte mère de notre spectrophotomètre. Le breadbord est un outil qui nous servira à lier plusieurs éléments (ici nos relais et notre spectrophotomètre) sans avoir à faire de soudure. Cette carte mère sera elle directement liée au capteur afin de pouvoir traiter les données reçues par le capteur dans le boitier sur le mélange de colorant dans la cuve. L’alimentation en électricité de notre système se fait via la carte mère du spectrophotomètre. Il est nécessaire d’avoir une alimentation assez puissante afin de pouvoir faire fonctionner le circuit. Nous avons au début eu des problèmes à ce niveau car nous avions fait l’erreur d’alimenter le circuit via la batterie d’un ordinateur portable.


Pour résumer, toutes les composants ou le liquide place a été placé en hauteur à différent niveau de sorte à ce que la gravité soit une force motrice suffisante pour le déplacer. Le reste a été placé à la base car plus pratique (sauf les relais qui doivent être à proximité des electrovannes).

Logique du code utilisé :

Ce code est écrit dans le langage de programmation Arduino et utilise l'environnement de développement intégré (IDE) Arduino. Le code met en œuvre un système de contrôle simple pour contrôler l'intensité des relais électromagnétiques DC rouge, jaune et bleu afin de créer une couleur désirée.

Le code comprend plusieurs bibliothèques, notamment la bibliothèque Wire.h qui fournit une interface TWI/I2C pour la communication entre le microcontrôleur et le capteur AS7341. Les bibliothèques Adafruit_Sensor.h et Adafruit_AS7341.h fournissent le support pour le capteur que nous avons, qui est utilisé pour mesurer les valeurs RGB d'un échantillon de couleur, bien que le nôtre ne soit pas exactement un capteur Adafruit, nous avons pensé que puisqu'ils utilisent le même type de capteur, il peut suivre la même logique et fonctionnalité.

Les broches pour les relais DC électromagnétiques sont définies en utilisant la directive #define du préprocesseur, et la broche de la LED blanche est également définie. Une instance du capteur AS7341 est créée en utilisant Adafruit_AS7341 sensor = Adafruit_AS7341() ;.

Dans la fonction setup(), la communication série est initialisée, les broches du relais et de la LED sont initialisées comme sorties, le capteur AS7341 est initialisé et la couleur désirée est lue sur le clavier. La fonction loop() mesure en continu les valeurs RVB d'une couleur échantillon à l'aide du capteur AS7341 et calcule l'erreur entre la couleur souhaitée et la couleur mesurée. En fonction de l'erreur, la quantité de chaque colorant est mise à jour pour minimiser l'erreur, et les relais électromagnétiques DC sont activés ou désactivés en conséquence. Le code attend 100 millisecondes dans la fonction loop() avant de répéter le processus de mesure et de contrôle.

Look final du projet :

Après le montage correct de tous les composants, le projet était terminé et il ne manquait plus que le code pour l'exécution, le problème résidait dans les bibliothèques ou plutôt dans la mauvaise utilisation de ces dernières lors de l'écriture du code, la logique de ce dernier reposait sur les capacités du capteur à donner les données directement dans un format RGB, une tentative quelque peu délicate qui nécessitait d'autres ajustements.

Une autre logique possible que nous aurions pu poursuivre était d'avoir une sorte de banque de données qui a tous les spectres d'absorption stockés dans lequel il peut être consulté pour reconnaître et produire la couleur, une fonction tout à fait prévisible que ce capteur est capable d'un tel exploit.

Ces deux voies ont nécessité un temps considérable dont nous manquions fortement, le développement de ce code est donc nécessaire au bon fonctionnement de l'appareil.

Les fichiers STL de l'impression ainsi que le fichier Arduino contenant le code sont accessibles en cliquant ici.