Датчик освещённости (Troyka-модуль) [Амперка / Вики]
Для измерения уровня освещённости окружающей среды воспользуемся простым аналоговым датчиком освещённости на основе фоторезистора.
Подключения и настройка
Примеры использования
Программа для Arduino
Выведем значение освещённости в Serial-порт используя библиотеку TroykaLight.
- LightSensor.ino
// библиотека для работы с датчиком освещённости (Troyka-модуль) #include <TroykaLight.h> // создаём объект для работы с датчиком освещённости // и передаём ему номер пина выходного сигнала TroykaLight sensorLight(A0); void setup() { // открываем последовательный порт Serial.begin(9600); } void loop() { // считывание данных с датчика освещённости sensorLight.read(); // вывод показателей сенсора освещённости в люксахи Serial.print("Light is "); Serial.print(sensorLight.getLightLux()); Serial.print(" Lx\t"); // вывод показателей сенсора освещённости в фут-свечах Serial.print(sensorLight.getLightFootCandles()); Serial.println(" Foot Candles"); delay(300); }
Программа для IskraJS
Выведем в Serial порт значения освещённости используя четыре разные формы представления данных. Применим модульlight-sensor для Iskra JS.
- LightSensor.js
// подключаем модуль датчика освещённости var mySensor = require('@amperka/light-sensor').connect(A0); // выводим в консоль данные с датчика освещённости во всех возможных форматах setInterval( function() { console.log('Room lightness:', mySensor.read('lx'), 'luxes'); console.log('Room lightness:', mySensor.read('V'), 'V'); console.log('Room lightness:', mySensor.read('mV'), 'mV'); console.log('Room lightness:', mySensor.read(), 'from 0 to 1'); },1000);
Элементы платы
Фоторезистор GL5528
Фоторезистор представляет из себя полупроводниковый радиоэлемент, который меняет свое сопротивление в зависимости от освещения. Фоторезистор GL5528 предназначен для регистрации видимого света с высоким порогом чувствительности.
Контакты подключения трёхпроводного шлейфа
Модуль подключается к управляющей электронике по трём проводам. Назначение контактов трёхпроводного шлейфа:
Питание (
V
) — питание модуля. Соедините с питанием микроконтроллера.Земля (
G
) — земля. Соедините с землёй микроконтроллера.Сигнальный (
S
) — жёлтый провод. Подключите к аналоговому входу микроконтроллера. Через него управляющая плата считывает сигнал с датчика.
Принципиальная и монтажная схемы
Ресурсы
wiki.amperka.ru
Высокочувствительный датчик освещенности на Ардуино
В своих проектах мы часто работали с рядом биолюминесцентных бактерий и водорослей. Мы хотели иметь возможность точно измерить, сколько света производят эти организмы. К сожалению, они испускают очень слабое количество света, и хотя после адаптации к темноте, человеческий глаз может легко обнаружить их, то фотографирование требует очень длинных выдержек.
Излишне говорить, что для количественной оценки светового выхода этих слабо светящихся микроорганизмов в маленькой пробирке требуется специальное оборудование …
В итоге мы разработали высокочувствительный Ардуино датчик освещенности внутри медной трубки (для изоляции образца света от внешнего освещения), записывающего результаты на SD-карту. Мы также добавили ЖК-дисплей, чтобы результаты отображались в режиме реального времени.
Шаг 1: Материалы
В основе нашего экспонометра лежит высокочувствительный преобразователь света в частоту TSL237S-LF. Заметьте, это не обычный фоторезистор или фотодиод. Эти устройства измеряют интенсивность света на основе изменений напряжения или тока, что означает, что наименьшая интенсивность света определяется наименьшими напряжениями или токами, которые вы можете измерить датчиком света Arduino.
С другой стороны, свето-частотный преобразователь, такой как TSL237, преобразует интенсивность света в серию прямоугольных импульсов. Чем ниже свет, тем медленнее импульсы. Это означает, что вы можете тривиально увеличить чувствительность, увеличив количество времени, за которое вы подсчитываете импульсы. Это означает, что самая низкая интенсивность определяется внутрикристальным шумом внутри датчика, что приводит к случайным паразитным импульсам даже при отсутствии света.
Типичная частота конкретно этого датчика — 0,1 Гц — один импульс каждые 10 секунд (и на практике мы видели намного меньше, чем это значение). При чувствительности к освещению 2,3 кГц / (мкВт /см2) это соответствует 0,000043 мкВт / см2.
Преобразование из интенсивности излучения в освещенность (люкс) становится сложным, потому что последняя зависит от восприятия яркости человеком, но это работает до показателей не более 0,0003 люкс.
Для сравнения, показатели других коммерческих датчиков освещенности обычно достигают 0.1—0.2 люкс. Если вы хотите получить более чувствительный девайс, вам нужен фотоумножитель, который может считать буквально отдельные фотоны, но это уже совершенно другой ценовой диапазон.
Чтобы проиллюстрировать, насколько чувствителен этот датчик на самом деле, когда я подключал его к Arduino, я закрывал датчик рукой, чтобы увидеть падение сигнала, и заметил, что он не упал до нуля — даже не близко. Поэтому я накрыл датчик второй рукой … и он все еще не упал до нуля! И, конечно же, когда мы помещаем датчик в медную трубку, он * обнуляется *. Это означает, что этот датчик может видеть через обе моих руки – через 4-5 см мяса и костей. Неплохо для сенсора недорогого датчика!
Шаг 2: Подготавливаем корпус датчика
Корпус датчика состоит из куска медной трубки, вырезанного по размерам пробирок, которые мы хотели использовать. Купите себе дешевый труборез. Я всегда получаю практически детское удовольствие от использования одного из них: просто зажмите трубку там, где хотите резать, и каждые пару оборотов затягивайте винт на режущем инструменте. После нескольких затягиваний трубка легко распадется.
*Осторожно* просверлите отверстие в одной из торцевых крышек — либо через нижнюю часть крышки, либо как можно ниже на боковой поверхности. Используйте защитные очки и тиски или пару плоскогубцев, чтобы удерживать крышку на месте — металлическая стружка может повредить ваши глаза! После того, как вы просверлили отверстие, насадите крышку на медную трубу и отметьте, как далеко вы можете задвинуть её, не закрывая отверстие.
Керамический расцепляющий конденсатор емкостью 0,1 мкФ был припаян между выводами GND и Vdd датчика (как рекомендовано в техпаспорте).
Для подключения датчика к Arduino, мы используем 30-сантиметровый кусок стереокабеля от старой пары наушников (в техническом описании для расстояний свыше 30 см рекомендуется использовать буфер или линейный драйвер).
Стереоразъем также является очень простым 3-проводным коннектором. Кабель на этих наушниках часто выглядит так, как будто он содержит два провода, но на самом деле он содержит * четыре *: левый и правый канал и один или два провода заземления. Не забудьте пропустить кабель через отверстие в заглушке *перед* пайкой проводов на датчик.
Датчик света + конденсатор крепится в торцевой крышке с помощью черного Sugru (или используйте для крепления ваше воображение). Выводы датчика сдвинуты назад под датчик для экономии места. Посмотрите изображение девайса с сечением, чтобы узнать, как все упаковано.
Sugru служит для разных целей:
- Крепко держит датчик, крышку и провода на месте
- Действует как изолятор между проводами
- Обеспечивает «бампер», чтобы пробирка не ударялась о датчик при встряхивании
- Предотвращает утечку света через отверстие в медной крышке
- Предотвращает обрезание кабеля, несущего сигнал, медной трубкой
- Обеспечивает снятие напряжения с кабеля
- Обеспечивает водонепроницаемость (в случае необходимости)
Чтобы заключить датчик в крышку, нанесите слой Sugru в нижнюю её часть. Затем раздавите шарик Sugru на задней части датчика с конденсатором и сложите провода датчика над этим шариком. Убедитесь, что Sugru находится между всеми проводами и всё изолирует.
Если вы параноик, вы можете сначала наложить на провода тонкую термоусадочную трубку, но это займет больше места в очень маленькой крышке. После того, как вы будете довольны качеством герметизации задней части датчика и всех проводов, протяните кабель наушников через отверстие в крышке, чтобы устранить все провисания, и очень осторожно вдавите получившийся бутерброд в слой Sugru в нижней части крышки.
Теперь сформируйте маленький «пончик» из Sugru, поместите его на кончик закрытой шариковой ручки, и далее переместите его на переднюю часть датчика – этот «пончик» будет выполнять роль бампера. Убедитесь, что маленький купол датчика полностью свободен.
Смочите медную трубу и протолкните ее вниз в крышку, остановившись до того, как трубка достигнет отверстия в боковой части колпачка (именно для этого вы отметили уровень снаружи трубки ранее). Аккуратно вытяните трубку обратно и убедитесь, что часть Sugru согнута вокруг внутреннего края крышки (если нет, добавьте небольшую ленту Sugru вокруг внешнего края и повторите попытку), не трогая сам датчик.
В качестве последнего штриха, чтобы быть уверенным, что металл не повредит со временем провода, добавьте крошечный кусочек Sugru в отверстие, из которого выходит кабель наушников, а затем добавьте хорошую порцию Sugru на внешнюю сторону отверстия, она будет снимать напряжение на кабеле.
Шаг 3: Корпус для железа
В качестве корпуса для проекта мы использовали дешевую электрическую коробку из хозяйственного магазина. Вам просто нужно вырезать несколько отверстий в боковой части для разъема питания Arduino и разъема USB. Плюс слот для SD-карты в шилде регистратора данных и отверстие для крепления стереоразъема, куда вы подключи кабель, идущий от датчика.
Если вы упакуете железо очень аккуратно, то можете даже установить ЖК-дисплей в пластиковую крышку. Однако, если вы захотите использовать для подключения ЖК-дисплея к Arduino соединительные провода, а не спаять все вручную, то быстро исчерпаете пространство.
Простое решение: возьмите вторую электрическую коробку и установите ее поверх первой! Теперь у вас есть корпус двойной высоты, и в нём есть место для одного или двух дополнительных шилдов Arduino.
Шаг 4: Электроника
Подключить электронику довольно просто: установите шилд регистрации данных в верхней части Arduino Uno, установите аккумулятор и инициализируйте часы реального времени, как описано на веб-сайте Adafruit. Затем подключите стереоразъем, чтобы GND и Vdd на датчике были подключены к GND и 5 В на Arduino, а вывод OUT датчика шел на цифровой вывод 2, где он может вызывать прерывания Arduino.
Если вы используете ЖК-дисплей 16×2, подключите его к пинам на экране регистрации данных, как описано на веб-сайте Adafruit (потенциометр для регулировки контрастности ЖК-дисплея можно установить на запасной области прототипирования на шилде). Как видно на фотографиях, подключение ЖК-дисплея с помощью соединительных проводов занимает достаточно много места.
Мы попытались сложить их так, чтобы все уместилось под серую крышку, но в итоге взяли вторую электрическую коробку, чтобы получить корпус двойной высоты. (Вы можете игнорировать дополнительный разъем Cat5, который мы подключили к некоторым из оставшихся контактов. Он предназначен для дополнительного акселерометра — если мы измеряем светоотдачу биолюминесцентных водорослей в ответ на встряхивание, было бы неплохо точно измерить, насколько сильно мы их трясем. До сих пор мы не использовали эту функцию, а код Arduino ниже не включает акселерометр.)
Код Arduino для версии без LCD можно найти здесь, а код для версии с LCD здесь.
Шаг 5: Результаты!
На приведенной выше диаграмме показаны результаты одного из наших экспериментов, в которых проверяется, как быстро динофлагелляты восстанавливаются после истощения их биолюминесценции в результате чрезмерного встряхивания.
Динофлагелляты — это биолюминесцентные одноклеточные водоросли, которые загораются при возмущении. Тем не менее, каждая клетка содержит только ограниченное количество люциферина, поэтому, если вы встряхиваете их слишком долго или слишком сильно, световой поток будет быстро падать.
Первый пик на приведенном выше графике представляет собой контрольную пробирку (~ 5 мл) динофлагеллят, помещенную в сенсорную пробирку, встряхиваемую затем для побуждения биолюминесценции. Вы можете увидеть резкий пик, за которым следует экспоненциальный спад, когда клетки истощаются.
Затем мы встряхивали несколько пробирок одновременно, пока они почти не истощились, и брали одну пробирку каждые пять минут для проверки в экспонометре — снова встряхивая пробирку на встряхивателе, одновременно измеряя выходную мощность. Вы можете видеть, что в течение сорока минут клетки восстанавливаются незначительно. Более длительные эксперименты, которые мы провели позже, показали, что период полувосстановления для этих клеток, составляет порядка нескольких часов, поэтому после того, как динофлагелляты истощены, для восстановления им может потребоваться большая часть оставшейся ночи.
График показывает сырые импульсы, объединенные в 5-секундные интервалы. Наша контрольная трубка достигла пика в 44 импульса за 5 секунд или 8,8 Гц. Учитывая чувствительность к освещению 2,3 кГц / (мкВт/см2), это соответствует 0,0038 мкВт/см2 или около 0,026 люкс.
Миссия выполнена – мы количественно определили освещенность крошечных объемов слабо светящихся существ.
masterclub.online
Датчик освещенности Bh2750FVI (GY-30). Подключение к Arduino
Цифровой датчик освещения, В основе модуля лежит микросхема Bh2750FVI.
Особенности модуля.
- Измерение освещенности в диапазоне от 1 до 65535 люкс.
- Чувствительность близка к видимому световому спектру.
- Встроенное подавление светового шума 50 Гц / 60 Гц.
- Интерфейс I2C, возможно подключение двух модулей на шину.
- Логический уровень шины I2C: 1,8 В
- Стабилизатор напряжения питания и конвертер логических уровней на плате.
- Приминается в различной бытовой технике для настройки яркости подсветки экранов в зависимости от отведения.
Распиновка модуля
- VCC и GND — Питание и масса.
- AD0 — Выбор адреса модуля на шине I2C, выход притянут к массе и адрес модуля 0x23, если на AD0 подать логическую единицу, адрес будет 0X5C.
- SCL и SDA — Выходы интерфейса I2C, на плате есть конвертер уровней, дополнительная подтяжка выходов не требуется.
Подключение к Arduino
Обращайте внимание на название, а не расположение контактов модуля. На картинке аналогичный модуль GY-302.Софт:
Для работы с модулем уже написана библиотека, скачать тут.
Видео:
Запись опубликована автором admin в рубрике Обзоры с метками Bh2750FVI, датчик освещенности.
arduinolab.pw