¿Cómo identificar los marcadores LED modulando su brillo?

10

Para un proyecto mío, necesito usar marcadores infrarrojos LED para identificar ubicaciones de puntos en el espacio con algoritmos de estereovisión y múltiples cámaras IR. También necesito que cada marcador LED tenga una ID reconocible única, que es mi problema actual.

Mi idea era que cada LED destella entre dos estados de brillo (¿es posible?) en una secuencia reconocible, pero aún así será lo suficientemente brillante como para rastrear en el estado de brillo más bajo.

No sé cómo implementar esto o realmente dónde empezar a buscar. Soy programador pero nunca he trabajado con circuitos reales. ¿Puedes ayudarme a empezar?

    
pregunta vaxquis

7 respuestas

11

si todos sus LED están siendo controlados desde la misma fuente, considere usar un microcontrolador + codificación Manchester diferencial + sus estados de LED alto / bajo para codificar cadenas de bits de secuencias repetitivas como:

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

para codificar números de ID como una secuencia de bits de 16 bits que consiste en un 1, luego 7 ceros y un ID # de 8 bits. Luego, cuando decodifique, busque un 1 seguido de 7 ceros, luego tome los siguientes bits subsiguientes. Esto funciona para todos los ID # s de 8 bits (incluso # 128 = 10000000 que se codifica como 1000000010000000 que no necesariamente se pueden sincronizar correctamente, pero para ese número no importa).

(Si tiene menos LED potenciales, use menos bits; este esquema es bastante simple y se generaliza a 1 + (N-1) ceros + un número de N bits)

La codificación de Manchester es de temporización automática, por lo que debería poder sincronizar un receptor con él (incluso si se trata de otro microcontrolador que no está seguro de la frecuencia, muestre varias veces por bit para que pueda permanecer bloqueado).

    
respondido por el Jason S
4

Si pudiera encender y apagar cada LED a una frecuencia diferente, esto probablemente simplificaría mucho las cosas, ya que podría usar circuitos basados en 555 para encender cada uno a la frecuencia requerida.

    
respondido por el Amos
4

Todo el mundo parece estar empezando con Arduinos en estos días, así que algo como esto es probablemente lo que estás buscando. Sin embargo, parece que está intentando utilizar un lote de LED en este proyecto, lo que sería difícil con un arduino. Todo esto está fuera de mi cabeza * aquí, pero puede ser posible usar un transistor y una resistencia grande en paralelo para que cuando el transistor esté apagado, la corriente fluya a través de la resistencia grande y tengas una luz tenue. Sin embargo, cuando lo enciendes, la corriente fluye a través del transistor debido a la menor resistencia y obtienes un estado más brillante. Suponiendo que esto funcione, podría usar componentes digitales como microcontroladores para controlar los transistores y lograr el parpadeo que necesita. Se adjunta un esquema de lo que quiero decir (los valores son arbitrarios, probablemente tendrá que cambiarlos para su circuito):

Esquema del circuito de transistores http://img15.imageshack.us/img15/1224/schw.png

De cualquier manera que lo hagas, va a ser bastante difícil considerando que no has hecho muchos aparatos electrónicos. Buena suerte!

* es tarde; Esto podría estar completamente equivocado y no funcionar en absoluto. ymmv.

    
respondido por el penjuin
3

Haría una variación de la idea de Penjuin. Yo usaría un estado de encendido y apagado para generar los dos niveles En lugar de intentar rastrear el LED en estado apagado (o estado bajo) hacer que el estado apagado sea corto y solo rastrear en el estado activado.

También no mencionó cuántos LEDs necesita rastrear y con qué rapidez se están moviendo.

    
respondido por el jluciani
1

Sí, es fácil "tenue" y "brillante" en dos estados. Dado el circuito cualquiera que enciende y apaga un LED con un transistor, usted agrega una resistencia a través de ese transistor. Luego, cuando el transistor está completamente apagado, la resistencia permite un brillo tenue. Comenzaría con una resistencia de exactamente el mismo valor que la resistencia de limitación de corriente ya conectada al LED. (Cada LED necesita una resistencia limitadora de corriente).

Para unos pocos marcadores, una batería independiente y un 555 timer en cada uno de ellos será el hardware de marcadores más simple. (más algunas resistencias y condensadores).

El sistema en general es más sencillo si puede sincronizar los LED: encienda todos los marcadores al inicio del ciclo, luego apague un marcador a la vez hasta que estén todos apagados, luego vuelva a encenderlos y comience el ciclo nuevamente . La cantidad de energía necesaria para mantener un par de LED parpadeando durante un par de horas generalmente pesa mucho menos en forma de una o dos baterías centrales en lugar de una batería por LED. (Esto requiere un IC comparador en cada LED, o unos pocos registros de desplazamiento o un Arduino que emule esos registros de desplazamiento en alguna ubicación central). (Esto requiere una gran cantidad de cables que se encadenan de un marcador a otro, o de cada marcador a algún punto central, por lo que tal vez no sea posible para su aplicación).

Hace que su software de reconocimiento de visión sea mucho más sencillo si la PC puede controlar los LED directamente. Luego, cuando la PC está buscando LED_5, puede apagar y encender el LED_5 y estar seguro de que el LED que parpadeó debe ser LED_5. Tal vez esté usando algo como un convertidor de puerto paralelo de USB a 8 bits , que (con 8 resistencias, una por LED) puede controlar directamente 8 LED o (con 4 resistencias, una por columna) una matriz de 4x4 de 16 LED. (Esto requiere un cable adicional, un cable USB desde la PC al convertidor, pero no requiere ninguna baterías ni transistores ni chips adicionales. Esto puede ser el más simple para un programador no electrónico. chico para ponerse a trabajar).

    
respondido por el davidcary
1

Creo que puedes tener problemas en el lado de la visión si la velocidad de cuadros de la cámara no es lo suficientemente alta en relación con la velocidad de movimiento de los LED.

los LEDs tendrán que pasar de alto a bajo a un múltiplo razonable de la velocidad de cuadro de la cámara, al menos 2 cuadros por estado cambian para asegurarse de que algunos cuadros tengan luz de solo un estado en lugar de mezclados dos estados, lo que significa que necesita dos cuadros para cada bit de datos emitidos por los LED para identificar qué marcador es. obviamente, un código más corto será mejor para eso.

Si los marcadores se mueven una distancia por encima de la que está en el mismo orden que la distancia entre ellos en el marco, entonces el sistema de visión puede perder la confianza para identificar correctamente qué destellos pertenecen a qué marcador.

    
respondido por el SingleNegationElimination
0

simular este circuito : esquema creado usando CircuitLab

Figura 1, 2 y 3 esquemas LED.

  • Los LED dobles proporcionan un control muy simple. R2 establece el brillo del LED siempre encendido. R1 establece el brillo del LED pulsado.
  • Un solo LED, brillo doble es otro esquema simple. D3 siempre se enciende con la corriente pasada a través de R4. Cuando BUF2 cambia a bajo, conecta R3 a GND y la corriente a través de D3 aumenta, lo que hace que el LED brille más.
  • El control de brillo PWM es el más simple desde el punto de vista del hardware, pero el software necesita controlar el brillo del LED.

Figura 2. Codificación PWM.

Usando la modulación de ancho de pulso (PWM), puede variar el brillo aparente variando la relación de encendido / apagado. La Figura 2 muestra una secuencia de alta potencia, baja potencia y alta potencia.

Para su aplicación, deberá configurar la frecuencia PWM lo suficientemente alta como para que el sensor de la cámara no vea ningún parpadeo. La modulación de datos o la velocidad de conmutación entre el brillo alto y el bajo tendrían que ser, como máximo, la mitad de la velocidad de fotogramas y más probablemente una décima parte de la velocidad de fotogramas para poder discernirlos correctamente.

Es posible que también deba abordar el ángulo del haz desde los LED. Parece que sus cámaras no estarán en el eje todo el tiempo.

    
respondido por el Transistor

Lea otras preguntas en las etiquetas