Самостоятельное изготовление различных автоматических систем стало доступно, благодаря использованию готовых плат Ардуино. Программирование таких устройств не занимает много времени и практически не требует специальных знаний. Arduino датчик освещенности представляет собой довольно простую электрическую систему, которую можно установить и настроить без посторонней помощи.
В этой статье будут рассмотрены наиболее популярные варианты использования элементов освещенности этого типа.
Характеристики датчика
Заранее знать об основных параметрах этого элемента необходимо, чтобы в процессе установки и эксплуатации не были нарушены основные технические требования по безопасному использованию устройств этого типа. Плата датчика может быть изготовлена по аналоговой или цифровой схеме. Во втором случае устройство оснащается подстроечным резистором, с помощью которого можно изменять характеристики выходного сигнала вручную.
Вне зависимости от типа устройства, плата оснащается 3 контактами. По двум соединительным элементам осуществляется подача питающего электричества (+5 и GND), третий контакт служит для передачи цифрового сигнала (обозначается на плате S или D0).
Датчик освещенности аппаратной платформы Ардуино представляет собой довольно простую схему. Основным элементом такого устройства является фоторезистор, которые изменяет сопротивление электрической цепи в зависимости от освещенности.
Модуль инфракрасного светодиода KY-005 [4-5]
Модуль представляет собой инфракрасный светодиод без каких-либо дополнительных элементов, добавочного сопротивления на плате нет.
Модуль имеет габариты 35 х 15 мм и масса 1,3 г. Как понимает автор, подключение данного светодиода ничем не отличается от подключения обычного светодиода видимого диапазона. Центральный контакт модуля ни к чему не подключен, контакт «-» – общий, контакт «S» – информационный. Последовательно со светодиодом автор включал резистор сопротивлением 200 Ом, при этом ток, потребляемый светодиодом, составил 17 мА. Излучение данного светодиода глазом заметить невозможно.
При помощи матрицы фотоаппарата можно зарегистрировать излучение светодиода, для этого желательно установить чувствительность не меньше 800 ISO, отключить вспышку, максимально открыть диафрагму фотоаппарата и минимизировать окружающую засветку.
Принцип работы
В системе Ардуино датчик этого типа будет выполнять функцию делителя напряжения. На одном плече такой схемы разность потенциалов будет напрямую зависеть от уровня освещения. На другой стороне осуществляется подача напряжения к аналоговому входу устройства.
Микросхема контроллера преобразует полученный аналоговый сигнал в цифровой. Выходное напряжение, исходящее от устройства будет минимальным (стремится к нулю) при нормальной освещенности и существенно повышаться — в темноте. На этом принципе и основана система управления светом.
Модуль ИК дальномера 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]
Подключение
Датчик света будет правильно работать в системе Ардуино только при правильном подключении. Для того чтобы выполнить эту работу самостоятельно необходимо подготовить:
- Датчик освещенности для системы Ардуино.
- Плату Ардуино (Nano, Uno, Mega).
- Любой подходящий по напряжению светодиод.
- Беспаечную плату-макет.
- Провода для подключения.
Когда все необходимое будет приготовлено необходимо соединить выход 5v платы Ардуино с соответствующим разъемом устройства. Затем подключается аналогичным образом «земля» (контакт GND). Выход S датчика соединяется с pin2 основной платы.
Если элемент был правильно подключен, то при изменении освещенности электрическое напряжение на выходе S будет изменяться в пределах от 0 до 5 Вольт. Цифровой датчик, в свою очередь, будет преобразовывать этот показатель в диапазон значений от 0 до 1024, для дальнейшего вывода к устройствам отображения информации.
Светодиод подключают к 13 пину платы Ардуино, как при использовании аналоговых, так и цифровых устройств. Если в конструкции устройства имеется подстроечный резистор, то с его помощью можно регулировать чувствительность рабочего элемента в широких пределах.
Программа
Подключив фоторезистор по нехитрой схеме, начинаем писать программу. Первое что мы сделаем, это выведем необработанный сигнал с аналогового входа в последовательный порт, для того чтобы просто понять, как меняется значение на входе A0. Соответствующая программа имеет вид:
const int pinPhoto = A0; int raw = 0; void setup() { Serial.begin(9600); pinMode( pinPhoto, INPUT ); } void loop() { raw = analogRead( pinPhoto ); Serial.println( raw ); delay(200); }
Запустив эту программу у нас в хакспейсе, мы получили следующие значения с датчика:
А теперь прикроем датчик рукой:
Видно, что значение сильно меняется. От 830 при прямом попадании света, до 500 в случае затенения (появление преграды на пути света). Зная такое поведение, мы можем численно определить порог срабатывания. Пусть он будет равен, скажем, 600. Не ровно 500, потому что мы хотим обезопасить себя от случайного срабатывания. Вдруг над датчиком пролетит муха — он слегка затенится, и покажет 530.
Наконец, добавим в программу некое действие, которое будет совершаться если уровень освещенности станет ниже заданного порога. Самое простое, что мы можем сделать — это зажигать на Ардуино штатный светодиод #13. Получается такая вот программа:
const int pinPhoto = A0; const int led = 13; int raw = 0; void setup() { pinMode( pinPhoto, INPUT ); pinMode( led, OUTPUT ); } void loop() { raw = analogRead( pinPhoto ); if( raw < 600) digitalWrite( led, HIGH ); else digitalWrite( led, LOW ); delay(200); }
Накрываем датчик рукой (или выключаем свет в комнате) — светодиод зажигается. Убираем руку — гаснет. Работает, однако. А теперь представьте, что вы зажигаете не светодиод, а подаете сигнал на реле, которое включает лампу в подъезде вашего дома. Получаеся готовый прибор для экономии электроэнергии. Или ставите такой датчик на робота, и он при наступлении ночи ложится спать вместе с вами