Перейти к содержанию

VEML7700 — цифровой датчик освещённости с I²C

VEML7700 — датчик освещённости Vishay с 16-битным АЦП и шиной I²C: от тысячных долей люкса до 140 000 лк. Он прост в подключении, но у него две ловушки: после включения питания датчик выключен, а на больших усилениях и при ярком свете показания нелинейны. Разбираем по даташиту и указаниям по применению Vishay.

Обновлено Редакция GAW

VEML7700 — датчик внешней освещённости (ambient light sensor) Vishay в миниатюрном прозрачном корпусе 6,8 × 2,35 × 3,0 мм. Внутри — фотодиод со спектральной характеристикой, близкой к глазу, усилитель, 16-битный интегрирующий АЦП, термокомпенсация и интерфейс I²C. Кроме основного канала ALS есть второй канал WHITE с более широким спектром. Сравнение с BH1750, TSL2561 и OPT3001 — в статье «Датчики освещённости».

Коротко

  • Питание — 2,5–3,6 В, типично 3,3 В; шина I²C — от 1,7 до 3,6 В.
  • Адрес — 0x10, без выводов выбора адреса.
  • Диапазон — от 0 до примерно 140 000 лк, лучшее разрешение 0,0042 лк на отсчёт.
  • Потребление — 0,5 мкА в отключении, 45 мкА при непрерывных измерениях, 2–28 мкА в режимах энергосбережения.
  • После включения — датчик в режиме отключения, его нужно включить записью в регистр 00h.

Распиновка

ВыводОбозначениеНазначение
1SCLтактовая линия I²C
2VDDпитание 2,5–3,6 В
3GNDобщий провод
4SDAлиния данных I²C

Вывода прерывания у VEML7700 нет: флаги пересечения порогов есть только в регистре 06h, и их приходится опрашивать по шине. Корпус выпускается в двух исполнениях упаковки на ленте: VEML7700-TR — для монтажа боком, VEML7700-TT — окном вверх.

Параметры

По даташиту при 25 °C:

ПараметрЗначение
Питание VDD2,5–3,6 В, типично 3,3 В; предельное 4 В
Уровни шины I²Cединица от 1,3 до 3,6 В, ноль от −0,3 до 0,4 В (при VDD = 3,3 В)
Частота SCLот 10 до 400 кГц
Втекающий ток SDA в состоянии нуляне меньше 3 мА
Ток в отключении0,5 мкА типично
Ток при работе45 мкА при обновлении раз в 100 мс без энергосбережения; 8 мкА в режиме PSM 1 (раз в 600 мс) и 2 мкА в режиме PSM 4 (раз в 4100 мс)
Разрешение0,0042 лк на отсчёт при усилении ×2 и 800 мс
Наибольшая освещённость140 000 лк при усилении 1/8 и 25 мс
Тёмный сдвиг3 отсчёта типично при усилении ×2 и 800 мс
Рабочая температураот −25 до +85 °C
Наибольшая рассеиваемая мощность50 мВт

Все значения тока и разрешения в даташите — типичные: минимумов и максимумов Vishay для них не приводит.

Регистры

Все регистры 16-битные, адресуются кодом команды; слово передаётся младшим байтом вперёд.

КодРегистрЧто в нём
00hALS_CONF_0усиление (биты 12:11), время интегрирования (9:6), число срабатываний (5:4), разрешение прерывания (1), отключение ALS_SD (0)
01h, 02hALS_WH, ALS_WLверхний и нижний пороги окна
03hPower savingрежим энергосбережения PSM (биты 2:1) и его включение (бит 0)
04hALSрезультат основного канала
05hWHITEрезультат канала WHITE
06hALS_INTфлаги пересечения нижнего (бит 15) и верхнего (бит 14) порога
07hIDмладший байт — код микросхемы 0x81

Коды усиления: 00 — ×1, 01 — ×2, 10 — ×1/8, 11 — ×1/4. Время интегрирования: 1100 — 25 мс, 1000 — 50 мс, 0000 — 100 мс, 0001 — 200 мс, 0010 — 400 мс, 0011 — 800 мс. Например, слово 0x1000 включает датчик с усилением 1/8 и временем 100 мс, а 0x08C0 — с усилением ×2 и временем 800 мс.

Пересчёт в люксы

Освещённость равна коду из регистра 04h, умноженному на разрешение. По таблице из указаний Vishay по применению:

Время×2×1×1/4×1/8Предел при ×1/8
800 мс0,00420,00840,03360,06724404 лк
400 мс0,00840,01680,06720,13448808 лк
200 мс0,01680,03360,13440,268817 616 лк
100 мс0,03360,06720,26880,537635 232 лк
50 мс0,06720,13440,53761,075270 463 лк
25 мс0,13440,26881,07522,1504140 926 лк

Значения в столбцах усилений — люксы на отсчёт. Предел — это 65 535 отсчётов, умноженные на разрешение: при усилении ×2 и 100 мс насыщение наступает уже на 2202 лк.

Vishay отмечает два ограничения. Первое: при усилениях ×1 и ×2 выше 100 лк датчик становится нелинейным, поэтому для ярких сцен берут 1/4 и 1/8. Второе: выше примерно 1000 лк и на малых усилениях код тоже немного занижен, и к результату в люксах x применяют полином

E=6,0135⋅10−13x4−9,3924⋅10−9x3+8,1488⋅10−5x2+1,0023 x.E = 6{,}0135 \cdot 10^{-13} x^4 - 9{,}3924 \cdot 10^{-9} x^3 + 8{,}1488 \cdot 10^{-5} x^2 + 1{,}0023\,x.

В примере Vishay код 5581 при усилении 1/4 и 100 мс даёт 5581 · 0,2688 ≈ 1500 лк, а после коррекции — около 1658 лк.

Алгоритм из указаний по применению: начинать с усиления 1/8 и времени 100 мс; если код не больше 100, поднимать усиление на ступень (1/4, ×1, ×2), а затем удлинять время интегрирования вплоть до 800 мс. Так датчик не насыщается при неизвестной освещённости и не теряет разрешение в темноте.

Подключение

По рис. 8 даташита SDA и SCL подтягивают резисторами больше 1 кОм, например 2,2–4,7 кОм, к питанию шины 1,7–3,6 В. В указаниях по применению (AN 84323) Vishay добавляет фильтр питания: резистор 10 Ом, конденсаторы 10 мкФ и 100 нФ. Подключение другого датчика освещённости с I²C к микроконтроллеру, с номиналами и ошибками монтажа, — на странице «Датчик освещённости и МК»; номинал подтяжки для своей ёмкости шины считают в калькуляторе подтягивающих резисторов I²C.

Датчик измеряет то, что до него дошло: за тонированным стеклом корпуса на кристалл попадает лишь часть света, и коэффициент пропускания окна учитывают при пересчёте. Как это сделать — в разделе об окне корпуса статьи «Датчики освещённости». Подробнее о шине — в статье «I²C».

Аналоги

Совместимых по выводам и регистрам замен производитель не называет. Функциональные аналоги — другие цифровые датчики освещённости с I²C: BH1750 (ROHM) и OPT3001 (TI). У них другой адрес, другие регистры и другая формула пересчёта, поэтому замена требует изменения программы и, как правило, платы. Другие микросхемы датчиков — в разделе «Микросхемы датчиков».

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

Какой адрес I²C у VEML7700?

0x10 в семибитной записи: байт записи 0x20, байт чтения 0x21. Выводов выбора адреса у VEML7700 нет, поэтому на одну шину ставят только один такой датчик. Если на шине уже есть устройство с адресом 0x10, датчики разносят по разным шинам или ставят мультиплексор I²C.

Почему VEML7700 всегда возвращает ноль?

Скорее всего, датчик не включён. По даташиту в регистре конфигурации 00h после подачи питания установлен бит ALS_SD = 1 — режим отключения. В него нужно записать слово с нулевым младшим битом, а по указаниям Vishay выждать 2,5 мс перед первым измерением. Кроме того, результат появляется только по окончании интегрирования: при времени 100 мс — не раньше чем через 100 мс.

Как перевести показания VEML7700 в люксы?

Умножить 16-битный код из регистра 04h на разрешение, которое зависит от усиления и времени интегрирования. При усилении ×2 и 800 мс это 0,0042 лк на отсчёт, при усилении 1/8 и 100 мс — 0,5376 лк. Каждое вдвое меньшее время или усиление удваивает это значение. Выше примерно 1000 лк Vishay рекомендует применять поправочный полином, иначе показания занижены.

Можно ли подключить VEML7700 к Arduino на 5 В?

Напрямую — нет. Питание датчика по даташиту не больше 3,6 В (предельное — 4 В), а уровень единицы на шине — от 1,3 до 3,6 В. Подтягивающие резисторы SDA и SCL к 5 В подадут на выводы напряжение выше допустимого. Нужен стабилизатор 3,3 В и подтяжка к 3,3 В или преобразователь уровней. Большинство модулей с VEML7700 уже несут стабилизатор и транзисторы согласования — это видно по схеме модуля.

Источники

  1. Vishay Semiconductors. VEML7700 High Accuracy Ambient Light Sensor With I2C Interface (Document Number 84286, Rev. 1.8, 28-Nov-2024) — с. 1 — выводы, питание 2,5–3,6 В, шина 1,7–3,6 В, 0–140 000 лк, 0,0042 лк на отсчёт; с. 2 — предельные режимы и Basic Characteristics (токи, I²C 10–400 кГц, уровни, тёмный сдвиг); с. 3 — тайминги I²C; с. 6 — схема включения, резисторы подтяжки, адрес 0x10; с. 7–9 — регистры 00h–07h, табл. 1, таблица Refresh time, IDD and resolution relation
  2. Vishay Semiconductors. Designing the VEML7700 Into an Application (Application Note, Document Number 84323, revision 06-Mar-2025) — пауза 2,5 мс после включения; таблица Resolution and Maximum Detection Range; линейность до 1000 лк, полином коррекции для усилений 1/4 и 1/8; рекомендация начинать с малого усиления и порог 100 отсчётов
  3. NXP Semiconductors. UM10204 I2C-bus specification and user manual (Rev. 7.0, 1 October 2021) — режимы Standard-mode и Fast-mode, на которые ссылается даташит VEML7700

Нашли ошибку?