BH1750 это простой цифровой чип датчика освещения с I2C интерфейсом от японской компании Rohm Semiconductor. В этом тексте я представил обзор этого ASIC(а).

Аппаратная часть

Основные технические характеристики

Параметр

Min

Max

Unit

Диапазон измерений освещения

1

65535

Lx

Напряжение питания

2.4

3,6

V

I2C rate

0<

400

kHz

Чип BH1750 можно попробовать в составе этого модуля с Aliexpress.

Вот габариты модуля с BH1750

Вся спецификация всего 20 страниц. Внутри он устроен так. Фотодиод вырабатывает напряжение, напряжение усиливается, поступает на Аналого-цифровой преобразователь. После ADC цифровой сигнал поступает в регистровый банк I2C. Из регистрового файла значение вычитывается микроконтроллером по I2C. Внутри всего один 2хбайтный регистр в формате big endian. Всю схему тактирует встроенный осцилятор на 320kHz

Распиновка 5-пиновой микросхемы.

Программная часть

С точки зрения программиста датчик освещенности выглядит так

Вот такие адреса у чипа I2C адреса.

MCU видит чип на шине I2C так.

У чипа есть несколько режимов измерения:

Режим работы

Время измерения

Разрешение

ms

lx

H-resolution Mode2

120

0,5

H-Resolution Mode

120

1

L-Resolution Mode

16

4

Как же проверить работоспособность датчика освещения?

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

Как видно (синяя линия) показания BH1750 зашкаливают даже, если просто на окно его прилепить. Видимо на Земле этот датчик явно не справляется со своей работой. Может быть на Марсе пригодится.

Достоинства

  1. показывает измерение в реальных единицах

  2. цифровой интерфейс I2C для выдачи данных

Недостатки

  1. Весьма ограниченный диапазон измерений, всего до 65535 Lx

Идеи устройств на датчике освещения

  1. Автоматическое уменьшение подсветки экранов.

  2. Будильник который будет срабатывать в момент рассвета

  3. Бесконтактные кнопки

  4. Охранные системы. Датчики присутствия.

  5. Наведение на источник света, например для солнечных батарей

  6. Автоматическое включение освещение улиц и помещений.

  7. Датчик угла падения солнечных лучей. Например для спутников или летательных аппаратов. Несколько датчиков света по периметру могут образовать компас относительно источника света.

  8. Фото датчик как датчик угла наклона плоскости к потоку световых лучей. Можно делать датчик открытия/закрытия двери.

  9. Датчик и ориентации спутников на орбите Земли.

  10. Можно передавать бинарные данные модулированным светом LiFi.

  11. Датчик приближения к точечному источнику света.

  12. Глобальная навигация по фазам естественного освещения Cолнца.

  13. В паре со светодиодом можно сделать пульсометр.

  14. Датчик угла на основе эффекта Малюса.

Вывод

BH1750 - простой и работающий датчик освещения, который выдает значение в реальных единицах измерения. Однако этот датчик не способен измерять весь диапазон для естественных природных освещений на Земле.

Словарь

Акроним

Расшифровка

ADC

Analog Digital converter

I2C

Inter-Integrated Circuit

PD

Photo diode

VCC

Voltage common collector

OSC

Internal Oscillator

IC

Integrated circuit

PCB

printed circuit board

GND

Ground

Links
https://habr.com/ru/articles/472204/
https://habr.com/ru/articles/400989/
https://habr.com/ru/articles/214011/
https://habr.com/ru/articles/385129/

Комментарии (21)


  1. GennPen
    15.07.2023 16:01
    +1

    Весьма ограниченный диапазон измерений, всего до 65535 Lx

    Недостаток решается полупрозрачным стеклом, установленным перед датчиком. В зависимости от прозрачности стекла диапазон увеличивается в N раз.


    1. Javian
      15.07.2023 16:01
      +1

      Или можно два поляризатора поставить и получить регулируемый.


      1. GennPen
        15.07.2023 16:01
        +2

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


    1. sav13
      15.07.2023 16:01
      +2

      Только потом будете калибровать до посинения. Особенно если возмете стекло с неизвестным спектром пропускания


      1. GennPen
        15.07.2023 16:01
        +1

        Я и не предлагал брать первое попавшееся стекло.


      1. Didimus
        15.07.2023 16:01
        +1

        Можно использовать фотографические ND-фильтры


      1. Soorin
        15.07.2023 16:01
        +1

        Оно и изначально не калиброванное.


  1. sav13
    15.07.2023 16:01
    +2

    1--Весьма ограниченный диапазон измерений, всего до 65535 Lx

    Есть же гораздо более функциональные датчики

    Тот же MAX44009 - и диапазон выше и точность


    1. Nick0las
      15.07.2023 16:01
      +1

      Согласен, диапазон у этого датчика черезвычайно узок. MAX44009 хорошо, подя прямым солнцем не перегружается, но у него аж 45милилюкс/LSB. И не очень хорошая компенсация ИК, судя по моему опыту. В подьезде где лампы накаливания включены по паре последовательно сильно завышает показания, субьективно - в разы.

      Из современных на мой взгляд лучший - VEML3328. У него диапазон 3*2^24 и 3милилюкс/LSB, что дает диапазон приметно от 3mlx-150klx. Одна проблема - он сам не снижате потребление после однократного измерения.


      1. sav13
        15.07.2023 16:01
        +1

        А VEML7700 ? Они подоступнее будут. На алишке их полно


        1. Nick0las
          15.07.2023 16:01
          +1

          VEML7700 по спекам симпатичен. Но в работе я его не пробовал.


  1. lonelymyp
    15.07.2023 16:01
    +1

    Кстати про монитор. Yикто не видел DIY варианта как управлять яркостью монитора с внешнего датчика? Видимо нужен некий софт который рулит монитором и ардуинка.


    1. Javian
      15.07.2023 16:01
      +2

      Программа ClickMonitorDDC с настроенными хоткеями на регулировку яркости монитора. Ардуино прикидывается клавиатурой, нажимающей эти хоткеи.


      1. GennPen
        15.07.2023 16:01
        +1

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


        1. Javian
          15.07.2023 16:01
          +1

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


          А если у вас ноутбук?


          1. GennPen
            15.07.2023 16:01
            -1

            А если у вас ноутбук?

            А если у вас компьютера нет?


            1. Javian
              15.07.2023 16:01
              +1

              Не плохо очень

              Но очень плохо
              С другой стороны


    1. Arhammon
      15.07.2023 16:01

      Хардово будет гораздо более культурный вариант - на бп в канал регулировки яркости и саму ардуину внутрь монитора.

      Единственный подводный камень это доработка корпуса, у моников он обычно воспринимает физические нагрузки и всякие отверстия для датчиков, разъемов надо делать вдумчиво.

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


  1. pyur
    15.07.2023 16:01
    +2

    уже много лет мониторю освещённость копеечными фоторезисторами. для целей - пора ди включать автоматический свет и т.п.

    использовать ТАКОЙ датчик для подобных целей - лютый оверкилл.


    1. alex-open-plc
      15.07.2023 16:01
      +1

      Да ладно! На али стоит в среднем 65 р. (модуль)


    1. aabzel Автор
      15.07.2023 16:01

      мониторю освещённость копеечными фоторезисторами

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

      Вот тут результаты измерений https://habr.com/ru/articles/687640/