Датчик освещенности BH1750

Иногда возникает необходимость получить данные об уровне освещенности конкретного места, объекта. Для таких целей используются специальные приборы – люксметры. Но это не такое уж и распространенное оборудование. Освещенность можно попробовать измерять фоторезистором GL5516, например. Но в таком случае необходимо делать измерительную схему и калибровать полученные данные с такого датчика. Упростить задачу нам поможет датчик, который посредством цифрового интерфейса будет выдавать готовые данные в определенных единицах измерения – BH1750.

Датчик этот заключен в корпусе для поверхностного монтажа WSOF6I. Внутри непосредственно сам фотодатчик в виде фотодиода, усилитель сигнала фотодиода, АЦП (аналого цифровой преобразователь) и некая логика, которая обрабатывает данные, переводит все в единицы измерения Люкс и передает по I2C к управляющему устройству (микроконтроллеру в нашем случае):

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

Корпус оказывается полупрозрачный! А внутри просматривается какая-то схема или чувствительный слой, скорее всего. Честно говоря, именно этот вопрос стал решающим в покупке этого датчика – интерес — как освещенность то определяется. На самом деле внутри фотодиод, а корпус выполняет роль так же светофильтра, видимо, с заведомо известным коэффициентом пропускания света, чтобы точно измерять освещенность.

Что это за датчик интерес удовлетворили, теперь можно продолжить.

Итак, датчик BH1750 обладает следующими характеристиками:

  • Цифровой интерфейс – I2C
  • Высокое разрешение – до 0,5 Лк
  • Малый потребляемый ток и функция спящего режима
  • Фильтрация световых шумов 50/60 Гц
  • Малая зависимость от источника света (лампа накаливания, светодиод и так далее)
  • Малое влияние инфракрасного излучения
  • Возможно выбрать 2 адреса микросхемы для I2C интерфейса (можно подключить одновременно два таких датчика к одной шине)
  • Не требует калибровки, что максимально удобно для применения в любых проектах
  • Очень малые габариты датчика

Электрические характеристики:

  • Напряжение питания – 2,4 – 3,6 В
  • Ток потребления – 120 мкА
  • Ток потребления в спящем режиме – 0,01 мкА
  • Измеряемая длина волны – 560 нм
  • Точность в режиме высокого разрешения – 1 Лк
  • Точность в режиме низкого разрешения – 4 Лк
  • Период измерения в режиме высокого разрешения – 120 мс
  • Период измерения в режиме низкого разрешения – 16 мс
  • АЦП – 16 бит

Чтобы протестировать датчик освещенности собираем схему:

Здесь уже все привычно для нас. В качестве микроконтроллера используется ATmega8a как наиболее универсальный и популярный микроконтроллер. Использовать микроконтроллер можно в любом корпусе – разницы нет, кроме порядка расположения выводов на корпусах. Индикация осуществляется на ЖК экранчике на базе HD44780. В моем случае используется экран на 4 строки по 20 символов на каждую, однако можно использовать и размер 1602 – информации на экранчик выводится не много, поэтому все помещается. Переменный резистор R2 необходим для регулировки контраста символов на дисплее. Вращением движка этого резистора добиваемся наиболее четких для нас показаний на экране. Подсветка ЖК дисплея организована через вывод «А» и «К» на плате дисплея. Подсветка включается через резистор, ограничивающий ток — R1. Чем больше номинал, тем более тускло будет подсвечиваться дисплей. Но пренебрегать этим резистором не стоит во избежание порчи подсветки. Сам дисплей подключается к микроконтроллеру по 4х битной схеме. Резистор R3 необходим для предотвращения самопроизвольного перезапускания микроконтроллера в случае появления случайных помех на выводе PC6. Резистор R4 подтягивает плюс питания к этому выводу, надежно создавая потенциал на нем. В данной схеме светодиод лишь моргнет при успешном запуске схемы, никакой другой функции не предусмотрено, хотя по желанию можно добавить ещё много чего – памяти остается целый вагон. Резистор R5 ограничивает ток через светодиод, чтобы тот не вышел из строя. Резистор R4 подтягивает ножку датчика к земле, отвечающую за адрес микросхемы для I2C интерфейса, посмотреть все эти цифры можно в исходном коде, который расположен в конце статьи. Для правильной работы I2C интерфейса необходимы резисторы R7 и R8. С их помощью на линиях образуется логическая единица из-за того, что они подтянуты к плюсу питания. При формировании логического нуля линии прижимаются к земле посредством ведущего или ведомого (микроконтроллера или датчика).

Основное питание схемы составляет 3,3 вольта, что обусловлено электрическими параметрами датчика освещенности BH1750. 5 вольт необходимы лишь для питания дисплея, если применить, например экранчик от nokia 5110, для питания которого необходимо также 3,3 вольта, то можно опустить из схемы стабилизатор напряжения на 5 вольт. Стабилизаторы напряжения на 5 вольт и 3,3 вольта можно применить абсолютно любые на аналогичные напряжения, можно использовать как линейные стабилизаторы, так и импульсные.

Схема была собрана на модулях на отладочной плате:

Основа – отладочная плата для микроконтроллеров Atmega8 и других контроллеров, совместимых с ней по выводам.

Используется модуль с датчиком BH1750. По большому счету кроме датчика тут больше ничего особенного нет – подтягивающие резисторы для работы датчика, стабилизатор напряжения на 3,3 вольта и несколько конденсаторов. Основной плюс модуля – удобство соединения с микроконтроллером посредством штырьков.

Датчик выдает информацию об освещенности в единицах измерения Люкс. Люкс равен освещённости поверхности площадью 1 м² при световом потоке падающего на неё излучения, равном 1 лм (Люмен). Для сравнения освещенность в рабочем кабинете составляет порядка 300 – 500 Люкс, при полнолунии – 1 Люкс, в ясный солнечный день в тени – 10 тыс. – 25 тыс. Люкс, а под солнцем порядка 32 тыс. – 130 тыс. Люкс. Разбежка понятна большая из-за состояния воздушного покрова – разреженность воздуха, облака, дым, смог и так далее.

Для программирования микроконтроллера необходимо знать конфигурацию фьюз битов:

Такие датчики могут применяться в ЖК дисплеях, мобильных телефонах, цифровых камерах, планшетах и так далее. Основная польза от таких датчиков в подобных устройствах автоматическая регулировка подсветки дисплея, например или какие либо настройки в цифровых камерах, связанных с качеством фото и освещенностью экспозиции. Цена датчика BH1750 порядка 2 – 3 уе в виде модуля на aliexpress и ebay. Модули вполне высокого качества, пайка без дефектов, все компоненты стоят ровненько и на своих местах.

К статье также прилагается прошивка для микроконтроллера Atmega8, исходный код в AVR studio 4, даташит на датчик освещенности, а также небольшое видео, демонстрирующее работу датчика.


Список радиоэлементовОбозначение
Тип
Номинал
Количество
ПримечаниеМагазинМой блокнот

IC1
МК AVR 8-битATmega8A1
IC2
Датчик освещенностиBH1750FVI-E1
VR1
Линейный регуляторL7805AB1
VR2
Линейный регуляторAMS1117-3.31
C1, C3, C5, C7
Конденсатор100 нФ4
C2
Электролитический конденсатор470 мкФ1
C4
Электролитический конденсатор220 мкФ1
C6
Электролитический конденсатор10 мкФ1
R1
Резистор22 Ом1
R2
Подстроечный резистор10 кОм1
R3
Резистор10 кОм1
R4, R7, R8
Резистор4.7 кОм3
R5
Резистор390 Ом1
R6
Резистор1 кОм1
HG1
LCD-дисплей2004A1
HL1
Светодиод1
S1
Тактовая кнопкаTC-A1091
Добавить все

Скачать список элементов (PDF)

Прикрепленные файлы:

Добавить комментарий

Ваш адрес email не будет опубликован.