Come identificare i marcatori a LED modulandone la luminosità?


11

Per un mio progetto ho bisogno di utilizzare marcatori a LED a infrarossi per identificare le posizioni dei punti nello spazio con algoritmi di stereovisione e più telecamere IR. Ho anche bisogno che ogni indicatore LED abbia un ID riconoscibile univoco, che è il mio problema attuale.

Il mio pensiero era di far lampeggiare ogni LED tra due stati di luminosità (è possibile?) In una sequenza riconoscibile, ma essere comunque abbastanza luminoso da tracciare nello stato di luminosità inferiore.

Non so come implementare questo o davvero da dove iniziare a cercare. Sono un programmatore ma non ho mai lavorato con circuiti reali prima d'ora. Potete aiutarmi a iniziare?

led 

Risposte:


11

se tutti i tuoi LED sono controllati dalla stessa sorgente, prendi in considerazione l'uso di un microcontrollore + codifica Manchester differenziale + i tuoi stati LED alto / basso per codificare sequenze di bit di sequenze ripetute come:

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

per codificare i numeri ID come una bitsequence a 16 bit composta da 1, quindi 7 zeri e un numero ID a 8 bit. Quindi, durante la decodifica, cerca un 1 seguito da 7 zeri, quindi prendi i bit successivi successivi. Funziona con tutti gli ID # 8-bit (anche # 128 = 10000000 che codifica come 1000000010000000 che non può necessariamente essere sincronizzato correttamente ma per quel numero non importa).

(Se hai meno potenziali LED, usa meno bit; questo schema è piuttosto semplice e si generalizza a uno zero + (N-1) + un numero N-bit)

La codifica Manchester è auto-clock, quindi dovresti essere in grado di sincronizzare un ricevitore con esso (anche se è un altro microcontrollore non sicuro della frequenza, campiona più volte per bit in modo da poter rimanere bloccato).


4

Se potessi accendere e spegnere ogni LED a una frequenza diversa, ciò probabilmente semplificherebbe molto le cose in quanto potresti usare 555 circuiti basati per far lampeggiare ognuno alla frequenza richiesta.


2
semplifica il trasmettitore, ma complica il ricevitore
Jason S,

Se sta monitorando molti punti, probabilmente non utilizzerà un Arduino o nessun altro microcontrollore.
Amos,

..per il ricevitore che è, in più non è la programmazione il problema è i circuiti, quindi più semplice è il circuito, meglio è.
Amos,

4

Tutti sembrano essere partendo con Arduino questi giorni, quindi qualcosa di simile a questo è probabilmente quello che stai cercando. Tuttavia sembra che tu abbia intenzione di usare moltodi LED in questo progetto che sarebbe difficile con un arduino. Questo è tutto fuori dalla mia testa * qui, ma potrebbe essere possibile usare un transistor e una grande resistenza in parallelo in modo che quando il transistor è spento, la corrente fluisce attraverso la grande resistenza e si ottiene una luce fioca. Tuttavia, quando lo si accende, la corrente scorre attraverso il transistor a causa della resistenza inferiore e si ottiene lo stato più luminoso. Supponendo che funzioni, è possibile utilizzare componenti digitali come i microcontrollori per controllare i transistor e ottenere il lampeggiamento richiesto. In allegato è uno schema di ciò che intendo (i valori sono arbitrari, probabilmente dovrai cambiarli per il tuo circuito):

Schema del circuito a transistor

Qualunque sia il modo in cui lo fai, sarà abbastanza difficile considerando che non hai fatto molta elettronica. In bocca al lupo!

*è tardi; questo potrebbe essere completamente sbagliato e non funzionare affatto. YMMV.


1
Fondamentalmente OK, ma è necessario un altro resistore in serie con LED e transistor per impostare la corrente per lo stato luminoso, altrimenti il ​​LED morirà.
Starblue,

si è vero. Ho pensato che fosse implicito, ma avrei dovuto menzionarlo comunque.
jeremy,

3

Vorrei fare una variazione dell'idea del penjuin. Vorrei utilizzare uno stato on e off per generare i due livelli. Invece di provare a tracciare il LED nello stato spento (o basso), accorciare lo stato spento e tracciare solo nello stato acceso.

Inoltre, non hai menzionato il numero di LED da monitorare e la velocità con cui si muovono.


1

Sì, due stati "fioco" e "luminoso" sono facili. Dato qualsiasi circuito che accende e spegne un LED con un transistor, si aggiunge un resistore attraverso quel transistor. Quindi quando il transistor è completamente spento, il resistore consente un bagliore debole. Vorrei iniziare con un resistore esattamente dello stesso valore del resistore di limitazione corrente già collegato al LED. (Ogni LED necessita di una resistenza di limitazione della corrente).

Per alcuni marker, una batteria indipendente e un timer 555 su ciascuno sarà l'hardware più semplice per i marker. (più alcuni resistori e condensatori).

Il sistema complessivo sarà più semplice se è possibile sincronizzare i LED: accendere tutti i marker all'inizio del ciclo, quindi disattivare un marker alla volta fino a quando non sono tutti spenti, quindi riaccenderli tutti e ricominciare il ciclo. La quantità di energia necessaria per far lampeggiare un gruppo di LED per un paio d'ore in genere pesa molto meno sotto forma di una o due batterie centrali anziché di una batteria per LED. (Ciò richiede un comparatore IC su ciascun LED, oppure alcuni registri a scorrimento o un Arduino che emula quei registri a scorrimento in una posizione centrale). (Ciò richiede un sacco di fili che vanno da un marker all'altro o da ciascun marker a un punto centrale, quindi potrebbe non essere possibile per la tua applicazione.)

Rende il tuo software di riconoscimento visivo molto più semplice se il PC è in grado di controllare direttamente i LED. Quindi, quando il PC è alla ricerca di LED_5, può spegnere e riaccendere LED_5 ed essere sicuro che l'unico LED che lampeggia deve essere LED_5. Forse usando qualcosa come un convertitore da porta parallela USB a 8 bit , che (con 8 resistori, uno per LED) può controllare direttamente 8 LED o (con 4 resistori, uno per colonna) una matrice 4x4 di 16 LED. (Questo richiede ancora un altro filo, un cavo USB dal PC al convertitore, ma non richiede alcun batterie o transistor o circuiti integrati supplementari - questo può essere il più semplice per un programmatore non-elettronica ragazzo per ottenere di lavoro).


1

Penso che potresti incorrere in problemi sul lato visivo delle cose se la frequenza dei fotogrammi della fotocamera non è abbastanza alta rispetto alla velocità di movimento dei LED.

i LED dovranno passare da alto a basso con un ragionevole multiplo della frequenza dei fotogrammi della telecamera, almeno 2 fotogrammi per cambio di stato per assicurarsi che alcuni dei fotogrammi abbiano luce da un solo stato anziché miscelati da due stati, il che significa che sono necessari due frame per ogni bit di dati trasmessi dai LED per identificare quale marker è. ovviamente un codice più breve sarà il migliore per questo.

Se i marker si stanno muovendo a una distanza superiore a quella nello stesso ordine della distanza tra loro nel riquadro, il sistema di visione potrebbe perdere la sicurezza nell'identificare correttamente quali flash appartengono a quale marker.


0

schematico

simula questo circuito - Schema creato usando CircuitLab

Schemi LED delle figure 1, 2 e 3.

  • I doppi LED offrono un controllo molto semplice. R2 imposta la luminosità del LED sempre acceso. R1 imposta la luminosità del LED pulsato.
  • Singolo LED, doppia luminosità è un altro schema semplice. D3 si illumina sempre con la corrente passata attraverso R4. Quando BUF2 passa in basso, collega R3 a GND e la corrente attraverso D3 aumenta, facendo accendere il LED più luminoso.
  • Il controllo della luminosità PWM è il più semplice dal punto di vista hardware, ma il software deve controllare la luminosità del LED.

inserisci qui la descrizione dell'immagine

Figura 2. Codifica PWM.

Usando la modulazione di larghezza di impulso (PWM) è possibile variare la luminosità apparente variando il rapporto on-off. La Figura 2 mostra una sequenza ad alta potenza, bassa potenza e alta potenza.

Per la tua applicazione dovrai impostare una frequenza PWM abbastanza alta da non far lampeggiare il sensore della videocamera. La modulazione dei dati o la velocità di commutazione tra alta e bassa luminosità dovrebbero essere al massimo la metà della frequenza dei fotogrammi e più probabilmente circa un decimo della frequenza dei fotogrammi per essere in grado di discernerli correttamente.

Potrebbe anche essere necessario indirizzare l'angolo del raggio dai LED. Sembra che le telecamere non siano sempre sull'asse.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.