Jak rozpoznać markery LED poprzez modulowanie ich jasności?

11

W moim projekcie muszę używać markerów LED na podczerwień do identyfikowania lokalizacji punktów w przestrzeni za pomocą algorytmów stereowizji i wielu kamer na podczerwień. Potrzebuję również każdego znacznika LED, aby miał unikalny rozpoznawalny identyfikator, co jest moim obecnym problemem.

Myślałem, że każda dioda LED będzie migać między dwoma stanami jasności (czy to możliwe?) W rozpoznawalnej sekwencji, ale nadal być wystarczająco jasna, aby śledzić w niższym stanie jasności.

Nie wiem, jak to zaimplementować, ani naprawdę od czego zacząć. Jestem programistą, ale nigdy wcześniej nie pracowałem z rzeczywistymi obwodami. Czy możesz mi pomóc zacząć?


źródło

Odpowiedzi:

11

jeśli wszystkie diody LED są kontrolowane z tego samego źródła, rozważ użycie mikrokontrolera + różnicowego kodowania Manchester + stany wysokiej / niskiej diody LED do kodowania ciągów bitowych powtarzających się sekwencji, takich jak:

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

aby zakodować numery ID jako 16-bitową sekwencję bitów składającą się z 1, a następnie 7 zer i 8-bitowego ID #. Następnie podczas dekodowania poszukaj 1, a następnie 7 zer, a następnie weź kolejne kolejne bity. Działa to dla wszystkich 8-bitowych identyfikatorów # (nawet # 128 = 10000000, który koduje jako 1000000010000000, które niekoniecznie muszą być poprawnie zsynchronizowane, ale dla tej liczby nie ma to znaczenia).

(Jeśli masz mniej potencjalnych diod LED, użyj mniejszej liczby bitów; ten schemat jest dość prosty i uogólnia się na zera 1 + (N-1) + liczbę N-bitową)

Kodowanie Manchester sam się taktuje, więc powinieneś być w stanie zsynchronizować z nim odbiornik (nawet jeśli jest to inny mikrokontroler niepewny częstotliwości, próbkuj kilka razy na bit, abyś mógł pozostać zablokowany).

Jason S.
źródło
4

Jeśli mógłbyś migać każdą diodą LED przy różnych częstotliwościach, prawdopodobnie uprościłoby to wszystko, ponieważ możesz użyć obwodów opartych na 555 do flashowania każdej z wymaganych częstotliwości.

Amos
źródło
2
upraszcza nadajnik, ale komplikuje odbiornik
Jason S
Jeśli śledzi mnóstwo punktów, prawdopodobnie nie będzie używał Arduino ani żadnego innego mikrokontrolera.
Amos
.. dla odbiornika, plus, to nie programowanie jest problemem, to obwody, więc im prostszy obwód, tym lepiej.
Amos
4

Każdy wydaje się być ruszania z Arduinos te dni, więc coś w tym jest chyba to, czego szukasz. Wydaje się jednak, że zamierzasz dużo używaćdiod LED w tym projekcie, co byłoby trudne z arduino. To wszystko znajduje się poza górą mojej głowy *, ale może być możliwe równoległe użycie tranzystora i dużego rezystora, tak że gdy tranzystor jest wyłączony, prąd przepływa przez duży rezystor i dostajesz słabe światło. Gdy go włączysz, prąd przepływa przez tranzystor z powodu niższego oporu i uzyskujesz jaśniejszy stan. Zakładając, że to działa, możesz użyć komponentów cyfrowych, takich jak mikrokontrolery, do sterowania tranzystorami i uzyskania wymaganego flashowania. Załączony jest schemat tego, co mam na myśli (wartości są dowolne, prawdopodobnie będziesz musiał je zmienić w swoim obwodzie):

Schemat obwodu tranzystorowego

Niezależnie od tego, jak to zrobisz, będzie to dość trudne, biorąc pod uwagę, że nie zrobiłeś dużo elektroniki. Powodzenia!

*jest późno; może to być całkowicie błędne i w ogóle nie działać. ymmv.

Jeremy
źródło
1
Zasadniczo OK, ale potrzebujesz innego rezystora połączonego szeregowo z diodą LED i tranzystorem, aby ustawić prąd dla jasnego stanu, w przeciwnym razie dioda LED zginie.
starblue
tak to prawda. Uznałem, że to sugerowane, ale i tak powinienem o tym wspomnieć.
jeremy
3

Zrobiłbym odmianę pomysłu penjuina. Użyłbym stanu włączenia i wyłączenia do wygenerowania dwóch poziomów. Zamiast próbować śledzić diodę LED w stanie wyłączonym (lub niskim), ustaw stan wyłączony na krótki i po prostu śledź w stanie włączonym.

Nie wspomniałeś również, ile diod LED musisz śledzić i jak szybko się poruszają.

jluciani
źródło
1

Tak, dwustanowe „przyciemnienie” i „jasne” jest łatwe. Biorąc pod uwagę każdy obwód, który mocno miga diodą LED z tranzystorem, dodajesz jeden opornik na tranzystorze. Następnie, gdy tranzystor jest całkowicie wyłączony, rezystor umożliwia słabe świecenie. Zacząłbym od rezystora o dokładnie takiej samej wartości, jak rezystor ograniczający prąd, już podłączony do diody LED. (Każda dioda LED potrzebuje opornika ograniczającego prąd).

Dla kilku markerów niezależna bateria i zegar 555 na każdym będą najprostszym sprzętem markera. (plus kilka rezystorów i kondensatorów).

Ogólny system jest prostszy, jeśli można zsynchronizować diody LED: włącz wszystkie markery na początku cyklu, następnie wyłączaj jeden marker na raz, aż wszystkie się wyłączy, a następnie włącz je ponownie i rozpocznij cykl od nowa. Ilość energii potrzebnej do podtrzymania migania kilku diod LED przez kilka godzin zwykle waży znacznie mniej w postaci jednej lub dwóch baterii centralnych zamiast jednej baterii na diodę LED. (Wymaga to komparatora IC na każdej diodzie LED lub kilku rejestrów przesuwnych lub Arduino emulujących te rejestry przesuwne w centralnej lokalizacji). (Wymaga to dużej ilości przewodów od jednego znacznika do drugiego lub od każdego znacznika do jakiegoś centralnego punktu - więc może to nie być możliwe dla Twojej aplikacji.)

To znacznie upraszcza oprogramowanie rozpoznające widzenie, jeśli komputer może bezpośrednio sterować diodami LED. Następnie, gdy komputer szuka LED_5, może wyłączyć i włączyć LED_5 i mieć pewność, że jedna migająca dioda LED musi być LED_5. Być może przy użyciu czegoś w rodzaju konwertera USB na 8-bitowy port równoległy , który (z 8 rezystorami, jednym na diodę LED) może bezpośrednio kontrolować 8 diod LED lub (z 4 rezystorami, jeden na kolumnę) matrycę 4x4 z 16 diodami LED. (Wymaga to jeszcze jednego przewodu, kabla USB od komputera do konwertera, ale nie wymaga żadnych baterii, tranzystorów ani dodatkowych układów - może to być najprostsze dla programisty, który nie jest elektroniką, aby zaczął działać).

Davidcary
źródło
1

Myślę, że możesz wpaść w kłopoty po stronie widzenia rzeczy, jeśli szybkość klatek kamery nie jest wystarczająco wysoka w stosunku do szybkości ruchu diod LED.

diody LED będą musiały przełączać się od wysokiej do niskiej przy pewnej rozsądnej wielokrotności liczby klatek na sekundę kamery, co najmniej 2 klatki na zmianę stanu, aby upewnić się, że niektóre klatki mają światło tylko z jednego stanu zamiast mieszania z dwóch stanów, co oznacza, że ​​potrzebujesz dwóch ramek na każdy bit danych błysniętych przez diody LED, aby określić, który to marker. oczywiście najlepszy będzie do tego krótszy kod.

Jeśli znaczniki poruszają się na odległość większą niż ta, która jest w tej samej kolejności co ich odległość od siebie w ramce, wówczas system wizyjny może stracić pewność w prawidłowym określeniu, które błyski należą do którego znacznika.

SingleNegationElimination
źródło
0

schematyczny

symulacja tego obwodu - Schemat utworzony przy użyciu CircuitLab

Ryciny 1, 2 i 3 diody LED.

  • Podwójne diody LED dają bardzo prostą kontrolę. R2 ustawia jasność zawsze włączonej diody LED. R1 ustawia jasność pulsującej diody LED.
  • Pojedyncza dioda LED, podwójna jasność to kolejny prosty schemat. D3 zawsze świeci, gdy prąd przepływa przez R4. Gdy BUF2 przełącza się na niski, łączy R3 z GND, a prąd przez D3 wzrasta, powodując, że dioda LED świeci jaśniej.
  • Kontrola jasności PWM jest najprostsza z punktu widzenia sprzętowego, ale oprogramowanie musi kontrolować jasność diod LED.

wprowadź opis zdjęcia tutaj

Rysunek 2. Kodowanie PWM.

Za pomocą modulacji szerokości impulsu (PWM) można zmieniać pozorną jasność, zmieniając współczynnik włączenia / wyłączenia. Ryc. 2 pokazuje sekwencję dużej mocy, małej mocy i dużej mocy.

W swojej aplikacji należy ustawić wystarczająco wysoką częstotliwość PWM, aby czujnik kamery nie widział migotania. Modulacja danych lub szybkość przełączania między wysoką i niską jasnością musiałaby wynosić co najwyżej połowę liczby klatek na sekundę, a bardziej prawdopodobne około jednej dziesiątej częstotliwości klatek, aby móc ją właściwie rozpoznać.

Konieczne może być również odniesienie się do kąta wiązki z diod LED. Brzmi tak, jakby Twoje kamery nie były cały czas ustawione na osi.

Tranzystor
źródło