Датчик освещённости (Troyka-модуль)
Для измерения уровня освещённости окружающей среды воспользуемся простым аналоговым датчиком освещённости на основе фоторезистора.
Подключения и настройка
Датчик общается с управляющей электроникой по трём проводам. На выходе сенсора — аналоговый сигнал, который сообщает микроконтроллеру о текущем уровне освещённости.
При подключении к Arduino или Iskra JS удобно использовать Troyka Shield.
С Troyka Slot Shield можно обойтись без лишних проводов.
Примеры использования
Программа для Arduino
Выведем значение освещённости в Serial-порт используя библиотеку TroykaLight.
Программа для IskraJS
Выведем в Serial порт значения освещённости используя четыре разные формы представления данных. Применим модульlight-sensor для Iskra JS.
Элементы платы
Фоторезистор GL5528
Фоторезистор представляет из себя полупроводниковый радиоэлемент, который меняет свое сопротивление в зависимости от освещения. Фоторезистор GL5528 предназначен для регистрации видимого света с высоким порогом чувствительности.
Контакты подключения трёхпроводного шлейфа
Модуль подключается к управляющей электронике по трём проводам. Назначение контактов трёхпроводного шлейфа:
Урок 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 мс, то чем выше частота мерцаний, тем меньше разница между полученными максимальным и минимальным значениями освещенности, тем меньше коэффициент мерцаний.
Подключение цифрового люксметра (датчика освещенности) BH1750 к Arduino
Для измерения освещенности отлично подходят модули Gy-30 и Gy-302 на базе сенсора BH1750. Сенсор предназначен для измерения фонового освещения, имеет высокую чувствительность, а спектр чувствительности совпадает с кривой чувствительности человеческого глаза. Подключается BH1750 к Arduino по распространенному I2C интерфейсу. Внутренняя логика BH1750 избавляет от необходимости каких-либо сложных вычислений, поскольку он напрямую выводит значимые цифровые данные в люксах (лк). С помощью BH1750 можно изготовить самодельный люксметр на Ардуино.
Установка библиотеки BH1750
Библиотеку можно установить из самой среды следующим образом:
- Скачиваем библиотеку BH1750 с github;
- В Arduino IDE открываем менеджер библиотек: Скетч->Подключить библиотеку->Добавить .ZIP библиотеку…
- Выбираем .ZIP архив и кликаем Open/Открыть.
- Библиотека установлена.
Подключение BH1750 к Arduino
Модуль модуль GY-302 оборудован пяти-пиновым разъемом стандарта 2.54мм:
- VCC: Питание «+»
- GND: Земля «-«
- SCL: Линия тактирования (Serial CLock)
- SDA: Линия данных (Serial Data)
- ADDR: Выбор адреса
Выводы отвечающие за интерфейс I2C на платах Arduino на базе различных контроллеров разнятся:
Arduino Mega | Arduino Uno/Nano/Pro Mini | BH1750 модуль | Цвет проводов на фото |
---|---|---|---|
GND | GND | GND | Черный |
5V | 5V | VCC | Красный |
20 (SDA) | A4 | SDA | Синий |
21 (SCL) | A5 | SCL | Зелёный |
3.3V | 3.3V | ADDR | Жёлтый |
Схема подключения BH1750 к Arduino по I2C
На следующем рисунке показана схема подключения датчика внешней освещенности BH1750 к Arduino UNO. Вывод ADD можно оставить «висящим»:
но вы можете подключить его к 3.3 В. Это переведет вывод ADD в высокий логический уровень, и адрес ведомого I2C датчика внешней освещенности BH1750 станет 0x5C. Это важно в программировании. Если вывод ADD переведен в низкое логическое состояние путем подключения к земле, адрес ведомого устройства I2C датчика внешней освещенности BH1750 будет 0x23. Таким образом, два датчика внешней освещенности BH1750 могут быть подключены к одной шине I2C, где один вывод ADD имеет низкое логическое состояние, а другой вывод ADD высокое.
Пример скетча
В скетче мы каждые 1000 мсек считываем с датчика BH1750 показания освещённости в люксах и выводим эти данные в последовательный порт.
Результат
Открыть монитор последовательного порта можно сочетанием клавиш Ctrl+Shift+M или через меню Инструменты. В мониторе последовательного порта побегут значения освещённости с нашего датчика BH1750.
Сравнение BH1750 и TSL2561
Спектр видимого света колеблется от 380 нм (фиолетовый) до 780 нм (красный) (в вакууме). Короче говоря, BH1750 просто измеряет это. TSL2561, помимо видимого спектра, также измеряет инфракрасное излучение. Он имеет два диода, один для видимого, а второй для инфракрасного. На мой взгляд, BH1750 соответствует большинству требований, тогда как TSL2561 предлагает более широкий спектр, большую чувствительность и большую точность.
Для сравнения, оба датчика были размещены параллельно в макете, один рядом с другим. Таким образом, можно получить практически одинаковое излучение на оба датчика.
Более подробно о том, как работать с TSL2561 в Ардуино, можете найти в отдельной статье Подключение цифрового датчика освещенности TSL2561 к Arduino.
Схема подключения TSL2561 и BH1750 к Arduino по I2C
На следующем рисунке показана схема подключения датчиков внешней освещенности TSL2561 и BH1750 к Arduino UNO.
Пример скетча
Результат
По результатам TSL2561 и BH1750 дают практически идентичные показатели в одинаковых условиях. Это говорит о том, что сами датчики идут откалиброванными с завода.
#28. Подключение модуля освещенности к Arduino.
В данном Arduino уроке подключим модуль освещённости к Arduino, и научимся настраивать датчик для работы при различной освещённости. В основе датчика лежит светочувствительный полупроводниковый прибор – фоторезистор. Что такое фоторезистор, и как его можно подключить к Arduino, рассматривали в предыдущем уроке: «Подключение фоторезистора к Arduino». В чем преимущество модуля освещённости, и как его использовать в Arduino проектах, рассмотрим в данном уроке.
Два вида моделей освещённости.
При покупке модуля освещённости, нужно определиться с вашей задачей. Что вы планируете собрать, и как должен работать модуль освещённости. Это связано с тем, что модули освещённости бывают разные. На фото ниже приведены 2 модуля освещённости.
Аналоговый модуль освещённости KY-018.
Arduino модуль освещённости KY-018 черного цвета. Этот модуль состоит из фоторезистора и линейного резистора 10 кОм. Сопротивление фоторезистора будет уменьшаться при наличии света, и увеличиваться при его отсутствии. Выход аналоговый, и он определяет интенсивность света.
Схема подключения модуля освещённости KY-018 к Arduino.
На модуль подается питание 5 Вольт, а в зависимости от освещенности в помещении, на выходе модуля (S) меняется напряжение от 0 до 5 Вольт. При подаче этого сигнала на аналоговый вход микроконтроллера, Arduino преобразует сигнал, при помощи АЦП, в диапазоне значений от 0 до 1023.
Скетч для модуля освещённости KY-018.
Так как у датчика выход аналоговый, как и у фоторезистора, код можно взять из предыдущего урока без изменения. Например, скетч Светильника с автоматическим включением.
Цифровой датчик освещённости на LM393.
Модуль синего цвета устроен по-другому, и подключается уже к цифровому пину Arduino, и на выходе формирует логическую единицу, либо логический ноль. Давайте рассмотрим данный модуль и поговорим подробнее.
Модуль освещенности на LM393.
Модуль освещенности на LM393 используется для измерения интенсивности света в различных устройствах, таких как: автоматизация света (включение света ночью), в роботах (определение дня или ночи) и приборах, контролирующих уровень освещенности. Измерение осуществляется с помощью светочувствительного элемента (фоторезистора), который меняет сопротивление в зависимости от освещенности.
Технические параметры
- Напряжение питания: 3.3 В. — 5.5 В.
- Потребляемый ток: 10 мА.
- Цифровой выход: TTL (лог 1 или лог 0)
- Аналоговый выход: 0 В. … Vcc
- Диаметр монтажного отверстия: 2.5 мм.
- Выходной ток: 15 мА.
- Габариты: 42мм. х 15мм. х 8мм.
Общие сведения датчик освещённости на LM393.
Существуют два модуля на базе LM393, их визуальное отличие только в количестве выводов (3 pin и 4 pin), дополнительный вывод добавлен для снятия прямых показаний с фоторезистора (аналоговый выход), по аналогии работы модуля KY-018. Рассмотрим четырех контактный вариант модуля. У этих двух модулей измерение осуществляется с помощью фоторезистора, который изменяет напряжение в цепи, в зависимости от количества света, попадающего на него. Чтобы представить, как свет будет влиять на фоторезистор, приведу краткую таблицу.
Модуль освещенности с четырьмя выводами содержит два выходных контакта, аналоговый и цифровой, и два контакта для подключения питания. Для считывания аналогово сигнала предусмотрен отдельный вывод «AO», с которого можно считать показания напряжения с 0 В … 3.3 В или 5 В, в зависимости от используемого источника питания. Цифровой вывод DO, устанавливается в лог «0» или лог «1», в зависимости от яркости, чувствительность выхода можно регулировать с помощью поворотного потенциометра. Выходной ток цифрового выхода способен выдать более 15 мА, что очень упрощает использование модуля, и дает возможность использовать его, минуя контроллер Arduino, и подключая его напрямую к входу одноканального реле, или одному из входов двухканального реле. Принципиальная схема модуля освещенности на LM393 с 3 pin и 4 pin, показана ниже.
Принципиальная схема модуля освещенности на LM393 с 4 pin.
Принципиальная схема модуля освещенности на LM393 с 3 pin.
Теперь, как же работает схема. Фоторезистор показан Foto (IN). Основная микросхема модуля — это компаратор LM393 (U1), который производит сравнение уровней напряжения на входах INA- и INA+. Чувствительность порога срабатывания задается с помощью потенциометра R2, и, в результате сравнений, на выходе D0, микросхемы U1, формируется лог «0», или лог «2», который поступает на контакт D0 разъема J1.
Назначение J1 (в исполнении 4 pin)
- VCC — «+» питание модуля
- GND — «-» питание модуля
- D0 — цифровой выход
- A0 -аналоговый выход
Назначение J1 (в исполнении 3 pin)
- VCC — «+» питание модуля
- GND — «-» питание модуля
- D0 — цифровой выход
Подключение модуля освещенности к Arduino UNO.
Подключение модуля освещенности к Arduino NANO
- Arduino UNO или Arduino NANO
- Модуль освещенности, LM393
- Провод DuPont, 2,54 мм.
- Кабель USB 2.0
Подключение:
В данном примере буду использовать модуль освещенности LM393, 3 pin, и Arduino UNO, все данные будут передаваться в «Мониторинг порта». Схема не сложная, необходимо всего три провода, сначала подключаем D0 к 2 цифровому пину Arduino, осталось подключить питание GND к GND и VCC к 5V (можно запитать и от 3.3В), схема собрана, теперь надо подготовить программную часть.
Запускаем среду разработки и загружаем данный скетч, затем открываем мониторинг порта.
В мониторе порта можно увидеть, когда модуль освещенности срабатывает и отключается. При регулировке потенциометра на модуле можно настроить порог чувствительности срабатывания датчика.
Как видим, датчиков освещенности для Arduino проектов существует несколько. Возможно, это еще не все модификации. Поэтому, как и говорил в начале урока, необходимо определиться с вашей задачей, а уже после выбирать модуль освещенности.
В этом уроке мы рассмотрели, как подключить модуля освещенности к Arduino , в предыдущем уроке мы подключили фоторезистор к Arduino.
Появились вопросы или предложения, не стесняйся, пиши в комментарии!
Не забывайте подписываться на канал Youtube и вступайте в группы в Вконтакте и Facebook.
Всем Пока-Пока.
И до встречи в следующем уроке.
Понравилась статья? Поделитесь ею с друзьями: