Arduino ldr: урок по использованию светозависимого сенсора

Датчик света Ардуино подключение

Датчик света Arduino ► рассмотрим, как подключить датчик освещенности к Ардуино и разберем две программы с использованием цифрового и аналогового входа.

Датчик освещенности Ардуино позволяет сделать автоматическое включение освещения. Основой данного модуля является полупроводниковый элемент — фоторезистор. Рассмотрим, как правильно подключить датчик освещенности к плате Arduino и разберем две простые программы для использования цифрового и аналогового входа на микроконтроллере для управления светодиодом.

Характеристики модуля датчика освещенности

Датчик света может выпускаться в двух вариантах: с подстроечным резистором (цифровой датчик) и без него (аналоговый датчик). Оба варианта имеют три контакта для подключения к Arduino Nano или Uno. Два контакта служат для питания датчика — 5V и GND, а третий контакт — выдает аналоговый (обозначен буквой S) или цифровой сигнал (обозначен D0) и подключается к соответствующим портам платы Ардуино.

Устройство фоторезистора, обозначение на электрических схемах

Модуль построен на базе обычного фоторезистора, поэтому если у вас нет в наличии датчика освещенности из стартового набора, то вы можете собрать простую схему делителя напряжения с фоторезистором и подключить ее к микроконтроллеру — подключение фоторезистора к Ардуино. Отличие в том, что вам необходимо будет повторить простую схему датчика, собрав ее самостоятельно на макетной плате.

Как подключить датчик освещенности к Ардуино

Для занятия нам понадобятся следующие детали:

  • плата Arduino Uno / Arduino Nano / Arduino Mega;
  • модуль датчика освещенности;
  • один светодиод и резистор 220 Ом;
  • беспаечная макетная плата;
  • провода «папа-папа», «папа-мама».

Датчик освещенности ky: схема подключения к Ардуино

На картинке представлена схема подключения датчика света к Arduino Uno с использованием аналогового сигнала. На модуль подается питание 5 Вольт, а в зависимости от освещенности в помещении на выходе модуля (S) меняется напряжение от 0 до 5 Вольт. При подаче этого сигнала на аналоговый вход микроконтроллера, Arduino преобразует сигнал при помощи АЦП в диапазон значений от 0 до 1023.

Счетч для аналогового датчика освещенности

Пояснения к коду:

  1. в приведенном примере мы выводим на монитор порта данные с датчика освещенности, преобразованные с помощью АЦП Ардуино;
  2. чтобы узнать приблизительно напряжение, поступающее на вход Arduino, следует умножить получаемое значение на 0,0048 или U = light * (5 / 1023). Так как тип данных float может хранить значения только с двумя знаками после запятой, то мы используем в скетче другую формулу для своих расчетов.

Схема подключения датчика освещенности к Ардуино

Следующая программа использует цифровой сигнал, идущий от датчика освещенности ky. На модуле имеется подстроечный резистор для настройки чувствительности. То есть вы можете отрегулировать, какой уровень освещенности необходим, чтобы модуль стал отправлять сигнал истина (логическая единица) на микроконтроллер Arduino. Подключите светодиод к пин 13 и загрузите следующий скетч.

Digitrode

цифровая электроника вычислительная техника встраиваемые системы

Arduino и датчик света BH1750

Датчик внешнего освещения на Arduino и BH1750

Датчики света или датчики освещения являются одними из важных компонентов в некоторых устройствах, таких как мобильные телефоны, камеры, автомобили, телевизоры и т. д. В мобильных телефонах датчик внешней освещенности отвечает за автоматическую регулировку яркости дисплея в зависимости от интенсивности света. В автомобилях датчики внешнего освещения помогают автоматически включать фары, когда наружного освещения становится недостаточно.

Самым простым датчиком света является LDR (светозависимый резистор). Использование LDR хорошо, если ваше приложение очень простое, например, включение лампы, когда становится темно. Но для сложных приложений, таких как мобильные телефоны, вам необходимо точное измерение интенсивности окружающего света. Поэтому в данном проекте Arduino мы будем связывать простой датчик внешней освещенности с платой Arduino и регистрировать интенсивность освещения в люксах (лк).

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

Модуль датчика внешнего освещения BH1750 основан на цифровой интегральной схеме (ИС) датчика внешнего освещения BH1750FVI, разработанной ROHM Semiconductor. Это цифровая ИС со встроенным 16-битным преобразователем освещенности в цифровой код. Для связи с внешними устройствами, такими как микроконтроллеры, ИС датчика внешнего освещения BH1750 использует интерфейс шины I2C. Диапазон измерения составляет от 1 до 65535 лк. Ниже приведено изображение стандартного модуля датчика внешней освещенности BH1750, доступного сегодня.

Подключение BH1750 к Arduino

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

В случае Arduino UNO аналоговые выводы A4 и A5 – это выводы шины I2C, где A4 – это SDA, а A5 – SCL. Выходной сигнал датчика внешней освещенности BH1750 в нашем проекте отображается на ЖК-дисплее 16 × 2, который связан с Arduino.

Схема подключения Arduino и датчика света BH1750

На следующем рисунке показана принципиальная схема подключения датчика внешней освещенности BH1750 к Arduino UNO.

Вывод ADD можно оставить «висящим», но вы можете подключить его к GND. Это переведет вывод ADD в низкий логический уровень, и адрес ведомого I2C датчика внешней освещенности BH1750 станет 0x23. Это важно в программировании. Если вывод ADD переведен в высокое логическое состояние путем подключения к питанию, адрес ведомого устройства I2C датчика внешней освещенности BH1750 будет 0x5C. Таким образом, два датчика внешней освещенности BH1750 могут быть подключены к одной шине I2C, где один вывод ADD имеет низкое логическое состояние, а другой вывод ADD высокое.

Код программы взаимодействия датчика света BH1750 с Arduino

Выполните подключения согласно электрической схеме и загрузите приведенный выше код. Arduino попытается извлечь данные об окружающем освещении из датчика по шине I2C, и после простых вычислений результат отобразится на ЖК-дисплее.

Подключение фоторезистора к ардуино и работа с датчиком освещенности

Датчики освещенности (освещения), построенные на базе фоторезисторов, довольно часто используются в реальных ардуино проектах. Они относительно просты, не дороги, их легко найти и купить в любом интернет-магазине. Фоторезистор ардуино позволяет контролировать уровень освещенности и реагировать на его изменение. В этой статье мы рассмотрим, что такое фоторезистор, как работает датчик освещенности на его основе, как правильно подключить датчик в платам Arduino.

Фоторезистор ардуино и датчик освещенности

Фоторезистор, как следует из названия, имеет прямое отношение к резисторам, которые часто встречаются практически в любых электронных схемах. Основной характеристикой обычного резистора является величина его сопротивления. От него зависят напряжение и ток, с помощью резистора мы выставляем нужные режимы работы других компонентов. Как правило, значение сопротивления у резистора в одних и тех же условиях эксплуатации практически не меняется.

В отличие от обычного резистора, фоторезистор может менять свое сопротивление в зависимости от уровня окружающего освещения. Это означает, что в электронной схеме будут постоянно меняться параметры, в первую очередь нас интересует напряжение, падающее на фоторезисторе. Фиксируя эти изменения напряжения на аналоговых пинах ардуино, мы можем менять логику работы схемы, создавая тем самым адаптирующиеся под вешние условия устройства.

Фоторезисторы достаточно активно применяются в самых разнообразных системах. Самый распространенный вариант применения — фонари уличного освещения. Если на город опускается ночь или стало пасмурно, то огни включаются автоматически. Можно сделать из фоторезистора экономную лампочку для дома, включающуюся не по расписанию, а в зависимости от освещения. На базе датчика освещенности можно сделать даже охранную систему, которая будет срабатывать сразу после того, как закрытый шкаф или сейф открыли и осветили. Как всегда, сфера применения любых датчиков ардуино ограничена лишь нашей фантазией.

Какие фоторезисторы можно купить в интернет-магазинах

Самый популярный и доступный вариант датчика на рынке – это модели массового выпуска китайских компаний, клоны изделий производителя VT. Там не всегда можно разораться, кто и что именно производит тот или иной поставщик, но для начала работы с фоторезисторами вполне подойдет самый простой вариант.

Начинающему ардуинщику можно посоветовать купить готовый фотомодуль, который выглядит вот так:

На этом модуле уже есть все необходимые элементы для простого подключения фоторезистора к плате ардуино. В некоторых модулях реализована схема с компаратором и доступен цифровой выход и подстроечный резистор для управления.

Российскому радиолюбителю можно посоветовать обратить на российский датчик ФР. Встречающиеся в продаже ФР1-3, ФР1-4 и т.п. — выпускались ещё в союзовские времена. Но, несмотря на это, ФР1-3 – более точная деталь. Из этого следует и разница в цене За ФР просят не более 400 рублей. ФР1-3 будет стоить больше тысячи рублей за штуку.

Маркировка фоторезистора

Современная маркировка моделей, выпускаемых в России, довольно простая. Первые две буквы — ФотоРезистор, цифры после чёрточки обозначают номер разработки. ФР -765 — фоторезистор, разработка 765. Обычно маркируется прямо на корпусе детали

У датчика VT в схеме маркировке указаны диапазон сопротивлений. Например:

  • VT83N1 — 12-100кОм (12K – освещенный, 100K – в темноте)
  • VT93N2 — 48-500кОм (48K – освещенный, 100K – в темноте).

Иногда для уточнения информации о моделях продавец предоставляет специальный документ от производителя. Кроме параметров работы там же указывается точность детали. У всех моделей диапазон чувствительности расположен в видимой части спектра. Собирая датчик света нужно понимать, что точность срабатывания — понятие условное. Даже у моделей одного производителя, одной партии, одной закупки отличаться она может на 50% и более.

На заводе детали настраиваются на длину волны от красного до зелёного света. Большинство при этом «видит» и инфракрасное излучение. Особо точные детали могут улавливать даже ультрафиолет.

Достоинства и недостатки датчика

Основным недостатком фоторезисторов является чувствительность к спектру. В зависимости от типа падающего света сопротивление может меняется на несколько порядков. К минусам также относится низкая скорость реакции на изменение освещённости. Если свет мигает — датчик не успевает отреагировать. Если же частота изменения довольно велика — резистор вообще перестанет «видеть», что освещённость меняется.

К плюсам можно отнести простоту и доступность. Прямое изменение сопротивления в зависимости от попадающего на неё света позволяет упростить электрическую схему подключения. Сам фоторезистор очень дешев, входит в состав многочисленных наборов и конструкторов ардуино, поэтому доступен практически любому начинающему ардуинщику.

Подключение фоторезистора к ардуино

В проектах arduino фоторезистор используется как датчик освещения. Получая от него информацию, плата может включать или выключать реле, запускать двигатели, отсылать сообщения. Естественно, при этом мы должны правильно подключить датчик.

Схема подключения датчика освещенности к ардуино довольна проста. Если мы используем фоторезистор, то в схеме подключения датчик реализован как делитель напряжения. Одно плечо меняется от уровня освещённости, второе – подаёт напряжение на аналоговый вход. В микросхеме контроллера это напряжение преобразуется в цифровые данные через АЦП. Т.к. сопротивление датчика при попадании на него света уменьшается, то и значение падающего на нем напряжения будет уменьшаться.

В зависимости от того, в каком плече делителя мы поставили фоторезистор, на аналоговый вход будет подаваться или повышенное или уменьшенное напряжение. В том случае, если одна нога фоторезистора подключена к земле, то максимальное значение напряжения будет соответствовать темноте (сопротивление фоторезистора максимальное, почти все напряжение падает на нем), а минимальное – хорошему освещению (сопротивление близко к нулю, напряжение минимальное). Если мы подключим плечо фоторезистора к питанию, то поведение будет противоположным.

Сам монтаж платы не должен вызывать трудностей. Так как фоторезистор не имеет полярности, подключить можно любой стороной, к плате его можно припаять, подсоединить проводами с помощью монтажной платы или использовать обычные клипсы (крокодилы) для соединения. Источником питания в схеме является сам ардуино. Фоторезистор подсоединяется одной ногой к земле, другая подключается к АЦП платы (в нашем примере – АО). К этой же ноге подключаем резистор 10 кОм. Естественно, подключать фоторезистор можно не только на аналоговый пин A0, но и на любой другой.

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

Меняя значение резистора мы можем “сдвигать” уровень чувствительности в “темную” и “светлую” сторону. Так, 10 К даст быстрое переключение наступления света. В случае 1К датчик света будет более точно определять высокий уровень освещенности.

Если вы используете готовый модуль датчика света, то подключение будет еще более простым. Соединяем выход модуля VCC с разъемом 5В на плате, GND – c землей. Оставшиеся выводы соединяем с разъемами ардуино.

Если на плате представлен цифровой выход, то отправляем его на цифровые пины. Если аналоговый – то на аналоговые. В первом случае мы получим сигнал срабатывания – превышения уровня освещенности (порог срабатывания может быть настроен с помощью резистора подстройки). С аналоговых же пинов мы сможем получать величину напряжения, пропорциональную реальному уровню освещенности.

Пример скетча датчика освещенности на фоторезисторе

Мы подключили схему с фоторезистором к ардуино, убедились, что все сделали правильно. Теперь осталось запрограммировать контроллер.

Написать скетч для датчика освещенности довольно просто. Нам нужно только снять текущее значение напряжения с того аналогового пина, к которому подключен датчик. Делается это с помощью известной нам всем функции analogRead(). Затем мы можем выполнять какие-то действия, в зависимости от уровня освещенности.

Давайте напишем скетч для датчика освещенности, включающего или выключающего светодиод, подключенный по следующей схеме.

Алгоритм работы таков:

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

Прикрывая фоторезистор (руками или светонепроницаемым предметом), можем наблюдать включение и выключение светодиода. Изменяя в коде пороговый параметр, можем заставлять включать/выключать лампочку при разном уровне освещения.

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

Датчик освещенности и плавное изменение яркости подсветки

Можно модифицировать проект так, чтобы в зависимости от уровня освещенности менялась яркость светодиода. В алгоритм мы добавим следующие изменения:

  • Яркость лампочки будем менять через ШИМ, посылая с помощью analogWrite() на пин со светодиодом значения от 0 до 255.
  • Для преобразования цифрового значения уровня освещения от датчика освещенности (от 0 до 1023) в диапазон ШИМ яркости светодиода (от 0 до 255) будем использовать функцию map().

В случае другого способа подключения, при котором сигнал с аналогового порта пропорционален степени освещенности, надо будет дополнительно «обратить» значение, вычитая его из максимального:

Схема датчика освещения на фоторезисторе и реле

Примеры скетча для работы с реле приведены в статье, посвященной программированию реле в ардуино. В данном случае, нам не нужно делать сложных телодвижений: после определения «темноты» мы просто включаем реле, подавай на его пин соответствующее значение.

Заключение

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

Урок 23. Определяем параметры ламп: мощность, освещенность, мерцание

В этом уроке мы научимся сравнивать яркость различных ламп (по сравнению с мощностями ламп накала), а также определять наличие и коэффициент мерцания ламп.

Нам понадобится:

  • Arduino х 1шт.
  • Датчик освещённости GY-30 на базе чипа BH1750 х 1шт.
  • LCD дисплей LCD1602 IIC/I2C(синий) или LCD1602 IIC/I2C(зелёный) х 1шт.
  • Trema Shield х 1шт.
  • Trema-модуль i2C Hub х 1шт.
  • Шлейф «мама-мама»для шины I2С х 3шт.

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

  • Библиотека https://iarduino.ru/file/239.html” target=”_blank”>BH1750 (для подключения датчика освещённости)
  • Библиотека LiquidCrystal_I2C_V112 (для подключения дисплея LCD1602 по шине I2C)

О том как устанавливать библиотеки, Вы можете ознакомиться на странице Wiki – Установка библиотек в Arduino IDE, а о том, как работать с LCD дисплеями, на странице Wiki – Работа с символьными ЖК дисплеями.

Видео:

Схема подключения:

Подключение датчика освещённости и LCD дисплея, осуществляется к аппаратным выводам шины I2C. Вывод ADD датчика освещённости не задействуется.

Измерения:

  • Показания освещенности (Люксы) актуальны на любом удалении от источника света. Чем дальше источник, тем меньше освещенность.
  • Показания в Ваттах измеряются на расстоянии 1 метра от источника света и соответствуют значению мощности лампы накаливания, которой можно заменить измеряемую лампу, без потери светового потока.
  • Показания коэффициента мерцания (в процентах) актуальны на любом удалении от источника света. Чем выше коэффициент мерцания, тем сильнее “заметно” мерцание лампы (сильнее её пульсации и ниже их частота). Наличие посторонних источников света снижают этот показатель.
  • Показания на LCD дисплее обновляются каждые пол секунды.

С этим прибором Вы сможете выбрать качественную лампу (с наименьшим, или отсутствующим коэффициентом мерцания), а производитель не сможет Вас запутать наличием разных сеток мощностей для разных типов ламп.

Код программы:

Алгоритм работы программы:

Значение освещённости в Люксах читается из регистра данных датчика, по шине I2C, вызовом функции readLightLevel(). Датчик обновляет значение своего регистра данных, с периодом, зависящим от режима работы датчика. Режим работы устанавливается при инициализации датчика, передачей соответствующего параметра в функцию begin(). Список допустимых параметров описан в файле BH1750.h подключённой библиотеки. Так как нам важен коэффициент мерцания, то при инициализации чипа выбран режим BH1750_CONTINUOUS_LOW_RES_MODE с максимально допустимой частотой измерений освещённости.

Чтение данных из датчика происходит в цикле while () <. >который выполняется в течении 0,5 секунд. Из всех полученных значений определяются только два: максимальное и минимальное. Максимальное значение соответствует реальной освещённости, а разница между этими значениями соответствует коэффициенту мерцания:

  • если минимальное значение равно максимальному, то коэффициент мерцания = 0%.
  • если минимальное значение в два раза меньше максимального, то коэффициент мерцания = 50%
  • если минимальное значение равно 0, то коэффициент мерцания = 100%

Так как на измерение освещённости (обновление регистра данных) датчик тратит до 16 мс, то чем выше частота мерцаний, тем меньше разница между полученными максимальным и минимальным значениями освещенности, тем меньше коэффициент мерцаний.

Источники:

http://digitrode.ru/computing-devices/mcu_cpu/1797-arduino-i-datchik-sveta-bh1750.html

http://arduinomaster.ru/datchiki-arduino/photorezistor-arduino-datchik-sveta/

http://lesson.iarduino.ru/page/urok-23-opredelyaem-parametry-lamp-moschnost-osveschennost-mercanie/

http://arduinoplus.ru/arduino-moduli/

Ссылка на основную публикацию