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

Датчик света помогает роботу искать лампу, оценивать освещённость трассы, включать подсветку или замечать тень. Но разные датчики света отвечают на разные вопросы: один выдаёт условное напряжение, другой старается посчитать люксы, третий отдельно видит инфракрасную составляющую.
Фоторезистор с делителем даёт аналоговое напряжение, которое читает АЦП. Цифровые датчики вроде BH1750, TSL2591 и OPT3001 имеют встроенную обработку и передают результат по I²C. Их числа нельзя сравнивать без учёта спектра света, диапазона и времени измерения.
Освещённость и люкс
Освещённость измеряют в люксах. Эта величина учитывает не только мощность света, но и чувствительность человеческого глаза к разным длинам волн. Поэтому «ярко для глаза» и «сильно для датчика» не всегда совпадают.
В робототехнике люксы удобны для задач вроде автоматической подсветки. Для движения к лампе иногда достаточно относительного сравнения: левый датчик получил больше света, чем правый.
Зачем это нужно
Пусть робот должен повернуться к настольной лампе. Если поставить два LDR-модуля слева и справа, программа может сравнивать их аналоговые коды. Но под солнечным светом, лампой накаливания и белым светодиодом эти коды могут вести себя по-разному.
Если нужен более осмысленный уровень освещённости, берут цифровой датчик. Например, BH1750 возвращает результат в люксах, а OPT3001 специально приближает спектральный отклик к человеческому глазу.
Примеры датчиков

| Датчик | Выход | Диапазон/особенность | Главный вопрос |
|---|---|---|---|
| LDR-модуль | аналоговый A0 и иногда пороговый DO | шкала зависит от резистора делителя | как код АЦП связан со светом? |
| BH1750 | I²C | готовый результат в люксах | хватает ли диапазона и скорости? |
| TSL2591 | I²C | видимый и ИК-каналы, широкий диапазон | какой спектр реально измеряется? |
| OPT3001 | I²C | датчик окружающего света с фильтром под глаз | почему он ближе к люксметру? |
Главное отличие: LDR-модуль отдаёт напряжение, которое ещё нужно интерпретировать через АЦП, а цифровые датчики уже выполняют оцифровку и часть обработки внутри микросхемы.
Главная идея
Свет попадает на чувствительный элемент и меняет электрический сигнал. Затем этот сигнал превращается в число:
свет -> чувствительный элемент -> напряжение или внутренний код -> программа
У LDR-модуля программа видит условный код АЦП. У BH1750, TSL2591 и OPT3001 программа читает регистры по I²C. В обоих случаях важно понимать, какую шкалу обещает именно эта модель.
Фоторезистор, делитель и цифровой датчик
Фоторезистор меняет сопротивление. Чтобы контроллер получил напряжение, его включают в делитель с постоянным резистором. Если поменять номинал резистора или питание, коды АЦП изменятся даже при том же свете.
Цифровой датчик объединяет фоточувствительный элемент, оптический фильтр, АЦП и регистры настройки. Контроллер задаёт режим измерения и читает результат по цифровой шине.

Почему одинаковый свет даёт разные числа
| Причина | Что происходит |
|---|---|
| Спектральная чувствительность | сенсор и глаз по-разному реагируют на цвета и ИК-свет |
| Насыщение | слишком яркий свет упирает датчик в верхний предел |
| Время измерения | длинная выборка сглаживает мерцание, но замедляет реакцию |
| Геометрия | угол, экран, корпус и расстояние до лампы меняют поток света |
| Загрязнение окна | пыль или царапины уменьшают сигнал |
Поэтому для робота, который едет по линии, можно использовать относительное сравнение. Для измерения условий в помещении лучше выбирать датчик с паспортным диапазоном в люксах и проверять его рядом с эталонным прибором.
Что запомнить про датчик света
- Код LDR-модуля — это не люксы, а результат делителя и АЦП.
- Цифровой датчик света удобнее для измерения освещённости, но тоже имеет диапазон и настройки.
- Разные источники света могут давать разные отношения показаний.
- Для быстрых задач важны частота опроса и задержка фильтра.
Практика
- Запишите сырые значения LDR-модуля в тени, под лампой и у окна.
- Сравните два одинаковых LDR-модуля: совпадают ли их коды при одном освещении?
- Найдите в документации цифрового датчика его диапазон в люксах и интерфейс.
Проверьте себя
- Почему фоторезистору нужен делитель напряжения?
- Почему код АЦП нельзя сразу назвать люксами?
- Чем BH1750 отличается от LDR-модуля для программы?
- Как мерцание лампы может влиять на показания?
Сначала ответьте без подсказки. Ответ можно считать полным, если вы:
- формулируете основную мысль своими словами;
- называете важные условия, ограничения или меры безопасности;
- для схемы, кода или расчёта показываете ход решения и ожидаемый результат.
Если один из пунктов объяснить не получается, найдите соответствующую главу статьи, перечитайте её и повторите ответ.
Словарь статьи
- Освещённость — световой поток на единицу площади.
- Люкс — единица освещённости.
- Фоторезистор — элемент, сопротивление которого зависит от света.
- Делитель напряжения — схема из двух сопротивлений, создающая измеряемое напряжение.
- Спектральная чувствительность — зависимость отклика датчика от длины волны света.
Связанные темы
- АЦП — как аналоговый световой модуль превращается в код.
- Датчики линии — где свет используется для распознавания поверхности.
- Калибровка датчиков — как выбрать рабочие пороги.
Источники
- ROHM. BH1750FVI ambient light sensor.
- Texas Instruments. OPT3001 Ambient Light Sensor.
- ams OSRAM. TSL2591 light-to-digital sensor.