Transfert de données par laser.

Bonjour à tous !

Je découvre tout juste le monde de l'Arduino dans le cadre d'un projet de classe prépa. Je n'ai pas encore reçu mes cartes mais ayant des délais serrés, je me dois de commencer l'écriture du code.
Je vous explique donc rapidement mon projet. Il s'agit en fait d'un proof of concept d'un transfert de données par laser. Je vais commencer tout doux en transmettant simplement l'état d'une ou plusieurs LED. Je compte coder ça sur la fréquence du clignotement laser mais je ne sais pas si c'est réalisable.
J'ai déjà codé différentes choses mais rien concernant l'Arduino. Est-ce que la fonction PWM pourrait correspondre à mon projet (en phase d'émission) ?
Concernant la réception du signal, là aussi, des questions se posent. Je recevrai bientôt, avec mon kit, une photorésistance. Est-ce adapté pour ce genre de traitement ? Le temps de réponse du composant permet-il d'envisager de calculer la fréquence du clignotement laser pour en déduire l'état des LEDs ?

Merci d'avance pour vos éclaircissements, en espérant avoir été suffisamment clair,

Math.

Un peu de recherche avant ... Transmission de données vers un PC par diode laser - #15 by B_tto - Français - Arduino Forum

La photorésistance a un temps de réponse lent. Utiliser plutôt une photodiode, un phototransistor, après avoir chiffré le débit de transmission voulu.

Pour la photo-résistance il te faut commencer par définir la bande de fréquence que tu veux utiliser.
Et vérifier ensuite si la bande passante de la photo-résistance convient. J'émets les mêmes doutes que Christian.
Tu parles de PMW : de base avec les librairies Arduino la fréquence de récurrence de la PWM est de 488,281 Hz.
Cela peut se changer mais il faut le faire à la main.

Laser dans le visible ou pas ?
Dans le visible c'est plus spectaculaire et plus sécurisant (on voit le rayon) mais les produits avec les meilleures bandes passantes sont dans l'infrarouge ou le proche infra rouge. Maintenant si c'est pour travailler à 1 ou 10 kHz n'importe quelle "couleur" devrait convenir.
Si c'est pour une faisabilité de grâce pas de laser 250 mW ils sont extrêmement dangereux.
Le strict minimum, avec une petite marge, pour que cela fonctionne et c'est tout.
Dans ton bahut as tu des wattmètres optiques ? Si oui utilises les.

Pour information la meilleure bande passante sera obtenue avec une photodiode et un montage amplificateur transimpédance mais il existe d'autres montages plus "abordables techniquement" et qui conviendront certainement.
Quel genre d'information veut tu transmettre ?
Quand le signal à transmettre est à valeur moyenne constante et connue il est possible de ne pas transmettre cette composante continue. Il suffit alors de faire des liaisons capacitives entre les différents modules électroniques :

  • a l'émission on bloque la composantes continue
  • à la réception on la reconstitue avec un simple pont de résistance.
    D'où la nécessité qu'elle soit "suffisamment constante" et connue.

Remarque :
Un L.A.S.E.R à toujours deux modes d'émission : quand le courant s’établit dans la diode, le laser commence une émission de type électroluminescent (led), puis quand la valeur du courant est suffisante l'émission devient cohérente (laser). Le seuil de passage d'un état à l'autre dépend du type de laser.
C'est pourquoi dans certaines applications il peut être intéressant de pré-polariser légèrement le laser .
Mais pour le faire il ne faut jamais travailler en aveugle, il faut absolument un wattmètre optique pour bien tout maitriser

Merci pour vos réponses !

B@tto, désolé je n'avais pas vu ce sujet qui rejoint en effet ma problématique. :wink:

Concernant la bande de fréquence à utiliser, je n'ai pas la moindre idée de ce qui serait le plus judicieux... Qu'est-ce qui doit entrer en compte dans le choix de cette bande de fréquence ? Il faut la choisir en fonction des capacités du laser ?
Comment je peux modifier la fréquence de récurrence de la PWM ? Est-ce qu'il y aurait un moyen plus adapté pour jouer sur la fréquence du laser ?

Je travaillerai en effet avec un laser dans le domaine du visible. Je vais me renseigner sur les wattmètres optiques.

Je vais aussi regarder les photodiodes. Quel serait l'intérêt d'un montage amplificateur transimpédance ?
La valeur moyenne du signal ne m'intéressait pas particulièrement puisque je comptais coder l'information seulement sur la fréquence des impulsions mais je ne suis plus très sûr de la faisabilité d'un tel dispositif... Y a-t-il une meilleure solution ?

Merci pour la remarque, j'avais lu des choses sur ces différents états mais je n'avais pas pensé que cela puisse influencer mon système.

Bande de fréquence :
C'est quand même à toi de le savoir !
Ou alors tu ne sais pas encore bien ce que tu veux faire.
Dans ce cas commence par pousser ta réflexion jusqu'au bout .

math33:
Comment je peux modifier la fréquence de récurrence de la PWM ?
---////---
Est-ce qu'il y aurait un moyen plus adapté pour jouer sur la fréquence du laser ?

En manipulant les registres du micro : il faut sortir des librairies Arduino et lire la datasheet du micro.
Dans l'univers des librairies Arduino il existe aussi des fonctions toutes faites comme "tone" qui pourrait peut-être te convenir.
Il faut lire les "Références du langage "sur le site Arduino.

math33:
Quel serait l'intérêt d'un montage amplificateur transimpédance ?

Pour commencer savoir qu'il existe :grin: et que c'est le plus adapté aux photodiodes.
Un ampli est dit transimpédance parce que l'entrée se fait en courant et la sortie donne des volts.
Donc G= S/E = V/I = ohms.
Comme une diode se commande en courant on voit qu'un tel ampli parait tout indiqué.
Maintenant si tu cherche des schémas sur le web tu verra qu'on entre sur l'entrée "-", c'est donc un ampli inverseur. Tu verra aussi que le gain est égal à la résistance de contre réaction câblée entre la sortie et l'entrée "-"

Si tu ne dispose que d'une alim positive il faut jouer avec des décalages de tension sur l'entrée "+" .
En résumé si tu es à l'aise avec des ampli op ce sera OK, sinon utilise des schémas plus classiques et concentre toi sur le coeur de ton sujet.

PS : une photo-diode peut s'utiliser non polarisée (beurk ) et bien mieux polarisée en inverse.
Pour simplifier tout se passe comme si la lumière qui atteint la jonction PN augmentait le courant de fuite.

La fonction tone semble parfaite pour mon montage !

Concernant le montage à AO, ça parait vraiment faisable. Je m'y intéresserai de plus près quand j'aurai ma photodiode.

Au niveau du programme, comment je pourrais estimer la fréquence des impulsions reçues par la photodiode ? SI j'ai bien compris, grâce à la photodiode et au montage à AO, les impulsions lumineuses vont être converties en variations de tension sur une pin en INPUT. Y a-t-il une fonction permettant de détecter les fronts montants ? Je pourrais en déduire la fréquence du signal...

Je t’ai dis de commencer par regarder les Références du langage.

Dans le bandeau de tête il suffit juste de cliquer entre Learning et Support

J'ai tenté un truc mais c'est vraiment artisanal :

void loop() {
delta_t1=pulseIn(photo_PIN,v_max);
  if (delta_t1!=0) {
    t1=millis()-delta_t1;
    delta_t2=pulseIn(photo_PIN,v_max);
    t3=millis()-delta_t2;
    delta_t3=pulseIn(photo_PIN,v_max);
    t5=millis()-delta_t3;
    T=0.5*(t5-t1); //On moyenne sur deux périodes : possibilité de faire sur plus pour améliorer le résultat
    f=1/T;
  }
}

Le problème ici est que si le temps que met la carte à faire la soustraction millis()-delta_ti est supérieur au temps que passe le signal en valeur basse, cette solution n'est pas valable...