Как определить светодиодные маркеры, модулируя их яркость?

11

Для моего проекта мне нужно использовать инфракрасные светодиодные маркеры для определения местоположения точек в пространстве с помощью алгоритмов стереовидения и нескольких ИК-камер. Мне также нужно, чтобы у каждого светодиодного маркера был уникальный узнаваемый идентификатор, что является моей текущей проблемой.

Я думал, что каждый светодиод должен мигать между двумя состояниями яркости (возможно ли это?) В узнаваемой последовательности, но при этом быть достаточно ярким, чтобы отслеживать в состоянии более низкой яркости.

Я не знаю, как реализовать это или действительно, где начать искать. Я программист, но никогда раньше не работал с реальными схемами. Можете ли вы помочь мне начать?


источник

Ответы:

11

если все ваши светодиоды управляются из одного и того же источника, рассмотрите возможность использования микроконтроллера + дифференциальное манчестерское кодирование + ваши состояния высокого / низкого светодиодов для кодирования цепочек битов повторяющихся последовательностей, таких как:

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

кодировать идентификационные номера в виде 16-битной последовательности битов, состоящей из 1, затем 7 нулей и 8-битного ID #. Затем при декодировании найдите 1, за которым следуют 7 нулей, затем возьмите последующие последующие биты. Это работает для всех 8-битных ID # (даже # 128 = 10000000, который кодируется как 1000000010000000, который не обязательно может быть синхронизирован должным образом, но для этого числа это не имеет значения).

(Если у вас меньше потенциальных светодиодов, используйте меньше битов; эта схема довольно проста и обобщает до 1 + (N-1) нулей + N-битное число)

Манчестерское кодирование является самосинхронизирующимся, поэтому вы должны иметь возможность синхронизировать с ним приемник (даже если другой микроконтроллер не уверен в частоте, производите выборку несколько раз на бит, чтобы вы могли оставаться заблокированными).

Джейсон С
источник
4

Если бы вы могли мигать каждым светодиодом с разной частотой, это, вероятно, сильно упростило бы ситуацию, так как вы могли бы использовать схемы на основе 555 для вспышки каждого на необходимой частоте.

амосс
источник
2
упрощает передатчик, но усложняет приемник
Джейсон С
Если он отслеживает множество точек, он, вероятно, не будет использовать Arduino или любой другой микроконтроллер.
Амос
..для приемника, плюс проблема не в программировании, а в схемах, поэтому чем проще схема, тем лучше.
Амос
4

Все , кажется, начинать с Arduinos в эти дни, так что- то вроде этого , вероятно , что вы ищете. Однако кажется, что вы собираетесь использовать многосветодиодов в этом проекте, что было бы трудно с Arduino. Это все от моей головы * здесь, но может быть возможно использовать транзистор и большой резистор параллельно, чтобы, когда транзистор выключен, ток протекал через большой резистор, и вы получали тусклый свет. Когда вы включаете его, ток проходит через транзистор из-за более низкого сопротивления, и вы получаете более яркое состояние. Предполагая, что это работает, вы могли бы использовать цифровые компоненты, такие как микроконтроллеры, для управления транзисторами и достижения требуемой вспышки. В приложении приведена схема того, что я имею в виду (значения являются произвольными, вам, вероятно, придется изменить их для вашей схемы):

Схема транзисторной схемы

Как бы вы это ни делали, это будет довольно сложно, учитывая, что вы не сделали много электроники. Удачи!

*поздно; это может быть совершенно неправильно и вообще не работать. YMMV.

Jeremy
источник
1
В принципе, все в порядке, но вам нужен еще один резистор последовательно со светодиодом и транзистором, чтобы установить ток для яркого состояния, иначе ваш светодиод погаснет.
StarBlue
Да, это правда. Я полагал, что это подразумевалось, но я должен был упомянуть это так или иначе.
Джереми
3

Я бы сделал вариант идеи пенджуина. Я бы использовал состояние включения и выключения для создания двух уровней. Вместо того, чтобы пытаться отследить светодиод в выключенном состоянии (или в низком состоянии), сделайте короткое состояние выключения и просто отследите его во включенном состоянии.

Вы также не упомянули, сколько светодиодов нужно отслеживать и как быстро они движутся.

jluciani
источник
1

Да, два состояния: "тусклый" и "яркий" - это легко. Учитывая любую цепь, которая сильно мигает светодиодом на транзисторе, вы добавляете один резистор через этот транзистор. Затем, когда транзистор полностью выключен, резистор допускает тусклое свечение. Я бы начал с резистора точно такого же значения, как и токоограничивающий резистор, уже подключенный к светодиоду. (Каждый светодиод нуждается в токоограничивающем резисторе).

Для нескольких маркеров независимая батарея и таймер 555 на каждом будут самым простым аппаратным маркером. (плюс несколько резисторов и конденсаторов).

В целом система проще, если вы можете синхронизировать светодиоды: включите все маркеры в начале цикла, затем выключайте один маркер за раз, пока они все не выключатся, затем снова включите их и начните цикл заново. Количество энергии, необходимое для того, чтобы группа светодиодов мигала в течение пары часов, обычно весит гораздо меньше в виде одной или двух центральных батарей, а не одной батареи на светодиод. (Для этого требуется компаратор IC на каждом светодиоде или несколько сдвиговых регистров или Arduino, эмулирующий эти сдвиговые регистры в каком-то центральном месте). (Это требует большого количества проводов, идущих от одного маркера к другому или от каждого маркера до некоторой центральной точки - так что это может оказаться невозможным для вашего приложения.)

Это делает ваше программное обеспечение для распознавания зрения намного проще, если ПК может напрямую управлять светодиодами. Затем, когда ПК ищет LED_5, он может выключить и включить LED_5 и быть уверенным, что один мигавший светодиод должен быть LED_5. Возможно, использовать что-то вроде преобразователя USB в 8-битный параллельный порт , который (с 8 резисторами, по одному на светодиод) может напрямую управлять 8 светодиодами или (с 4 резисторами, по одному на столбец) матрицей 4x4 из 16 светодиодов. ( Для этого требуется еще один провод, а USB - кабель от компьютера к преобразователю, но он не требует какой - либо батареи или транзисторов или дополнительных фишек - это может быть самым простым для программиста не-электронщика , чтобы работать).

davidcary
источник
1

Я думаю, что вы можете столкнуться с проблемами со стороны зрения, если частота кадров камеры недостаточно высока относительно скорости движения светодиодов.

светодиоды будут нуждаться в циклическом переключении от высокого к низкому на некотором разумном кратном значении частоты кадров камеры, по крайней мере, 2 кадра на изменение состояния, чтобы убедиться, что некоторые из кадров имеют свет только из одного состояния, а не смешаны из двух состояний, это означает, что вам нужно два кадра для каждого бита данных, высвечиваемого светодиодами, чтобы определить, какой это маркер. очевидно, более короткий код будет лучшим для этого.

Если маркеры перемещаются на расстояние, которое находится в том же порядке, что и их расстояние друг от друга в кадре, тогда система обзора может потерять уверенность в правильном определении того, какие вспышки принадлежат какому-либо маркеру.

SingleNegationElimination
источник
0

схематический

смоделировать эту схему - схема, созданная с использованием CircuitLab

На фиг.1, 2 и 3 светодиодные схемы.

  • Двойные светодиоды обеспечивают очень простое управление. R2 устанавливает яркость постоянно включенного светодиода. R1 устанавливает яркость импульсного светодиода.
  • Один светодиод, двойная яркость - еще одна простая схема. D3 всегда горит с током, прошедшим через R4. Когда BUF2 переключается в низкий уровень, он подключает R3 к GND, и ток через D3 увеличивается, заставляя светодиод светиться ярче.
  • Управление яркостью ШИМ является самым простым с аппаратной точки зрения, но программное обеспечение должно контролировать яркость светодиодов.

введите описание изображения здесь

Рисунок 2. ШИМ-кодирование.

Используя широтно-импульсную модуляцию (ШИМ), вы можете изменять видимую яркость, изменяя соотношение включения и выключения. На рисунке 2 показана последовательность мощных, маломощных и мощных сигналов.

Для вашего приложения вам нужно установить достаточно высокую частоту ШИМ, чтобы датчик камеры не видел мерцания. Модуляция данных или скорость переключения между высокой и низкой яркостью должны составлять не более половины частоты кадров и, более вероятно, около одной десятой частоты кадров, чтобы можно было правильно их различить.

Вам также может потребоваться указать угол луча от светодиодов. Звучит так, как будто ваши камеры не будут постоянно находиться на одной оси.

транзистор
источник