Banc de Vision à éclairage multi-spectral

Sommaire :

  1. Introduction
  2. Etude du projet
  3. Partie GMP
    1. Les solutions adoptées
    2. La CAO
    3. La réalisation du projet
  4. Partie GEII
    1. L’éclairage
    2. La capture d’images
    3. La motorisation
    4. Les supports des LEDs et le boitier de commande
  5. Conclusion

Introduction :

Le projet de « Banc d’éclairage multi-spectral » fut un projet en collaboration entre le département Génie Mécanique et Productique et le département Génie Electrique et Informatique Industrielle. Il nous a été confié par Monsieur Christophe Cudel, professeur dans le département GEII et responsable des apprentis de ce département.

Ce projet a pour but de prendre des photos en noir et blanc, sous différents spectres sélectionnés, de plusieurs pièces défilant sur un plateau motorisé. Ces différentes vues nous permettrons ensuite de mettre en évidence les défauts de la pièce. Nous pourrons aussi, avec les images de certains spectres, reconstituer une image couleur à partir de ceux-ci.

Pour cela, un groupe de 5 personnes fut constitué, 3 élèves de GMP et 2 élèves de GEII.

Les étudiants de GMP se sont occupés de toute la partie mécanique et du bâti et les étudiants de GEII ont développé toute la partie éclairage, la capture de l’image et la commande du moteur.

Le bâti ci-dessus, situé dans le département GEII, sera notre modèle. Pour notre projet, un bâti similaire a été commandé avec les dimensions adéquats. Il a été décidé que le bâti sera commun avec le projet de « Banc de vision » d’un autre groupe.

Etude du projet :

Pour débuter le projet, nous fûmes, tous les 5, une étude de celui-ci. Nous avons donc commencé par une bête à cornes afin de répondre aux questions : pour qui ? Sur quoi ? Pour quoi ?

Une fois ces questions résolues, nous avons pu établir une analyse fonctionnel du projet.

Le principe découlant de cette analyse est simple. Depuis un boitier de commande, nous commandons l’exécution des tâches suivantes : la couleur de l’éclairage, le nombre de pièces à analyser et le départ du traitement.

Les commandes effectuées depuis la console sont envoyées à l’arduino qui contrôle toute la procédure. Ainsi, en fonction des couleurs et du nombre de pièces choisies,l’arduino va envoyer les informations aux différents actionneurs aux moments voulus.

 

Partie GMP :

Les solutions adoptées :

Pour ce projet, l’idée nous ayant semblé la plus simple à réaliser s’est rapidement avéré être la réalisation d’une plaque circulaire avec des emplacements pour les pièces à photographier, cette solution ne nécessitant qu’un unique moteur, la ou une table se déplaçant sur deux axes en aurait nécessité deux.

Par la même, ce projet devant s’adapter dans un bâti composé de profilés, il nous est rapidement venu à l’idée d’ajouter à ce bâti une barre verticale, au fond au centre de ce bâti, sur laquelle nous pourrions fixer notre caméra et notre éclairage, ce à la verticale du plateau tournant qui emmènerait les pièces sous la caméra.

 

La CAO :

(CAO initiale de notre projet)

(CAO suite à modifications : pignons et roue-dentée ont été inversés – la barre verticale a été décalée sur un des cotés afin de pouvoir modifier le support des LEDs ainsi que le support caméra)

[Transmission entre le moteur qui vient se fixer sous l’adaptateur rouge et le plateau tournant, guidé par l’axe vert fixe dans le bâti, par un système roue dentée (jaune) – pignon (bleu). Nous nécessitons un rapport important de par la faible puissance du moteur que nous avions à utiliser. Les engrenages sont ici inversés (erreur de notre part, corrigé dans la version finale)]

[L’entraxe de l’engrenage est géré à l’aide de trous oblongs dans la plaque maintenant le moteur (en bleu), le pignon étant fixé sur l’adaptateur qui est directement sur la sortie du moteur]

(Cette plaque vient supporter une caméra. Il y a de nombreux trous dans la zone à droite permettant d’accueillir divers modèles de caméra)

[Cette plaque sert à tenir les deux anneaux de LEDs (1 RGB, 1 IR/UV). Sous les anneaux de LEDs sera fixé un diffusant (plaque de plastique semi-transparente)].

 

[Ces deux plaques sont fixées au bâti par des équerres, permettant d’en régler la position en hauteur. On peut voir sur cette image le plus gros des modèles de caméra que nous avions à adapter sur le support, et le plus grand des anneaux de LEDs (en rouge). La caméra peut passer au travers du support de LEDs à l’aide du trou situé en son milieu]

[Le plateau tournant (jaune) peut accueillir deux plateaux différents, avec respectivement six et neuf cases, mis en position par les deux goujons gris]

La réalisation du projet :

Nous n’avons pas eu le temps de réaliser toutes les pièces de notre projet : seul ont été réalisés : le palier lisse venant sur l’axe du plateau tournant pour permettre la rotation de ce dernier, l’adaptateur sortie du moteur, et l’axe du plateau tournant.

 

La partie GEII :

L’éclairage :

Afin d’éclairer le banc de vision, 2 cercles de LEDs furent utilisés. Un premier, petit, composé de 24 LEDs et un second, plus grand, composé de 4 quart de cercle, pour un total de 60 LEDs.

Le premier cercle fut utilisé pour l’éclairage du banc dans les spectres visibles par l’œil humain. Le second cercle aurait dû être utilisé pour l’éclairage du banc dans les spectres invisibles par l’homme, l’infrarouge et l’ultraviolet. Malheureusement, les LEDs infrarouges et ultraviolettes étant relativement chère, le second cercle n’a pas pu être modifier. Il éclairera donc sous le même spectre que le premier.

Les cercles sont composés de LEDs adressables WS2812B. La spécificité de celles-ci est qu’elles sont transmetteuses. C’est à dire qu’une LED, connectée en série avec les autres, va recevoir une trame de n fois 24 bits. Cette trame constitue le paramétrage des LEDs. La première LED va être paramétrée par les premier 24 bit puis, va transmettre le reste de la trame à la LED suivante. Cette opération va se produire le nombre de fois, n, équivalent au nombre de LEDs que possède le cercle paramétré.

Afin de commander nos cercles, nous avons utilisé un arduino UNO, qui sera aussi utilisé pour la capture d’image et la commande du moteur, et la bibliothèque  de fonctions fourni par le constructeur.  Le programme de la gestion de l’éclairage peut être résumé par le diagramme suivant :

L’entièreté des programmes sont disponible en téléchargement ici.

La capture de l’image :

Pour la capture d’images nous avions comme obligation de pouvoir accepter une caméra standard ou une caméra intelligente, pour le projet un caméra cognex. Ces caméra ont la possibilité de prendre des photos grâce à un signal déclencheur, nous avons donc utilisé cela lors de ce projet.

Nous avons intégré le déclenchement de la capture dans le programme de la gestion des éclairages comme le diagramme ci-dessous peut vous le montrer.

Après l’allumage des LEDs dans la couleur souhaité nous envoyant une impulsion, par le biais d’un signal haut puis bas, sur l’entrée de déclenchement de la caméra.

Les caméra étant différentes, un soucis se posa. La caméra standard acceptant un signal de déclenchement de 5V n’a aucun soucis pour fonctionner en étant branchée sur l’arduino. En revanche, la caméra Cognex a un déclenchement plus élevé.

Nous avons donc utilisé un optocoupleur afin de le piloter. Pour cela l’optocoupleur a dû être modifié car le signal sortie était encore trop faible. En effet, l’optocoupleur possédait une résistance de 10kΩ  qui, couplé avec les 10kΩ déjà présent, était beaucoup trop élevé. Pour abaisser cette résistance, nous avons donc rajouté une résistance de 10kΩ  en parallèle à celle de l’optocoupleur.

Cela nous a permis de baisser suffisamment la résistance pour que le signal de déclenchement soit détecté par la caméra.

Le fonctionnement du moteur :

Pour le défilement des pièces nous avons utilisé un moteur pas à pas, contrôlé par l’arduino, via un shield moteur.Ce moteur est composé de deux bobines qui fonctionne de manière alterné afin de faire tourner l’axe. Cette gestion alternative est gérer par le shield moteur, il nous a permis de commander le sens du moteur, sa rotation ainsi que son alimentation.

Lors de l’exécution du programme, l’arduino envoie une demande de rotation au shield moteur via une impulsion en 5V. Celui-ci envoie ensuite la commande au moteur via un signal en 12V.

Cette impulsion faisant tourner le moteur que d’un seul pas, nous avons donc bouclé cette partie de code afin de l’exécuter le nombre de fois nécessaire. Notre programme possédant 2 modes de fonctionnement, le premier permet de traiter 6 pièces et le second 9 pièces, celui-ci devra donc boucler un nombre différent de fois.

Afin de calculer ce nombre nous savions que le moteur possédait 200 pas, nous avons donc divisé ce nombre par le nombre de pièce observées afin de connaitre le nombre de pas à effectuer entre chaque pièce. Lors ce ces calculs, nous avons remarqué un reste dans ces division. Ainsi pour supprimer le décalage qui sera créé, nous avons ajouté une rotation de 2 pas à la fin du programme.

Les supports des LEDs et le boitier de commande :

Les supports des cercles de LEDs n’ayant pas pu être usinés par le GMP par manque de temps, nous les avons donc fait à l’IUT LAB. Pour cela nous les avons dessinés sur le logiciel CorelDraw puis fait découper par une découpeuse/graveuse laser (CNC) sur une plaque de contreplaqué de 5mm. Nous avons aussi découpé les diffusants sur une plaque de plastique transparent de 3mm.

Une fois les pièces finalisées, nous avons vissé/collé les cercles de LEDs sur leur support et mis en  place leurs diffusants.

Nous en avons aussi profité pour créer notre boitier de commande. Pour cela nous avons réutilisé la CNC afin de découper notre boîte dans une planche de contreplaqué de 5mm. Sur la face avant nous avons ajouté des trous afin de pouvoir fixer les différentes commandes sur le boîtier. Nous y avons aussi fait graver la fonction de chaque commande afin que l’interface soit clair pour l’utilisateur et quelques éléments esthétiques pour finalement obtenir ce résultat :

Conclusion :

Lors de ce projet nous avons pu apprendre beaucoup de choses. Nous avons notamment pu découvrir ce qu’était un optocoupleur et comment cela fonctionnait, ou encore comment contrôler un moteur pas à pas grâce à un arduino. La plus grande découverte fut le fonctionnement des LEDs adressables ainsi que la manière de les programmer grâce à sa bibliothèque de fonctions.

Au final, ce projet a pu nous apporter beaucoup de chose, tant en apprentissage qu’en mise en oeuvre de connaissances. Nous avons aussi pu découvrir et utiliser des machines complexes à l’IUT LAB ainsi que leurs logiciel d’exploitation. Tout cela fut très instructif malgré certains points n’ayant pas pu êtres testé en conditions réelles, dû à certaines pièces manquantes.

Ce projet pourrait donc être amélioré de plusieurs façons :

Pour commencer, nous pourrions usiner les différents plateaux initialement pensés.

Ensuite, nous pourrions tester notre programme de commande du moteur et le corriger aux besoins.

Une fois ces éléments fait, nous pourrions installer notre système sur le bâti initial.

Ces étapes importantes faites, nous pourrions refaire le câblage des éléments du projet, afin que notre boîtier de commande ne s’ouvre plus sous la pression des câbles à l’intérieurs.

Nous pourrions aussi le modifier en y ajoutant un bornier. Cela nous facilitera le câblage, le branchement/débranchement et le changement de caméra. Cela isolerait aussi le câblage à l’intérieur du boitier, ce qui nous garantira l’intégrité du câblage de la boite.

 

Nous espérons que ce projet pourra être continué l’année prochaine et que les améliorations citées ci-dessus pourront être mise en oeuvre.