Wie identifiziere ich LED-Marker durch Modulation ihrer Helligkeit?


11

Für ein Projekt von mir muss ich Infrarot-LED-Marker verwenden, um Positionen von Punkten im Raum mit Stereovisionsalgorithmen und mehreren IR-Kameras zu identifizieren. Ich brauche auch jede LED-Markierung, um eine eindeutige erkennbare ID zu haben, was mein aktuelles Problem ist.

Mein Gedanke war, dass jede LED zwischen zwei Helligkeitszuständen (ist dies möglich?) In einer erkennbaren Reihenfolge blinkt, aber dennoch hell genug ist, um im Zustand niedrigerer Helligkeit zu verfolgen.

Ich weiß nicht, wie ich das umsetzen soll oder wo ich anfangen soll zu suchen. Ich bin Programmierer, habe aber noch nie mit tatsächlichen Schaltkreisen gearbeitet. Können Sie mir beim Einstieg helfen?

led 

Antworten:


11

Wenn alle Ihre LEDs von derselben Quelle gesteuert werden, sollten Sie einen Mikrocontroller + differentielle Manchester-Codierung + Ihre High / Low-LED-Zustände verwenden, um Bitstrings mit sich wiederholenden Sequenzen zu codieren, wie:

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

ID-Nummern als 16-Bit-Bitfolge zu codieren, die aus einer 1, dann 7 Nullen und einer 8-Bit-ID # besteht. Suchen Sie dann beim Decodieren nach einer 1, gefolgt von 7 Nullen, und nehmen Sie dann die nachfolgenden nachfolgenden Bits. Dies funktioniert für alle 8-Bit-IDs (sogar # 128 = 10000000, die als 1000000010000000 codiert sind und nicht unbedingt ordnungsgemäß synchronisiert werden können, aber für diese Nummer spielt es keine Rolle).

(Wenn Sie weniger potenzielle LEDs haben, verwenden Sie weniger Bits. Dieses Schema ist ziemlich einfach und verallgemeinert sich auf 1 + (N-1) Nullen + eine N-Bit-Zahl.)

Die Manchester-Codierung ist selbsttaktend, daher sollten Sie in der Lage sein, einen Empfänger mit diesem zu synchronisieren (auch wenn es sich um einen anderen Mikrocontroller handelt, dessen Frequenz nicht sicher ist, probieren Sie mehrmals pro Bit, damit Sie gesperrt bleiben können).


4

Wenn Sie jede LED mit einer anderen Frequenz ein- und ausschalten könnten, würde dies wahrscheinlich die Dinge erheblich vereinfachen, da Sie 555-basierte Schaltkreise verwenden könnten, um jede mit der erforderlichen Frequenz zu blinken.


2
vereinfacht den Sender, erschwert aber den Empfänger
Jason S

Wenn er viele Punkte verfolgt, wird er wahrscheinlich keinen Arduino oder einen anderen Mikrocontroller verwenden.
Amos

..für den Empfänger, und es ist nicht die Programmierung, die das Problem darstellt, sondern die Schaltungen. Je einfacher die Schaltung, desto besser.
Amos

4

Jeder scheint mit Arduinos in diesen Tagen beginnen ab, so etwas wie das ist wahrscheinlich das, was Sie suchen. Es scheint jedoch, als ob Sie beabsichtigen, viel zu verwendenvon LEDs in diesem Projekt, die mit einem Arduino schwierig wäre. Dies ist alles auf meinem Kopf *, aber es kann möglich sein, einen Transistor und einen großen Widerstand parallel zu verwenden, so dass bei ausgeschaltetem Transistor der Strom durch den großen Widerstand fließt und Sie ein schwaches Licht erhalten. Wenn Sie es jedoch einschalten, fließt aufgrund des niedrigeren Widerstands Strom durch den Transistor und Sie erhalten den helleren Zustand. Angenommen, dies funktioniert, könnten Sie digitale Komponenten wie Mikrocontroller verwenden, um die Transistoren zu steuern und das gewünschte Blinken zu erzielen. Im Anhang finden Sie eine schematische Darstellung meiner Bedeutung (die Werte sind willkürlich, Sie müssen sie wahrscheinlich für Ihre Schaltung ändern):

Schema der Transistorschaltung

Wie auch immer Sie es tun, es wird ziemlich schwierig, wenn man bedenkt, dass Sie nicht viel Elektronik gemacht haben. Viel Glück!

*es ist spät; Dies könnte völlig falsch sein und überhaupt nicht funktionieren. ymmv.


1
Grundsätzlich in Ordnung, aber Sie benötigen einen anderen Widerstand in Reihe mit LED und Transistor, um den Strom für den hellen Zustand einzustellen, da sonst Ihre LED erlischt.
Starblue

Ja, das stimmt. Ich dachte, es wäre impliziert, aber ich hätte es trotzdem erwähnen sollen.
Jeremy

3

Ich würde eine Variation von Penjuins Idee machen. Ich würde einen Ein- und Ausschaltzustand verwenden, um die beiden Ebenen zu generieren. Anstatt zu versuchen, die LED im ausgeschalteten (oder niedrigen) Zustand zu verfolgen, sollten Sie den ausgeschalteten Zustand kurz machen und nur im eingeschalteten Zustand verfolgen.

Sie haben auch nicht erwähnt, wie viele LEDs Sie verfolgen müssen und wie schnell sie sich bewegen.


1

Ja, "Dim" und "Bright" in zwei Zuständen sind einfach. Bei jeder Schaltung, bei der eine LED mit einem Transistor hart ein- und ausgeschaltet wird, fügen Sie diesem Transistor einen Widerstand hinzu. Wenn der Transistor dann vollständig ausgeschaltet ist, lässt der Widerstand ein schwaches Leuchten zu. Ich würde mit einem Widerstand beginnen, der genau den gleichen Wert hat wie der Strombegrenzungswiderstand, der bereits an die LED angeschlossen ist. (Jede LED benötigt einen Strombegrenzungswiderstand).

Für einige Marker ist eine unabhängige Batterie und jeweils ein 555-Timer die einfachste Marker-Hardware. (plus ein paar Widerstände und Kondensatoren).

Das Gesamtsystem ist einfacher, wenn Sie die LEDs synchronisieren können: Schalten Sie alle Markierungen zu Beginn des Zyklus ein und dann jeweils eine Markierung aus, bis sie alle ausgeschaltet sind. Schalten Sie sie dann alle wieder ein und starten Sie den Zyklus von vorne. Die Energiemenge, die benötigt wird, um ein paar LEDs einige Stunden lang blinken zu lassen, wiegt in der Regel viel weniger in Form von ein oder zwei Zentralbatterien als einer Batterie pro LED. (Dies erfordert einen Komparator-IC an jeder LED oder einige Schieberegister oder ein Arduino, das diese Schieberegister an einem zentralen Ort emuliert.) (Dies erfordert viele Drähte, die von einem Marker zum nächsten oder von jedem Marker zu einem zentralen Punkt geführt werden - dies ist für Ihre Anwendung möglicherweise nicht möglich.)

Dies macht Ihre Vision-Erkennungssoftware viel einfacher, wenn der PC die LEDs direkt steuern kann. Wenn der PC dann nach LED_5 sucht, kann er LED_5 aus- und wieder einschalten und sicher sein, dass die eine blinkende LED LED_5 sein muss. Vielleicht verwenden Sie so etwas wie einen USB-zu-8-Bit-Parallelport-Wandler , der (mit 8 Widerständen, einen pro LED) 8 LEDs oder (mit 4 Widerständen, einen pro Spalte) eine 4x4-Matrix mit 16 LEDs direkt steuern kann. (Dies erfordert noch ein weiteres Kabel, ein USB-Kabel vom PC zum Konverter, erfordert jedoch keine Batterien, Transistoren oder zusätzlichen Chips - dies ist möglicherweise der einfachste Weg für einen Programmierer, der keine Elektronik ist.)


1

Ich denke, Sie könnten Probleme mit der Sicht haben, wenn die Bildrate der Kamera im Verhältnis zur Bewegungsrate der LEDs nicht hoch genug ist.

Die LEDs müssen mit einem vernünftigen Vielfachen der Bildrate der Kamera von hoch nach niedrig wechseln, mindestens 2 Bilder pro Zustandsänderung, um sicherzustellen, dass einige der Bilder nur Licht aus einem Zustand haben, anstatt aus zwei Zuständen gemischt zu werden. Dies bedeutet, dass Sie zwei Frames für jedes Datenbit benötigen, das von den LEDs ausgeblendet wird, um zu identifizieren, um welche Markierung es sich handelt. Offensichtlich ist ein kürzerer Code dafür am besten geeignet.

Wenn sich die Markierungen über eine Entfernung bewegen, die in der gleichen Größenordnung wie ihre Entfernung voneinander im Rahmen liegt, verliert das Sichtsystem möglicherweise das Vertrauen, korrekt zu identifizieren, welche Blitze zu welcher Markierung gehören.


0

schematisch

simulieren Sie diese Schaltung - Schema erstellt mit CircuitLab

Abbildung 1, 2 und 3 LED-Schemata.

  • Zwei LEDs ermöglichen eine sehr einfache Steuerung. R2 stellt die Helligkeit der ständig eingeschalteten LED ein. R1 stellt die Helligkeit der gepulsten LED ein.
  • Einzelne LED, doppelte Helligkeit ist ein weiteres einfaches Schema. D3 leuchtet immer mit Strom, der durch R4 fließt. Wenn BUF2 auf niedrig schaltet, verbindet es R3 mit GND und der Strom durch D3 steigt an, wodurch die LED heller leuchtet.
  • Die PWM-Helligkeitssteuerung ist aus Hardware-Sicht am einfachsten, aber die Software muss die LED-Helligkeit steuern.

Geben Sie hier die Bildbeschreibung ein

Abbildung 2. PWM-Codierung.

Mit der Pulsweitenmodulation (PWM) können Sie die scheinbare Helligkeit durch Variieren des Ein-Aus-Verhältnisses variieren. Abbildung 2 zeigt eine Sequenz mit hoher Leistung, niedriger Leistung und hoher Leistung.

Für Ihre Anwendung müssten Sie die PWM-Frequenz so hoch einstellen, dass der Kamerasensor kein Flackern sieht. Die Datenmodulation oder Umschaltrate zwischen hoher und niedriger Helligkeit müsste höchstens die Hälfte der Bildrate und wahrscheinlicher etwa ein Zehntel der Bildrate betragen, um sie richtig erkennen zu können.

Möglicherweise müssen Sie auch den Abstrahlwinkel der LEDs berücksichtigen. Es hört sich so an, als ob Ihre Kameras nicht immer auf der Achse sind.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.