Датчик освещённости на входе микроконтроллера
Освещённость микроконтроллер может мерить тремя способами: фоторезистором в делителе, фототранзистором с резистором нагрузки или цифровым датчиком на шине I²C. Разбираем все три схемы с номиналами для питания 3,3 В: какое напряжение получит АЦП, почему фоторезистор годится только для порога и что нужно BH1750 кроме двух проводов шины.
Обновлено Редакция GAW
Освещённость измеряют датчиком, ток или сопротивление которого зависит от падающего света. Чем отличаются фоторезистор, фототранзистор и цифровые датчики, как пересчитать их показания в люксы и как поставить датчик за окно корпуса — в статье «Датчики освещённости». Здесь — сами схемы включения с номиналами для микроконтроллера на 3,3 В.
Коротко
- Фоторезистор PDV-P8001
- 3–11 кОм при 10 лк, делитель с 5,6 кОм
- Фототранзистор TEMT6000
- 50 мкА при 100 лк, резистор 3 кОм
- BH1750FVI
- I²C, 1 лк, адрес 0x23 или 0x5C
- Питание BH1750
- 2,4–3,6 В, DVI от 1,65 В
- Точность BH1750
- ±20 % (0,96–1,44 от 1,2 отсчёта на люкс)
- Мерцание ламп
- усреднять за 50 мс или кратное время
Фоторезистор в делителе
Фоторезистор R1 стоит в верхнем плече, постоянный R2 — в нижнем, и напряжение на входе АЦП растёт со светом:
Номинал R2. Наклон делителя наибольший, когда R2 равен сопротивлению фоторезистора в рабочей точке. У PDV-P8001 при 10 лк это 3–11 кОм, середина по логарифму — около 5,7 кОм, ближайший из ряда — 5,6 кОм.
Что получит АЦП. При 10 лк — от 1,1 В (фоторезистор 11 кОм) до 2,2 В (3 кОм): разброс между экземплярами больше, чем изменение при удвоении освещённости. При 100 лк сопротивление падает примерно в 100,6 ≈ 4 раза, до 0,75–2,8 кОм, и напряжение растёт до 2,2–2,9 В. В темноте (не меньше 0,2 МОм) — меньше 0,1 В.
Ток и мощность ничтожны: даже при 100 лк ток делителя около 0,5 мА, а в фоторезисторе рассеивается доли милливатта при допустимых 90 мВт. Сопротивление источника для АЦП — не больше R2, то есть до 5,6 кОм; как оно влияет на точность выборки, разобрано на странице делителя для АЦП.
Фоторезистор медленный (типично 50 мс нарастание и 20 мс спад) и неточный, но для порога «день — ночь» его хватает. Порог делают программно с гистерезисом или компаратором с гистерезисом.
Фототранзистор TEMT6000
Коллектор TEMT6000 подключён к питанию, эмиттер — к резистору R1 на общий провод. Фототок почти пропорционален освещённости, и напряжение на резисторе тоже:
Номинал R1 выбирают так, чтобы при наибольшей освещённости транзистор не насытился у любого экземпляра. Наибольшая чувствительность по даташиту — 16 мкА при 20 лк, то есть 0,8 мкА/лк при 25 °C. С нагревом фототок растёт на 1,18 % на кельвин: при 50 °C — примерно в 1 + 0,0118 · 25 ≈ 1,3 раза, до 1,04 мкА/лк. При 1000 лк и 50 °C это фототок до 1,04 мА, и для такого диапазона:
ближайший меньший из ряда E24 — 3,0 кОм. Без поправки на нагрев вышло бы 4 кОм, и уже при 40–50 °C экземпляр с наибольшей чувствительностью насытился бы раньше 1000 лк.
Напряжение насыщения 0,1 В Vishay нормирует только при малом токе 1,2 мкА, поэтому номинал берут с запасом вниз.
Что получит АЦП. У типичного экземпляра (50 мкА при 100 лк и 25 °C) — 0,15 В при 100 лк и около 1,5 В при 1000 лк, то есть 1,5 мВ на люкс. Шаг 12-битного АЦП с опорой 3,3 В — 0,8 мВ, около 0,5 лк; 10-битного — 3,2 мВ, около 2 лк. Темновой ток до 50 нА даёт на 3 кОм не больше 0,15 мВ.
Без калибровки погрешность велика: фототок разных экземпляров при 20 лк различается от 3,5 до 16 мкА, а с нагревом растёт на 1,18 % на кельвин. Мерцание ламп с частотой 100 Гц датчик передаёт как есть — отсчёты АЦП усредняют за 50 мс или кратное время (TAOS DN26). Чем больше освещённость, тем меньше R1: для 10 000 лк по той же формуле — не больше 300 Ом, а ток коллектора тогда до 10 мА при допустимых 20 мА.
Цифровой датчик BH1750
BH1750FVI сам интегрирует фототок, пересчитывает его в 16-битное число и отдаёт по I²C. Схема — по примеру 1 из раздела Application circuit example of DVI terminal даташита ROHM.
- Питание. VCC — от 2,4 до 3,6 В, конденсатор C1 0,1 мкФ рядом с выводом 1.
- Адрес. Вывод ADDR на общем проводе — адрес 0x23 (0100011), на питании — 0x5C (1011100). Уровни: ноль не выше 0,3·VCC, единица не ниже 0,7·VCC. Прямое подключение допустимо, когда DVI сбрасывается как положено; иначе — через резистор около 100 кОм (Timing chart for VCC and DVI).
- Шина. SDA и SCL с подтяжками к 3,3 В. Датчик держит на SDA не больше 0,4 В при 3 мА, так что подтяжка должна быть не меньше (3,3 − 0,4) В / 3 мА ≈ 1 кОм; 4,7 кОм подходят для коротких шин до 400 кГц — точнее по ёмкости шины считает калькулятор подтяжки I²C.
- DVI. Это одновременно опорное напряжение шины (от 1,65 В до VCC) и асинхронный сброс. После подачи VCC на DVI должен быть ноль (не выше 0,4 В) не меньше 1 мкс, иначе ROHM не гарантирует состояние регистров. Проще всего подать DVI с вывода микроконтроллера: после включения держать ноль, затем выставить единицу. Пока DVI в нуле, микросхема выключена и подтягивает DVI к общему проводу резистором 150 кОм.
ROHM приводит и вариант без вывода микроконтроллера: RC-цепочку 1 кОм / 1 мкФ от VCC к DVI. Но с оговорками: питание должно нарастать от 0 до 2,4 В не дольше 100 мкс, а перед повторным включением VCC должно опуститься до 0,05 В и пробыть там не меньше 25 мс.
Работа. Команда 0x01 (Power On) включает датчик, 0x10 — непрерывные измерения в режиме H-Resolution с разрешением 1 лк и временем до 180 мс. Два байта результата делят на 1,2 — это люксы. Ток — 120 мкА при измерении и 0,01 мкА в режиме Power Down. Точность — ±20 %: отношение показаний к реальной освещённости от 0,96 до 1,44 при среднем 1,2. Пример кода для Arduino — в статье «Датчики освещённости».
Какую схему выбрать
| Фоторезистор | TEMT6000 | BH1750 | |
|---|---|---|---|
| Сигнал | напряжение делителя | напряжение на резисторе | число по I²C |
| Зависимость от света | степенная | почти линейная | в люксах |
| Разброс без калибровки | 3–11 кОм при 10 лк | 3,5–16 мкА при 20 лк | ±20 % |
| Скорость | десятки миллисекунд | быстрая, мерцание видно | 120–180 мс на измерение |
| Детали | 2 резистора | транзистор и резистор | микросхема, 2 конденсатора, 2 подтяжки |
| Где уместна | порог «день — ночь» | относительная яркость | люксы без калибровки |
Почему не работает
- АЦП показывает почти полную шкалу на любом свету. TEMT6000 в насыщении — резистор нагрузки велик для такой освещённости. Уменьшите R1.
- Показания фототранзистора дрожат при свете ламп. Мерцание 100 Гц: усредняйте отсчёты за 50 мс или кратное время.
- Порог фоторезистора у двух одинаковых устройств разный. Разброс 3–11 кОм при 10 лк: порог калибруют на каждом экземпляре или берут цифровой датчик.
- BH1750 не отвечает по I²C. Неверный адрес (0x23 при ADDR на общем проводе, 0x5C при ADDR на питании), нет подтяжек или DVI оставлен в нуле.
- BH1750 иногда не отвечает после включения. DVI поднялся вместе с VCC без сброса 1 мкс: управляйте DVI выводом микроконтроллера. Если сброс обеспечить нельзя, ROHM советует подключать ADDR не напрямую к общему проводу или питанию, а через резистор около 100 кОм: ADDR — трёхстабильный буфер для заводского тестирования, и без сброса его состояние не определено.
- BH1750 показывает в 1,2 раза больше. Отсчёты не поделены на 1,2.
Частые вопросы
Какой резистор ставить с фоторезистором?
Равный сопротивлению фоторезистора при той освещённости, где нужен порог: там наклон делителя наибольший. У PDV-P8001 при 10 лк это 3–11 кОм, среднее геометрическое около 5,7 кОм — в схеме 5,6 кОм. Для порога на ярком свету резистор берут меньше, для сумерек — больше.
Почему TEMT6000 подключают эмиттером к резистору, а не коллектором?
Так напряжение на резисторе растёт со светом от нуля и прямо пропорционально фототоку: U = IPCE · R. Можно включить резистор и в коллектор — тогда напряжение будет падать со светом от питания. Важно лишь, чтобы при наибольшей освещённости транзистор не вошёл в насыщение: (Uпит − 0,1 В) / R больше наибольшего фототока.
Можно ли подключить DVI у BH1750 прямо к питанию?
ROHM требует, чтобы после подачи VCC на DVI был ноль не меньше 1 мкс: это асинхронный сброс. Если DVI поднимается вместе с VCC, сброса может не быть, и регистры окажутся в неопределённом состоянии. Надёжнее всего управлять DVI выводом микроконтроллера; RC-цепочка 1 кОм / 1 мкФ из примера ROHM работает только при быстром нарастании питания.
Какой адрес у BH1750?
0x23, если вывод ADDR соединён с общим проводом, и 0x5C, если с питанием. Это семибитные адреса: 0100011 и 1011100 по даташиту. Два датчика на одной шине ставят с разными уровнями ADDR.
Источники
- Advanced Photonix. PDV-P8001 Photocell (CdS) — Photoresistor (DS PDV-P8001 Rev. B) — Electro-Optical Specifications — 3–11 кОм при 10 лк (2856 К), темновое сопротивление не меньше 0,2 МОм через 10 с, показатель наклона 0,6 между 10 и 100 лк, нарастание 50 мс и спад 20 мс (тип.); Absolute Maximum Ratings — 150 В, 90 мВт
- Vishay. TEMT6000X01 Ambient Light Sensor (Document Number 81579, Rev. 1.9, 23-Aug-11) — Absolute Maximum Ratings — VCEO 6 В, IC 20 мА; Basic Characteristics — фототок 3,5–10–16 мкА при 20 лк и 50 мкА (тип.) при 100 лк (источник A, VCE 5 В), темновой ток до 50 нА, VCEsat 0,1 В при 20 лк и 1,2 мкА, температурный коэффициент 1,18 %/К
- ROHM. BH1750FVI Digital 16bit Serial Output Type Ambient Light Sensor IC: Technical Note (No.11046EDT01, Rev.D, 2011.11); архивная копия официального файла ROHM — Operating Conditions — VCC 2,4–3,6 В, DVI 1,65 В…VCC; Electrical Characteristics — 120/190 мкА, 0,01/1 мкА в Power Down, отношение показаний к люксам 0,96–1,2–1,44, 1 лк и 120/180 мс в режиме H-Resolution, SCL до 400 кГц, VOL SDA до 0,4 В при 3 мА; Instruction Set — Power On 0000_0001, Continuously H-Resolution Mode 0001_0000; Timing chart for VCC and DVI — ноль на DVI не короче 1 мкс после VCC; Application circuit example of DVI terminal — ex. 1 (DVI от микроконтроллера, 0,1 мкФ на VCC и DVI), ex. 4 (RC 1 кОм / 1 мкФ с оговорками); Terminal Description — выводы 1 VCC, 2 ADDR, 3 GND, 4 SDA, 5 DVI, 6 SCL, адреса 0100011 и 1011100, подтяжка 150 кОм к общему проводу при нуле на DVI
- TAOS / ams AG. DN26: Ambient Light Sensing (ALS) (AN000172, March 31, 2009) — мерцание ламп на 100 и 120 Гц: усреднение за время, кратное 50 мс, или RC-цепочка для быстрых датчиков
Нашли ошибку?
Смотрите также
- Датчики освещённости BH1750, TSL2561, VEML7700, OPT3001Фоторезистор, TEMT6000 и датчики I²C: диапазон, адреса, пересчёт в люксы, ИК, окно
- ФототранзисторТранзистор, управляемый светом: оптопары, CTR, насыщение, скорость
- Делитель для АЦПКоэффициент, сопротивление источника, конденсатор, защита входа, ключ для батареи
- Компаратор с гистерезисомLM393, два порога, расчёт резисторов, открытый коллектор к 3,3 В
- Делитель напряженияВыход, ток, нагрузка, подбор пары резисторов
- Подтягивающие резисторы I²CДиапазон Rp по напряжению, скорости и ёмкости шины
- I²CSDA и SCL, START/STOP, ACK, адреса, скорости, расчёт подтяжек