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

Датчик освещённости на входе микроконтроллера

Освещённость микроконтроллер может мерить тремя способами: фоторезистором в делителе, фототранзистором с резистором нагрузки или цифровым датчиком на шине 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 PDV-P8001 включён между плюсом 3,3 В и входом АЦП микроконтроллера, резистор R2 5,6 кОм — между входом АЦП и общим проводом. С ростом освещённости сопротивление фоторезистора падает и напряжение на входе АЦП растёт: при 10 лк сопротивление 3–11 кОм, напряжение 2,2–1,1 В.+3,3 ВR1PDV-P8001R25,6 кОмМК, 3,3 Ввход АЦПUвых ↑ со светом10 лк: R1 = 3–11 кОм → 2,2–1,1 В

Фоторезистор R1 стоит в верхнем плече, постоянный R2 — в нижнем, и напряжение на входе АЦП растёт со светом:

U=3,3 В⋅R2R1+R2.U = 3{,}3\ \text{В} \cdot \frac{R_2}{R_1 + R_2}.

Номинал 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 с резистором в эмиттере на входе АЦПКоллектор фототранзистора VT1 TEMT6000X01 подключён к плюсу 3,3 В, эмиттер — ко входу АЦП микроконтроллера и через резистор R1 3 кОм к общему проводу. Фототок, пропорциональный освещённости, создаёт на R1 напряжение: при 100 лк у типичного экземпляра около 0,15 В. Резистор 3 кОм рассчитан так, чтобы до 1000 лк транзистор не насыщался даже у экземпляра с наибольшей чувствительностью при нагреве до 50 °C.+3,3 ВVT1TEMT6000R13 кОмМК, 3,3 Ввход АЦПU = IPCE · R1100 лк, типично 50 мкА → 0,15 В

Коллектор TEMT6000 подключён к питанию, эмиттер — к резистору R1 на общий провод. Фототок почти пропорционален освещённости, и напряжение на резисторе тоже:

U=IPCE⋅R1.U = I_{PCE} \cdot R_1.

Номинал R1 выбирают так, чтобы при наибольшей освещённости транзистор не насытился у любого экземпляра. Наибольшая чувствительность по даташиту — 16 мкА при 20 лк, то есть 0,8 мкА/лк при 25 °C. С нагревом фототок растёт на 1,18 % на кельвин: при 50 °C — примерно в 1 + 0,0118 · 25 ≈ 1,3 раза, до 1,04 мкА/лк. При 1000 лк и 50 °C это фототок до 1,04 мА, и для такого диапазона:

R1≤3,3−0,1 В1,04 мА≈3,1 кОм,R_1 \le \frac{3{,}3 - 0{,}1\ \text{В}}{1{,}04\ \text{мА}} \approx 3{,}1\ \text{кОм},

ближайший меньший из ряда 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 на шине I²CМикросхема BH1750FVI питается от 3,3 В: вывод 1 VCC к плюсу с конденсатором C1 0,1 мкФ на общий провод, вывод 3 GND на общий провод, вывод 2 ADDR тоже на общий провод — адрес 0x23. Линии SDA (вывод 4) и SCL (вывод 6) идут к микроконтроллеру и подтянуты резисторами R1 и R2 4,7 кОм к 3,3 В. Вывод 5 DVI — опорное напряжение шины и асинхронный сброс — подключён к выводу микроконтроллера и конденсатору C2 0,1 мкФ на общий провод: после подачи питания микроконтроллер держит на нём ноль не меньше 1 мкс, затем выставляет единицу.+3,3 ВC10,1 мкФBH1750FVIDA1VCC1ADDR2GND3SCL6DVI5SDA4R14,7 кОмC20,1 мкФR24,7 кОм+3,3 ВМК, 3,3 ВSCLGPIOSDA0x23

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 — в статье «Датчики освещённости».

Какую схему выбрать

ФоторезисторTEMT6000BH1750
Сигналнапряжение делителянапряжение на резисторечисло по 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.

Источники

  1. 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 мВт
  2. 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 %/К
  3. 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
  4. TAOS / ams AG. DN26: Ambient Light Sensing (ALS) (AN000172, March 31, 2009) — мерцание ламп на 100 и 120 Гц: усреднение за время, кратное 50 мс, или RC-цепочка для быстрых датчиков

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