Synchronisation des DEL avec le signal vidéo

Afin de bien pouvoir séparer les signaux de ma caméra oxymétrique, je dois trouver un moyen pour synchroniser les DELs avec l’acquisition des images. L’objectif est d’alterner les prises de vue entre un éclairage avec la DEL rouge et avec la DEL infrarouge, sans que les signaux se chevauchent. Le hic, c’est que la caméra que j’utilise n’a aucun trig externe : toute l’électronique de contrôle est intégrée, laissant seulement le signal vidéo analogique en sortie.

Mon premier essai fut avec une esquisse arduinesque d’une redoutable simplicité :

void loop() {
analogWrite(5,10);
delay(33);
delayMicroseconds(325);
analogWrite(5,0);
analogWrite(6,60);
delay(33);
delayMicroseconds(325);
analogWrite(6,0);
}

La broche enable de chaque régulateur de courant des DELs est reliée aux pin 5 et 6 de l’arduino, qui fait un PWM pour éviter la surchauffe. Essentiellement, le programme allume en alternance les deux DEL, avec une période d’environ 33,333ms, pour correspondre au 30 images par secondes du flux vidéo. Il y a deux problèmes principaux à cette approche : l’horloge de l’arduino n’est synchronisée ni en phase, ni en fréquence avec celle de la caméra, ce qui fait que pendant la durée d’une prise d’image, bien souvent les deux DELs sont allumées séquentiellement, donc on se retrouve avec un signal mélangé. La légère différence en fréquence fait que ce décalage en phase se déplace au fil du temps, produisant un battement lent dans le signal qui rend celui-ci inutilisable périodiquement. Bref, ça marche, mais ce n’est vraiment pas fiable et il y a manière de faire mieux.

J’ai donc relégué l’arduino et me suis décidé à résoudre le problème de manière purement électronique. Le schéma est présenté ci-dessous :

J’ai commencé par observer le signal vidéo analogique à l’oscilloscope. Il ressemble à ceci :

À chaque ligne, il y a un pic vers le bas qui indique une nouvelle ligne. La zone au milieu de la photo survient à la fréquence de 60Hz, puisque la vidéo est interlacée, c’est l’indicateur de nouvelle image. Afin de me synchroniser là-dessus, je me sers de la partie distinctive qui est un plat près de 0V. Je passe donc ce signal dans la borne négative d’un premier comparateur, avec un niveau de voltage assez bas sur la borne positive (224mV), ce qui sort uniquement les pics les plus bas (nouvelle ligne et nouvelle image). La sortie de ce comparateur donne ceci :

Les pics plus importants correspondent au plateau près de zéro que je souhaitais isoler. Je passe ce signal dans un filtre passe-bas, qui va garder seulement la composante à 60Hz et retirer les petites fluctuations :

Je passe ensuite ce signal dans un second comparateur, afin d’obtenir un retour parfait au ground et une forme plus abrupte des pics :

Ça marche bien, sauf que c’est en open collector, donc on ne peut pas l’interfacer directement avec une puce en logique CMOS. Le voltage du niveau haut est à 4,3V environ, ce qui est trop loin du 5V. Après un bon bout de gossage, j’ai réussi à brancher un transistor PNP en configuration d’émetteur commun. Le biasing provoquait des effets bizarres, parce que je mettais une résistance de charge trop élevée, ce qui limitait trop le courant dans le collecteur. En le revirant de bord, (l’émetteur et le collecteur sont inversés), j’ai réussi à le faire marcher par magie. En investiguant un peu, je me suis rendu compte que faire ça diminue le facteur beta, soit le gain en courant du transistor. Autrement dit, la région d’amplification est beaucoup plus faible et il sature très rapidement. En diminuant la résistance de charge, le courant augmente drastiquement et on peut se servir du transistor branché normalement, puisqu’il reproduit bien l’onde carrée. Cela donne un pic inversé qui varie entre 4,9V et 0V :

En envoyant cela dans l’entrée d’horloge d’une bascule T, on crée une onde carrée avec un rapport cyclique de 50%, à la moitié de la fréquence des pulses d’entrée :

Donc après toutes ces étapes, on vient de recréer une horloge qui est synchronisée sur celle de la caméra (avec une phase décalée bien sûr), à 30Hz. Afin de contrôler les DELs, je vais la diviser encore en deux avec une autre bascule T, ce qui va produire deux ondes carrées à 15Hz déphasées de 180 degrés, autrement dit, les deux DELs vont clignoter en alternance à la fréquence de la caméra. Cela donne ceci :

Finalement, je me sers de ce signal pour moduler une autre onde carrée générée par un timer 555 avec un duty cycle faible, qui fait office de PWM pour mes DELs. Le résultat, appliqué sur la broche de contrôle des régulateurs de mes DELs, ressemble à ceci :

Et ça marche tout seul! Lorsqu’on allume le tout, les DELs se mettent à clignoter à la bonne fréquence comme par magie!

Électronique du réfractomètre

Hier j’ai avancé principalement l’électronique de mon projet de réfractomètre. Je suis parti d’un arduino sur breadboard que j’avais déjà construit (en utilisant une puce ATMEGA328 que l’on programme avec un FTDI). J’ai rajouté un écran LCD, avec le programme hello world simplement pour vérifier qu’il fonctionne bien.

Pour l’alimentation du laser, j’utilise un bon vieux régulateur de courant LM350 avec une résistance de 100 ohms. J’ai détruit deux petits modules laser (bon ça vient du dollarama donc c’est pas si grave, mais quand même) : le premier en le laissant branché trop longtemps sur du 5V (il a une résistance pour limiter le courant, mais ce que j’ai découvert c’est qu’elle est faite pour du 4,5V, avec 5V la diode surchauffe et sa puissance de sortie diminue). Je ne m’en suis rendu compte que trop tard, alors que des dommages irréversibles étaient déjà faits. La deuxième diode, je l’ai brisée ce matin, alors qu’un petit peu de colle chaude est tombé directement sur le fil minuscule de l’anode (ou de la cathode, en tout cas), le brisant. Finalement, deux diodes brisées plus tard, tout fonctionne comme un charme.

J’ai modifié l’alimentation du breadboard pour récupérer le VIN du transformateur que l’on branche, et pas seulement le 5V du régulateur, pour pouvoir alimenter le LM350 directement. C’était avec le premier module, où il y avait encore la résistance en série avec la diode laser, ce qui provoquait une chute de voltage. Je ne pense plus que c’est nécessaire à présent, on pourrait utiliser directement le 5V, mais bon, pour l’instant je vais le laisser comme ça puisque ça fonctionne. Ça permet une légère économie d’énergie (mais on s’en fout pour l’instant puisque le système n’est pas à batterie).

Pour ce qui est de la partie de la photodiode, j’utilise un simple amplificateur transimpédance, avec la diode branchée en reverse bias sur le ground, l’entrée positive de l’amplificateur sur le 0V également pour avoir le maximum de sensibilité. Cela est possible car j’utilise un LM358 qui a la possibilité de se rendre jusqu’au ground, autant à l’entrée qu’à la sortie, et ce même en single supply (comme en ce moment dans mon circuit qui l’alimente en 5V). Le désavantage, c’est que son voltage de saturation à l’état haut est aux alentours de 3,7V pour une alimentation de 5V, ce qui n’est pas si grave puisque l’on peut ajuster la pin aref de l’arduino pour correspondre à ce voltage. La résistance de gain est encore à ajuster, mais pour l’instant, je sais qu’elle doit être quelque part entre 100kohms et 1Mohm. Le deuxième amplificateur sur la chip est utilisé comme un voltage follower qui isole l’entrée de l’ADC de l’arduino du circuit.

Le schéma sera publié prochainement!

Je suis en train d’imprimer un couvercle à la partie optique, pour empêcher la lumière ambiante d’interférer dans les mesures (c’est plus simple comme ça, quoi qu’on pourrait éventuellement utiliser un modulateur et un démodulateur à une certaine fréquence pour diminuer le bruit).