[РУКОВОДСТВО] Аналоги и замена микросхем Практика поставок Проверено

BH1750: датчик освещённости, подключение и замена

IC
Служба поставок ICBOMS · Склад в Шэньчжэне, экспресс DDP и подбор аналогов
[ПРОВЕРЕНО] Экспертиза
Прямой ответ службы закупок

BH1750 — цифровой датчик освещённости с шиной I2C: он измеряет освещённость в люксах и отдаёт значение двумя байтами, и популярен он именно потому, что считает по кривой видимости глаза, то есть в тех же единицах, что и люксметр. Диапазон — от 1 до 65535 люкс, точность типично ±20 %, питание самой микросхемы 2,4…3,6 В, а на готовых модулях с преобразователем питания — 3,3…5 В. Два момента, на которых чаще всего спотыкаются. Первый — адрес: он не один, а выбирается выводом ADDR. Если этот вывод заземлён или оставлен в воздухе, прибор отвечает на 0x23, а если поднят к питанию — на 0x5C. Это удобно, потому что на одной шине можно повесить два датчика, но на модулях вывод бывает распаян по-разному, поэтому адрес проверяют сканированием шины. И тут же грабли: 0x23 — это семиразрядный адрес, а в байте на проводе он выглядит как 0x46 на запись и 0x47 на чтение, и посылка 0x23 напрямую — самая частая ошибка в драйвере, из-за которой датчик не отвечает вовсе. Второй — два режима измерения. Непрерывный датчик меряет сам, и последнее значение всегда доступно для чтения, а разовый делает одно измерение по команде и после него сам засыпает, и команду надо посылать заново перед каждым чтением. Для батарейных схем разовый экономнее, но после каждого включения питания прибор возвращается в режим по умолчанию, и его надо перенастроить. Третье, что стоит знать, — прибор насыщается на ярком свету: в прямом солнечном свете он упирается в верхнюю границу, и это не поломка датчика, а предел его диапазона.

Содержание руководства (10 разделов)

Как устроен обмен с прибором

Обмен предельно простой: сначала контроллер отправляет байт команды, затем прибор отдаёт два байта со значением, старшим байтом вперёд. Значение — это сырой отсчёт, и пересчитывается он в люксы делением на 1,2, а при изменённом времени интегрирования применяется дополнительный поправочный коэффициент.

Считывание прибора в один разовый замере идёт не мгновенно: команда запускает измерение, и данные становятся готовы через 16 мс в низком разрешении или через 120 мс в высоком. Если прочитать раньше, прибор отдаст не то значение, и контроллер должен либо ждать, либо читать повторно.

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

Два адреса и подводный камень с байтом на проводе

Адрес прибора задаётся выводом ADDR: при низком уровне или в воздухе он равен 0x23, при высоком — 0x5C. На готовых модулях вывод обычно подтянут к земле, и тогда прибор отвечает на 0x23, но встречаются модули с другой распайкой, поэтому проверка сканированием шины надёжнее, чем догадка о маркировке.

И здесь же про то, из-за чего датчик чаще всего «не отвечает». 0x23 — это семиразрядный адрес в том виде, в котором его пишут в документации. В байте, который реально уходит по проводу, адрес сдвинут на один бит: 0x46 на запись и 0x47 на чтение. Если в драйвере отправить 0x23 как есть, прибор не ответит, и всё выглядит как поломка железа.

Наконец, 0x23 — это ещё и команда однократного замера в низком разрешении. Совпадение команды и адреса приводит к путанице в коде, и при написании драйвера с нуля это стоит держать в голове: команда 0x23 и адрес 0x23 — разные вещи, просто записанные одинаково.

Непрерывный и разовый режимы

В непрерывном режиме прибор меряет сам, и значение в любой момент доступно для чтения, причём оно всегда свежее. Это режим по умолчанию, и он удобен там, где нужна быстрая реакция: автоматическая яркость подсветки, включение света по датчику, реакция на засветку.

Разовый режим делает одно измерение по команде и после него сам переходит в режим питания покоя, поэтому перед каждым следующим чтением команду надо посылать заново. Экономия тут заметная, и для схем на батарейке это обычно правильный выбор: прибор спит почти всё время, а просыпается на 16 или 120 мс.

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

Разрешение и время интегрирования

У прибора есть три уровня разрешения: 1 люкс, 0,5 люкса и 4 люкса, и каждому соответствует своё время измерения — 120 мс, 120 мс и 16 мс. То есть чем мельче шаг, тем дольше прибор копит свет.

Помимо этого есть регистр времени интегрирования, который меняет чувствительность в широких пределах: по умолчанию его значение 69, и при его увеличении прибор дольше накапливает свет, а значит, видит и более слабое освещение, но уже не успевает за быстрыми изменениями. Всё это позволяет вывести прибор из перенасыщения на ярком свету или, наоборот, заставить его реагировать на слабый свет.

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

Характеристики

  • Диапазон измерения: от 1 до 65535 люкс.
  • Точность типично ±20 %, кривая видимости близка к человеческой, пик около 560 нм.
  • Питание микросхемы 2,4…3,6 В; на модулях с преобразователем 3,3…5 В.
  • Потребление в активном режиме около 120 мкА, в режиме питания покоя — единицы микроампер.
  • Шина I2C до 400 кГц, результат — два байта, старшим вперёд.
  • Чувствительность около 1,2 отсчёта на люкс при времени интегрирования 69.

Частые вопросы

  • Какой адрес у прибора — 0x23 при заземлённом выводе ADDR и 0x5C при поднятом к питанию; на проводе это 0x46 и 0x47.
  • Почему датчик не отвечает — чаще всего в драйвер отправляют 0x23 вместо 0x46.
  • Чем отличается разовый замер от непрерывного — разовый делает одно измерение и засыпает, непрерывный меряет сам и последнее значение всегда доступно.
  • Что будет при отключении питания — прибор вернётся в режим по умолчанию, и в разовом режиме его надо перенастроить заново.
  • Насыщается ли датчик — да, на прямом солнечном свете он упирается в верхнюю границу диапазона, и это не неисправность.

Детали, названные в этом руководстве

Каталог
Все производители →

Каждая позиция — это деталь или семейство, о которых идёт речь в руководстве, со ссылкой на карточку в каталоге: параметры, корпус, стадия жизненного цикла и datasheet, если он у нас локализован. Там, где в тексте названо семейство, в таблице стоит конкретный заказной партномер со склада. Если позиции из руководства в списке нет — значит, её у нас сейчас нет: пришлите номер, и она уйдёт в подбор вместе с остальными.

ПартномерПроизводительОписание
BH1750FVI-TRRohm Semiconductor—
[ЗАКАЗ] Комплектация BOM и экспресс-поставка

Примените это к своей спецификации

Отправьте партномера или файл спецификации (Excel / CSV). По каждой строке проверим складские остатки в Шэньчжэне, наличие заводской упаковки и проверенные аналоги — с отгрузкой единой партией.

Открыть форму запроса →

Как написано это руководство

Руководство написано службой поставок ICBOMS в Шэньчжэне и выверено по документам производителей и стандартам, на которые ссылается текст. Формулировки ограничены тем, что делает эта служба, и тем, как оценивают деталь — без ориентировочных цен, сроков поставки и остатков: всё это считается по каждой строке отдельно, по факту проверки. Дата последней вычитки стоит в начале страницы.