Arduino датчик освещенности или как собрать сверхчувствительный сенсор света на Ардуино


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

В этой статье будут рассмотрены наиболее популярные варианты использования элементов освещенности этого типа.

Характеристики датчика

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

Вне зависимости от типа устройства, плата оснащается 3 контактами. По двум соединительным элементам осуществляется подача питающего электричества (+5 и GND), третий контакт служит для передачи цифрового сигнала (обозначается на плате S или D0).

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

Модуль инфракрасного светодиода KY-005 [4-5]

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

Модуль имеет габариты 35 х 15 мм и масса 1,3 г. Как понимает автор, подключение данного светодиода ничем не отличается от подключения обычного светодиода видимого диапазона. Центральный контакт модуля ни к чему не подключен, контакт «-» – общий, контакт «S» – информационный. Последовательно со светодиодом автор включал резистор сопротивлением 200 Ом, при этом ток, потребляемый светодиодом, составил 17 мА. Излучение данного светодиода глазом заметить невозможно.

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

Принцип работы

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

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

Сравнение BH1750 и TSL2561

Спектр видимого света колеблется от 380 нм (фиолетовый) до 780 нм (красный) (в вакууме). Короче говоря, BH1750 просто измеряет это. TSL2561, помимо видимого спектра, также измеряет инфракрасное излучение. Он имеет два диода, один для видимого, а второй для инфракрасного. На мой взгляд, BH1750 соответствует большинству требований, тогда как TSL2561 предлагает более широкий спектр, большую чувствительность и большую точность.

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

Более подробно о том, как работать с TSL2561 в Ардуино, можете найти в отдельной статье Подключение цифрового датчика освещенности TSL2561 к Arduino.

Схема подключения TSL2561 и BH1750 к Arduino по I2C

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

Пример скетча

#include #include #include BH1750 bh1750; Adafruit_TSL2561_Unified tsl2561 = Adafruit_TSL2561_Unified(TSL2561_ADDR_FLOAT, 12345); void setup() { Serial.begin(9600); Wire.begin(); /* TSL2561 */ if (!tsl2561.begin()) { Serial.print(F(«При обнаружении TSL2561 возникла проблема … проверьте подключение!»)); while (1); } tsl2561.setGain(TSL2561_GAIN_1X); tsl2561.setIntegrationTime(TSL2561_INTEGRATIONTIME_402MS); /* BH1750 */ bh1750.begin(BH1750::ONE_TIME_HIGH_RES_MODE); Serial.println(F(«BH1750 vs TSL2561»)); } void loop() { /* Считываем показания с TSL2561 */ sensors_event_t event; tsl2561.getEvent(&event); /* Считываем показания с BH1750 */ float lux = bh1750.readLightLevel(); /* Отправляем значение освещенности в последовательный порт */ if (event.light) { Serial.print(F(«TSL2561: «)); Serial.print(event.light); Serial.println(F(» lx»)); } else { /* Если event.light = 0 люкса датчик, вероятно, насыщенные и достоверные данные не может быть сгенерированы! */ Serial.println(F(«Насыщенные TSL2561»)); } Serial.print(F(«BH1750 : «)); Serial.print(lux); Serial.println(F(» lx»)); delay(1000); }

Результат

По результатам TSL2561 и BH1750 дают практически идентичные показатели в одинаковых условиях. Это говорит о том, что сами датчики идут откалиброванными с завода.

Подключение

Датчик света будет правильно работать в системе Ардуино только при правильном подключении. Для того чтобы выполнить эту работу самостоятельно необходимо подготовить:

  • Датчик освещенности для системы Ардуино.
  • Плату Ардуино (Nano, Uno, Mega).
  • Любой подходящий по напряжению светодиод.
  • Беспаечную плату-макет.
  • Провода для подключения.

Когда все необходимое будет приготовлено необходимо соединить выход 5v платы Ардуино с соответствующим разъемом устройства. Затем подключается аналогичным образом «земля» (контакт GND). Выход S датчика соединяется с pin2 основной платы.

Если элемент был правильно подключен, то при изменении освещенности электрическое напряжение на выходе S будет изменяться в пределах от 0 до 5 Вольт. Цифровой датчик, в свою очередь, будет преобразовывать этот показатель в диапазон значений от 0 до 1024, для дальнейшего вывода к устройствам отображения информации.

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

Модуль ИК приемника KY-022

Модуль приемника инфракрасного излучения имеет габариты 24 х 15 мм и массу 1,6 г и представляет собой печатную плату на которой располагается сам приемный модуль и красный светодиод с добавочным сопротивлением [6-7].

Модуль имеет три вывода: центральный немаркированный – питание +5В, контакт «-» – общий, контакт «S» – информационный. Потребляемый ток 200 мкА в режиме ожидания, 500 мкА с работающим светодиодом.

В момент приема инфракрасного сигнала светодиод на плате мигает, что достаточно удобно при отладке конструкций на макетной плате.

Для полноценного использования ИК-приемника можно воспользоваться библиотекой IRremote [8-10]. Для примера иллюстрирующего работу данного устройства можно использовать программу IR. В качестве источника сигналов можно использовать пульт дистанционного управления от телевизора.

Коды сигналов пульта телевизора

Аналогично модуль может принимать сигналы от пульта дистанционного управления светодиодной лампой.

При помощи этого датчика не сложно организовать многокомандное дистанционное управление в пределах прямой видимости, при расстоянии между приемником и передатчиком около 3-5 м.

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

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

Скачать текст скетча можно здесь: здесь

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

Модуль ИК дальномера KY-032

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

Модуль имеет размер 45 х 16 х 12 мм, массу 4 г, в печатной плате модуля предусмотрено крепежное отверстие диаметром 3 мм. На плате имеется четырехконтактный разъем, через который осуществляется питание модуля и передача информации. Назначение выводов разъема следующее: «GND» – общий провод, «+»– питание +5В, «OUT» – информационный выход, «EN» – управление режимом работы. Для индикации подачи питания на датчик служит светодиод «Pled», при срабатывании загорается светодиод «Sled».

На информационном цифровом выходе «OUT» появляется низкий логический уровень, если в поле зрения датчика имеется препятствие, иначе на выходе высокий логический уровень. В этом можно убедиться, загрузив в память Arduino UNO программу AnalogInput2, тогда при срабатывании датчика в мониторе последовательного порта программы Arduino IDE будет наблюдаться следующая картина.

По данным продавцов [21-22], датчик может обнаруживать препятствия на расстоянии от 2 до 40 см. Автору настоящего обзора удалось добиться срабатывания датчика на расстоянии 5,5-3,5 см от белого препятствия (лист бумаги). Черную шероховатую поверхность (бокс CD-дисков) датчик не видит совсем, черную глянцевую поверхность датчик регистрирует расстояния около 2 см.

Согласно документации, для настройки частоты модуляции ИК-импульсов на частоту 38 кГц служит подстроечный резистор промаркированный 103, а для регулирования чувствительности датчика следует использовать подстроечный резистор промаркированный 507. как хорошо видно на предыдущих фотографиях на плате доставшейся автору оба переменных резистора имеют маркировку 103. Возможно это брак в данном конкретном устройстве. Может быть этим и объясняется малая дальность действия датчика.

Датчик потребляет ток 4-5 мА в рабочем режиме и 5-6 мА при срабатывании. Если настроить датчик на минимально расстояние срабатывания, то можно немного уменьшить ток потребления (примерно на 1 мА). На данной фотографии, также видно, сто при срабатывании датчика загорелся светодиод «Sled».

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

Однако по наблюдениям автора при снятой перемычке, когда выход «EN» был ни к чему не подключен, потребляемый ток возрастал до 13,5 мА, при этом датчик переставал реагировать на препятствие. При надетой перемычке подача на «EN» низкого логического уровня (от гнезда «GND» платы Arduino UNO) привела к скачу потребления тока до 150 мА. При подаче на «EN» высокого логического уровня (от гнезда 3,3 В платы Arduino UNO) и снятой перемычке датчик работает как обычно. В общем, в этом режиме датчик вел себя как-то странно, хотя возможно дело в ошибках методики эксперимента, которые допустил автора настоящего обзора или в браке данного экземпляра датчика.

Таким образом, с одно стороны датчик можно использовать по назначению, однако по факту этот датчик не превосходит более простые ИК-датчики расстояния [23]

Плавное изменение яркости светодиода

Контроллер платы Ардуино можно запрограммировать таким образом, чтобы при изменении освещенности менялось яркость светодиода. Изменение этого параметра будет осуществляться с помощью ШИМ. Для этой цели в analogWrite() будет передаваться на пин светодиода значение от 0 до 256. Для преобразования цифрового значения от датчика в ШИМ будет использоваться функция map():

Скачать текст скетча можно здесь: здесь

Таким образом будет обеспечена регулировка подсветки в полностью автоматическом режиме.

Установка библиотеки BH1750

Библиотеку можно установить из самой среды следующим образом:

  1. Скачиваем библиотеку BH1750 с github;
  2. В Arduino IDE открываем менеджер библиотек: Скетч->Подключить библиотеку->Добавить .ZIP библиотеку…

  3. Выбираем .ZIP архив и кликаем Open/Открыть.

  4. Библиотека установлена.

Плюсы и минусы датчика

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

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

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

Физические свойства фоторезисторов

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

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

Технические характеристики данных элементов в целом совпадают. Изделия отличаются только размерами, которые для круглой формы составляют от 5 до 12 мм в диаметре. Сопротивление изменяется в диапазоне от 10 кОм в светлое время суток до 200 кОм с наступлением темноты. Фоторезисторы отличаются диапазоном чувствительности и способны определять длину волн от 400 нм фиолетового цвета до 600 нм оранжевого цвета. Для работы подходят любые источники питания с напряжением до 100 вольт при силе тока до 1 мА.

Какие фоторезисторы можно использовать

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

В случае необходимости для замены следует использовать современные элементы типа VT83N и аналогичные. Если в документации к фоторезистору указывается его чувствительность, то следует также понимать, что разброс в показателях может быть значительным. Даже приобретая детали одного производителя можно получить изделия, в которых разница по этому параметру может достигать 50%.

Фотопрерыватель KY-010

В проектировании устройств с подвижными деталями может оказаться важным подсчитывать число оборотов или факт достижение деталью определенного положения. Подобное можно реализовать с помощью механических концевых выключателей или герконов, но эти элементы имеют механические подвижные части, а значит, будут со временем изнашиваться, залипать и т.п. Для аналогичных целей можно использовать оптопару KY-010 [11], которая не имеет подвижных частей, а поэтому более надежна.

Модуль фотопрерывателя имеет габариты 24 х 15 мм и массу 1,2 г

Данное устройство представляет собой инфракрасный светодиод с токограничительным резистором. Светодиод освещает фототранзистор, с коллектора которого и снимается полезный сигнал. Модуль имеет три вывода: центральный немаркированный – питание +5В, контакт «-» – общий, контакт «S» – информационный. Потребляемый ток 10 мА.

Модуль надежно срабатывает, будучи подключенным, вместо тактовой кнопки с программой LED_with_button [12].

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

После того как подключим устройство регулирования освещенности к системе Ардуино его можно использовать для практических целей. Такой элемент идеально подходят для организации ландшафтного и фасадного освещения.

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

Идеально подходит датчик Ардуино и для бизнеса по выращиванию растений. Если культивирование светолюбивых овощей осуществляется в теплице, то своевременное включение подсветки позволит повысить урожайность и товарный вид продукции.

Модуль датчика пульса KY-039

Данный модуль представляет собой печатную плату, на которой располагается инфракрасный фотодиод и фототранзистор. Теоретически опираясь на изменения прозрачности подушечки пальца данный модуль должен позволить определить частоту пульса [13-14].

Габаритные размеры модуля составляют 24 х 15 х 15 мм, масса1,4 г. Модуль имеет три контакта: центральный немаркированный – питание +5В, контакт «-» – общий, контакт «S» – информационный. Потребляемый ток 10 мА.

Как понимает автор, светодиод должен быть направлен на фототранзистор

По всей видимости, добиться адекватной работы от данного модуля непросто [15].

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

Добиться работоспособности с демонстрационным кодом то же не получилось [16]. Таким образом, получается, что данный модуль это обычная оптопара, хотя, разумеется, автор может ошибаться.

Как подключить датчик освещённости BH1750 к Arduino

На этот раз подключим цифровой 16-битный датчик освещённости BH1750 (люксометр), реализованный на модуле GY-302, к Arduino.

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

  • Arduino UNO или иная совместимая плата;
  • модуль GY-302 с цифровым датчиком освещённости BH1750;
  • соединительные провода (вот хороший набор);
  • персональный компьютер со средой разработки Arduino IDE.

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

Рассмотрим модуль GY-302 с сенсором BH1750. Сенсор BH1750 представляет собой цифровой 16-битный цифровой датчик освещённости, что задаёт диапазон его измерений: от 1 до 65535 люкс.

Рейтинг
( 2 оценки, среднее 5 из 5 )
Понравилась статья? Поделиться с друзьями:
Для любых предложений по сайту: [email protected]