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 зашкаливают даже, если просто на окно его прилепить. Видимо на Земле этот датчик явно не справляется со своей работой. Может быть на Марсе пригодится.
Достоинства
показывает измерение в реальных единицах
цифровой интерфейс I2C для выдачи данных
Недостатки
Весьма ограниченный диапазон измерений, всего до 65535 Lx
Идеи устройств на датчике освещения
Автоматическое уменьшение подсветки экранов.
Будильник который будет срабатывать в момент рассвета
Бесконтактные кнопки
Охранные системы. Датчики присутствия.
Наведение на источник света, например для солнечных батарей
Автоматическое включение освещение улиц и помещений.
Датчик угла падения солнечных лучей. Например для спутников или летательных аппаратов. Несколько датчиков света по периметру могут образовать компас относительно источника света.
Фото датчик как датчик угла наклона плоскости к потоку световых лучей. Можно делать датчик открытия/закрытия двери.
Датчик и ориентации спутников на орбите Земли.
Можно передавать бинарные данные модулированным светом LiFi.
Датчик приближения к точечному источнику света.
Глобальная навигация по фазам естественного освещения Cолнца.
В паре со светодиодом можно сделать пульсометр.
Вывод
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)
sav13
15.07.2023 16:01+21--Весьма ограниченный диапазон измерений, всего до 65535 Lx
Есть же гораздо более функциональные датчики
Тот же MAX44009 - и диапазон выше и точность
Nick0las
15.07.2023 16:01+1Согласен, диапазон у этого датчика черезвычайно узок. MAX44009 хорошо, подя прямым солнцем не перегружается, но у него аж 45милилюкс/LSB. И не очень хорошая компенсация ИК, судя по моему опыту. В подьезде где лампы накаливания включены по паре последовательно сильно завышает показания, субьективно - в разы.
Из современных на мой взгляд лучший - VEML3328. У него диапазон 3*2^24 и 3милилюкс/LSB, что дает диапазон приметно от 3mlx-150klx. Одна проблема - он сам не снижате потребление после однократного измерения.
lonelymyp
15.07.2023 16:01+1Кстати про монитор. Yикто не видел DIY варианта как управлять яркостью монитора с внешнего датчика? Видимо нужен некий софт который рулит монитором и ардуинка.
Javian
15.07.2023 16:01+2Программа ClickMonitorDDC с настроенными хоткеями на регулировку яркости монитора. Ардуино прикидывается клавиатурой, нажимающей эти хоткеи.
GennPen
15.07.2023 16:01+1Можно и аппаратное устройство-переходник сделать. На сколько помнится, там обычный I2C используется, любой контроллер справится. Даже питания с того же HDMI хватит.
Javian
15.07.2023 16:01+1Потом еще два- три монитора появляется. Всем будем городить переходники?
Проще запустить еще два-три экземпляра программы, указав индивидуальный монитор и желаемый диапазон индивидуальных регулировок.А если у вас ноутбук?
Arhammon
15.07.2023 16:01Хардово будет гораздо более культурный вариант - на бп в канал регулировки яркости и саму ардуину внутрь монитора.
Единственный подводный камень это доработка корпуса, у моников он обычно воспринимает физические нагрузки и всякие отверстия для датчиков, разъемов надо делать вдумчиво.
И еще один момент, есть мониторы которые вообще лучше не разбирать, такие даже по гарантии не ремонируют, а просто меняют на новые...
pyur
15.07.2023 16:01+2уже много лет мониторю освещённость копеечными фоторезисторами. для целей - пора ди включать автоматический свет и т.п.
использовать ТАКОЙ датчик для подобных целей - лютый оверкилл.
aabzel Автор
15.07.2023 16:01мониторю освещённость копеечными фоторезисторами
Сопротивление фоторезистора зависит не только от освещенности, но и ещё от температуры. Утром фоторезистор холодный, вечером - теплый. Поэтому и значения при той же освещенности разные. Вечером у нагретого фоторезистора при той же, что и утром освещенности сопротивление больше. Нужен не просто фоторезистор, а полноценный прецизионный датчик освещенности с термо компенсацией.
Вот тут результаты измерений https://habr.com/ru/articles/687640/
GennPen
Недостаток решается полупрозрачным стеклом, установленным перед датчиком. В зависимости от прозрачности стекла диапазон увеличивается в N раз.
Javian
Или можно два поляризатора поставить и получить регулируемый.
GennPen
В таких случаях ставят три(четыре) поляризатора, первым(и последним) с круговой поляризацией, чтобы линейным поляризатором не отсекать "лишний" свет.
sav13
Только потом будете калибровать до посинения. Особенно если возмете стекло с неизвестным спектром пропускания
GennPen
Я и не предлагал брать первое попавшееся стекло.
Didimus
Можно использовать фотографические ND-фильтры
Soorin
Оно и изначально не калиброванное.