Главная » Измерения
Призовой фонд
на март 2017 г.
1. UNI-T UT-39C
Паяльник
2. Тестер компонентов LCR-T4
Паяльник
3. 100 руб.
От пользователей

Похожие статьи:


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

Иногда возникает необходимость получить данные об уровне освещенности конкретного места, объекта. Для таких целей используются специальные приборы – люксметры. Но это не такое уж и распространенное оборудование. Освещенность можно попробовать измерять фоторезистором GL5516, например. Но в таком случае необходимо делать измерительную схему и калибровать полученные данные с такого датчика. Упростить задачу нам поможет датчик, который посредством цифрового интерфейса будет выдавать готовые данные в определенных единицах измерения – BH1750.

Датчик этот заключен в корпусе для поверхностного монтажа WSOF6I. Внутри непосредственно сам фотодатчик в виде фотодиода, усилитель сигнала фотодиода, АЦП (аналого цифровой преобразователь) и некая логика, которая обрабатывает данные, переводит все в единицы измерения Люкс и передает по I2C к управляющему устройству (микроконтроллеру в нашем случае):

Вообще же вы можете с первого взгляда сказать, что это какая-то лапша – ведь датчик в корпусе от обычных микросхем примерно, как это все может измерять освещенность? Вот здесь как раз и стоит обратить внимание на корпус датчика и присмотреться внимательнее.

Корпус оказывается полупрозрачный! А внутри просматривается какая-то схема или чувствительный слой, скорее всего. Честно говоря, именно этот вопрос стал решающим в покупке этого датчика – интерес - как освещенность то определяется. На самом деле внутри фотодиод, а корпус выполняет роль так же светофильтра, видимо, с заведомо известным коэффициентом пропускания света, чтобы точно измерять освещенность.

Что это за датчик интерес удовлетворили, теперь можно продолжить.

Итак, датчик BH1750 обладает следующими характеристиками:

  • Цифровой интерфейс – I2C
  • Высокое разрешение – до 0,5 Лк
  • Малый потребляемый ток и функция спящего режима
  • Фильтрация световых шумов 50/60 Гц
  • Малая зависимость от источника света (лампа накаливания, светодиод и так далее)
  • Малое влияние инфракрасного излучения
  • Возможно выбрать 2 адреса микросхемы для I2C интерфейса (можно подключить одновременно два таких датчика к одной шине)
  • Не требует калибровки, что максимально удобно для применения в любых проектах
  • Очень малые габариты датчика

Электрические характеристики:

  • Напряжение питания – 2,4 – 3,6 В
  • Ток потребления – 120 мкА
  • Ток потребления в спящем режиме – 0,01 мкА
  • Измеряемая длина волны – 560 нм
  • Точность в режиме высокого разрешения – 1 Лк
  • Точность в режиме низкого разрешения – 4 Лк
  • Период измерения в режиме высокого разрешения – 120 мс
  • Период измерения в режиме низкого разрешения – 16 мс
  • АЦП – 16 бит

Чтобы протестировать датчик освещенности собираем схему:

Здесь уже все привычно для нас. В качестве микроконтроллера используется ATmega8a как наиболее универсальный и популярный микроконтроллер. Использовать микроконтроллер можно в любом корпусе – разницы нет, кроме порядка расположения выводов на корпусах. Индикация осуществляется на ЖК экранчике на базе HD44780. В моем случае используется экран на 4 строки по 20 символов на каждую, однако можно использовать и размер 1602 – информации на экранчик выводится не много, поэтому все помещается. Переменный резистор R2 необходим для регулировки контраста символов на дисплее. Вращением движка этого резистора добиваемся наиболее четких для нас показаний на экране. Подсветка ЖК дисплея организована через вывод "А" и "К" на плате дисплея. Подсветка включается через резистор, ограничивающий ток - R1. Чем больше номинал, тем более тускло будет подсвечиваться дисплей. Однако пренебрегать этим резистором не стоит во избежание порчи подсветки. Сам дисплей подключается к микроконтроллеру по 4х битной схеме. Резистор R3 необходим для предотвращения самопроизвольного перезапускания микроконтроллера в случае появления случайных помех на выводе PC6. Резистор R4 подтягивает плюс питания к этому выводу, надежно создавая потенциал на нем. В данной схеме светодиод лишь моргнет при успешном запуске схемы, никакой другой функции не предусмотрено, хотя по желанию можно добавить еще много чего – памяти остается целый вагон. Резистор R5 ограничивает ток через светодиод, чтобы тот не вышел из строя. Резистор R4 подтягивает ножку датчика к земле, отвечающую за адрес микросхемы для I2C интерфейса, посмотреть все эти цифры можно в исходном коде, который расположен в конце статьи. Для правильной работы I2C интерфейса необходимы резисторы R7 и R8. С их помощью на линиях образуется логическая единица из-за того, что они подтянуты к плюсу питания. При формировании логического нуля линии прижимаются к земле посредством ведущего или ведомого (микроконтроллера или датчика).

Основное питание схемы составляет 3,3 вольта, что обусловлено электрическими параметрами датчика освещенности BH1750. 5 вольт необходимы лишь для питания дисплея, если применить, например экранчик от nokia 5110, для питания которого необходимо также 3,3 вольта, то можно опустить из схемы стабилизатор напряжения на 5 вольт. Стабилизаторы напряжения на 5 вольт и 3,3 вольта можно применить абсолютно любые на аналогичные напряжения, можно использовать как линейные стабилизаторы, так и импульсные.

Схема была собрана на модулях на отладочной плате:

Основа – отладочная плата для микроконтроллеров Atmega8 и других контроллеров, совместимых с ней по выводам.

Используется модуль с датчиком BH1750. По большому счету кроме датчика тут больше ничего особенного нет – подтягивающие резисторы для работы датчика, стабилизатор напряжения на 3,3 вольта и несколько конденсаторов. Основной плюс модуля – удобство соединения с микроконтроллером посредством штырьков.

Датчик выдает информацию об освещенности в единицах измерения Люкс. Люкс равен освещённости поверхности площадью 1 м² при световом потоке падающего на неё излучения, равном 1 лм (Люмен). Для сравнения освещенность в рабочем кабинете составляет порядка 300 – 500 Люкс, при полнолунии – 1 Люкс, в ясный солнечный день в тени – 10 тыс. – 25 тыс. Люкс, а под солнцем порядка 32 тыс. – 130 тыс. Люкс. Разбежка понятна большая из-за состояния воздушного покрова – разреженность воздуха, облака, дым, смог и так далее.

Для программирования микроконтроллера необходимо знать конфигурацию фьюз битов:

Такие датчики могут применяться в ЖК дисплеях, мобильных телефонах, цифровых камерах, планшетах и так далее. Основная польза от таких датчиков в подобных устройствах автоматическая регулировка подсветки дисплея, например или какие либо настройки в цифровых камерах, связанных с качеством фото и освещенностью экспозиции. Цена датчика BH1750 порядка 2 – 3 уе в виде модуля на aliexpress и ebay. Модули вполне высокого качества, пайка без дефектов, все компоненты стоят ровненько и на своих местах.

К статье также прилагается прошивка для микроконтроллера Atmega8, исходный код в AVR studio 4, даташит на датчик освещенности, а также небольшое видео, демонстрирующее работу датчика.

Список радиоэлементов

Обозначение Тип Номинал Количество ПримечаниеМагазинМой блокнот
IC1 МК AVR 8-бит
ATmega8A
1 Поиск в FivelВ блокнот
IC2 Датчик освещенностиBH1750FVI-E1 Поиск в FivelВ блокнот
VR1 Линейный регулятор
L7805AB
1 Поиск в FivelВ блокнот
VR2 Линейный регулятор
AMS1117-3.3
1 Поиск в FivelВ блокнот
C1, C3, C5, C7 Конденсатор100 нФ4 Поиск в FivelВ блокнот
C2 Электролитический конденсатор470 мкФ1 Поиск в FivelВ блокнот
C4 Электролитический конденсатор220 мкФ1 Поиск в FivelВ блокнот
C6 Электролитический конденсатор10 мкФ1 Поиск в FivelВ блокнот
R1 Резистор
22 Ом
1 Поиск в FivelВ блокнот
R2 Подстроечный резистор10 кОм1 Поиск в FivelВ блокнот
R3 Резистор
10 кОм
1 Поиск в FivelВ блокнот
R4, R7, R8 Резистор
4.7 кОм
3 Поиск в FivelВ блокнот
R5 Резистор
390 Ом
1 Поиск в FivelВ блокнот
R6 Резистор
1 кОм
1 Поиск в FivelВ блокнот
HG1 LCD-дисплей2004A1 Поиск в FivelВ блокнот
HL1 Светодиод1 Поиск в FivelВ блокнот
S1 Тактовая кнопкаTC-A1091 Поиск в FivelВ блокнот
Добавить все

Скачать список элементов (PDF)

Прикрепленные файлы:

Теги:

Опубликована: 0 3
Я собрал 0 4
x

Оценить статью

  • Техническая грамотность
  • Актуальность материала
  • Изложение материала
  • Полезность устройства
  • Повторяемость устройства
  • Орфография
0

Средний балл статьи: 5 Проголосовало: 4 чел.

Комментарии (17) | Я собрал (0) | Подписаться

+1
viktor26 #
Хорошая статья, все доступно и понятно.
Спасибо!
Ответить
+1

[Автор]
Gauss #
Приятно знать, что хоть кому-то интересно и полезно!
Ответить
0
sherpa #
Добрый день! Пример весьма интересен! Но мне был бы полезен исходный код этого примера для изучения самого программирования и работы с датчиком! Не будете так любезны выслать на почту например... Мне на седьмом десятке уже сложно все по новой проходит, а просто повтор мало помогает пониманию. Заранее признателен!
Ответить
0
sherpa #
Простите вопрос снят! Спасибо за пример!
Ответить
0
Роман #
На вашем примере хотел собрать свой люксметр на датчике OPT 3001, но возникли проблемы с подключением ножек датчика. Не знаю что делать с вывод ADDR и INT. Подскажите пожалуйста. За ранее спасибо
Ответить
0

[Автор]
Gauss #
Все аналогично, и кстати, если открыть даташит, то там назначение выводов написано и еще много чего интересного.
Только я очень сомневаюсь, что прошивка заработает с этим датчиком
Ответить
0
hazy #
Есть библиотека для STM8S http://github.com/hazy1710/BH1750_STM8S103
Ответить
0
Ольга #
Можно подключить два таких датчика на одну шину?
Ответить
0

[Автор]
Gauss #
Да, можно, ножка addr датчика задает адрес
Ответить
0
Ольга #
А как правильно подключить и узнать адрес? Скетч есть, вроде как тот. С подключением беда
Ответить
0

[Автор]
Gauss #
В даташите указывается адрес чтения и адрес записи (отличаются 8м битом друг от друга), один из битов этого адреса задается состоянием ножки addr - подтянуть к 0 - бит 0, аналогично с 1
Ответить
0
Sherpa #
Скажите нет ли варианта под STM32?
Ответить
0

[Автор]
Gauss #
Нет, но на stm32 все тоже самое, но чуть другими функциям
Ответить
0
Sherpa #
Спасибо! Теперь понять какие функции другие...
Ответить
0

[Автор]
Gauss #
Все, что каcается приема и передачи по i2c
Отредактирован 21.08.2016 19:41
Ответить
0
Sherpa #
Спасибо! Ну и наверное вывода на экран и прочее. Все настройки портов тактирование и т.д. Вообщем алгоритм Ваш (сама программа отчасти тоже) а все остальное по привязке к камню, я верно понимаю? Или можно как то проще? Собственно перевод кода от AVR к STM на СИ мною не изучен вовсе...
Ответить
0

[Автор]
Gauss #
Ну, это для любого МК справедливо - по своему инициализвции делаются, свои модули и фишки в этих МК. Отсюдова термин портирование - настроить программу работать с модулями (портами) того или иного устройства (МК)
Ответить
Добавить комментарий
Имя:
E-mail:
не публикуется
Текст:
Защита от спама:
В чем измеряется электрическое сопротивление?
Файлы:
 
Для выбора нескольких файлов использйте CTRL

Мультиметр Mastech MS8268
Мультиметр Mastech MS8268
Конструктор УНЧ 60 Вт на LM3886 Конструктор - Гитарная педаль Remote Delay 2.5
вверх