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 :

Test de transmission d’un faisceau à 1310nm à travers un objectif

Au printemps dernier, j’ai acheté quelques composantes pour faire un projet de microscope confocal à fibre optique. Il y a tout d’abord un laser, une photodiode avalanche (APD) et un coupleur 2×1, le tout fonctionnant à 1310nm.

Construction

Pour alimenter la diode laser, j’utilise un régulateur de courant LM350. Pour ce qui est de la photodiode, c’est un peu plus compliqué. Pour profiter du gain de l’effet d’avalanche, il faut lui fournir un voltage inverse d’environ 50V. Je me suis donc procuré un convertisseur DC-DC qui prend 12V en entrée et qui peut fournir jusqu’à 80V en sortie, dont la tension de sortie est ajustable. Par la suite, l’amplificateur intégré dans la puce de l’APD a besoin d’une tension de -5,2V. Je lui fournis avec un autre LM350 monté en régulateur de voltage cette fois-ci.

  

Pour ce qui est du montage optique, je me suis arrangé pour que tous les composants à fibre utilisent la même sorte de connecteur, soit du LC/PC. Il n’y avait que le laser qui n’était pas de ce type, j’ai donc dû acheter une patchfiber pour passer du connecteur FC/PC à LC/PC.

L’arduino dans la photo ne sert pour l’instant qu’à donner du 5V pour le laser, l’objectif était d’utiliser l’ADC pour numériser le retour produit par l’amplificateur de l’APD.

À la sortie de la fibre, j’ai rajouté un objectif 10X afin de focuser le faisceau sortant de la fibre en un point donné, avec l’hypothèse que je serais capable de mesurer la réflexion avec l’APD. J’ai donc construit un petit support permettant de positionner la sortie de la fibre (donc le connecteur LP/PC) à une position calculée pour optimiser l’ouverture numérique du système (voir la photo en bas). Bien sûr, l’alignement n’est pas exact, puisque c’est imprimé en 3D.

Problèmes rencontrés

En premier lieu, je n’ai jamais réussi à obtenir le signal à la sortie de l’amplificateur situé sur la puce d’APD. Il faut croire que le hack que je voulais faire a atteint sa limite. Ne connaissant pas les propriétés de cette amplificateur, outre qu’il est AC-coupled à la sortie, j’ai décidé d’abandonner une façon de le faire marcher, puisque cela pourrait être dû à une multitude de raisons (la première étant qu’il soit tout simplement brisé). De toute manière, je m’intéresse beaucoup plus à la valeur DC du signal sur la photodiode puisqu’elle est directement proportionnelle à la puissance reçue.

Ce que j’ai fait pour obtenir une mesure malgré tout, ça a été de placer un multimètre en mode courant entre la source de 50V et l’entrée de la photodiode. Rappelons que seule une des deux broches de la diode étant accessible, c’était la seule manière de se brancher dessus. Cela a fonctionné, je mesurais environ 2mA lorsque le laser est branché direct dessus, et environ 30µA lorsque le système est branché tel que décrit, autrement dit, lorsque l’on «regarde» une clive droite qui renvoie 4% du signal (cela est confirmé en pliant la fibre de sortie pour constater que les pertes viennent de la clive et pas du coupleur). En faisant les mathématiques, on serait supposé d’observer environ 20µA (2000/2*0.04/2), c’est donc raisonnable.

Une autre hypothèse que je devais vérifier, c’est si mon objectif transmet à une longueur d’onde de 1310nm. Pour cela, je me suis rendu compte qu’il était possible de détecter cette longueur d’onde avec ma caméra, qui apparaît comme une lueur faiblement bleuâtre). Voici les photos que j’ai obtenues :

On peut donc constater que l’optique de mon objectif laisser très bien passer cette longueur d’onde. N’ayant pas de carte IR, je ne sais pas si le faisceau se focusse bel et bien, mais un test fait avec une diode laser rouge montrait que oui, donc le changement de longueur d’onde devrait normalement déplacer légèrement le point focal, mais ça devrait fonctionner.

J’ai été incapable d’observer une réflexion avec ce système, probablement parce que le signal est caché dans le bruit dû à la réflexion de la clive. Cependant, il y aurait deux pistes à explorer :

  • Faire un capteur de contact direct entre la fibre et un milieu. En plaçant le connecteur directement sur des surfaces (chose qu’il ne faut jamais faire si on ne veut pas se ramasser avec un motton de poussière dessus), on peut remarquer une bonne fluctuation du signal, dépendamment de la lumière réfléchie. On pourrait essayer de s’en servir pour détecter des défauts de surface, etc. Il faudrait explorer davantage en faisant l’acquisition du signal et en observant si c’est possible de le corréler à quelque chose.
  • Faire un capteur de l’état de polarisation de la fibre. Le coupleur va laisser passer plus ou moins de signal sur l’APD dépendamment de l’état de polarisation du faisceau réfléchi par la clive. En pratique, cela signifie que lorsque l’on perturbe physiquement la fibre en la pliant légèrement (sans se rendre au rayon critique non plus), la modification de la biréfringence agit sur l’état de la polarisation du signal (une fois à l’aller et une autre fois au retour). Ce sont bien entendu de petites modifications, mais l’APD amplifie suffisamment le signal pour que cela soit aisément très perceptible (de l’ordre de quelques µA). L’effet pourrait être optimisé en créant une lame quart d’onde ou carrément un polariseur complet avec un segment de fibre.

En outre, je crois que je vais abandonner pour l’instant l’idée d’en faire un microscope confocal, à moins d’avoir du meilleur équipement (cliveuse à angle, monture d’alignement, etc.). Toutefois, le montage actuel offre quelques promesses.

Test du micro lidar vl6180x

J’avais acheté en février dernier une coupe de capteurs vl6180x dans l’optique éventuelle de faire une troisième version à mon robot écholocateur qui soit d’un autre ordre de grandeur de rapidité (rappelons que la limitation de la vitesse du robot était la fréquence d’acquisition des retours d’ultrasons qui sont limités par la vitesse du son, faire le tour des 5 capteurs consécutivement prenait une éternité).

Il sont essentiellement restés dans une boîte tout ce temps, mais j’en ai sorti un hier pour le tester. L’avantage de cette carte d’évaluation est qu’elle amène toutes les pins de la mini-puce à un terminal pouvant être facilement branché avec des câbles ordinaires. On peut trouver les spécifications sommaires ici.

Comme d’habitude, Adafruit a devancé tout le monde en créant sa propre carte et sa propre librairie arduino intégrant ce mini capteur. Je ne me souviens plus, mais je pense qu’il était back-ordered sur le magasin d’Adafruit lorsque je voulais me le procurer, mais de toute manière, je préfère la version de ST qui en donne deux pour approximativement le même prix. Et puis j’avais passé le tout dans une grosse commande chez mouser, qui n’avait pas la version d’Adafruit.

Le hic, c’est que la version de ST, joliment prénommée sans originalité « Satellites », n’a pas de convertisseurs de niveau logique, mais il a tout de même un régulateur 2.8V d’inclus (ce qui est vraiment d’une utilité limitée puisque les pin du I²C doivent aussi être dans cette logique de 2.8V). N’ayant pas de convertisseur logique à ma disposition (dans ma grande naïveté j’avais mis de côté un 74LVC245N sans trop regarder le datasheet, pour m’apercevoir que c’est une puce pas tant utile puisqu’elle est unidirectionnelle à direction variable, donc à la rigueur on pourrait l’utiliser dans un montage impliquant une communication asynchrone, mais pour du I²C c’est complètement inadapté). Donc j’ai regardé une coupe de schémas sur internet, en commençant par celui qu’Adafruit a publié pour sa carte. Cette utilisation des mosfets est vraiment créative, bon je sais qu’Adafruit n’en est pas l’inventeur, mais je n’étais jamais tombé sur ce genre de circuit auparavant.

J’ai donc fait ce petit convertisseur de logique avec des composants que j’avais heureusement sous la main : un LM350 pour réguler le 5V à 2,8V, deux mosfet MTP3055E (un pour chaque ligne de l’I²C), une coupe de résistances. C’est certainement une version de puissance des millions de fois overkill pour les courants impliqués ici, mais ça marche!

J’ai téléversé le code d’Adafruit dans mon arduino, et ça a marché tout seul, sans plus de tracas. Le capteur pouvait mesurer des distances jusqu’à environ 180 millimètres, en plus de la luminosité en lux sur une plage immense qui donne une foule de possibilités pour des utilisations dans des robots (je suis encore en train d’y penser). Le seul problème, c’est que la version démo d’Adafruit est terriblement lente, dans le style d’une quinzaine de mesures par secondes, ce qui ne va pas du tout pour mon application. Mais c’est juste le début, c’est certain que l’on peut crinquer la fréquence de plusieurs ordres de grandeur avec le bon programme et l’utilisation de la pin d’interrupt sur le vl6180x.

Prochains trucs à faire : mettre deux capteurs sur la même ligne d’I²C, trouver la façon pour reseter leurs adresses respectives (puisqu’elles ont la même par défaut) et récupérer les données provenant des deux! Heureusement, ST a publié une application note expliquant comment faire. En plongeant dans la documentation, je devrais aussi être capable de trouver comment augmenter la vitesse des données pour que la contrainte devienne la rapidité du microcontrôleur à les analyser.

Mesure de la concentration d’isopropanol dans l’eau avec mon réfractomètre laser

J’ai fait un test avec diverses concentrations d’isopropanol 99% dans l’eau. J’ai utilisé un cylindre gradué pour mesurer 100ml, ensuite je rajoutais 1ml d’isopropanol avec une pipette de 1ml. J’ai découvert qu’il fallait beaucoup brasser le tout afin d’avoir une mesure représentative.  Je place ensuite une goutte sur le prisme, puis je place la lamelle. Je suppose que les pertes à chaque fois sont d’environ 1ml, donc le volume total reste 100ml, la différence avec la vraie concentration reste dans l’incertitude.

Le graphique suivant a été produit : (incertitudes non montrées pour l’instant). C’est tout de même linéaire. Pour une concentration inconnue, l’incertitude est d’à peu près ±0,5%.

J’ai intégré cette équation empirique dans le code sur l’arduino, qui est maintenant capable de calculer l’indice de réfraction du milieu en se basant sur celui de l’eau. J’ai également mis le pourcentage estimé d’isopropanol selon cette courbe, ça restera à tester avec une autre suite de mesures. Un petit potentiomètre relié à une entrée analogique permet de faire le zéro lorsque l’on calibre le réfractomètre avec de l’eau. Le code associé est :

float calibration = analogRead(A0);
float pourcentiso = -0.1528*movavrg + 66 + calibration/100;
float n = 1.331 + (1.3812-1.331)*pourcentiso/100;

La variable movavrg est une moyenne en moving average sur une seconde avec 1000 lectures de la valeur de l’ADC, ce qui permet de retirer le bruit de haute fréquence de la mesure.

Néanmoins, il y a encore beaucoup de fluctuation dans la mesure à l’ADC, ce qui nuit à la précision du système. Il faudrait investiguer davantage pour savoir si la cause du bruit est optique ou électronique. Mon hypothèse est que c’est causé par le déplacement des franges d’interférence causée par les réflexions multiples entre les deux interfaces de verre. Ça serait difficile à enlever, puisque la lamelle de verre permet d’étendre uniformément la goutte sur toute la surface du prisme et d’offrir un assez bon beam dump pour conserver un bon contraste. Évidemment, un système mesurant directement la hauteur de la ligne sans passer par le ratio de luminosité serait bien plus précis, au désavantage d’être bien plus complexe. La bonne vieille photodiode donne tout de même des résultats époustouflants!

Résultats de la modélisation théorique du réfractomètre laser

Je vais publier ma démarche complète dans un article pdf prochainement, pour tirer avantage de LaTEX pour les équations mathématiques. Pour l’instant, je veux simplement publier les résultats de ma modélisation de mon réfractomètre.

Le graphique ci-contre présente l’indice de réfraction théorique selon la position mesurée de la ligne de contraste correspondant à l’angle de réflexion critique entre le prisme et le milieu posé sur celui-ci (en x, c’est la position par rapport à l’hypoténuse du prisme en millimètre, en y, l’indice de réfraction). On observe que la courbe est étonnamment linéaire sur toute la plage possible de mesure, ce qui est intéressant étant donné la quantité de détours mathématiques nécessaires pour obtenir la solution (incluant beaucoup de trigonométrie). C’est encore plus encourageant puisque la plage d’indice de réfraction que je souhaite mesurer reste aux alentours de celui de l’eau (environ 1,33) et ne variera pas tant que ça (peut-être maximum ±0,05), donc l’approximation linéaire donnera une faible erreur sur un aussi petit segment de la courbe.