Измерение освещённости и передача данных с помощью двунаправленных свойств светодиодов (перевод)
- светодиоды |
- переводы |
- TR2003-35 |
- merl |
- LEDs |
- LEDComm |
- последний дюйм
3 Интеллектуальная подсветка
Одним из применений для схемы двунаправленного включения светодиода является интеллектуальная подсветка. Как отмечалось ранее, основная идея - включать подсветку беспроводного пульта до того, как пользователь нажмёт кнопку. Кроме того, для сохранения энергии, делать это следует только когда уже достаточно темно.
Рисунок 6. Прототип автоматической подсветки |
![]() |
Был создан прототип, общий вид которого показан на рисунке 6, а схема на рисунке 7. Устройство использует ёмкостной датчик приближения для обнаружения активности пользователя. Несмотря на то, что основная схема измерения ёмкости соответствует используемой в телефоне [4], вместо простой регистрации приближения (увеличения ёмкости) для обнаружения активности пользователя (изменения ёмкости) проводятся дополнительные проверки. Многие люди продолжают держать пульт, даже если не используют его, поэтому определение факта активности чрезвычайно важно для продления времени жизни батарей. Конечно, как только пользователь захочет задействовать пульт вновь, любое его заметное движение вновь включит подсветку.
Рисунок 7. Схема автоматической подсветки |
![]() |
Интеллектуальная подсветка работает следующим образом: микроконтроллер переодически выходит из сна и измеряет ёмкость. Если признаков активности не обнаружено, процессор возвращается в состояние сна. В противном случае с помощью светодиода проводится измерение освещённости. Если темно, то на две секунды включается подсветка. Пока подсветка включена, продолжается проверка активности. Каждый раз при обнаружении активности двухсекундный таймер сбрасывается и начинает отсчёт очередных двух секунд.
Так как пульт уже содержит небольшой микропроцессор, расширение функциональности лишь немного увеличит затраты. Электроды детектора приближения могут быть частью печатной платы и, если есть резервные выводы, то единственным дополнительным компонентом станет дешёвый конденсатор для ёмкостного детектора.
Может возникнуть опасение, что постоянно работающий датчик приближения отрицательно скажется на сроке службы батареи. На самом деле схема потребляет микроватты мощности. Прототип работал более 6 месяцев от "часовой" литиевой батарейки типа CR2032. В пультах обычно используются типоразмеры AAA или AA с номинальной ёмкостью более чем на порядок большей, чем у дисковых элементов, и отбираемая мощность будет несравнимо ниже тока саморазряда.
4 Двунаправленный коммуникационный протокол
В экспериментах с подсветкой для проверки детектора в качестве источника света часто использовались светодиодные фонари. Это послужило намёком на возможность передачи данных от одного светодиода к другому. Был собран тестовый набор, показанный на рисунке 8 и состоящий из двух одинаковых плат с контроллерами PIC и портами RS-232.
Рисунок 8. Двунаправленная связь через светодиоды |
![]() |
Тестовые платы используют для передачи данных простой протокол, который позволяет синхронизироваться с помощью фазовой автоподстройки и передавать данные в обоих направлениях с использованием широтно-импульсного кодирования. Базовый принцип передачи состоит в том, что оба устройства попеременно то принимают, то передают данные миганием светодиода в направлении партнёра. Короткая вспышка означает "0" или "SPACE", а длинная - "1" или "MARK".
Протокол запускается сразу же после включения питания и устройство начинает выполнять циклы ожидания, излучая свет в течение одной миллисекунды и принимая в течение черырёх миллисекунд. За время приёма проводится сорок измерений освещённости по 100 микросекунд каждый. Все сорок измерений дают на выходе только один бит данных, сообщающий выше или ниже порога переключения порта ввода-вывода (в среднем 1.5 вольта) находится уровень освещённости. Одного только внешнего комнатного освещения недостаточно для того, чтобы фототок разрядил ёмкость перехода ниже порога переключения за 100 мкс.
Рисунок 9 показывает форму напряжения на катоде светодиода в процессе измерения при нормальной освещённости. Вертикальная шкала - 1 вольт/деление, а горизонтальная - 100 мкс/деление. Сначала ёмкость заряжается до напряжения чуть ниже 5 вольт, после чего начинает разряжаться. Отметим, что напряжение не успевает опуститься ниже уровня переключения и микроконтроллер считывает из порта единицу.
Рисунок 9. Последовательность измерений в условиях обычного комнатного освещения |
![]() |
Рисунок 10 демонстрирует этот же сигнал, но в условиях засветки другим светодиодом. За время измерения ёмкость полностью разряжается и напряжение на выводе опускается существенно ниже порогового уровня, приводя к считыванию из порта нулевого значения. Цикл ожидания продолжается до тех пор, пока два последовательных периода измерения на покажут состояния "свет виден". С этого момента считается, что обнаружен входной импульс света с аналогичного устройства, и производится переход из режима ожидания (1 миллисекунду включён, 4 миллисекунды выключен) в чуть более быстрый цикл синхронизации, описанный ниже.
Рисунок 10. Последовательность измерений при засветке светодиодом |
![]() |
В цикле синхронизации свет по-прежнему излучается 1 миллисекунду, а вот число 100-микросекундных периодов измерения меняется. В цикле синхронизации микроконтроллер переходит в состояние излучения или после 40 периодов измерения, или после обнаружения заднего фронта светового импульса. Условием обнаружения заднего фронта считается фиксация состояния "свет виден" в двух последовательных измерениях, за которыми следуют десять последовательных измерений с результатом "свет не виден".
После вхождения в синхронизм последовательность состояний выглядит следующим образом: 1 миллисекунду горит один светодиод, 1 миллисекунду оба светодиода выключены, 1 миллисекуну горит другой светодиод и, наконец, 1 миллисекунду оба диода опять выключены [* квадратурный сигнал]. По такому алгоритму способны синхронизироваться даже устройства с 25% разбегом тактовых частот [* вернее, скоростей передачи]. Номинальная частота синхронной связи 250 Hz, скважность 25%. На рисунке 11 показаны сигналы синхронизированных устройств, "подмигивающих" друг другу. Отметим, что тактируются они совершенно независимо, а синхронизацию обеспечивают принципы организации связи.
Данные передаются в широтно-импульсном формате. Импульс света длительностью 1 мс. соответствует состоянию MARK, а длительность 0.5 мс. - SPACE. В состоянии ожидания система постоянно передаёт биты MARK [* чтобы не терять синронизацию], так как программное обеспечение для обоих режимов одно и то же, а передаваемые сигналы совпадают с последовательностью синхронизации. Формат передачи соответствует общепринятой посылке 8-N-1, используемой в RS-232, начинается с одного бита SPACE, затем следует 8 бит данных, и заканчивается одним битом MARK. Верхний луч на рисунке 11 показывает последовательность импульсов на выходе ожидающего устройства, которое передаёт только синхронизирующие биты MARK. Нижний луч показывает узкие импулься SPACE и широкие MARK.
Рисунок 11. Импульсы двух синхронизированных устройств |
![]() |
При декодировании вспышек света приёмник подсчитывает количество измерений с результатом "свет виден" в каждом цикле синхронизации. Если их семь и менее, то записывается SPACE, если восемь и более - MARK. Затем проводится обычное разбиение последовательности - отбрасывание переднего SPACE и заднего MARK. Получившиеся 8-битные слова готовы для передачи приложению. Обнаружение и исправление ошибок можно выполнять простейшим протоколом более высокого уровня.
Тестовый набор LEDComm работает очень хорошо. Протокол низкого уровня передаёт данные на скорости 250 бит в секунду в обоих направлениях. Микропроцессор связывается с управляющей машиной на скорости 38400 бод и буферирует поступающие данные. Связь устойчива на расстоянии до трёх сантиметров. Использованный в прототипе светодиод имеет узкую диаграмму направленности и поэтому допустимая угловая ошибка не превышает 20 градусов.
В отличие от многих других протоколов предложенный вариант весьма малочувствителен к разнице несущих частот. Не везде стоят кварцевые генераторы и многим устройствам приходится довольствоваться внутренним RC источником тактирования сомнительной точности. Соединение работоспособно при разнице несущих частот до 25%. Для сравнения, ошибка скорости в 5% вызывает проблемы в RS-232.
Внутренний нестабильный генератор микропроцессора в данном случае является преимуществом. Даже в том случае, когда два устройства включаются одновременно и синфазно, они очень быстро рассинхронизируются в достаточной степени для того, чтобы обнаружить задний фронт чужого импульса и вновь синхронизоваться для работы в противофазе. В отладочных модулях этот процесс занимал менее 50 миллисекунд. Если оба LEDComm устройства тактируются от стабильных источников (или оба подключены к одному генератору), то, возможно, потребуется внести в петлю синхронизации случайную задержку (зависящую, например, от серийного номера устройства), чтобы гарантировать появление сдвига фаз двух импульсных последовательностей достаточного для обнаружения задних фронтов.
В предложенном протоколе, благодаря наличию несущей частоты, есть возможность различения состояний по интенсивность свечения светодиода. В состоянии готовности свечение ярче, чем в ожидании (из-за большей частоты следования импульсов), а при передаче темнее (из-за наличия коротких импульсов SPACE в дополнение к длинным импульсам отсутствия данных - MARK).
- блог пользователя teap0t
- 64233 просмотра
Новые записи в блогах
- Устранение дребезга контактов на основе вертикальных счетчиков
- Диагностика Imprecise Bus Faults в микроконтроллерах Cortex-M3/M4/M4F
- Self-powered камера
- Фоновый модулятор: беспроводная связь из ничего (перевод)
- Texas Instruments Analog Applications Journal SLYT612 "Снижение искажений в аналоговых КМОП ключах" (перевод)
- USB MSD. Часть 6. Команды SCSI (перевод)
- USB MSD. Часть 3. USB класс накопителей данных (перевод)
- Texas Instruments Application Report SBAA042 "Кодовые схемы, используемые в аналогово-цифровых преобразователях" (перевод)
- 10 принципов правильного интерфейса
- Релиз SDK на русский микропроцессор КРОЛИК
Recent comments
2 часа 4 минуты назад
4 часа 33 минуты назад
11 часов 19 минут назад
12 часов 5 минут назад
23 часа 53 минуты назад
1 день 2 часа назад
1 день 6 часов назад
1 день 11 часов назад
2 дня 14 часов назад
3 дня 1 час назад