Маломощный rgb цифровой светочувствительный датчик от intersil

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

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

Фоторезистор ардуино позволяет контролировать уровень освещенности и реагировать на его изменение.

В этой статье мы рассмотрим, что такое фоторезистор, как работает датчик освещенности на его основе, как правильно подключить датчик в платам 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.
  • Если уровень меньше порогового – темно, нужно включать светодиод.
  • Иначе – выключаем светодиод.

#define PIN_LED 13
#define PIN_PHOTO_SENSOR A0 void setup() { Serial.begin(9600); pinMode(PIN_LED, OUTPUT);
} void loop() { int val = analogRead(PIN_PHOTO_SENSOR); Serial.println(val); if (val < 300) { digitalWrite(PIN_LED, LOW); } else { digitalWrite(PIN_LED, HIGH); } }

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

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

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

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

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

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

#define PIN_LED 10
#define PIN_PHOTO_SENSOR A0 void setup() { Serial.begin(9600); pinMode(PIN_LED, OUTPUT);
} void loop() { int val = analogRead(PIN_PHOTO_SENSOR); Serial.println(val); int ledPower = map(val, 0, 1023, 0, 255); // Преобразуем полученное значение в уровень PWM-сигнала. Чем меньше значение освещенности, тем меньше мощности мы должны подавать на светодиод через ШИМ. analogWrite(PIN_LED, ledPower); // Меняем яркость }

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

int val = 1023 – analogRead(PIN_PHOTO_RESISTOR);

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

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

#define PIN_RELAY 10
#define PIN_PHOTO_SENSOR A0 void setup() { pinMode(PIN_RELAY, OUTPUT); digitalWrite(PIN_RELAY, HIGH);
} void loop() { int val = analogRead(PIN_PHOTO_SENSOR); if (val < 300) { // Светло, выключаем реле digitalWrite(PIN_RELAY, HIGH); } else { // Темновато, включаем лампочку digitalWrite(PIN_RELAY, LOW); } }

Заключение

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

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

Будем надеяться, что теперь в ваших проектах появятся и такие вот простейшие «глаза».

Источник: https://ArduinoMaster.ru/datchiki-arduino/photorezistor-arduino-datchik-sveta/

RGB and Gesture Sensor – APDS-9960

SparkFun RGB and Gesture Sensor – APDS-9960

Цифровой модуль APDS-9960 выполняет функции датчика освещённости, приближения и движения (жестов).

Модуль имеет совместимый с I2C интерфейс, по которому передаются данные об интенсивности красного, зелёного, синего цветов и яркости (RGBC), а также сигналы приближении к поверхности и сигналы обнаружения движения с помощью ИК светодиода.

Датчики цветности и яркости измеряют яркость компонентов света через различные ослабляющие материалы (оптические фильтры). Встроенный блочный UV-IR фильтр обеспечивает точное измерение интенсивности света и соответствующую ему цветовую температуру.

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

В датчике движения используются 4 фотодиода, ориентированных в разных направлениях, которые обнаруживают как простые движения вверх-вниз-вправо-влево, так и более сложные. Встроенные оптические микролинзы обеспечивают высокоэффективный прием и передачу ИК-излучения.

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

Основные характеристики APDS-9960:

  • I2C интерфейс с отдельным входом прерывания
  • Равномерная угловая диаграмма направленности
  • Калиброванное расстояние датчика приближения 100мм
  • Четыре чувствительных фотодиода в разных направлениях
  • Патентованный экран для минимизации ошибок приближения
  • Встроенный оптический коллиматор излучения ИК-светодиода
  • Типовой ток потребления в режиме ожидания 1мкА
  • Миниатюрные размеры 8-выводного корпуса 3.94 x 2.36 x 1.35 мм
  • Рабочее напряжение: 3.3V
  • Рабочий диапазон обнаружения: (10-20см)
  • I2C Интерфейс (I2C Адрес: 0x39)
  • Выводы:

  • VL (опция питания для ИК-подсветки)
  • GND (земля)
  • VCC (питание APD-9960)
  • SDA (I2C data)
  • SCL (I2C clock)
  • INT (interrupt)
  • С этим модулем вы сможете контролировать компьютер, микроконтроллер, робота простым движением руки! По сути это датчики один из лучших на рынке по цене.Основные области применения:

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

Показать полное описание Скрыть полное описание

Источник: https://www.electronshik.ru/item/rgb-and-gesture-sensor-apds-9960-1889802

Сенсоры цифровых фотоаппаратов

Аннотация: Матрица светочувствительных элементов – основной узел цифрового фотоаппарата. Понять принцип его работы – понять принцип самой цифровой фотографии. В этой маленькой по физическим размерам микросхеме средоточие современных высоких технологий.

Цель лекции – рассказать об устройстве и принципе действия сенсоров CMOS и CCD. Здесь же подробно рассматриваются важнейшие характеристики светочувствительных сенсоров.

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

Рис. 4.1. Сенсор CCD цифрового фотоаппарата

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

Первая, более простая в производстве и по ряду признаков более перспективная – технология CMOS ( Complementary Metal-Oxide-Semiconductor ).

В переводе эта технология называется КМОП – комплементарный металл-оксид-полупроводник. В силу разных причин сенсоры, построенные по технологии CMOS, устанавливаются в фототелефоны и в зеркальные камеры Canon и Sony.

Лидирующей на рынке цифровой фототехники является технология CCD ( Charge-Coupled Device ). В русском переводе этот тип сенсоров называется ПЗС – прибор с зарядовой связью. Более трудоемкие в производстве, сенсоры CCD, тем не менее, установлены в подавляющем большинстве цифровых фотоаппаратов любительского и профессионального класса.

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

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

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

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

Матрицы CMOS по сравнению с матрицами CCD отличаются пониженным энергопотреблением и высокой технологичностью. С другой стороны, разрешение матриц CMOS, их светочувствительность, динамический диапазон и устойчивость к шумам ниже, чем у матриц CCD. Это объясняется сложностью устройства, а также пониженной светочувствительностью полевых транзисторов по сравнению с ячейками с зарядовой связью.

Устанавливаемые в сотовые камерофоны сенсоры CMOS выполнены в виде большой гибридной микросхемы, на кристалле которой смонтированы многие сервисные схемы встроенного в телефон фотоаппарата.

Это и аналого-цифровой преобразователь ( АЦП ), и электронный затвор (схема мгновенного считывания состояния матрицы), схемы баланса белого и сжатия изображений. В массовом производстве CMOS-сенсоры оказываются дешевле, поскольку каждый элемент матрицы крупней, чем ячейка сенсора CCD.

А простейшим камерам на основе CMOS-сенсоров не нужны многие вспомогательные электронные механизмы.

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

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

Достаточно сказать, что выход годной продукции при массовом производстве матриц CCD еще шесть-семь лет назад находился на уровне двух процентов.

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

В то же время, конструкторы зеркальных цифровых фотоаппаратов Canon и просьюмерок Sony (пример – камера Sony DSC-R1) устанавливают в свои фотоаппараты именно сенсоры CMOS, дополняя их специальными схемами подавления шумов.

Еще одна положительная сторона матриц CMOS – их стабильность и долговечность.

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

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

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

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

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

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

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

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

Цветное изображение строится электроникой камеры уже после преобразования аналогового электрического сигнала, снимаемого с ячеек сенсора камеры в цифровой код аналого-цифровым преобразователем АЦП (если говорить о сенсорах CCD, сенсоры CMOS сами могут обрабатывать цветовую составляющую сигнала, поскольку обычно это большие многофункциональные микросхемы).

Источник: http://www.intuit.ru/studies/courses/2130/178/lecture/4806

Обзор модуля освещенности, LM393 – RobotChip

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

Технические параметры 

  Напряжение питания: 3.3 В ~ 5.5 В
  Потребляемый ток: 10 мА
  Цифрового выход: TTL (лог 1 или лог 0)
  Аналогового выход: 0 В … Vcc
  Диаметр монтажного отверстия: 2.5 мм
  Выходной ток: 15 мА
  Габариты: 42мм х 15мм х 8мм

Общие сведения

Существует два модуля, визуально отличие только в количестве выводов (3 pin и 4 pin), дополнительный вывод добавлен, для снятие прямых показаний с фоторезистора (аналоговый выход), в статье пойдет речь о четырех контактом варианте модуля.

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

Модуль освещенности с четырьмя выводами содержит два выходных контакты, аналоговый и цифровой и два контакта для подключения питания. Для считывания аналогово сигнала предусмотрен отдельный вывод «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

Необходимые детали:
  Arduino UNO R3 x 1 шт.
  Модуль освещенности, LM393, 4 pin x 1 шт.
  Провод DuPont, 2,54 мм, 20 см, F-M (Female — Male) x 1 шт.
  Кабель USB 2.0 A-B x 1 шт.

Подключение:
В данном примере буду использовать модуль освещенности, LM393, 4 pin и Arduino UNO R3, все данные будут передаваться в «Мониторинг порта».

Схема не сложная, необходимо всего четыре провода, сначала подключаем шину A0 в порт A0 (Arduino UNO) и D0 в порт А1 (Arduino UNO), осталось подключить питание GND к GND и VCC к 5V (можно записать и от 3.

3В), схема собрана, теперь надо подготовить программную часть.

Запускаем среду разработки и загружаем данный скетч, затем открываем мониторинг порта.

Тестировалось на Arduino IDE 1.8.0Дата тестирования 27.01.2017г.int pinA0 = A0;                    // Пин к которому подключен A0int pinD0 = A1;                    // Пин к которому подключен D0  pinMode (pinA0, INPUT);          // Установим вывод A0 как вход  pinMode (pinD0, INPUT);          // Установим вывод A1 как вход  Serial.begin (9600);             // Задаем скорость передачи данных  int xA0, xD0;                     // Создаем переменные  xA0 = analogRead (pinA0);         // Считываем значение с порта pinA0  xD0 = digitalRead (pinD0);        // считываем значение с порта pinD0  Serial.print(“IN = “);            // Выводим текст  Serial.println (xA0, DEC);        // Выводим значение переменной xA0  Serial.print(“Sensor: “);         // Выводим текст  if (xD0 == HIGH)                  // Если xD0 равно “1”     Serial.println (“ON”);         // Выводим текст    Serial.println (“OFF”);         // Если xD0 равно “0”delay (500);                        // Ждем 500 мкс.

  Скачать скетч

В мониторинг порта, можно увидеть все изменения джойстика и нажатия кнопки.

Купить в Самаре и области
  Купить контроллер Arduino UNO R3 в г. Самаре
  Купить провода DuPont, 2,54 мм, 20 см в г. Самаре
  Купить модуль освещенности, LM393, 4 pin в г. Самаре

Источник: http://blog.rchip.ru/obzor-modulya-osveshchennosti-lm393/

Метеодатчик

Датчик BME280 предназначен для измерения температуры, давления и влажности. Датчик был приобретен на Алиэкспресс за 200 рублей. Датчик поставляется в антистатическом пакете (как обычно). В пакете кроме платы датчика имеются 4 штырьковых контакта

Размер платы датчика 13 х 10 мм, для крепления в плате имеется отверстие диаметром 3 мм. Масса датчика вместе с припаянной гребенкой контактов 0,7 г.

Датчик BME280 работает при напряжении 1,7-3,6 В и способен измерять давление в диапазоне от 30 до 110 кПа, относительную влажность от 20 до 80 % и температуру от -40 до +85 градусов Цельсия [1-2], таким образом рабочий диапазон измерения однозначно указывает на метеорологическое назначение данного устройства. Для связи с другими устройствами датчик использует интерфейс I2C [3-4]. Как понимает автор, существуют подобные датчики, использующие интерфейс SPI [1-2].

Работая при напряжении 3,3 В датчик BME280 потребляет около 0,3 мА.

Для использования данного устройства необходимо узнать ID, прошитый в конкретный датчик, для этого можно использовать специальный сканер I2C – устройств [5-6]. Для работы с этим модулем разработаны специальные библиотеки [7-8].

При этом, для корректной работы датчика надо в библиотеке Adafruit_BME280_Library прописать нужный ID устройства. Разумеется, можно организовать работу с датчиком и без готовых библиотек, но это сложнее, особенно если хочешь использовать все возможности устройства [9].

При подключении датчика BME280 следует иметь в виду, что линии SCL и SDA интерфейса I2C надо подсоединить к линии питания, через резисторы сопротивлением 10 кОм [9].

Полезное:  Цифровые датчики температуры

В целом это датчик, на основе которого можно достаточно просто создать компактную метеостанцию [10-11] или барометрический высотомер.

Полезные ссылки

  1. /voltiq.ru/bme280-and-arduino/
  2. arduinolab.pw/index.php/2017/06/11/datchik-atmosfernogo-davleniya-s-gigrometrom-bme280/
  3. robocraft.ru/blog/communication/780.html
  4. robocraft.ru/blog/arduino/786.html
  5. voltiq.ru/how-to-find-a-device-i2c-address/
  6. playground.arduino.cc/Main/I2cScanner
  7. github.

    com/adafruit/Adafruit_BME280_Library

  8. github.com/adafruit/Adafruit_Sensor
  9. all-arduino.ru/arduino-dlya-nachinayushhih-urok-11-interfejs-i2c/
  10. habr.com/post/406693/
  11. mysku.ru/blog/aliexpress/52057.html

Файлы и прошивку для Ардуино скачайте в архиве. Специально для сайта 2 Схемы.ру — Denev.

35,00Загрузка…

НАЖМИТЕ ТУТ И ОТКРОЙТЕ КОММЕНТАРИИ

Источник: https://2shemi.ru/meteodatchik/

Статьи

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

Как выбрать светодиодную ленту, чтобы не разочароваться в ней?

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

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

подробнее

Кратко об управлении освещением с использованием протокола DALI
DALI (Digital Addressable Lighting Interface – Цифровой интерфейс освещения с возможностью адресации) – стандартный цифровой протокол управления освещением. Протокол DALI открытый, доступный всем производителям. подробнее

Управление светодиодными источниками света по протоколам SPI и DMX
Эта статья посвящена особому классу управляемых светодиодных источников света, к которому относятся  пиксельные светодиодные ленты «Бегущий огонь», управляемый «гибкий неон» и флеш-модули. В них, как и в обычных многоцветных RGB лентах и модулях, используются трехцветные светодиоды с красным (Red), зеленым (Green)  и синим (Blue) цветом свечения. подробнее

Всё, что нужно знать при покупке светодиодной ленты.

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

подробнее

Что такое светодиодная лента?

Светодиодная лента – современный источник света, обладающий многими привлекательными и оригинальными свойствами.

подробнее

Подбор блока питания для светодиодной ленты

Выбор источника питания для светодиодной ленты выполняется по двум её основным параметрам – напряжению питания и общей потребляемой мощности.

подробнее

Основные характеристики светодиодной ленты

Для того чтобы лучше ориентироваться в большом разнообразии современных светодиодных лент необходимо разбираться в её основных характеристиках. Рассмотрим некоторые из них.

подробнее

Монтаж и эксплуатация светодиодной ленты: требования, рекомендации, советы

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

подробнее

Интересное решение для освещения в квартире
Рады представить вам новый проект, выполненный нашими специалистами. Московская квартира, сочетающая в своём интерьере домашний уют и строгую графичность.

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

Матовая стеклянная поверхность шкафа-купе выгодно отражает освещение и приобретает богатый золотисто-бронзовый оттенок подробнее

Источник: http://www.NeonColor.ru/articles/pikselnoe_upravlenie_svetodiodami/

Матрицы CCD и CMOS

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

Полученное количество света пиксели преобразуют в соответствующее количество электронов. Чем больше света упадет на пиксель, тем больше электронов он сгенерирует. Электроны преобразуются в напряжение, а затем конвертируются в числа, согласно значениям АЦП (Аналого-Цифровой Преобразователь, A/D-converter).

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

В настоящее время, существует две основные технологии, которые могут быть использованы при создании датчика изображения в камере, это CCD (Charge-Coupled Device, ПЗС – прибор с зарядовой связью) и CMOS (Complimentary Metal-Oxide Semiconductor, КМОП – комплементарный металлооксидный полупроводник). Их характеристики, достоинства и недостатки будут рассмотрены в данной статье. На рисунке ниже изображены ПЗС (наверху) и КМОП (внизу) датчики изображений.

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

Поскольку КМОП и ПЗС датчики изображений «не видят цвет», перед каждым из датчиков ставится фильтр, позволяющий присвоить каждому пикселю в датчике цветовой тон. Два основных метода цветовой регистрации это RGB (Red-Greed-Blue, Красный-Зеленый-Синий) и CMYG (Cyan-Magenta-Yellow-Green, Голубой-Пурпурный-Желтый-Зеленый).

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

Фильтр Байера (или массив Байера, англ. Bayer array), состоящий из сменяющих друг друга строк красно-зеленых и сине-зеленых фильтров, является наиболее распространенным RGB-цветовым фильтром (см. Рис. 2).

Фильтр Байера содержит удвоенное количество зеленых «ячеек», т.к. человеческий глаз более чувствителен к зеленому цвету, а не красному или синему.

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

Другой способ фильтровать (или регистрировать) цвет – использовать дополнительные цвета – голубой, пурпурный и желтый. Фильтр из дополнительных цветов обычно комбинируется с зеленым цветовым фильтром в форме CMYG-цветового фильтра (CMYG-color array), как показано на рисунке 2 (справа).

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

Следствием этого является снижение отношения сигнал-шум, поэтому CMYG-системы, как правило, не столь хороши при передаче цветов.

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

2. CCD-технология

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

Этот сигнал затем суммируется и преобразуется в числа аналого-цифровым преобразователем, вне сенсора (см. рис. 3).

CCD-технология была изобретена специально для использования в видеокамерах, и CCD-сенсоры используются на протяжении 30 лет.

Традиционно, у CCD-сенсоров есть ряд преимуществ перед CMOS-сенсорами, а именно лучшая светочувствительность и низкий уровень шумов. В последнее время, однако, различия едва заметны.

Недостатки CCD-сенсоров заключаются в том, что они являются аналоговыми компонентами, что требует наличия большего числа электроники «около» сенсора, они дороже в производстве и могут потреблять до 100 раз больше энергии, чем CMOS-сенсоры.

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

CCD-сенсоры также требуют более скоростную передачу данных, т.к. все данные проходят через всего лишь через один или несколько выходных усилителей. Сравните рисунки 4 и 6, показывающие платы с CCD-сенсором и CMOS-сенсором соответственно.

3. CMOS-технологияНа ранней стадии, обычные CMOS-чипы использовались для отображения, однако качество картинки было низким, в связи с низкой световой чувствительностью КМОП-элементов. Современные CMOS-сенсоры изготавливаются по  более специализированной технологии, что привело к стремительному росту качества изображения и светочувствительности за последние годы.

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

Каждый CMOS-пиксель содержит электронные преобразователи. По сравнению с CCD-сенсорами, CMOS-сенсоры обладают большим функционалом и более широкими возможностями интеграции.

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

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

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

Таким образом, можно получить большую частоту кадров с части сенсора для последующей цифровой PTZ (англ. pan/tilt/zoom, панорама/наклон/масштаб) обработки.

Кроме того, это дает возможность передавать несколько видеопотоков с одного CMOS-сенсора, имитируя несколько «виртуальных камер»

4. HDTV и мегапиксельные камеры

Мегапиксельные сенсоры и телевиденье высокой четкости позволяет цифровым IP-камерам обеспечивать более высокое разрешение изображения, чем аналоговые CCTV-камеры, т.е. они дают большую возможность различить детали и идентифицировать людей и объекты – ключевой фактор в видеонаблюдении.

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

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

Мегапиксельные CMOS-сенсоры более широко распространены и гораздо дешевле чем мегапиксельные CCD-сенсоры, несмотря на то, что есть и довольно дорогие CMOS-сенсоры.

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

Большинство сенсоров в мегапиксельных камерах в целом аналогичны по размеру изображения VGA-сенсорам, с разрешением 640х480 пикселей. Однако мегапиксельный сенсор содержит больше пикселей, чем VGA-сенсор, соответственно размер каждого пикселя в мегапиксельном сенсоре меньше размера пикселя в VGA-сенсоре.

Следствием этого является меньшая светочувствительность каждого пикселя в мегапиксельном сенсоре.Так или иначе, прогресс не стоит на месте. Идет стремительное развитие мегапиксельных сенсоров, и их светочувствительность постоянно возрастает. 

5. Основные отличия

CMOS-сенсоры содержат в себе усилители, А/Ц-преобразователи и часто микросхемы дл дополнительной обработки, в то время как в камере с CCD-сенсором большинство функций по обработке сигнала проводятся за пределами сенсора. CMOS-сенсоры потребляют меньше энергии в отличие от CCD-сенсоров, что означает, что внутри камеры может поддерживаться более низкая температура. Повышенная температура CCD-сенсоров может увеличить интерференцию. С другой стороны CMOS-сенсоры могут страдать от структурированного шума (полосы и т.д.).CMOS-сенсоры поддерживают «оконизацию» изображения и многопотоковое видео, что невозможно в CCD-сенсорах. CCD-сенсоры обладают как правило одним А/Ц-преобразователем, в то время как в CMOS-сенсорах им обладает каждый пиксель. Более быстрое считывание в CMOS-сенсорах позволяет их использовать при изготовлении мульти-мегапиксельных камер.Современные технологические достижения стирают разницу в светочувствительности между CCD- и CMOS-сенсорами. 

6. Заключение

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

Источник: http://www.asb-video.ru/matriczyi-ccd-i-cmos

Фоточувствительная линейка TSL1401

В этой статье речь пойдет о датчике TSL1401. Это устройство мало кому известно из робо-энтузиастов, хотя имеет очень большой потенциал в области DIY робототехники.

Датчик TSL1401 представляет собой линейку из 128 фоточувствительных сенсоров, оформленную в виде законченного модуля с объективом. Есть вариант линейки на 256 точек, он имеет маркировку TSL1402.

Производит датчик компания AMS-TAOS, базирующаяся в США.

Вариант модуля датчика, приобретенного мной в Китае выглядит так:

Сам датчик находится под объективом и бывает в разных вариантах корпусов: DIP, SOIC, SMD CL. В моем случае был как раз последний вариант, очень тяжело паяющийся. Вот такой:

Особенности:

  • фото-датчиков: 128;
  • плотность фото-датчиков:. 400 на дюйм;
  • хорошая линейность и равномерность сигнала;
  • широкий динамический диапазон: 4000:1 (72 дБ);
  • максимальная частота опроса: до 8 МГц;
  • напряжение питания: 3 — 5 В.

Как правило, вместе с датчиком продавцы предлагают объективы с разным углом обзора. Я встречал объективы с углами: 52, 56, 81 и 120 градусов. Модуль с датчиком стоит в среднем 1500 — 2000 руб. на конец 2015 года. Сам датчик — около 700 руб.

1. Применение

Есть как минимум две задачи для которых я хочу применить TSL1401. Первая: с помощью такого датчика можно сделать очень качественное распознавании линии для робота-следопыта (он же Line Follower).

Представьте себе, что вместо двух, четырех, или даже 16 отдельных сенсоров вы получите сразу 128! Такое разрешение позволит очень чутко реагировать на все нюансы контрастной линии, и даже распознавать определенные шаблоны.

«Но можно же использовать целую видеокамеру для распознавания линии!» — скажет самый умный из читателей. Это действительно так, но только отчасти. С камерой можно сделать очень умного робота, который сможет не просто распознавать элементы трассы прямо под собой, но и сможет планировать маневры заранее.

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

Про слабые AVR и говорить не приходится.

Так вот, чтобы не тратить скудные ресурсы микроконтроллера на обработку большого изображения, которое часто не так уж и необходимо, мы можем использовать всего одну линию. В результате, даже слабая Ардуино Уно легко справляется с задачей получения данных с TSL1401. С оптимизированным кодом, удается получить частоту обновления данных — 4КГц.

Наконец, вторая задача заключается в создании быстрого самодельного лидара на основе TSL1401. Собственно, подобный проект уже есть на roboforum.ru. Лидар (или оптический сканирующий дальномер) — это вообще крайне полезная вещь для любого робота. Используя лидар можно реализовать метод одновременной навигации и позиционирования (SLAM).

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

2. Подключение

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

TSL1401 SI CLK AO Vcc Gnd
Arduino Uno 5 4 A0 +5V GND

Всё, 5-минутное дело. Теперь переходим к программированию.

3. Программа

Работа с датчиком доступно описана в спецификации. Попробуем в лоб реализовать его диаграмму работы, которая выглядит так:

Датчик TSL1401 интегрирующий, а это значит, что вектор значений будет зависеть от времени экспозиции.

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

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

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

Циклический алгоритм получения данных с датчика будет выглядеть следующим образом:

  1. Подаем HIGH на ногу SI, начиная тем самым измерение;
  2. Фиксируем SI синхроимпульсом;
  3. Опускаем SI в LOW;
  4. В цикле посылаем на датчик 128 синхроимпульсов. Этим мы чистим регистр
  5. датчика от накопленных ранее значений;
  6. Ждем N миллисекунд — экспозиция;
  7. Подаем HIGH на ногу SI, начиная сбор данных;
  8. Фиксируем SI синхроимпульсом;
  9. Опускаем SI в LOW;
  10. В цикле снимаем с ноги AO данные, и делаем синхроимпульс для перехода к следующему пикселю.

Этот алгоритм называется one-shot. Так мы сможем в любое нужное нам время получить вектор значений. По сути — это частный случай общего непрерывного алгоритма, который в спецификации описывается такой диаграммой:

Здесь видно, что на самом деле, промежуток между двумя импульсами SI одновременно задает период экспозиции, и открывает доступ к регистру для считывания данных прошлого измерения.

Код программы на Ардуино Уно, которая в лоб, без всяких оптимизаций, реализует диаграмму one-shot представлена ниже.

#include static const byte PACKET_SIZE = 128; static const byte VALUE_SIZE = 1; static const boolean SEPARATE_VALUES = false; const unsigned char PS_32 = (1

Источник: http://robotclass.ru/articles/line-sensor-tsl1401/

Ссылка на основную публикацию
Adblock
detector
",css:{backgroundColor:"#000",opacity:.6}},container:{block:void 0,tpl:"
"},wrap:void 0,body:void 0,errors:{tpl:"
",autoclose_delay:2e3,ajax_unsuccessful_load:"Error"},openEffect:{type:"fade",speed:400},closeEffect:{type:"fade",speed:400},beforeOpen:n.noop,afterOpen:n.noop,beforeClose:n.noop,afterClose:n.noop,afterLoading:n.noop,afterLoadingOnShow:n.noop,errorLoading:n.noop},o=0,p=n([]),h={isEventOut:function(a,b){var c=!0;return n(a).each(function(){n(b.target).get(0)==n(this).get(0)&&(c=!1),0==n(b.target).closest("HTML",n(this).get(0)).length&&(c=!1)}),c}},q={getParentEl:function(a){var b=n(a);return b.data("arcticmodal")?b:(b=n(a).closest(".arcticmodal-container").data("arcticmodalParentEl"),!!b&&b)},transition:function(a,b,c,d){switch(d=null==d?n.noop:d,c.type){case"fade":"show"==b?a.fadeIn(c.speed,d):a.fadeOut(c.speed,d);break;case"none":"show"==b?a.show():a.hide(),d();}},prepare_body:function(a,b){n(".arcticmodal-close",a.body).unbind("click.arcticmodal").bind("click.arcticmodal",function(){return b.arcticmodal("close"),!1})},init_el:function(d,a){var b=d.data("arcticmodal");if(!b){if(b=a,o++,b.modalID=o,b.overlay.block=n(b.overlay.tpl),b.overlay.block.css(b.overlay.css),b.container.block=n(b.container.tpl),b.body=n(".arcticmodal-container_i2",b.container.block),a.clone?b.body.html(d.clone(!0)):(d.before("
"),b.body.html(d)),q.prepare_body(b,d),b.closeOnOverlayClick&&b.overlay.block.add(b.container.block).click(function(a){h.isEventOut(n(">*",b.body),a)&&d.arcticmodal("close")}),b.container.block.data("arcticmodalParentEl",d),d.data("arcticmodal",b),p=n.merge(p,d),n.proxy(e.show,d)(),"html"==b.type)return d;if(null!=b.ajax.beforeSend){var c=b.ajax.beforeSend;delete b.ajax.beforeSend}if(null!=b.ajax.success){var f=b.ajax.success;delete b.ajax.success}if(null!=b.ajax.error){var g=b.ajax.error;delete b.ajax.error}var j=n.extend(!0,{url:b.url,beforeSend:function(){null==c?b.body.html("
"):c(b,d)},success:function(c){d.trigger("afterLoading"),b.afterLoading(b,d,c),null==f?b.body.html(c):f(b,d,c),q.prepare_body(b,d),d.trigger("afterLoadingOnShow"),b.afterLoadingOnShow(b,d,c)},error:function(){d.trigger("errorLoading"),b.errorLoading(b,d),null==g?(b.body.html(b.errors.tpl),n(".arcticmodal-error",b.body).html(b.errors.ajax_unsuccessful_load),n(".arcticmodal-close",b.body).click(function(){return d.arcticmodal("close"),!1}),b.errors.autoclose_delay&&setTimeout(function(){d.arcticmodal("close")},b.errors.autoclose_delay)):g(b,d)}},b.ajax);b.ajax_request=n.ajax(j),d.data("arcticmodal",b)}},init:function(b){if(b=n.extend(!0,{},a,b),!n.isFunction(this))return this.each(function(){q.init_el(n(this),n.extend(!0,{},b))});if(null==b)return void n.error("jquery.arcticmodal: Uncorrect parameters");if(""==b.type)return void n.error("jquery.arcticmodal: Don't set parameter \"type\"");switch(b.type){case"html":if(""==b.content)return void n.error("jquery.arcticmodal: Don't set parameter \"content\"");var e=b.content;return b.content="",q.init_el(n(e),b);case"ajax":return""==b.url?void n.error("jquery.arcticmodal: Don't set parameter \"url\""):q.init_el(n("
"),b);}}},e={show:function(){var a=q.getParentEl(this);if(!1===a)return void n.error("jquery.arcticmodal: Uncorrect call");var b=a.data("arcticmodal");if(b.overlay.block.hide(),b.container.block.hide(),n("BODY").append(b.overlay.block),n("BODY").append(b.container.block),b.beforeOpen(b,a),a.trigger("beforeOpen"),"hidden"!=b.wrap.css("overflow")){b.wrap.data("arcticmodalOverflow",b.wrap.css("overflow"));var c=b.wrap.outerWidth(!0);b.wrap.css("overflow","hidden");var d=b.wrap.outerWidth(!0);d!=c&&b.wrap.css("marginRight",d-c+"px")}return p.not(a).each(function(){var a=n(this).data("arcticmodal");a.overlay.block.hide()}),q.transition(b.overlay.block,"show",1*")),b.overlay.block.remove(),b.container.block.remove(),a.data("arcticmodal",null),n(".arcticmodal-container").length||(b.wrap.data("arcticmodalOverflow")&&b.wrap.css("overflow",b.wrap.data("arcticmodalOverflow")),b.wrap.css("marginRight",0))}),"ajax"==b.type&&b.ajax_request.abort(),p=p.not(a))})},setDefault:function(b){n.extend(!0,a,b)}};n(function(){a.wrap=n(document.all&&!document.querySelector?"html":"body")}),n(document).bind("keyup.arcticmodal",function(d){var a=p.last();if(a.length){var b=a.data("arcticmodal");b.closeOnEsc&&27===d.keyCode&&a.arcticmodal("close")}}),n.arcticmodal=n.fn.arcticmodal=function(a){return e[a]?e[a].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof a&&a?void n.error("jquery.arcticmodal: Method "+a+" does not exist"):q.init.apply(this,arguments)}}(jQuery)}var debugMode="undefined"!=typeof debugFlatPM&&debugFlatPM,duplicateMode="undefined"!=typeof duplicateFlatPM&&duplicateFlatPM,countMode="undefined"!=typeof countFlatPM&&countFlatPM;document["wri"+"te"]=function(a){let b=document.createElement("div");jQuery(document.currentScript).after(b),flatPM_setHTML(b,a),jQuery(b).contents().unwrap()};function flatPM_sticky(c,d,e=0){function f(){if(null==a){let b=getComputedStyle(g,""),c="";for(let a=0;a=b.top-h?b.top-h{const d=c.split("=");return d[0]===a?decodeURIComponent(d[1]):b},""),c=""==b?void 0:b;return c}function flatPM_testCookie(){let a="test_56445";try{return localStorage.setItem(a,a),localStorage.removeItem(a),!0}catch(a){return!1}}function flatPM_grep(a,b,c){return jQuery.grep(a,(a,d)=>c?d==b:0==(d+1)%b)}function flatPM_random(a,b){return Math.floor(Math.random()*(b-a+1))+a}