Устройство управления освещением 4-х канальное на pic12f629

Сенсорный выключатель на PIC12F629 с ДУ по протоколу RC-5 и NEC

Автор фото и видео Ансаган Хасенов

 Даный выключатель переработанный Сенсорный выключатель на PIC12F509 Alexа на PIC12F629(675) и добавлено дистанционное управление по протоколу RC-5 (14bit) и NEC (32bit). А именно: дистанционное вкл/откл, регулирование яркости, регулирование времени выдержки на автоотключение света.

По схеме также внесены изменения, некоторые по задумке Alexа. Для снижения энергопотребления схемой в ждущем режиме R1 и C1, 100…

240 Ом (0,5Вт не более) и 0,22мкФ (10млА в отличие от изначальных 30млА), однако это вынуждает урезать максимальную яркость лампы (максимальная яркость подбирается индивидуально по наименьшей мощности лампы) для питания ПИКа достаточно 3V а приёмника 4-5V, светодиод при этом подбирается с малым энергопотреблением. ИК-приёмник посадил на 5 вывод (GP2/INT). R3 и С3 не обязательны.

ИК-приёмник любой на 5 Вольт, распиновку уточнить у продавца. Можно попробовать запитать ПИК (стабилитрон 3,6V) и взять ИК на 3 Вольта.

Выключатель в эксплуатации:

  1. При подключении схемы к сети или заворачивании лампы происходит калибровка сенсоров (и при сбросе), желательно его не касаться. Об окончании калибровки свидетельствует загорание светодиода. Перекалибровка также происходит раз в двое суток.
  2. ИК управление с ПДУ работающего по протоколу RC-5 и NEC. (тестировался на ДУ от Горизонта 7-9, Toshiba). Также для входа в режим программирования ДУ (перед подключении схемы к сети, заворачивании лампы или сброс) длительно удержать любую клавишу ПДУ для RC-5 или частые нажатия для NEC и RC-5 (частые вспышки светодиода, с погасанием жмем выбранную кнопку ДУ согласно последовательности команд ДУ см. ниже).
  3. SNS управляет включение/отключением лампы и вход в режим програмирования ПДУ при длительном удержании.
  4. Длительное удержание SNS (более 2,3 сек)- вход в режим программирования на ПДУ, частые вспышки светодиода, с погасанием жмем выбранную кнопку ДУ. Запись команды ДУ в энергонезависимую память- частые вспышки светодиода, с погасанием далее жмём следующую кнопку ПДУ пока светодиод не будет гореть, либо выход из программирования сенсором или по таймеру PICa. Последовательность команд ДУ следующая: 1) вкл/откл света 2) вкл/откл света (для ПДУ-2) 3) увеличение яркости 4) уменьшение 5) увеличение времени выдержки на автоотключение света 6) уменьшение времени 7) сброс 8) запись в энергонезависимую память текущей максимальной яркости и времени выдержки на автоотключение 9) отключение ПДУ (включение сенсором).
  5. Регулирование времени выдержки на автоотключение света, число вспышек светодиода равно часам выдержки отключения света.

Программирование ПДУ лучше выполнять при выключенном свете, поскольку при высокой яркости или малой мощности лампы может не хватать питания для ИК-приёмника, если при включенном свете не реагирует на ПДУ то в момент загорания лампы жмите уменьшить яркость.

Данная схема может быть критична к полярности подключения в сеть (смотри LINE i LAMP) в частности стабильность работы IRR приёмника.

ОПАСНО 220В!

Схема прошивка

RC-5_NEC_629

Источник: http://shemu.ru/component/k2/387-sensor-wuk

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

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

Рисунок 1.

Для управления освещением проходного помещения существует чуть усложнённое, но тоже доступное решение, если точек управления не более двух. Это схема с проходными выключателями (рисунок 2).

 Рисунок 2. Коридорная схема освещения с двумя проходными выключателями.

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

 Рисунок 3. Коридорная схема освещения с тремя проходными выключателями.

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

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

Схема управления освещением проходного помещения на D-триггере

В наличии имелась микросхема с двумя D-триггерами — К155ТМ2. Решил использовать её в качестве позиционирующего (запоминающего положение выключателя) устройства. Немного поколдовав, придумал простую схему (рисунок 4).

Виртуально собрав схему в протеусе, убедился в её работоспособности. Оставались опасения по поводу влияния дребезга контактов, которые подтвердились после теста реально собранной схемы.

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

Цепочка R9-C4 должна была работать как времязадающий элемент, замедляющий изменение сигнала на входе триггера D при изменении состояния инверсного выхода. Казалось бы, всё просто, и должно помочь.

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

 Рисунок 5. Схема управления освещением на D-триггере.

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

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

Схема управления освещением проходного помещения на микроконтроллере PIC12F629

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

Описание работы схемы

Микроконтроллер имеет встроенный тактовый генератор, который используется в его работе (опционально).

Рисунок 6. Коридорная схема управления освещением на микроконтроллере PIC12F629.

С выхода микроконтроллера GP4 через индикаторный диод VD3 сигнал поступает на базу ключа VT2, который замыкает сигнальную цепь кнопок. При этом светятся диоды подсветки кнопок VD1, VD2 и VD5.

Сопротивление R1 подобрано исходя из величины тока всех светодиодов подсветки. При увеличении числа светодиодов их яркость снижается.

Все светодиоды подсветки должны иметь одинаковое напряжение свечения.

При разомкнутых кнопках на резисторе R1 устанавливается напряжение светодиодов, которое через ограничивающий резистор R2 подаётся на базу транзистора VT1. Этот транзистор открывается и подтягивает вход микроконтроллера GP5 к минусу питания, т.е. Устанавливает логический уровень нуля.

При замыкании любой из кнопок сигнальная цепь кнопок шунтируется на минус питания через ключ VT2, на спайке R1-R2 напряжение падает практически до нуля, транзистор VT1 закрывается. При этом, резистор R3 подтягивает вход микроконтроллера GP5 к плюсу питания, устанавливая на нём логическую единицу.

При этом, микроконтроллер меняет состояние выхода GP0 на противоположное, включая или выключая реле освещения KL1 транзисторным ключом VT3.

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

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

Как только кнопка отпускается, микроконтроллер закрывает ключ VT2, подсветка гаснет и некоторое время нажатие кнопок не приведёт к изменению входного сигнала на ноге микроконтроллера GP5.

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

Некоторые детали схемы

Блок питания

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

Купил через интернет небольшую партию компактных зарядных устройств для телефонов с параметрами выхода 5В 1А, которые мне обошлись всего 30 рублей за штуку и буду в дальнейшем использовать в подобных схемах.

Схема ЗУ вынимается из корпуса, отпаиваются проводники питания 220 В и USB-разъём для подключения кабеля, а на их место припаиваются медные штыри, пайкой которых и будет монтироваться готовый блок питания на плату создаваемого устройства. Плата БП достаточно компактна и такая модульность устройства выглядит даже привлекательно.

Кнопки

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

Решение было достаточно простым: были приобретены три одноклавишных недорогих выключателя.

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

Микроконтроллер

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

Светодиоды подсветки кнопок

Для подсветки кнопок я взял светодиоды из карманных фонариков.

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

Реле управления освещением

В качестве силового реле, коммутирующего освещение желательно выбирать реле с мощными контактами, или контакторы.

В противном случае желательно использовать дополнительное силовое реле, контакты которого соответствуют нагрузке коммутируемого освещения. Я выбрал малогабаритное реле на 5 В с нагрузочной способностью коммутируемых контактов 6 А при 240 В.

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

Печатная плата

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

Изображение печатной платы загружено в масштабе 200%, поэтому, если загрузить рисунок печатки с сайта как есть, то при печати для ЛУТ его нужно распечатать в масштабе 50%. Кто пользует P-CAD, советую использовать PCB файл, поскольку качество отпечатка будет максимальным.

Прошивка

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

Заключение

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

Архив файлов проекта качается по этой ссылке.

Источник: https://volt-info.ru/shema-upravleniya-osveshcheniem-iz-dvuh-i-bolee-punktov-bez-primeneniya-prohodnyh-vyklyuchateley

4-х канальное ИК ДУ, PIC16F628A

Автор: VNNIK71

Назначение

Это 4-х канальное устройство дистанционное управление (ДУ), предназначеное для поключения различной бытовой радиоаппаратуры к сетевому напряжению 220В. Потребность создания данного устройства возникла по причине того, что:

1. Почти у всей современной радиоаппаратуры отсутствует сетевой выключатель, который полностью отключал бы устройство от сети. Кнопка выключения переводит аппаратуру в дежурный режим, при котором под напряжением остается часть схемы;

2. Качество напряжения в сети оставляет желать лучшего – в течение суток напряжение в сети колеблется от 200В до 250В и выше, что пагубно сказывается на срок службы аппаратуры.

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

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

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

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

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

Питание устройства осуществляется от сети переменного напряжения 220В.

Коммутация нагрузки выполняется с помощью четырех реле, расчитанных на ток до 5А при напряжении 240В переменного тока.

Управление осуществляется командами от пульта ДУ по стандартному протоколу RC-5 на частоте модуляции 36кГц. Коротко о протоколе RC-5 смотри здесь>>.

Схема

Принципиальная схема представлена на рисунке 1.

Рисунок 1. Принципиальная схема 4-х канального ИК ДУ

Основная часть устройства выполнена на плате приемника дистанционного управления, схема которой представлена на рисунке 2.

Через сетевой выключатель S1 на плату приемника ДУ подается сетевое напряжение.Тип выключателя выбирается исходя из мощности нагрузки, подключаемой к данному устройству. В этой конструкции применен сетевой выключатель с подсветкой красного цвета B1151 (250B,4A).

В качестве выходных разъемов Х1…Х4 применена евроразетка сетевая AS-208 (K2414), с которой сочленяется евровилка сетевая AS-413 (K2416).

Рисунок 2. Принципиальная схема платы приемника дистанционного управления.

В этом устройстве применены следующие элементы:

Поз.обоз. Наименование
С1 SMD конденсатор, корпус 0805, 0,1мкФ
С2,С5 Электролитический конденсатор 470мкФх25В
С3,С4, С6,С7 SMD конденсатор 0805, 0,1мкФ
D1 ИК приемник SFH5110-36
D2 Микроконтроллер PIC12F675, DIP-корпус, устанавливается на панельку DIP8 или TRS8.
D3 7805 (КР142ЕН5А)
G1 Кварцевый генератор IQXO-22IC 4МГц фирмы С-МАС (или HO-22 4МГц фирмы Hosonic)
К1…К4 Реле HJR-3FF-S-Z фирмы TIANBO (Uкатушки=5VDC)
R1 SMD резистор, корпус 0805, 10кОм, 10% (можно не устанавливать, т.к. на выходе ИК приемника имеется внутренний подтягивающий резистор)
R2 SMD резистор, корпус 0805, 100 Ом, 10%
F1 Вставка плавкая ВП4 1А 250В
V1…V4, V7…V10 Диод 1N4007
V5,V6 Транзисторная сборка IRF7303
T1 Трансформатор ТП-112-3

 

Команды от пульта дистанционного управления принимаются ИК приемником D1, с выхода которого демодулированый сигнал поступает на вход GP3 микроконтроллера D2.

Микроконтроллер D2 декодирует принятый сигнал и включает или выключает одно из выходных реле К1…К4, с помощью транзисторных ключей V5 и V6. Управление транзисторными ключами осуществляется с помощью портов GP0…GP2, GP4 микроконтроллера.

Микроконтроллер тактируется частотой 4 МГц. Тактовые импульсы поступают на тактовый вход микроконтроллера OSC1 (вывод 2) и формируются кварцевым генератором G1.

Микроконтроллер D2, ИК приемник D1, генератор G1 и катушки реле К1…К4 питаются стабилизированным напряжением +5В, которое формируется линейным стабилизатором D3.

Сетевое напряжение, поступающее на плату приемника дистанционного напряжения, понижается с помощью трансформатора Т1, далее выпрямляется диодным мостом V1…V4 и фильтруется конденсаторами С2, С3. Далее выпрямленное и сглаженное напряжение подается на вход линейного стабилизатора D3.

Описание работы

В качестве пульта дистанционного управления используется пульт от телевизора “Горизонт” с кодировкой RC-5 (какой нашел из дешевых).

Также пробовал универсальный пульт, запрограмировав его для управления телевизором “Philips”. Адрес устройства согласно протокола RC-5 – 00H. Для управления используются кнопки пульта переключения каналов 1…

4 (коды команд RC-5: 01H…04H), а также кнопка перевода телевизора в режим Standby (код команды – 0СН).

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

“1” – на Выход 1, “2” – на Выход 2, “3” – на Выход 3,

“4” – на Выход 4.

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

А вот при нажатии кнопки “Выключения” (“Standby”) пульта ДУ, произойдет отключение всех выходов от сети.

Для изменения адреса устройства и кодов команд, принимаемых приемником дистанционного управления необходимо в hex-файле поменять значения младших байт ячеек памяти программ с адресами: 01Ch – адрес устройства согласно протокола RC-5; 020h – код команды кнопки пульта ДУ, который будет управлять Выходом 1; 026h – код команды кнопки пульта ДУ, который будет управлять Выходом 2; 02Сh – код команды кнопки пульта ДУ, который будет управлять Выходом 3; 031h – код команды кнопки пульта ДУ, который будет управлять Выходом 4;

032h – код команды кнопки пульта ДУ, нажатие на которую приведет к отключению всех выходов.

На рисунке ниже показан дамп памяти и отмечены байты которые надо изменить, чтобы переназначить кнопки пульта ДУ.

Конструкция

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

Рисунок 3. Печатная плата плады приемника ДУ.

На рисунках 4 и 5 показана установка элементов на печатной плате.

Рисунок 4. Вид платы со стороны установки элементов.

Рисунок 5. Вид платы со стороны печатных проводников.

Прежде чем начать впаивать элементы на плату необходимо установить пять перемычек (показаны красным цветов на рисунке 4).

Затем на стороне печатных проводников установить и припаять SMD компоненты: R1,R2,C1,C3,C4,C6,C7,V5,V6. А после этого впаять остальные элементы. Трансформатор Т1 устанавливается и припаивается последним.

В плате предусмотрены отверстия для закрепления с помощью винтов или саморезов трансформатора.

Линейный стабилизатор необходимо установить на радиатор. В плате установка радиатора не была предусмотрена, поэтому радиатор крепится только на саму микросхему D3.

Микроконтроллер D2 необходимо установить в панельку. Если не планируется перепрограммирование микроконтроллера, то предварительно запрограммированный микроконтроллер можно впаять непосредственно в плату.

Фотографии собранной платы приемника дистанционного управления и устройства в сборе можно посмотреть здесь >>

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

Для удобства подключения проводов на плате приемника ДУ установлены клеммники (тип не известен). При их отсутствии провода можно непосредственно впаять в плату.

Файлы

– Прошивка микроконтроллера PIC12F675;
– Файл платы в формате AutoCAD;
– Файл платы в формате AutoCAD для “утюжно-лазерной технологии”;
– Файл схемы в формате AutoCAD.

Источник: http://vnnik71.narod.ru/ir_rc_4.html

Дистанционное включение света с пульта на PIC12f629. Схема

Особенности схемы дистанционного включения света с пульта:

  • построен на микроконтроллере PIC12F629 / PIC12F675
  • включение двух независимых источников света через пульт дистанционного управления;
  • есть возможность включать свет настенным выключателем;
  • возможность включать и выключать свет отдельными кнопками или же одной; двух минутный таймер отключения освещения.

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

  1. Нажимаете и держите настенный выключатель SW1 в течение 11 сек, для того чтобы устройство могло перейти в режим программирования. После тех 11 секунд, индикатор LD1 начнет мигать быстро и оба канала выключится. Теперь у вас есть 11 секунд, чтобы завершить последовательность программирования.
  2. Нажмите на первую кнопку на пульте дистанционного управления, которая будет включать первый канал.
  3. Нажмите вторую кнопку на пульте дистанционного управления, которая будет использоваться для выключения первого канала.
  4. Нажмите на первую кнопку на пульте дистанционного управления, которая будет включать второй канал.
  5. Нажмите вторую кнопку на пульте дистанционного управления, которая будет использоваться для выключения второго канала.
  6. Наконец нажмите пятую кнопку, которая будет использоваться для активации / деактивации режима сна (SLEEP) 

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

Вариант 1

Если ваш пульт имеет только две кнопки [X и Y], и если во время программирования нажмите: XXYYY, что означает, что кнопка X будет использоваться для первого канала (включение и выключение света будет происходит от одной кнопки X), и кнопка Y будет использоваться для второго канала (включение и выключение света будет происходит от одной кнопки Y). Для данного режима работы необходимо установить перемычку JP1.

Если вы выберете комбинацию XXXXY, это означает, что кнопка X будет использоваться для функции включения и выключения первого канала, и кнопка Y будет использоваться для включения / выключения режима сна, при этом второй канал не используется.

Примечание. Если во время программирования вас заметить, что индикатор мигает, даже если вы не нажимать никаких кнопок на пульте ДУ, это, вероятно, потому, что вы использовали модуль приемника TSOP11xx вместо TSOP17xx. В этом случае вы, вероятно, не сможет запрограммировать устройство должным образом.

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

Если вы планируете использовать пульт ДУ телевизора, то вам желательно выбрать следующие кнопки телетекста: красный ,зеленый , желтый , синий и какую-нибудь пятую, чтобы избежать, например, переключение каналов при работе телевизора.

Так же есть возможность управлять каналами освещения и настенным выключателем SW1 (без фиксации). Одиночное нажатие включает свет и выключает свет. Быстрое двойное нажатие позволяет выбрать: только первый канал или оба канала вместе.

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

скачать файлы к статье (скачено: 689)

Источник 

Источник: http://fornk.ru/324-distancionnoe-vklyuchenie-sveta-s-pulta-na-pic12f629/

Устройства на микроконтроллерах семейства PIC

Сенсорная кнопка включения ПК.                                               

МЕГА ИК ПРИЕМНИК НА 35 КАНАЛОВ.

Свет и вытяжка в санузле.

12 командный ИК приемник на PIC12F629

ИК управление электро приводом -2. 

Сенсорный кодовый замок. 

Авторские устройства на микроконтроллерах семейства PIC.

Автор  RGB.

Сайт http://rgb73.mylivepage.ru

Сенсорная кнопка включения ПК.

Когда ПК выключен ничего не горит и не работает.

При касании сенсора подсветка откликается короткой вспышкой, далее замыкаются контакты 
реле  и остаются в замкнутом положении до тех пор, пока  на  2 ноге МК не появится пониженный  до +5 вольт сигнал с +12 вольтовой шины  БП компьютера, как  только сигнал получен контакты реле размыкаются,  и плавно включается подсветка  сенсора. Если напряжение +12 вольт не появилось в течение -2 секунд, реле выключается, и подсветка двойным миганием показывает код неисправности, для сброса 
нужно обесточить компьютер.  Для выключения  достаточно зажать сенсор на 3 секунды и МК произведёт жесткое выключение ПК. При этом контакты реле замыкаются и держатся до тех пор, пока на 2 
ноге  не пропадёт сигнал +12вольт с БП компьютера.  Как только +12 вольт пропали, сенсор отпускает контакты реле и выключает подсветку.

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

Схема. 

Прошивка для 12F629 и 12F675 

МЕГА ИК ПРИЕМНИК НА 35 КАНАЛОВ.

МК PIC16F887

Поддержка пультов с протоколом NEC. Первой записываем  «Мастер» кнопку на пульте. Используя ее, включим режим перезаписи кнопок пульта в память МК. Далее  записываем 35 выбранных кнопок на пульте ДУ.

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

После подачи питания светодиод с 2 ноги три раза мигает и МК готов к записи, при проведении  записи кнопки, он же мигает, говоря о проведении записи, после записи последней 35 кнопки его свечение немного длиннее. Когда он потухнет МК готов к работе.

В памяти EEPROM можно настроить режим работы каждой ножки в режим переключения или удержания. Для этого начиная с адреса 02 EEPROM по 06 адрес необходимо записать правильные числа, которые получаем следующим способом. Ножки «сгруппированы» по 8 штук, так как в одном регистре памяти EEPROM в МК всего 8 бит.

Допустим, мы хотим, чтоб первые три ножки работали в режиме удержания, а остальные 5 в режиме переключения. Записываем число 1 для ноги, которая будет работать в режиме удержания и число ноль для режима переключения.

Отсюда получаем такой вид числа в двоичной системе 00000111 – первая ножка считается справа налево, данное число нужно перевести в шестнадцатеричный вид, что в данном случае легко, но может потребоваться конвектор чисел. Получаем число 07 в шестнадцатеричном виде готовое к записи в программаторе. Также поступаем и для настройки остальных выводов.

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

Схема и прошивка.

Свет и вытяжка в санузле.

Девайс предназначен, для управления включения света и вытяжного вентилятора, в санузле.

В выключенном режиме подсветка выключателя постоянно светится.

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

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

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

Конструктивно схема рассчитана на прокладку новой проводки,
 что и сделал мой кум при постройке санузла.

Схема.  

Прошивка, схема. 

  Второй вариант прошивки для экономок, схема стала проще. Схема. Прошивка. 

12 командный ИК приемник на PIC12F629

Устройство позволяет записать в память МК 12 команд с пульта ИК и их прием отображать на своих выводах в двоичном виде в режиме удержания кнопок, после отпуска кнопки пульта на выходах МК будут нули.

Для управления драйвером подойдет любой ИК пульт от бытовой техники с протоколом NEC. Дальность приема зависит от места установки приемника и используемого пульта.

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

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

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

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

Вывод данных в двоичном виде на ногах 7-6-5-3. То есть, выводится номер, принятой команды в соответствии очередности их записи. Первая записанная команда принята – выводится число 1 и т.д. В режиме покоя на выводах 0000.

Схема.  Прошивка.

ИК управление электро приводом -2.

Упрощенный вариант.

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

Программа ИК приемника универсальная поддерживает практически все протоколы пультов. Запись пульта можно провести, если с состояния выключенного питания нажать и удерживать кнопку «запись пульта» после подачи питания отпустить и нажать на пульте выбранную кнопку.

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

  Если во время движения привода пропадет питание, то после восстановления и подачи команды первым действием будет возврат привода в закрытое состояние до  замыкания «домашнего» концевого.

Прошивка.

Сенсорный кодовый замок.

Видео http://www.youtube.com

Схема.

Плата.  

  

По умолчанию код- 12345, для установки своего кода нужно в EEPROM с адреса 00h по 04h записать свой код, пять цифр. После правильного набора кода на 7 ноге МК появляется сигнал на три секунды. На плате транзистора под ключ реле не разводил. Для ноля пишем число 10, для Z- 11 и для R-12 ну а числа так и идут с 1 по 9.

Схема и прошивка

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

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

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

Прошивка V2

Изменения – есть возможность самостоятельно настроить время вывода сигнала на исполнительное устройство после правильного набора ПИН кода, производится изменением чисел в памяти EEPROM в ячейках идущих сразу после ПИН кода по адресу 05H и 06H.

Время можно вычислить по расчету Время в секундах= ADR_05H (1- ноль не записывать)* ADR_06H (50- цифры в десятичной системе)* 0.02 секунды = получаем задержку в 1 секунду.

Теперь еще индикации светодиода нажатой цифры с 8 ноги МК, как таковой нет, вместо этого на выводах 11-10-9-8 выводится число нажатой кнопки в двоичном виде, 8 нога младший БИТ и далее. 
 Использовав дешифратор типа 155ИД3 можно получить эквивалент каждой цифре свой выход (светодиод). 

P.S. Числа для записи в EEPROM надо конвертировать, программаторы не поддерживают десятичную систему исчисления.

Прошивка V3

http://ru.aliexpress.com/PIC12F629-DIP8

You have no rights to post comments.
Недостаточно прав для комментирования

Источник: http://sxem.org/2-vse-stati/82-USTROJSTVA-NA-MICROKONTROLLERAKH-SEMEJSTVA-PIC

Метка: PIC12F629

В статье рассмотрена конструкция охранной сигнализации (фото 1) для контроля целостности 7 отдельных шлейфов с независимой индикацией и звуковой сигнализацией их целостности.

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

Рассмотренная в статье 7-канальная охранная сигнализация (ОС) обеспечивает: индикацию и звуковую сигнализацию …

Читать далее

Постоянная ссылка на это сообщение: http://meandr.org/archives/28365

Ручной светодиодный фонарь BL-8760 потерял работоспособность. При отсутствии реакции на переключатель режимов работы фонарь хаотично мигал или постоянно светился.

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

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

Читать далее

Постоянная ссылка на это сообщение: http://meandr.org/archives/28138

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

Читать далее

Постоянная ссылка на это сообщение: http://meandr.org/archives/26720

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

Как и в обычных не электронных костях, например, для игры в “нарды”, выдаются два случайных и независимых значения от 1 до 6 одновременно. Расположение светодиодов стилизовано под стандартные кости.

При нажатии на кнопку, …

Читать далее

Постоянная ссылка на это сообщение: http://meandr.org/archives/25117

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

Схема устройства: Схема выполнена на недорогом микроконтроллере pic12f629. Как это работает 1.Питание 12в 2.При вкл зажигания после прохождения 6 импульсов с датчика скорости вкл ДХО 3.При вкл габаритов все переходит в штатный режим 4.

При выкл габаритов …

Читать далее

Постоянная ссылка на это сообщение: http://meandr.org/archives/21248

Источник: http://meandr.org/archives/tag/pic12f629/page/2

Двухканальное ИК управление v1

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

— два канала управления («А» и «В»)

— возможность использовать лампы дневного света

— инфракрасное управление от пульта бытовой техники (RC5 и NEC)

— таймер сна — 2мин

— режим работы: включить «А» или «В», выключить «А» или «В» и режим сна

Коммутацией занимается симистор BTA16 BTA08 и т.д., также применена оптопара MOC3043 (MOC3042) т.е. есть гальваническая развязка.   

Перечень деталей:

D1 6V2 стабилитрон

D2 1N4007 диод

C1 *** 0,39uF / 275V

C2 100nF

C3 47uF / 10V

C4 4,7uF / 10V

C5 10nF

R1 *** 47 / 1W

R2 560-680

R3 220-470 

R4 100

R5 1k

R6 100

Jp1 Jumper

Tr1 BTA16-600

LD1 светодиод

TSOP ИК приемник TSOP1738, TSOP1736, SFH5110, 

Sw1 тактовая кнопка

OPT1 ** оптопара MOC3043 / MOC3042

     

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

Обучение пульта ИК:

1) Держите кнопку 11сек, устройство войдет в режим программирования. Светодиод начнет мигать быстро и оба канала отключатся. Теперь в течении 11сек вы должны успеть запрограммировать пульт.

2) Жмем кнопку на пульте которая будет отвечать за включение первого канала «А».

3) Жмем кнопку на пульте которая будет отвечать за отключение первого канала «А».

4) Жмем кнопку на пульте которая будет отвечать за включение второго канала «В».

5) Жмем кнопку на пульте которая будет отвечать за отключение второго канала «В».

6) Жмем кнопку на пульте которая будет отвечать за включение и отключение режима сна.

  Во время программирования кнопок, при нажатии на программируемую кнопку пульта мигнет светодиод, тем самым сигнализируя о принятой и записанной команде. Если светодиод мигает и без нажатия на кнопку пульта то это значит, что вы применили несовместимый с устройством ИК приемник (например TSOP11xx). 

Описание Jumper:

  Например, если ваш пульт имеет только две кнопки [X и Y], и если нажать во время программирования: XXYYY, это означает, что кнопка X будет использоваться для канала «А», а Y будет использоваться для канала «B». В этом случае необходимо перемычку JP1 замкнуть, чтобы вы могли отключить каналы с той же кнопки. Если вы выберете XXXXY комбинацию, это означает, что X будет использоваться для включения и выключения канала «А», а Y будет использоваться для включения / выключения режима сна (канал B не используется).

Скачать прошивку для pic12f629, pic12f675 и печатку

Источник: http://elektro-shemi.ru/dvukhkanalnoe_ik_upravlenie_v1.html

Простой термометр на микроконтроллере PIC12F629 с батарейным питанием

ПодробностиОпубликовано 20.07.2013 09:50

Общее количество конструкций термометров на микроконтроллерах посчитать сложно. Каждый автор стремиться привнести что-то свое в этот простой прибор.

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

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

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

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

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

Принципиальная схема и конструкция

В основе принципиальной схемы измерителя лежит микроконтроллер PIC12F629 от Microchip. Данный процессор выпускается в корпусах с 8 выводами и способен работать при напряжении питания от 2 до 5.5В.

К его достоинством можно отнести встроенный генератор тактовой частоты и режим пониженного энергопотребления.

Объем внутренней Flash-памяти программ – 1Кб позволяет легко реализовать опрос датчика и преобразование температуры.

Принципиальная схема термометра

Датчиком температуры выбран термометр с цифровым выходом MCP9800, опять же от Microchip.Эта микросхема интересна, прежде всего тем, что выпускается в компактном корпусе SOT-23. Использование  шины I2C делает ее подключение к микроконтроллеру элементарным. Опять же наличие спящего режима повышает привлекательность применения MCP9800 для систем с батарейным питанием.

Отображение показаний температуры производится на жидкокристаллическом индикаторе TIC3321. Он не требует подсветки, вследствие чего потребляет минимальный ток. Для передачи данных в индикатор необходимо подключить всего три линии.  Широкий температурный диапазон работы от -40 до +80ºС позволяет строить не только комнатные, но и уличные модели приборов.

Печатная плата Вид со стороны элементов

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

Алгоритм работы и программа

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

Элемент питания CR2032 проработал ровно две недели, после чего термометр отключился.

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

Энергопотребление микроконтроллера PIC12F629 в режиме сна составляет 1нА (наноАмпер) при напряжении питания 2В. Еще может 300нА потреблять сторожевой таймер. При напряжении питания 3.3В эти значения будут несколько выше. Потребляемый ток в рабочем режиме сильно зависит от частоты генератора, напряжения питания и окружающей температуры.

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

Последний вариант наилучшим образом подходит для реализации в данной конструкции.

Перевод микроконтроллера PIC12 в режим сна делается очень просто. Для этого достаточно подать команду Sleep. Несколько сложнее организовать выход. Главная проблема встроенного сторожевого таймера WDT – малое время работы.

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

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

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

Датчик температуры MCP9800 также имеет возможность работы с пониженным энергопотреблением. Для его перевода в этот режим необходимо установить бит однократного измерения в регистре управления датчиком. При этом шина I2C остается в работе.

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

На это время, опять же, микроконтроллер можно перевести в спящий режим.

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

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

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

Файлы проекта.

 Исходный текст управляющей программы

Еще по теме:

Термометр на микроконтроллере PIC12F629

Термометр с линейной шкалой

Терморегулятор на микроконтроллере PIC16F676

You have no rights to post comments

Источник: https://mcucpu.ru/index.php/project2/izmeritelnye-ustrojstva/140-easy…

Устройство управления освещением 4-х канальное на PIC12F629

Для управления устройством подходят ИК пульты стандарта RC-5 и NEC. Возможности устройства: 1 – включение и выключение любого из каналов. 2 – регулирование яркости освящения любого из каналов.

3 – общее включение или выключение каналов. 4 – общее регулирование яркостью всех каналов освещения. 5 – дежурный таймер выключения нагрузок каждые 2, 4, 6, 8, часов или выключен.

6 – выбор типа нагрузки: лампы накаливания или энергосберегающие .

7 – выбор включения каналов, после выключения и включения питания электросети.

Используется 7 клавиш пульта 1-4 кнопка включение и выключение каналов нагрузки, 5-я кнопка прибавить яркость, 6-я убавить яркость, 7-я общее включение и выключение.

Чтобы прописать команды пульта в память устройства необходимо, после включения питания в течение 5 секунд нажать и удерживать клавишу в течение 4-7 секунд (она будет соответствовать первому каналу).

После этого должен включиться 1-й канал, все остальные выключатся. Далее следующая кнопка пульта это будет 2-й канал. Аналогично 3 и 4-й канал. Следующая команда прибавить яркость. Перед ее программированием необходимо выбрать время таймера выключения нагрузок для этого: коротким нажатием клавиш (0,1 – 0,5 секунды) пульта 1 – 4-го канала включаем или выключаем нагрузку.

Включение каждого канала будет соответствовать 2 часам таймера, таким образам таймер выключения будет 2,4,6 или 8 часов. Если все нагрузки выключить, то и таймер будет отключен. После выбора времени таймера выбираем клавишу пульта, которая будет прибавлять яркость свечения ламп, нажимаем и удерживаем ее в течение 4-7 секунд. После чего произойдет инверсия нагрузок.

Следующая команда убавить яркость. Перед ее программированием необходимо выбрать тип нагрузки накальные или энергосберегающие лампы для этого: коротким нажатием клавиш (0,1 – 0,5 секунды) пульта 1 – 4-го канала включаем или выключаем нагрузку.

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

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

Следующая и последняя команда общее включение и выключение нагрузок.

Перед ее программированием необходимо выбрать, какие нагрузки будут включаться и с кокой яркостью свечения после включения питания, выбираем клавишу, давим 4-7 секунды, после чего все лампы потухнут, потом  включатся на 2 секунды и снова потухнут. Это окончание программирования устройства. После этого устройство готово к работе. Все команды во флеш памяти.

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

Устройство можно вмонтировать в распределительную коробку или в люстру. В одной комнате можно использовать несколько устройств только при записи команд поочередно закрывать фотоприемники устройств.

Второй вариант схемы для симисторов с током управления 5мА:

О схеме

На 2х фото виден монтаж деталей, правая плата это первый вариант, там нет индикации. Все резисторы SMD 0603 кроме R1,2,3,5,6,7 они SMD 1206, R4 на один ватт. С1 можно 400в. Светодиод, индикатор питания и контроль прохождения сигнала с ИК приемника.

Оптические симисторы MOC3023 в схеме нужны для управления BTA12-600B, т.к. ток управления последними 50 мА, а MOC3023 всего 5 мА. Схему можно упростить используя другие симисторы с током управления 5 мА например BTA12-600TW, при этом можно исключить MOC3023.

Максимальная нагрузка на канал без радиаторов 150 ватт.
При прошивке микроконтроллера не забывайте про калибровочную константу. Прошивка для МК полная и рабочая.

Ниже вы можете скачать прошивку, исходник ASM и печатную плату в формате Sprint-Layout

Список радиоэлементов

Скачать список элементов (PDF)

Прикрепленные файлы:

Источник: http://cxem.gq/house/1-302.php

Ссылка на основную публикацию
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}