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.
Распиновка
| Вывод | Обозначение | Назначение |
|---|---|---|
| 1 | SCL | тактовая линия I²C |
| 2 | VDD | питание 2,5–3,6 В |
| 3 | GND | общий провод |
| 4 | SDA | линия данных I²C |
Вывода прерывания у VEML7700 нет: флаги пересечения порогов есть только в регистре 06h, и их приходится опрашивать по шине. Корпус выпускается в двух исполнениях упаковки на ленте: VEML7700-TR — для монтажа боком, VEML7700-TT — окном вверх.
Параметры
По даташиту при 25 °C:
| Параметр | Значение |
|---|---|
| Питание VDD | 2,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-битные, адресуются кодом команды; слово передаётся младшим байтом вперёд.
| Код | Регистр | Что в нём |
|---|---|---|
| 00h | ALS_CONF_0 | усиление (биты 12:11), время интегрирования (9:6), число срабатываний (5:4), разрешение прерывания (1), отключение ALS_SD (0) |
| 01h, 02h | ALS_WH, ALS_WL | верхний и нижний пороги окна |
| 03h | Power saving | режим энергосбережения PSM (биты 2:1) и его включение (бит 0) |
| 04h | ALS | результат основного канала |
| 05h | WHITE | результат канала WHITE |
| 06h | ALS_INT | флаги пересечения нижнего (бит 15) и верхнего (бит 14) порога |
| 07h | ID | младший байт — код микросхемы 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,0042 | 0,0084 | 0,0336 | 0,0672 | 4404 лк |
| 400 мс | 0,0084 | 0,0168 | 0,0672 | 0,1344 | 8808 лк |
| 200 мс | 0,0168 | 0,0336 | 0,1344 | 0,2688 | 17 616 лк |
| 100 мс | 0,0336 | 0,0672 | 0,2688 | 0,5376 | 35 232 лк |
| 50 мс | 0,0672 | 0,1344 | 0,5376 | 1,0752 | 70 463 лк |
| 25 мс | 0,1344 | 0,2688 | 1,0752 | 2,1504 | 140 926 лк |
Значения в столбцах усилений — люксы на отсчёт. Предел — это 65 535 отсчётов, умноженные на разрешение: при усилении ×2 и 100 мс насыщение наступает уже на 2202 лк.
Vishay отмечает два ограничения. Первое: при усилениях ×1 и ×2 выше 100 лк датчик становится нелинейным, поэтому для ярких сцен берут 1/4 и 1/8. Второе: выше примерно 1000 лк и на малых усилениях код тоже немного занижен, и к результату в люксах 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 уже несут стабилизатор и транзисторы согласования — это видно по схеме модуля.
Источники
- 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
- 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 отсчётов
- NXP Semiconductors. UM10204 I2C-bus specification and user manual (Rev. 7.0, 1 October 2021) — режимы Standard-mode и Fast-mode, на которые ссылается даташит VEML7700
Нашли ошибку?
Смотрите также
- Микросхемы датчиковТок, давление, влажность, температура, свет, ИК: карточки и статьи
- Датчики освещённости BH1750, TSL2561, VEML7700, OPT3001Фоторезистор, TEMT6000 и датчики I²C: диапазон, адреса, пересчёт в люксы, ИК, окно
- Датчик освещённости: три схемыФоторезистор, TEMT6000 и BH1750: номиналы, напряжение на АЦП, адрес и сброс DVI
- I²CSDA и SCL, START/STOP, ACK, адреса, скорости, расчёт подтяжек
- Адрес I²C7-битный адрес ведомого и байт адреса с битом R/W
- Подтягивающие резисторы I²CДиапазон Rp по напряжению, скорости и ёмкости шины