Датчики освещённости: от фоторезистора до BH1750, VEML7700 и OPT3001
Люксы — это не «сколько света вообще», а излучение, взвешенное по чувствительности глаза. Разбираем по даташитам Advanced Photonix, Vishay, ROHM, ams OSRAM и TI, чем фоторезистор и фототранзистор TEMT6000 отличаются от цифровых BH1750, TSL2561, VEML7700 и OPT3001, как пересчитать их коды в люксы и как поставить датчик за окно корпуса.
Обновлено Редакция GAW
Освещённость измеряют в люксах: 1 лк — это световой поток 1 лм на квадратный метр. Для микроконтроллера есть три пути: фоторезистор в делителе — годится для порога «светло — темно», но не для люксов; фототранзистор с нагрузочным резистором и АЦП — почти линейный, но с большим разбросом между экземплярами; цифровой датчик освещённости, который сам интегрирует фототок и отдаёт число по I²C. Для ориентира ams приводит 50 000–100 000 лк на прямом солнце и 20–50 лк при слабом освещении в помещении (DN21).
Глаз, кремний и инфракрасный свет
Люкс — фотометрическая единица: излучение в нём взвешено спектральной чувствительностью глаза при дневном зрении V(λ). Эту кривую CIE приняла в 1924 году; её максимум — на 555 нм, а к 380 и 780 нм она спадает практически до нуля (DN21). Освещённость получается из спектральной облучённости интегрированием с этим весом:
Константа 683 лм/Вт — световая эффективность монохроматического излучения частотой 540 ТГц, через неё в СИ определена кандела (BIPM). Длина волны этого излучения — 299 792 458 м/с / 540 · 10¹² Гц ≈ 555 нм (555,2 нм в вакууме), тот самый максимум V(λ).
Кремниевый фотодиод чувствует от 300 до 1100 нм — заметно шире глаза. Инфракрасный светодиод на 880 нм даёт ноль люксов, но ненулевой фототок (DN21), а у ламп накаливания и солнца в спектре много ИК (DN26): голый кремний под такой лампой показывает освещённость выше, чем видит человек. Производители решают это двумя способами. Первый — подогнать спектр самого фотоприёмника под V(λ): у OPT3001 для этого стоит оптический фильтр с подавлением ИК более 99 %, у BH1750 и VEML7700 производители указывают чувствительность, близкую к глазу. Второй — поставить рядом второй фотодиод, который видит только ИК, и вычесть его сигнал по эмпирической формуле: так сделан TSL2561.
Вторая особенность реального света — мерцание. Лампа от сети 50 Гц мерцает с частотой 100 Гц, от 60 Гц — 120 Гц: яркость падает в каждом переходе сетевого напряжения через ноль. Интегрирующий датчик гасит мерцание, если время интегрирования кратно периодам пульсаций; для 100 и 120 Гц одновременно это 50 мс и кратные (DN26). Производители цифровых датчиков пишут о подавлении прямо: ROHM — что время измерения в режиме H-Resolution у BH1750 достаточно длинное, чтобы отсеять помехи, в том числе 50 и 60 Гц; TI — что интегрирование OPT3001 за 100 или 800 мс сводит влияние 50 и 60 Гц к минимуму; Vishay заявляет у VEML7700 подавление мерцания 100 и 120 Гц, ams у TSL2561 — пульсаций 50/60 Гц.
Фоторезистор в делителе
Фоторезистор — слой сульфида кадмия (CdS), сопротивление которого падает с ростом освещённости. Пример с полными данными производителя — Advanced Photonix PDV-P8001, рассчитанный на 400–700 нм:
| Параметр | PDV-P8001 |
|---|---|
| Сопротивление при 10 лк (лампа 2856 К) | 3–11 кОм |
| Темновое сопротивление через 10 с после 10 лк | не меньше 0,2 МОм |
| Показатель γ между 10 и 100 лк | 0,6 |
| Время нарастания / спада при 10 лк, типично | 50 / 20 мс |
| Напряжение / мощность, не более | 150 В / 90 мВт |
Зависимость сопротивления от освещённости степенная, показатель γ — наклон прямой в логарифмических координатах:
При γ = 0,6 десятикратный рост освещённости уменьшает сопротивление в 100,6 ≈ 4 раза: от 3–11 кОм при 10 лк до 0,75–2,8 кОм при 100 лк. Фоторезистор включают в делитель — к питанию, а постоянный резистор R₀ — к земле, тогда напряжение растёт со светом:
Наклон этой зависимости по логарифму освещённости максимален, когда R₀ равно сопротивлению фоторезистора в рабочей точке: для порога около 10 лк у PDV-P8001 это 3–11 кОм. Напряжение и токи делителя удобно проверить в калькуляторе делителя напряжения.
Ограничения фоторезистора видны прямо из даташита:
- Разброс. Сопротивление при 10 лк у разных экземпляров различается в 3,7 раза. Если обратить формулу без калибровки и подставить среднее геометрическое кОм, у крайних экземпляров ошибка освещённости — до (11/5,7)1/0,6 ≈ 3 раз в обе стороны.
- Нелинейность. Зависимость степенная, а сам показатель γ дан только типичным — его разброс добавляет ошибку сверх названной.
- Медленность. Типичное время нарастания 50 мс и спада 20 мс при 10 лк; темновое сопротивление нормируют лишь через 10 с после выключения света.
- Кадмий. Директива RoHS 2011/65/EU ограничивает кадмий 0,01 % по массе однородного материала, а светочувствительный слой PDV-P8001 — сульфид кадмия. Для изделий, которые должны соответствовать RoHS, это серьёзное ограничение.
- Монтаж. Advanced Photonix запрещает паять фоторезисторы CdS оплавлением и в паровой фазе. Допустимая температура пайки выводов — 260 °C в течение 3 с на расстоянии 1/16 дюйма (1,6 мм) от корпуса; жало паяльника — не горячее 300 °C.
Итог: фоторезистор хорош для порога «день — ночь» с компаратором с гистерезисом, но не для измерения люксов.
Фототранзистор TEMT6000
Vishay TEMT6000X01 — кремниевый NPN-фототранзистор в прозрачном корпусе 1206 с максимумом чувствительности на 570 нм, полосой 440–800 нм по уровню 0,5 и углом половинной чувствительности ±60°. Его фототок почти пропорционален освещённости:
| Параметр (источник A, VCE = 5 В) | Значение |
|---|---|
| Фототок при 20 лк | 3,5–16 мкА, типично 10 мкА |
| Фототок при 100 лк | типично 50 мкА |
| Темновой ток | 3 нА, не больше 50 нА |
| Температурный коэффициент фототока | 1,18 %/К (источник A), 0,9 %/К (белый светодиод) |
| VCEO, не более | 6 В |
| Напряжение насыщения при 20 лк и IPCE = 1,2 мкА | 0,1 В |
Коллектор подключают к питанию, эмиттер — через нагрузочный резистор Rн к земле, а напряжение на резисторе подают на АЦП:
где S — чувствительность в микроамперах на люкс. Типичная — 50 мкА / 100 лк = 0,5 мкА/лк, наибольшая по разбросу — 16 мкА / 20 лк = 0,8 мкА/лк. С Rн = 10 кОм при питании 3,3 В типичный экземпляр упирается в насыщение около 640 лк: (3,3 − 0,1) В / 10 кОм = 320 мкА. Чтобы измерять до 1000 лк любым экземпляром, Rн должен быть не больше 3,2 В / 800 мкА = 4 кОм. Это оценка сверху: 0,1 В насыщения Vishay нормирует только при токе 1,2 мкА, а для сотен микроампер значения в даташите нет — Rн берут с запасом. Шаг 10-битного АЦП с опорой 3,3 В — 3,2 мВ, то есть при 10 кОм около 0,64 лк для типичного датчика; подробнее о шаге и опорном напряжении — в статье «АЦП».
Для люксов TEMT6000 подходит с оговорками: разброс фототока между экземплярами — в 4,6 раза, а температурный коэффициент 1,18 %/К даёт около 30 % на 25 К. В отличие от цифровых датчиков, он сам ничего не интегрирует, поэтому от мерцания ламп защищаются снаружи: DN26 для быстрых датчиков предлагает RC-цепочку, замедляющую отклик, а отсчёты АЦП можно усреднять за 50 мс или кратное время. Зато он обходится без I²C и, по даташиту Vishay, соответствует директиве RoHS 2002/95/EC.
Цифровые датчики I²C
Цифровой датчик освещённости объединяет фотодиод, интегрирующий АЦП и интерфейс I²C. По даташитам производителей:
| Параметр | BH1750FVI | TSL2561 | VEML7700 | OPT3001 |
|---|---|---|---|---|
| Производитель | ROHM | ams OSRAM (TAOS) | Vishay | Texas Instruments |
| Диапазон | код 0–65 535, при MTreg 69 до ≈ 54 600 лк; с MTreg 0,11–100 000 лк | 16 бит на канал, динамический диапазон 1 000 000 : 1 | 0–140 000 лк | 0,01–83 865,6 лк |
| Наименьший шаг | 0,5 лк (0,11 лк с MTreg) | — | 0,0042 лк | 0,01 лк |
| Время измерения | 120 мс (до 180), режим L — 16 мс (до 24) | 13,7, 101 или 402 мс | 25–800 мс | 100 или 800 мс |
| Питание | 2,4–3,6 В | 2,7–3,6 В | 2,5–3,6 В | 1,6–3,6 В |
| Уровни шины | 1,65 В…VCC (вывод DVI) | VIH от 2,1 В | подтяжки к 1,7–3,6 В | подтяжки к 1,6–5,5 В |
| Адрес I²C | 0x23 или 0x5C | 0x29, 0x39 или 0x49 | 0x10 | 0x44–0x47 |
| Ток при работе | 120 мкА при 100 лк | 0,24 мА | 45 мкА, 2–28 мкА в режимах PSM | 1,8 мкА в темноте, 3,7 мкА на полной шкале |
| Ток во сне | 0,01 мкА | 3,2 мкА | 0,5 мкА | 0,3 мкА |
| Спектр | пик 560 нм | канал 0 — видимый и ИК, канал 1 — ИК | близок к V(λ), отдельный канал White | пик 550 нм, ИК 0,2 % на 850 нм |
| Точность: что нормировано | разброс между экземплярами: 0,96–1,44 отсчёта на люкс (белый светодиод, 1000 лк) | показания / люксметр 0,65–1,35 (люминесцентная), 0,60–1,40 (накаливания) — оценка, не проверяется у каждого экземпляра | ±10 % между источниками света (замеры Vishay на 10 образцах) | 1800–2200 лк при 2000 лк (мин. / макс.) |
| Вывод прерывания | нет | INT | нет | INT |
| Идентификатор | нет | 0x5X в регистре 0x0A | 0x81 в младшем байте регистра 0x07 | 0x5449 в 0x7E, 0x3001 в 0x7F |
Все четыре работают только от низкого напряжения: с платой на 5 В нужны стабилизатор и согласование уровней, исключение — линии I²C у OPT3001, которые выдерживают 5,5 В. Подтягивающие резисторы считают как для любой шины — в статье «Интерфейс I²C».
BH1750FVI: отсчёт делить на 1,2
В текущем каталоге датчиков освещённости ROHM BH1750FVI нет: там BH1603FVC, BH1620FVC, BH1721FVC и BH1730FVC (проверено 18 октября 2026 года). Для новой разработки разумнее VEML7700 или OPT3001.
У BH1750 один фотодиод и три режима, каждый в непрерывном и однократном варианте; после однократного измерения датчик сам засыпает.
| Режим | Шаг | Время, типично / макс. | Код непрерывного / однократного |
|---|---|---|---|
| H-Resolution | 1 лк | 120 / 180 мс | 0x10 / 0x20 |
| H-Resolution2 | 0,5 лк | 120 / 180 мс | 0x11 / 0x21 |
| L-Resolution | 4 лк | 16 / 24 мс | 0x13 / 0x23 |
Остальные команды: 0x00 — выключение, 0x01 — включение, 0x07 — сброс регистра данных (только во включённом состоянии). Каждую команду передают отдельной транзакцией со STOP: две команды подряд датчик не принимает. ROHM рекомендует режим H-Resolution: длинное интегрирование подавляет помехи 50 и 60 Гц.
Освещённость считается по 16-битному отсчёту N (старший байт первым) и содержимому регистра времени измерения MTreg:
В режиме H-Resolution2 результат делят ещё на 2. Число 1,2 — типичное отношение отсчёта к люксам; у отдельных экземпляров оно от 0,96 до 1,44, отсюда ±20 % в даташите. ROHM пишет о диапазоне 1–65 535 лк, но это диапазон кода: при MTreg по умолчанию (69) наибольший код 65 535 соответствует 65 535 / 1,2 ≈ 54 600 лк.
Регистр MTreg (от 31 до 254) меняет чувствительность в 0,45–3,68 раза вместе со временем измерения: при 254 оно вырастает до 120 · 254 / 69 ≈ 440 мс. Цена отсчёта — 1,85, 0,83 и 0,23 лк при MTreg 31, 69 и 254 в режиме H-Resolution и вдвое меньше в H-Resolution2, до 0,11 лк. Записывают MTreg двумя командами: 0x40 | MT[7:5] и 0x60 | MT[4:0].
Адрес — 0x23, если вывод ADDR ниже 0,3 · VCC, и 0x5C, если выше 0,7 · VCC. Питание 2,4–3,6 В, предельно 4,5 В. Вывод DVI задаёт уровни шины (от 1,65 В до VCC) и одновременно служит асинхронным сбросом: после подачи VCC на нём должен быть ноль не меньше 1 мкс. ROHM приводит четыре схемы: DVI от вывода микроконтроллера, от супервизора питания (двухтактного или с открытым стоком и резистором 1 кОм), от отдельного источника, который включается позже VCC, и RC-цепочку 1 кОм / 1 мкФ от VCC к DVI. О последней ROHM предупреждает, что сброс она может не обеспечить: в примере для VCC = 2,8 В питание должно нарастать от 0 до 2,4 В не дольше 100 мкс, а перед повторным включением VCC должно не меньше 25 мс оставаться ниже 0,05 В. Если сброс не обеспечен, ADDR подключают не напрямую, а через резистор около 100 кОм: этот вывод внутри — буфер с тремя состояниями для заводского теста.
TSL2561: два канала и формула по их отношению
В TSL2561 два фотодиода: канал 0 видит видимый свет и ИК, канал 1 — в основном ИК. По отношению каналов ams вычитает инфракрасную составляющую. Формула для корпуса T (TMB-6), где C₀ и C₁ — отсчёты каналов:
Коэффициенты соответствуют времени интегрирования 402 мс и усилению 16×: если подставить в первую строку отклик из той же таблицы ams — 36 и 4 отсчёта на люкс для люминесцентной лампы, — получится 0,99 лк на каждый люкс. При другом времени отсчёты сначала делят на масштаб 0,034 (13,7 мс) или 0,252 (101 мс), а при усилении 1× ещё умножают на 16. При умножении обоих каналов на одно число k отношение C₁/C₀ не меняется, а результат по любой строке тоже умножается на k, поэтому то же самое можно сделать с готовым результатом. Если канал дошёл до полной шкалы — 5047 при 13,7 мс, 37 177 при 101 мс, 65 535 при 402 мс, — результат недостоверен, и время или усиление уменьшают. Формула выведена для датчика в открытом пространстве: окно или световод меняет свет на кристалле.
Адрес задаёт вывод ADDR SEL: 0x29 — на земле, 0x39 — свободен, 0x49 — на питании. Перед адресом регистра в командном байте ставят бит CMD (0x80), для чтения слова — ещё бит WORD (0x20). Датчик включают записью 0x03 в регистр 0x00; регистр 0x01 по умолчанию содержит 0x02 — 402 мс и усиление 1×. Каналы читают словами из регистров 0x0C и 0x0E (командные байты 0xAC и 0xAE), младший байт первым.
TSL2561T ams сняла с производства: по уведомлению от 20 мая 2021 года последние заказы принимались до 15 октября 2021 года, а последняя отгрузка была запланирована на конец июля 2022 года. Модули с ним ещё встречаются, но для новой разработки лучше взять VEML7700 или OPT3001.
VEML7700: усиление, время и поправка
VEML7700 питается от 2,5–3,6 В, его адрес фиксирован — 0x10, вывода прерывания нет. Подтягивающие резисторы шины можно подключить к своему питанию 1,7–3,6 В — к уровню микроконтроллера.
Настройки — в 16-битном регистре 0x00:
| Поле | Биты | Значения |
|---|---|---|
| ALS_GAIN | 12:11 | 00 — ×1, 01 — ×2, 10 — ×1/8, 11 — ×1/4 |
| ALS_IT | 9:6 | 1100 — 25 мс, 1000 — 50 мс, 0000 — 100 мс, 0001 — 200 мс, 0010 — 400 мс, 0011 — 800 мс |
| ALS_SD | 0 | 0 — работа, 1 — выключен (по умолчанию) |
Результат читают из регистра 0x04, канал White с широким спектром — из 0x05; слово передаётся младшим байтом вперёд. После включения Vishay советует подождать 2,5 мс, а без режима энергосбережения читать результат не раньше, чем пройдёт время интегрирования. Цена отсчёта обратно пропорциональна усилению и времени интегрирования; таблицу Vishay целиком описывает формула
— от 0,0042 лк при G = 2 и 800 мс до 2,1504 лк при G = 1/8 и 25 мс; полная шкала 65 535 отсчётов — от 275 до 140 926 лк. Наименьшая обнаруживаемая освещённость — 0,008 лк: это 2 отсчёта при самом чувствительном режиме. Vishay советует начинать с усиления 1/8 или 1/4, чтобы не получить насыщение и переполнение, и повышать его, только если отсчётов не больше 100; к тому же при усилении 1 и 2 датчик выше 100 лк нелинеен. Для 1/4 и 1/8 выше примерно 1000 лк результат поправляют многочленом, где x — освещённость в люксах до поправки:
В примере Vishay 5581 отсчёт при G = 1/4 и 100 мс даёт 5581 · 0,2688 = 1500 лк до поправки и 1658 лк после. Ещё две оговорки из рекомендаций: допуск времени интегрирования — ±30 %, а разные источники — светодиоды, люминесцентные лампы, дневной свет — совпадают в пределах ±10 %; галогенная лампа с сильным ИК может показать больше.
OPT3001: экспонента и мантисса
OPT3001 сам выбирает диапазон (режим автоматической полной шкалы) и отдаёт результат в формате с плавающей точкой: в регистре 0x00 биты 15:12 — экспонента e, биты 11:0 — мантисса m. Байты регистров передаются старшим вперёд.
При e = 0 цена отсчёта 0,01 лк и шкала 40,95 лк, при e = 11 — 20,48 лк и 83 865,6 лк. Например, слово 0x5ABC: e = 5, m = 0xABC = 2748, освещённость 0,32 · 2748 = 879,36 лк.
После подачи питания OPT3001 спит: регистр конфигурации 0x01 содержит 0xC810 — автоматический диапазон, 800 мс, режим M = 00. Для непрерывных измерений в него пишут 0xCC10, для однократного — 0xCA10. Преобразование длится на 3 мс дольше интегрирования; при 100 мс на диапазонах до e = 5 теряется до трёх младших разрядов. Адрес задаёт вывод ADDR: 0x44 — GND, 0x45 — VDD, 0x46 — SDA, 0x47 — SCL; первые два совпадают с адресами Sensirion SHT3x из статьи «Датчики влажности». Проверить, что на шине именно OPT3001, можно по регистрам 0x7E (0x5449 — «TI» в ASCII) и 0x7F (0x3001).
Ток при измерениях — 1,8 мкА в темноте и 3,7 мкА на полной шкале, в выключенном состоянии — 0,3 мкА; отклик на ИК 850 нм — 0,2 %, разброс по источникам света (накаливания, галогенная, люминесцентная) — 4 % без защитного стекла. Если SCL удерживают в нуле 28 мс, интерфейс датчика сбрасывается сам.
Пример: от кода к люксам
BH1750 за окном с пропусканием 50 %. ROHM предлагает компенсировать окно чувствительностью: удвоить MTreg с 69 до 138 (0b1000_1010). Команды: 0x44 (0x40 | 0b100), затем 0x6A (0x60 | 0b01010), затем 0x20 — однократное измерение. Время вырастает вдвое — до 240 мс, не больше 360 мс. Пусть прочитаны байты 0x13 и 0x88, то есть N = 5000. Освещённость снаружи окна — 5000 / 1,2 ≈ 4167 лк, на самом кристалле — вдвое меньше: 5000 / 1,2 · 69 / 138 ≈ 2083 лк. С учётом разброса 0,96–1,44 отсчёта на люкс у некалиброванного датчика тот же отсчёт означает от 3472 до 5208 лк снаружи.
VEML7700 на ярком свету. G = 1/8 (биты 12:11 = 10), 100 мс (биты 9:6 = 0000), ALS_SD = 0 — в регистр 0x00 записывают 0x1000. Цена отсчёта 0,5376 лк. Отсчёт 10 000 даёт 5376 лк до поправки, а многочлен Vishay — 6786 лк: на таком уровне поправка добавляет 26 %.
TSL2561 с настройками по умолчанию. После включения — 402 мс и усиление 1×. Пусть C₀ = 120, C₁ = 36, отношение 0,30. Формула для «сырых» отсчётов даёт 0,0304 · 120 − 0,062 · 120 · 0,301,4 ≈ 2,27 лк, а с поправкой на усиление (×16) — 36,3 лк. Забытый множитель 16 занижает освещённость в 16 раз.
Размещение за окном и рассеивателем
Датчик в корпусе видит мир через отверстие, и оно ограничивает поле зрения. ams в DN13B оценивает половинный угол по расстоянию от кристалла до наружной поверхности, а долю дошедшего света — как sin²θ для датчика с косинусной характеристикой:
где da — диаметр отверстия, ddp — расстояние от кристалла до верха корпуса датчика, tpc — толщина стенки, dapc — зазор между датчиком и стенкой. Отверстие 2 мм при 0,25 мм от кристалла до верха корпуса, стенке 1 мм и зазоре 0,25 мм даёт θ ≈ 34° и лишь 31 % света. По таблице ams при половинном угле 45° до датчика доходит 50 % света, при 30° — 25 %, при 15° — 6,7 %, поэтому ams рекомендует угол не меньше ±30°. Отверстие расширяют на допуски установки: в примере ams они дают ±0,5 мм в сумме и ±0,26 мм по корню из суммы квадратов, то есть отверстие шире на 0,52 мм. Для TSL2561 с вытянутой прямоугольной площадкой ams отдельно требует, чтобы край активной области был не ближе 0,5 мм к краю отверстия. Если угла не хватает, ставят световод. TI для OPT3001 советует поле зрения не меньше ±35°, лучше ±45°, и предупреждает, что световоды и решётчатые окна заметно искажают результат, если их оптику не просчитать.
У VEML7700 угол половинной чувствительности около ±55°, и Vishay считает ширину окна над чувствительной площадкой как w = 0,5 мм + 2 · d · tg 55°, где d — расстояние до наружной поверхности окна: при d = 1 мм выходит 3,36 мм. У BH1750 фотодиод размером 0,25 × 0,3 мм находится посередине ширины корпуса, в 1,3 мм от края с выводами 4–6, и по рисунку ROHM окно должно пропускать свет на круг радиусом не меньше 0,4 мм (диаметром 0,8 мм) с центром на фотодиоде.
Тёмное декоративное стекло пропускает обычно 5–30 % видимого света, иногда меньше 1 %, а некоторые чернила и красители почти прозрачны для ИК (TI). За таким стеклом отношение ИК к видимому растёт, и выигрывает датчик с сильным подавлением ИК. Любое окно, рассеиватель или светофильтр ослабляет свет по-разному на разных длинах волн (DN26), поэтому коэффициент пропускания измеряют люксметром на собранном изделии и учитывают при пересчёте: у BH1750 для этого есть MTreg, у VEML7700 и OPT3001 результат делят на измеренное пропускание. У TSL2561 этого мало: окно ослабляет видимый свет и ИК по-разному и меняет отношение C₁/C₀, а формула ams выведена для открытого датчика — с окном нужна собственная калибровка.
Типичные ошибки
- Люксы по фоторезистору. Разброс R при 10 лк — в 3,7 раза; даже со средним сопротивлением в формуле ошибка у крайних экземпляров — до 3 раз в обе стороны, плюс разброс показателя γ.
- Забыли нормировку. У TSL2561 формула написана для 402 мс и 16×, у VEML7700 цена отсчёта зависит и от усиления, и от времени.
- Две команды BH1750 в одной транзакции. Датчик принимает одну команду до STOP; MTreg записывают двумя отдельными передачами.
- Высокое усиление VEML7700 на ярком свету. При усилении 1 и 2 выше 100 лк показания нелинейны, а без поправочного многочлена выше примерно 1000 лк результат занижен.
- Забыли разбудить. После подачи питания все четыре цифровых датчика спят: TSL2561 включают записью 0x03 в регистр 0x00, VEML7700 — сбросом бита ALS_SD, OPT3001 — записью режима в регистр 0x01, BH1750 — командой измерения. VEML7700 после включения нужно 2,5 мс и полное время интегрирования.
- Конфликт адресов. OPT3001 на 0x44 или 0x45 не уживается на одной шине с SHT3x по тому же адресу.
- Нет сброса BH1750. Если после подачи питания на DVI нет нуля хотя бы 1 мкс, ROHM предупреждает, что датчик может работать неправильно, а состояние выводов ADDR, SDA и SCL не определено.
- Запаяли центральную площадку BH1750. ROHM требует её не паять и никуда не подключать: она на потенциале земли, и пайка грозит сбоями и большим током.
- Мерцание у аналогового датчика. TEMT6000 ничего не интегрирует, поэтому одиночный отсчёт АЦП ловит мгновенную яркость лампы; нужны RC-цепочка или усреднение за 50 мс или кратное время (DN26).
- Свет от своего изделия. Индикаторный светодиод или подсветка экрана рядом с окном датчика добавляют к измерению собственную засветку.
Пример кода: BH1750 на Arduino
Скетч делает однократные измерения в режиме H-Resolution и учитывает MTreg — коды команд и формула взяты из даташита ROHM.
#include <Wire.h>
// ROHM BH1750FVI, Technical Note Rev.D (2011.11)
const uint8_t BH1750_ADDR = 0x23; // ADDR low; 0x5C with ADDR high
const uint8_t CMD_POWER_ON = 0x01;
const uint8_t CMD_ONE_TIME_H = 0x20; // one-shot, 1 lx steps, then power down
const uint8_t MTREG_DEFAULT = 69;
uint8_t mtreg = MTREG_DEFAULT; // valid range 31..254
// The sensor takes one opcode per transaction: each needs its own STOP.
bool bh1750Command(uint8_t opcode) {
Wire.beginTransmission(BH1750_ADDR);
Wire.write(opcode);
return Wire.endTransmission() == 0;
}
bool bh1750SetMtreg(uint8_t mt) {
if (mt < 31 || mt > 254) return false;
if (!bh1750Command(0x40 | (mt >> 5))) return false; // 01000_MT[7:5]
if (!bh1750Command(0x60 | (mt & 0x1F))) return false; // 011_MT[4:0]
mtreg = mt;
return true;
}
// Illuminance in lux, or a negative value on a bus error.
float bh1750ReadLux() {
if (!bh1750Command(CMD_ONE_TIME_H)) return -1.0f;
// Max 180 ms at MTreg = 69; the measurement time scales with MTreg.
delay((180UL * mtreg + 68) / 69);
if (Wire.requestFrom(BH1750_ADDR, (uint8_t)2) != 2) return -2.0f;
uint16_t raw = (uint16_t)Wire.read() << 8; // high byte first
raw |= Wire.read();
return raw / 1.2f * MTREG_DEFAULT / mtreg;
}
void setup() {
Serial.begin(115200);
Wire.begin();
bh1750Command(CMD_POWER_ON);
bh1750SetMtreg(MTREG_DEFAULT);
}
void loop() {
Serial.println(bh1750ReadLux(), 1);
delay(1000);
}
С bh1750SetMtreg(138) функция bh1750ReadLux() вернёт освещённость на кристалле; если датчик стоит за окном с пропусканием 50 %, освещённость снаружи — это raw / 1.2f, без множителя 69 / MTreg. Другие датчики — в разделе «Датчики».
Частые вопросы
Какой датчик освещённости выбрать для Arduino?
Для готового модуля проще всего BH1750: одна формула (отсчёт / 1,2 = люксы), адрес 0x23 или 0x5C, шаг 1 лк. Но в текущем каталоге ROHM BH1750FVI нет (проверено 18 октября 2026 года), поэтому для новой разработки разумнее VEML7700 или OPT3001. OPT3001 лучше за тёмным стеклом и под лампами с сильным ИК: отклик на ИК 850 нм — 0,2 %, диапазон 0,01–83 865 лк, ток 1,8 мкА. У VEML7700 шаг 0,0042 лк, а наименьшая обнаруживаемая освещённость по Vishay — 0,008 лк. TSL2561 ams сняла с производства: последняя отгрузка была запланирована на конец июля 2022 года.
Как перевести показания BH1750 в люксы?
В режиме H-Resolution при регистре MTreg по умолчанию (69) освещённость равна 16-битному отсчёту, делённому на 1,2: например, байты 0x83 и 0x90 дают 33 680 отсчётов и 28 067 лк. В режиме H-Resolution2 результат делят ещё на 2, а при другом MTreg умножают на 69 / MTreg. Число 1,2 — типичное, у отдельных экземпляров от 0,96 до 1,44, то есть ±20 %.
Какие адреса I²C у BH1750, TSL2561, VEML7700 и OPT3001?
BH1750 — 0x23 при ADDR на земле и 0x5C при ADDR на питании; TSL2561 — 0x29, 0x39 или 0x49 (вывод ADDR SEL на землю, свободен или на питание); VEML7700 — всегда 0x10; OPT3001 — 0x44–0x47 в зависимости от того, соединён ADDR с GND, VDD, SDA или SCL. Адреса 0x44 и 0x45 совпадают с адресами датчиков влажности Sensirion SHT3x.
Можно ли измерять люксы фоторезистором?
Только грубо. У фоторезистора PDV-P8001 сопротивление при 10 лк — от 3 до 11 кОм у разных экземпляров, зависимость степенная с типичным показателем 0,6, время нарастания типично 50 мс. Если без калибровки считать по среднему сопротивлению 5,7 кОм, ошибка у крайних экземпляров — до 3 раз в обе стороны, и это без учёта разброса показателя. Фоторезистор хорош для порога «день — ночь»; кроме того, он содержит кадмий, а RoHS ограничивает кадмий 0,01 % по массе.
Можно ли питать BH1750 и VEML7700 от 5 В?
Нет. BH1750 рассчитан на 2,4–3,6 В при предельных 4,5 В, VEML7700 — на 2,5–3,6 В при предельных 4 В, TSL2561 — до 3,6 В при предельных 3,8 В. Нужен стабилизатор 3,3 В и согласование уровней; на готовых модулях они бывают — смотрите схему модуля. У OPT3001 питание тоже до 3,6 В, но его выводы I²C выдерживают 5,5 В.
Источники
- ROHM. BH1750FVI Digital 16bit Serial Output Type Ambient Light Sensor IC: Technical Note (No.11046EDT01, Rev.D, 2011.11); архивная копия официального файла ROHM с rohmfs.rohm.com в Wayback Machine, снимок 4 августа 2016 года — Features — 1–65 535 лк, 0,11–100 000 лк с регистром MTreg, разброс ±20 %, подавление помех 50/60 Гц; Absolute Maximum Ratings — 4,5 В; Operating Conditions — VCC 2,4–3,6 В, DVI 1,65 В…VCC; Electrical Characteristics — 120 мкА при 100 лк, 0,01 мкА в Power Down, пик 560 нм, отношение отсчёт/люкс 0,96–1,2–1,44 (белый светодиод, 1000 лк), разрешение 1 и 4 лк, время 120/180 и 16/24 мс, отношение лампа накаливания / люминесцентная 1; Instruction Set Architecture и Measurement mode explanation (с. 5) — коды команд, длинное время измерения режима H-Resolution подавляет помехи, в том числе 50/60 Гц; Measurement sequence example — пересчёт отсчёт/1,2 и пример 28 067 лк; Timing chart for VCC and DVI power supply sequence и Terminal Description — ноль на DVI не короче 1 мкс после подачи VCC, иначе ADDR через резистор около 100 кОм; Application circuit example of DVI terminal (с. 8–9) — сброс от вывода МК, от супервизора питания (двухтактного или с открытым стоком и резистором 1 кОм), от отдельного источника DVI, а в примере 4 — RC-цепочкой 1 кОм / 1 мкФ с оговоркой, что она может не обеспечить сброс: при VCC 2,8 В нарастание 0→2,4 В не дольше 100 мкс, перед повторным включением VCC не выше 0,05 В не меньше 25 мс; I2C Bus Access — адреса 0100011 и 1011100, одна команда на транзакцию; Adjust measurement result for influence of optical window — MTreg 31–69–254, формула лк на отсчёт, таблица 1,85/0,83/0,23 и 0,93/0,42/0,11 лк, удвоение времени; H-Resolution Mode2; About an optical design on the device (с. 14) — фотодиод 0,25 × 0,3 мм посередине ширины корпуса и в 1,3 мм от края с выводами 4–6, свет должен покрывать круг радиусом не меньше 0,4 мм с центром на фотодиоде; Cautions on use, п. 10 — центральную площадку не паять
- ROHM. Ambient Light Sensor ICs: каталог продукции (проверено 18 октября 2026 года) — в каталоге BH1603FVC, BH1620FVC, BH1721FVC и BH1730FVC; BH1750FVI в нём нет
- ams OSRAM. TSL2561 Light-to-Digital Converter: Datasheet (DS000110, v1-01, 2018-Apr-23) — General Description — канал 0 (видимый + ИК) и канал 1 (ИК), эффективный динамический диапазон 20 бит при разрешении 16 бит; Fig. 1 (Key Benefits & Features) — динамический диапазон 1 000 000 : 1, подавление пульсаций 50/60 Гц; Fig. 6–7 — питание 2,7–3,6 В, VIH от 2,1 В, ток 0,24 мА и 3,2 мкА; Fig. 8, примечания 4–7 — время 13,7/101/402 мс, полная шкала 5047/37 177/65 535, отклик 36 и 4 отсчёта на люкс при 402 мс и 16×, усиление 1× в 16 раз меньше, отношение показаний к люксметру 0,65–1,35 и 0,60–1,40 (оценка по разбросу параметров на 640 и 940 нм, с лампами не проверяется у каждого экземпляра); Fig. 13 — адреса 0101001, 0111001, 1001001; Fig. 15–18 — регистр команд (бит CMD), включение записью 03h, регистр Timing (по умолчанию 02h, GAIN, INTEG), масштабы 0,034/0,252/1; Fig. 23 — ID, PARTNO 0101; Calculating Lux — кусочная формула для корпуса T, только для открытого датчика
- ams AG. End of Life Notification Plano Test Site (TCS3xxx_TSL2xxx_EN001015, 1-00, May 20, 2021) — TSL2561T в списке снимаемых с производства: последний заказ до 15 октября 2021 года, последняя отгрузка до конца июля 2022 года
- Vishay Semiconductors. VEML7700 High Accuracy Ambient Light Sensor With I2C Interface (Document Number 84286, Rev. 1.8, 28-Nov-2024) — Features и Product Summary — 2,5–3,6 В, шина 1,7–3,6 В, 0–140 000 лк, 0,0042 лк, подавление мерцания 100 и 120 Гц; Basic Characteristics — 0,5 мкА, 2/8/45 мкА; Device Address — 0x10; нет вывода прерывания; Table 1 — поля ALS_GAIN, ALS_IT, ALS_SD, регистр 00h по умолчанию в выключенном состоянии; регистры 04h ALS, 05h WHITE; Table 8 — ID 0x81; таблица Refresh Time, IDD, and Resolution Relation; Fig. 8 — схема включения: R3 10 Ом и C1 10 мкФ только при сильно зашумлённом питании, C2 100 нФ, подтяжки R1 и R2 больше 1 кОм, например 2,2–4,7 кОм
- Vishay Semiconductors. Designing the VEML7700 Into an Application: Application Note (Document Number 84323, revision 06-Mar-2025) — Wake-up — ожидание 2,5 мс; Resolution and gain settings (с. 3) — начинать с усиления 1/8 или 1/4, чтобы избежать насыщения и переполнения; ALS_IT — допуск времени ±30 %; Calculating the lux level — таблица разрешения и максимума от 0,0042 до 2,1504 лк и от 275 до 140 926 лк, усиление 1 и 2 нелинейно выше 100 лк, пример 5581 × 0,2688 = 1500 лк → 1658 лк и коэффициенты поправочного многочлена от освещённости до поправки; наименьшая обнаруживаемая освещённость 0,008 лк (2 отсчёта); Application-dependent lux calculation — порог 100 отсчётов; Lux level matching — ±10 % между источниками на 10 образцах, галоген выше; White channel — отношение больше 2 у источников с сильным ИК; Power-saving modes — ожидание не меньше времени интегрирования; Mechanical considerations — угол половинной чувствительности ±55°, ширина окна w = 0,5 мм + 2 · d · tg 55°; Fig. 2 — та же схема, подтяжки к питанию 1,7–3,6 В на уровне микроконтроллера
- Texas Instruments. OPT3001 Ambient Light Sensor (ALS) (SBOS681C, July 2014, revised November 2017) — разд. 1 — 0,01–83 000 лк, более 99 % подавления ИК, 1,6–3,6 В, выводы до 5,5 В; разд. 6.5 — пик 550 нм, полная шкала 83 865,6 лк, 1800–2200 лк при 2000 лк, ИК 0,2 % на 850 нм, разброс по источникам 4 %, угол половинной мощности 47°, ток 1,8 мкА в темноте (3,7 мкА на полной шкале) и 0,3 мкА, время 800 и 100 мс, преобразование на 3 мс дольше интегрирования; разд. 7.1 — интегрирование 100 или 800 мс сводит влияние 50 и 60 Гц к минимуму; разд. 7.3.4 — таймаут 28 мс, табл. 1 — адреса 1000100–1000111; разд. 7.5 — байты регистра передаются старшим вперёд; табл. 7–9 — экспонента и мантисса, lux = 0,01 · 2^E · R; табл. 10 — регистр конфигурации C810h, поля RN, CT, M, потеря разрядов при 100 мс; табл. 14–15 — ID 5449h и 3001h; разд. 8.1.2 — поле зрения не меньше ±35°, лучше ±45°, пропускание тёмных окон 5–30 % и ниже 1 %, решётчатые окна и световоды
- Vishay Semiconductors. TEMT6000X01 Ambient Light Sensor (Document Number 81579, Rev. 1.9, 23-Aug-11) — Description — NPN-фототранзистор в корпусе 1206, пик 570 нм; Features — соответствие директиве RoHS 2002/95/EC; Absolute Maximum Ratings — VCEO 6 В, 20 мА, 100 мВт; Basic Characteristics — темновой ток 3 и 50 нА, фототок 3,5–10–16 мкА при 20 лк и 50 мкА при 100 лк (источник A, VCE 5 В), температурный коэффициент фототока 1,18 %/К (источник A) и 0,9 %/К (белый светодиод), ±60°, 440–800 нм, VCEsat 0,1 В при 20 лк и IPCE 1,2 мкА
- Advanced Photonix. PDV-P8001 Photocell (CdS) — Photoresistor (DS PDV-P8001 Rev. B) — фоторезистор на сульфиде кадмия, 400–700 нм; Absolute Maximum Ratings — 150 В, 90 мВт; Electro-Optical Specifications — темновое сопротивление не меньше 0,2 МОм через 10 с после 10 лк, 3–11 кОм при 10 лк и 2856 К, показатель наклона 0,6 между 10 и 100 лк, типичные нарастание 50 мс и спад 20 мс; Mechanical Specifications — температура пайки выводов 260 °C 3 с на расстоянии 1/16 дюйма от корпуса; Soldering Instructions — жало паяльника не горячее 300 °C; Special Considerations для CdS — не паять оплавлением и в паровой фазе
- TAOS / ams AG. DN21: Radiometric and Photometric Measurements with TAOS PhotoSensors (AN000167, March 12, 2007) — функция V(λ), принятая CIE в 1924 году, максимум на 555 нм, у 380 и 780 нм спадает практически до нуля; 683 лм/Вт на 555 нм; Equation 1 — интеграл с V(λ) от 380 до 780 нм; лк = лм/м²; 50 000–100 000 лк на прямом солнце и 20–50 лк при слабом освещении в помещении; кремний 300–1100 нм, ИК-светодиод 880 нм даёт ноль люксов
- TAOS / ams AG. DN26: Ambient Light Sensing (ALS) (AN000172, March 31, 2009) — Design Considerations — много ИК у ламп накаливания и солнца; мерцание 100 и 120 Гц и интегрирование за время, кратное 50 мс, а для быстрых датчиков — RC-цепочка, замедляющая отклик; скользящее среднее для медленной реакции; апертуры, линзы и фильтры в оптическом пути
- TAOS / ams AG. DN13B: Optical Window Design for ALS Devices (AN000104, February 2010) — формула половинного угла tg θ = (da/2) / (ddp + tpc + dapc), доля света sin²θ, пример (Figure 5): отверстие 2 мм, 0,25 + 1 + 0,25 мм → 34° и 31 %; Aperture Impact — при половинном угле 45°, 30°, 20° и 15° до датчика доходит 50, 25, 12 и 6,7 % света; для TSL2561 с прямоугольной площадкой край активной области не ближе 0,5 мм к краю отверстия; Mechanical Tolerances — допуски в сумме ±0,5 мм, по корню из суммы квадратов ±0,26 мм, отверстие расширить на 0,52 мм; Conclusions — угол не меньше ±30°, тогда до датчика доходит не меньше 25 % света; световод при недостаточном угле
- Directive 2011/65/EU of the European Parliament and of the Council on the restriction of the use of certain hazardous substances in electrical and electronic equipment (RoHS), Annex II, as adopted (OJ L 174, 1.7.2011); текст на legislation.gov.uk — приложение II — кадмий не больше 0,01 % по массе в однородном материале
- Sensirion. Datasheet SHT3x-DIS: Humidity and Temperature Sensor (Version 7, December 2022) — табл. 8 — адреса I²C 0x44 и 0x45 (вывод ADDR на низком или высоком уровне)
- BIPM. The International System of Units (SI), 9th edition 2019 (V4.01, June 2026) — разд. 2.2 — световая эффективность монохроматического излучения частотой 540 · 10¹² Гц, Kcd = 683 лм/Вт, скорость света 299 792 458 м/с; разд. 2.3.4, табл. 4 — люкс, единица освещённости, лм/м²
Нашли ошибку?
Смотрите также
- ДатчикиТок и температура: шунты, датчики Холла, термисторы, термопары — подключение и расчёт
- I²CSDA и SCL, START/STOP, ACK, адреса, скорости, расчёт подтяжек
- Адрес I²C7-битный адрес ведомого и байт адреса с битом R/W
- Делитель напряженияВыход, ток, нагрузка, подбор пары резисторов
- АЦПКвантование, формула кода, SAR, время выборки, погрешности, передискретизация
- ФототранзисторТранзистор, управляемый светом: оптопары, CTR, насыщение, скорость