Comment identifier les marqueurs LED en modulant leur luminosité?

11

Pour un de mes projets, j'ai besoin d'utiliser des marqueurs LED infrarouges pour identifier les emplacements des points dans l'espace avec des algorithmes de stéréovision et plusieurs caméras IR. J'ai également besoin que chaque marqueur LED ait un identifiant unique reconnaissable, ce qui est mon problème actuel.

Ma pensée était d'avoir chaque flash LED entre deux états de luminosité (est-ce possible?) Dans une séquence reconnaissable mais toujours assez lumineux pour suivre dans l'état de luminosité plus faible.

Je ne sais pas comment implémenter cela ou vraiment où commencer à chercher. Je suis programmeur mais je n'ai jamais travaillé avec des circuits réels auparavant. Pouvez-vous m'aider à démarrer?


la source

Réponses:

11

si toutes vos LED sont contrôlées à partir de la même source, envisagez d'utiliser un microcontrôleur + un codage Manchester différentiel + vos états de LED haut / bas pour coder des chaînes de bits de séquences répétitives comme:

id #0: 1000000000000000[10000000000000001000000000000000....]
id #1: 1000000000000001[10000000000000011000000000000001....]
id #2: 1000000000000010
id #3: 1000000000000011
id #4: 1000000000000100

pour coder les numéros d'identification sous la forme d'une séquence de bits de 16 bits composée d'un 1, puis de 7 zéros et d'un numéro d'identification de 8 bits. Ensuite, lors du décodage, recherchez un 1 suivi de 7 zéros, puis prenez les bits suivants. Cela fonctionne pour tous les ID 8 bits (même # 128 = 10000000 qui code comme 1000000010000000 qui ne peut pas nécessairement être synchronisé correctement mais pour ce nombre, cela n'a pas d'importance).

(Si vous avez moins de LED potentielles, utilisez moins de bits; ce schéma est assez simple et se généralise à 1 + (N-1) zéros + un nombre à N bits)

L'encodage Manchester est auto-synchronisé, vous devriez donc pouvoir synchroniser un récepteur avec lui (même si c'est un autre microcontrôleur qui n'est pas sûr de la fréquence, échantillonnez plusieurs fois par bit pour que vous puissiez rester verrouillé).

Jason S
la source
4

Si vous pouviez allumer et éteindre chaque LED à une fréquence différente, cela simplifierait probablement beaucoup les choses, car vous pourriez utiliser des circuits basés sur 555 pour faire clignoter chacun à la fréquence requise.

Amos
la source
2
simplifie l'émetteur, mais complique le récepteur
Jason S
S'il suit des tas de points, il n'utilisera probablement pas un Arduino ou tout autre microcontrôleur.
Amos
..pour le récepteur qui est, en plus ce n'est pas la programmation qui est le problème, ce sont les circuits, donc plus le circuit est simple, mieux c'est.
Amos
4

Tout le monde semble commencer avec Arduinos ces jours-ci, donc quelque chose comme ça est probablement ce que vous recherchez. Cependant, il semble que vous ayez l'intention d'utiliser beaucoupde LED dans ce projet qui serait difficile avec un arduino. Tout cela vient du haut de ma tête * ici, mais il peut être possible d'utiliser un transistor et une grande résistance en parallèle de sorte que lorsque le transistor est bloqué, le courant passe à travers la grande résistance et vous obtenez une lumière tamisée. Lorsque vous l'allumez cependant, le courant traverse le transistor en raison de la résistance inférieure et vous obtenez un état plus lumineux. En supposant que cela fonctionne, vous pouvez utiliser des composants numériques comme des microcontrôleurs pour contrôler les transistors et obtenir le clignotement dont vous avez besoin. Ci-joint un schéma de ce que je veux dire (les valeurs sont arbitraires, vous devrez probablement les changer pour votre circuit):

Schéma du circuit du transistor

Quelle que soit la façon dont vous le faites, cela va être assez difficile étant donné que vous n'avez pas fait beaucoup d'électronique. Bonne chance!

*c'est tard; cela pourrait être complètement faux et ne pas fonctionner du tout. ymmv.

Jeremy
la source
1
Fondamentalement OK, mais vous avez besoin d'une autre résistance en série avec LED et transistor pour régler le courant à l'état lumineux, sinon votre LED mourra.
starblue
Oui c'est vrai. Je pensais que c'était implicite mais j'aurais dû le mentionner quand même.
jeremy
3

Je ferais une variation de l'idée de penjuin. J'utiliserais un état activé et désactivé pour générer les deux niveaux. Plutôt que d'essayer de suivre la LED à l'état éteint (ou à l'état bas), faites que l'état éteint soit court et suivez simplement l'état allumé.

Vous n'avez pas non plus mentionné combien de LED vous devez suivre et à quelle vitesse elles se déplacent.

jluciani
la source
1

Oui, "faible" et "brillant" à deux états est facile. Étant donné tout circuit qui clignote une LED durement avec un transistor, vous ajoutez une résistance à travers ce transistor. Ensuite, lorsque le transistor est complètement bloqué, la résistance permet une faible lueur. Je commencerais par une résistance exactement de la même valeur que la résistance de limitation de courant déjà connectée à la LED. (Chaque LED a besoin d'une résistance de limitation de courant).

Pour quelques marqueurs, une batterie indépendante et une minuterie 555 à chacun seront le matériel de marqueur le plus simple. (plus quelques résistances et condensateurs).

Le système global est plus simple si vous pouvez synchroniser les LED: allumez tous les marqueurs au début du cycle, puis éteignez un marqueur à la fois jusqu'à ce qu'ils soient tous éteints, puis rallumez-les tous et recommencez le cycle. La quantité d'énergie nécessaire pour garder un groupe de LED clignotant pendant quelques heures pèse généralement beaucoup moins sous la forme d'une ou deux batteries centrales plutôt que d'une batterie par LED. (Cela nécessite un comparateur IC à chaque LED, ou quelques registres à décalage ou un Arduino émulant ces registres à décalage à un emplacement central). (Cela nécessite beaucoup de fils de chaîne d'un marqueur au suivant, ou de chaque marqueur à un point central - ce qui peut ne pas être possible pour votre application.)

Cela rend votre logiciel de reconnaissance visuelle beaucoup plus simple si le PC peut contrôler directement les LED. Ensuite, lorsque le PC recherche LED_5, il peut éteindre et allumer LED_5 et être sûr que la seule LED qui a clignoté doit être LED_5. Peut-être en utilisant quelque chose comme un convertisseur de port parallèle USB vers 8 bits , qui (avec 8 résistances, une par LED) peut contrôler directement 8 LED ou (avec 4 résistances, une par colonne) une matrice 4x4 de 16 LED. (Cela nécessite encore un autre fil, un câble USB du PC au convertisseur, mais cela ne nécessite pas de piles ou de transistors ou de puces supplémentaires - cela peut être le plus simple pour un programmeur non-électronique de se mettre au travail).

davidcary
la source
1

Je pense que vous risquez de rencontrer des problèmes du côté de la vision si la fréquence d'images de la caméra n'est pas suffisamment élevée par rapport à la vitesse de mouvement des LED.

les LED vont devoir passer de haut en bas à un multiple raisonnable de la fréquence d'images de la caméra, au moins 2 images par changement d'état pour s'assurer que certaines images ont la lumière d'un seul état au lieu d'être mélangées de deux états, ce qui signifie que vous avez besoin de deux images pour chaque bit de données flashées par les LED pour identifier de quel marqueur il s'agit. de toute évidence, un code plus court sera préférable pour cela.

Si les marqueurs se déplacent sur une distance supérieure à celle qui est dans le même ordre que leur distance les uns des autres dans le cadre, alors le système de vision peut perdre confiance en identifiant correctement quels flashs appartiennent à quel marqueur.

SingleNegationElimination
la source
0

schématique

simuler ce circuit - Schéma créé à l'aide de CircuitLab

Schémas des DEL des figures 1, 2 et 3.

  • Les LED doubles offrent un contrôle très simple. R2 définit la luminosité de la LED toujours allumée. R1 règle la luminosité de la LED pulsée.
  • LED unique, double luminosité est un autre schéma simple. D3 s'allume toujours lorsque le courant passe par R4. Lorsque BUF2 bascule, il connecte R3 à GND et le courant passant par D3 augmente, ce qui fait briller la LED.
  • Le contrôle de la luminosité PWM est le plus simple du point de vue matériel, mais le logiciel doit contrôler la luminosité des LED.

entrez la description de l'image ici

Figure 2. Encodage PWM.

En utilisant la modulation de largeur d'impulsion (PWM), vous pouvez faire varier la luminosité apparente en faisant varier le rapport marche / arrêt. La figure 2 montre une séquence haute puissance, faible puissance et haute puissance.

Pour votre application, vous devrez régler la fréquence PWM suffisamment haut pour que le capteur de la caméra ne voit aucun scintillement. La modulation des données ou le taux de commutation entre une luminosité élevée et faible devrait être au plus la moitié de la fréquence d'images et plus probablement environ un dixième de la fréquence d'images pour pouvoir les discerner correctement.

Vous devrez peut-être également régler l'angle du faisceau des LED. Il semble que vos caméras ne soient pas toujours sur l'axe.

Transistor
la source