ЭФО предлагает со своего склада новую серию преобразователей интерфейсов USB UART компании FTDI FT232RNL-REEL

LED камера - светодиоды в качестве сенсоров света

В статье мы рассмотрим простую конструкцию, которая позволит провести эксперимент со светодиодами, используемыми в качестве датчиков света – фотодиодов. Такое решение позволит реализовать своего рода LED «камеру». Для конструкции потребуется любая плата Arduino со свободными линиями ввода/вывода и плата со светодиодами, которая подключатся к Arduino платформе.

Технология правильного хранения аккумуляторов и батареек по рекомендациям FANSO и EVE Energy

Внешний вид платы со светодиодами показан на рисунке ниже.

Внешний вид платы со светодиодами для Arduino

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

Принципиальная схема платы достаточно проста – в ней используются 20 светодиодов, включенных через токоограничительные резисторы. В соответствии с количеством светодиодов, разрешение нашей «камеры» составит 20 точек (пикселей). Светодиоды включены по схеме с общим катодом.

Принципиальная схема платы расширения Arduino для экспериментов со светодиодами
Нажмите для увеличения

Следует учитывать, что в данном случае при выборе номиналов резисторов необходимо придерживаться нескольких критериев:

  • ток через светодиоды должен быть ограничен, чтобы не перегружать светодиоды;
  • ток через светодиоды должен быть ограничен, чтобы не перегружать Arduino (микроконтроллер);
  • в тоже время, ток через светодиоды должен быть большим, насколько это возможно;
  • нагрузка на выводы последовательного коммуникационного интерфейса (сигналы SCK, MOSI, MISO) не должна влиять на процесс коммуникации, дабы сохранить работоспособность загрузчика Arduino.

Эксперименты показали, что резисторы номиналом 1 кОм соответствуют этим требованиям при использовании 4 разных плат Arduino. Для маловероятного случая, что некоторые платы Arduino будут иметь проблемы при такой аппаратной реализации, была добавлена перемычка, которая позволит отключить катоды светодиодов от «земли». Есть две причины такой реализации.

Если вы посмотрите на печатную плату, то увидите место для установки SMD светодиодов и обычных светодиодов с выводами. Именно при использовании обычных светодиодов, включенных по схеме с общим анодом, потребуется переключение перемычки к +5 В. Вторая причина – это возможность использования данной платы со светодиодами в нашем эксперименте: в этом случае катоды светодиодов подключаются к +5 В. В стандартном режиме работы светодиодов на плате, по схеме с общим катодом, перемычка подключает все катоды к "земле".

Итак, как мы заметили выше, в нашем эксперименте светодиоды будут использоваться в качестве фотодиодов. Фототок светодиодов очень мал и, кроме того, количество линий АЦП микроконтроллера ограничено. Однако микроконтроллер имеет достаточное количество цифровых линий ввода/вывода. Цифровые КМОП выводы микроконтроллера могут быть программно переведены в состояние с высоким импедансом, которое можно использовать в нашем эксперименте. Идея заключается в обратном смещении диода путем переключения линии ввода/вывода в состояние выхода с низким логическим уровнем. В этом случае светодиод не проводит электрический ток и ведет себя как конденсатор. После заряда такого конденсатора линия ввода/вывода микроконтроллера переключается в высокоимпедансное состояние (Z-состояние) и далее следует отслеживать состояние этой линии. Попадающий на светодиод внешний свет будет генерировать небольшой фототок, причем, чем выше интенсивность света, тем больше фототок. Этот ток будет разряжать наш «светодиодный» конденсатор. Чем выше интенсивность внешнего освещения, тем быстрее он разрядится. После разряда конденсатора микроконтроллер может определить, что состояние входа изменилось от низкого к высокому. Измерив это время перехода, мы можем оценить интенсивность света, падающего на светодиод.

Реализацией данного процесса занимается программа микроконтроллера (исходный код можно скачать в разделе загрузок). В основном цикле программы производится сканирование цифровых линий ввода/вывода микроконтроллера, настройка их в качестве выходов и запись нулей в регистр данных портов для установки выходов в состояние "лог. 0". Затем инициализируется массив для хранения значений времени в миллисекундах. После этого выводы микроконтроллера переключаются в состояние входа, но из-за того, что они уже были установлены в низкое состояние, внутренние подтягивающие резисторы не будут активированы, поэтому мы получим входы с высоким сопротивлением (Z состояние).

В основном цикле программы этот процесс повторяется снова и снова. Для каждого светодиода это будет означать контроль перехода к высокому состоянию на входе микроконтроллера. Изначально вывод микроконтроллера устанавливается в низкое состояние путем конфигурирования его как выхода. Затем вычисляется время, прошедшее с момента последнего изменения, и вывод переключается в Z-состояние конфигурированием вывода микроконтроллера как входа. При выполнении этой операции учитывается, что команда pinMode (изменение состояния вывода микроконтроллера) выполняется несколько медленно. Таким образом, светодиоды получают несколько циклов заряда.

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

Демонстрационное видео

Загрузки

Исходный код программы микроконтроллера (Arduino-скетч) – скачать

Дополнительные материалы

Использование светодиодов в качестве фотодиодов и двухстороння коммуникация (англ.) – скачать

blog.blinkenlight.net

Перевод: Vadim по заказу РадиоЛоцман

На английском языке: LED Camera

Электронные компоненты. Бесплатная доставка по России
Для комментирования материалов с сайта и получения полного доступа к нашему форуму Вам необходимо зарегистрироваться.
Имя