Assemblage mécanique pour le traitement laser de l’asclépiade

J’ai terminé l’assemblage mécanique de mon laser 3W. L’objectif était de le monter à la verticale, de manière à ce que le faisceau pointe vers le sol, puis de l’aligner sur la sortie de ma buse par laquelle sort la fibre. Pour cela, j’utilise principalement des extrusions d’aluminium. Il y avait plusieurs trous filetés dans le boîtier du laser, dont le diamètre était parfait pour y visser mes vis de 2mm. J’ai donc simplement imprimé en 3D une plaque avec des trous aux bons endroits (3e photo). Un arduino connecté sur l’entrée TTL de la carte de contrôle du laser permet de sélectionner la puissance de sortie du laser. Pour faire l’alignement, j’utilise la puissance la plus basse possible, en deçà du 1mW (non mesuré pour de vrai). Je porte tout de même des lunettes classées OD5 à 450nm en tout temps, les lunettes fournies avec le laser lors de l’achat sont une vraie blague, mais vraiment pas drôle en fait, puisqu’elles ne bloquent (à peu près) rien, elles sont très probablement fausses, mais bon, au prix que m’a coûté le laser, c’est normal. On peut voir sur la 4e photo le faisceau vu par la caméra à cette puissance. Le focus se fait en tournant la petite lentille à la sortie du laser. Sur la 5e photo, c’est le laser lorsqu’il est à pleine puissance (supposément 3W, non mesuré). On peut voir que c’est amplement suffisant pour passer au travers d’une feuille de papier en une fraction de seconde (dernière image). Le tout sera utilisé dans une boîte fermée, pour limiter les risques laser au maximum.

Défrichage de fibre optique pour l’imagerie oxymétrique

Parce que oui, c’est possible de faire autre chose que des sapins de Noël avec de la fibre en PMMA à 10¢ le mètre. Je me suis lancé sérieusement, dans les derniers jours, dans mon projet d’imagerie oxymétrique. Pour commencer, j’ai découpé 147 bouts de 30 centimètres afin d’avoir une image composée d’un carré de 7×7 (ou toute autre forme comprenant 49 bouts de fibre sur l’image de la caméra).

Sources lumineuses

En utilisant deux sources de longueur d’onde différente, l’une dans le rouge, l’autre dans l’infrarouge, il est possible de déterminer le taux d’hémoglobine oxygénée par rapport à l’hémoglobine désoxygénée, en se basant sur les courbes d’absorption particulières. Ce principe est largement utilisé dans les sphygmo-oxymètres optiques, mesurant la concentration d’oxygène en un point (normalement un doigt) et supposant qu’elle est homogène dans le reste du corps. Or, la consommation d’oxygène par les organes varie selon l’effort énergétique qu’ils doivent fournir. En ayant une méthode qui permet de mesurer les variations d’oxygénation dans un volume donné, on ouvre la porte à toutes sortes d’applications intéressantes, comme l’imagerie spectroscopique proche infrarouge fonctionnelle (functional near-infrared imaging, fNIR, en anglais), ce qui est très excitant puisqu’elle permet de visualiser les processus mentaux en temps réel avec, ce que je souhaite vérifier, du matériel très peu coûteux et facile à trouver.

 (source : http://www.oximetry.org/pulseox/principles.htm)

Atténuation de la fibre

Résultats de recherche d'images pour « attenuation pmma fiber »

L’atténuation dans le proche-infrarouge pour le PMMA grimpe rapidement, comme on peut le voir sur le graphique. À 850nm, on a environ 5dB/m d’atténuation. Il faut donc garder les bouts de fibre très courts. Avec 30 centimètres, les pertes sont de 1,5dB (~71% du signal est transmis), ce qui fait mal, mais pas trop, espérons-le.

Matériel

Pour mes sources lumineuses, j’utilise deux DEL à très haute puissance optique (2,6W) afin d’être certain d’avoir suffisamment de signal. J’aurais pu utiliser des lasers, mais mon objectif était d’injecter simultanément toutes les fibres, le plus simplement possible. De plus, les DEL sont moins coûteuses et moins dangereuses (quoique à cette puissance, même si ce n’est pas un faisceau cohérent, j’ai tendance à être prudent quand même).

Je les avais déjà préalablement soudées l’année passée, lorsque j’avais commencé ce projet. Je leur ai rajouté un petit cylindre imprimé en 3D, qui se met directement autour du petit bulbe-lentille de la DEL et qui est suffisamment large pour y faire tenir les 49 fibres.

J’utilise pour les alimenter un power supply d’ordi, qui me donne 15V et 5A, le tout régulé à 700mA par diode par des régulateurs spécialisés pour cette application.

J’ai remarqué qu’allumées à pleine puissance, elles deviennent très chaudes très rapidement, ce qui va être à tenir en compte dans la suite du projet. Il va falloir soit les utiliser périodiquement avec un rapport cyclique faible, soit rajouter un système de refroidissement adéquat, ou bien y aller avec une combinaison de ces deux approches.

À 850nm, l’oeil perçoit un rouge très faible, sûrement la limite inférieure du spectre de la diode, qui est en fait bien plus lumineuse, tel qu’on peut l’observer avec la caméra qui lui donne une couleur mauve.

  

La DEL à 660nm est extrêmement brillante, puisque la quasi-totalité de son spectre est dans le visible. On peut voir que les fibres contiennent bien le faisceau.

Pour la caméra, j’utilise une caméra de drone de marque RunCam qui a une sensibilité absolument phénoménale pour son prix abordable : jusqu’à 0,0001 Lux (elle m’avait coûté 50$US si je me souviens bien). Je lui ai imprimé en 3D un petit adaptateur qui rassemble toutes les fibres et y fait tenir la caméra. Toutefois, comme on peut le voir sur la dernière image, ce sera à refaire puisque le focus de la caméra est à l’infini, ce qui mélange toutes les fibres en un gros blob de lumière. Il va donc falloir rajouter de l’optique pour imager correctement les fibres et arriver à les distinguer individuellement afin de pouvoir traiter le signal. C’est le pari à relever en ce moment dans ce projet.

Installation du sandbox d’algèbre géométrique sur Fedora

Il y a de cela quelques années, j’avais assisté à une présentation sur l’algèbre géométrique qui m’avait beaucoup intéressée. Voulant en apprendre davantage, je me suis procuré le livre : Geometric Algebra for Computer Science, qui m’avait séduit par son approche pratique, étant un matheux qui préfère voir les choses (cf. Borra pour les GPH qui me lisent en ce moment 😉

Je n’avais jamais eu le temps de le lire, ayant d’autres priorités de lectures pour mes cours, mais maintenant que l’école est définitivement F.I.N.I.E je peux enfin lire des manuels de mathématiques obscures pour le plaisir! (oui ce genre de personne existe pour de vrai). En ce moment je viens de finir le chapitre 2, et j’ai tenté de faire les exercices de programmation, mais comme d’habitude avec tout ce qui touche à du C++, il faut passer des heures à installer toutes les librairies et comprendre comment les «linker» comme du monde.

Sur le site web du livre, on trouve le lien pour installer le sandbox dans la section Downloads. Pour avoir toutes les libraires, il faut installer les packages suivants (tel qu’énumérés sans spécification dans le fichier user_manual.txt) :
sudo dnf install freeglut freeglut-devel antlr antlr-C++

Puis peut-être d’autres choses qui était déjà installé sur mon système, genre OpenGL puis FLTK. Donc avec un terminal, on ouvre le dossier ga_sandbox-1.0.7 puis on écrit :
./configure
make

Ce qui va récursivement construire tous les fichiers C++, partout. Le plus important en fait c’est que la librairie «libgasandbox » se compile sans erreur.

Lorsque le make s’est rendu dans les dossiers des exemples, il m’a sorti l’erreur suivant à l’exemple 1 du premier chapitre (qui est présente dans tous les makefile de tous les exemples…) :

/usr/bin/ld: /usr/lib/gcc/x86_64-redhat-linux/7/../../../../lib64/libglut.so: référence au symbole non défini «glGetFloatv»
//usr/lib64/libGL.so.1: error adding symbols: DSO missing from command line

Après quelques heures de fouilles sur internet et d’essais pathétiques de gossage dans le makefile de l’exemple 1, j’ai finalement compris comment résoudre le problème : la librairie d’OpenGL n’était pas correctement liée. Il faut modifier la ligne 87 du makefile propre à l’exemple (GLUT_LIBS = -lglut) par : GLUT_LIBS = -lGL -lGLU -lglut , ce qui rajoute les deux librairies d’OpenGL GL et GLU nécessaires à la compilation du programme. Donc on enregistre le makefile, on exécute la commande make puis tadam! Ça compile enfin pour générer l’exécutable chap1ex1, que l’on peut ouvrir dans le terminal avec le classique « ./ » : ./chap1ex1 ce qui ouvre la fenêtre suivante avec les objets géométriques donnés en exemple, et la possibilité de faire tourner la vue en 3D.

Maintenant je peux enfin me concentrer à comprendre les maths et devenir un pro des espaces vectoriels à 5 dimensions! 😀

Monture optique du télescope LCD

L’ensemble des pièces utilisées pour la conception de mon télescope LCD : en haut à gauche, un raspberry pi avec un shield d’écran LCD, en haut à droite, les 4 lentilles (lentille érectrice, oculaire ainsi que 2 field lenses), à droite, un objectif à focale variable et en bas en noir, toutes les pièces imprimées en 3D pour obtenir un télescope fonctionnel : 4 tubes exactement de la bonne longueur pour correspondre aux distances focales des lentilles, et 4 paires de demi-montures circulaires pour fixer et centrer les lentilles aux bons endroits.

J’y suis allé fort avec mon imprimante 3D cette semaine, passant environ 500g de plastique noir afin de créer toutes les pièces nécessaires à la monture mécanique de l’optique de mon télescope LCD. J’y suis peut-être allé un peu fort avec mon 3mm d’épaisseur, mais je voulais être sûr de la robustesse de l’ensemble.

La première pièce a été intéressante à faire, puisque j’ai copié l’attache de mon objectif à focale variable, qui tenait avec 4 petites vis déjà présentes, à même des filets déjà faits dans l’objectif. J’ai donc imprimé une pièce de test pour voir si mes dimensions fonctionnaient, avant d’imprimer ma vraie pièce comprenant un tube de 150mm (ce fut sans nul doute l’impression la plus haute que j’ai réalisé à ce jour, mon imprimante se rendant à 180mm maximum en z). Ça a été tout juste pour le diamètre interne du tube, parce que je voulais pouvoir le visser par l’extérieur tout en laissant suffisamment de place à l’intérieur pour les rayons et la lentille de champ.

 Parlant de lentille de champ, la voici, positionnée à la première image produite dans mon système. Elle est fixée à l’aide d’un anneau imprimé en deux parties, verticalement, qui permet de maintenir la lentille en place par simple pression, sans avoir besoin de colle, de vis, ou d’ajustement en position. Je suppose qu’elle est placée au centre de l’axe optique, et malgré les tolérances assez élevées que j’ai dû mettre pour tenir en compte des défauts d’impression (surtout dans la partie supérieure de l’arche du cercle), je pense que c’est la méthode la plus précise à ma disposition pour monter une lentille dans un tube.

Je place ensuite un second tube du même diamètre avec une hauteur calculée pour correspondre à ma distance objet de ma seconde lentille (lentille érectrice). Le même principe de monture est utilisé, sauf que cette fois-ci se rajoute un adaptateur de diamètre de tuyau, d’un côté, il y a le petit diamètre, et de l’autre, le plus gros diamètre.

 

Ensuite, je place un des deux gros tubes de 100mm de haut, afin de placer mon système d’écran LCD. Celui-ci est composé de mon classique écran LCD modifié (voir ma vidéo CrystalCam pour plus d’informations) et d’une seconde lentille de champ plano-convexe du plus gros diamètre que j’ai pu trouver à cette courte focale (D=45mm, f=50mm).

 

 

Pour imprimer la monture en 3D, j’ai dû faire une fente juste assez grande pour y insérer l’écran LCD, tout en donnant le plus strict espace pour donner une petite pression sur la lentille pour la maintenir en place. Le côté plat de la lentille aide beaucoup à la positionner directement en contact avec l’écran, sauf que l’autre côté, très bombé, provoque des aberrations importantes qui ne sont pas corrigées par mon système. Je n’ai pas le choix de placer la lentille uniquement de ce côté, puisque je veux pouvoir observer l’écran LCD directement avec mon oculaire de l’autre.

Pour l’oculaire, j’ai continué avec ma méthode super efficace des moitiés de montures centrées retenant la lentille. On peut en voir les détails sur la photo ci-contre. Deux petites bandes de plastique permettent de retenir la lentille en z, tandis qu’elle est confinée dans un cylindre qui fait un cheveu de plus que sa dimension (un cheveu en tolérance de ma vieille prusa i3, soit 1mm au total sur le diamètre). J’ai rajouté un petit cache-oeil de 6mm avec un diamètre légèrement plus gros afin d’être confortable pour visionner l’écran et de s’assurer que peu de lumière externe entre par l’oculaire dans le système. Puisque l’écran LCD atténue beaucoup la lumière provenant du télescope, c’est important si l’on veut voir quelque chose.

Voici le résultat, une fois monté sur le second tube de 100mm. Bien que la majorité des pièces tenaient simplement par contact, j’ai rajouté de la colle chaude entre toutes les pièces. La pièce critique est l’adaptateur entre les deux diamètre de tuyau, il fallait absolument le coller et en essayant de lui donner un angle nul par rapport à l’axe optique (pas facile). Je n’ai pas pris de chance et j’ai mis de la colle chaude partout, ce qui fait que la monture est extrêmement solide. Afin d’éviter toute intrusion de lumière dans le montage, j’ai rajouté du duct tape noir pour boucher les mini-fentes (surtout celles entre les deux moitiés de monture de lentille). Le tout est un petit peu overkill, mais je me disais que ce ne serait pas un vrai montage d’ingénierie physique sans quelques bâtons de colle chaude et quelques longueurs de duct tape.

Le résultat final est surprenamment beau et aligné, pour des pièces imprimées en 3D. Le télescope est à peine plus long qu’une longue vue standard, à cause de l’ajout de l’étage du LCD et de l’érecteur pour avoir une image à l’endroit. Il fait environ 400cm, ce qui reste très maniable avec les bras. L’ajustement du focus se fait avec la rotation de l’embout de l’objectif, qui déplace l’une des deux lentilles à l’intérieur, modifiant la longueur focale du premier système d’imagerie.

La présence des lentilles de champ dans le système fait toute la différence pour un télescope aussi long et ayant autant de transformations optiques. On peut voir un aperçu du résultat ci-contre, bien que cette photo ait été prise rapidement avec ma caméra sans retirer l’oculaire. À l’oeil, c’est franchement plus impressionnant. L’image arrive directement sur l’écran LCD, à l’endroit et bien nette (lorsque l’on ajuste le focus). Elle occupe approximativement 23 degrés du champ de vue, ce qui est très satisfaisant sans être exceptionnel, mais d’autres contraintes ont eu préséance dans la conception du système. La principale aberration est la courbure de champ, elle est vraiment très forte dans les coins de l’image. Les autres aberrations sont sans doute masquées par la présence de l’écran LCD qui induit lui-même quelques modifications à l’image, entre autres une atténuation forte ainsi que l’ajout du micro-grillage des pixels. Une étude plus formelle des aberrations produites par les lentilles serait nécessaire pour identifier des solutions. Mais comme d’habitude, tout est affaire de compromis, puisque sans lentille de champ pour imager l’ensemble des rayons sur les autres lentilles, on ne verrait tout simplement rien à cause de l’atténuation trop importante du système.

On se laisse sur cette merveilleuse photo de moi-même en train d’utiliser de manière ludique ce télescope :