Поиск и создание компонентов для eagle cad

Работа в Eagle Cad. Часть 2

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

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

Создание своего компонента в Eagle cad
Когда я впервые сел за орла, мне это покзалось очень запутанным и сложным, но на деле, если отбросить мишуру, все будет очень и очень просто. Давайте-ка создадим, для примера, что нибудь несложное. Например линейный стабилизатор LM-1117-3.3 в разных корпусах. Его я не нашел в библиотеках.

Итак, вначале даташит на LM1117

Задача ясна, будем творить. Открывай главное окно Орла и в меню выбирай File—New—Library

Откроется окно будующей библиотечки:

Сразу сохрани ее, назвав как нибудь. Я назову ее PowerIC и буду сюда складыват все преобразователи которые буду создавать.

Начнем рисовать компонент с его условно графического обозначения (УГО). Если помнишь, это такой квадратик у которого вход, выход и земля. Вот его и нарисуем.

Тыкай в кнопочку Symbol и выскочит диалог выбора правки символа. Пока у нас ничего там нет, так как ни одного символа не создали. Не беда, в поле New пишем имя LM1117 и жмем кнопку Sym, а затем ОК.

На вопрос создавать ли новый символ говорим да. Откроется клетчатое поле:

С помощью инструмента Wire рисуем квадратик. Это будет наш элемент. Затем берем инструмент Pin и выставляем пины. И вот тут нас поджидает засада.

Дело в том, что в Eagle у детали должно быть столько пинов, сколько контактов у посадочной площадки. А оно тут разное. У TO220 три контакта, а у остальных по четыре и даже более.

Так что придется делать по символу на каждый вид. Сначала нарисуем под TO220.

Берем Pin и расставляем их вокруг нашего квадратика. Их будет три, так как делаем для корпуса ТО-220.

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

А также вид отображения — без обозначений, с обозначением только имени, с обозначением только номера вывода, или оба обозначения сразу.

Теперь хватай инструмент Info и тыкай в каждый нарисованный пин. Будет вот такой диалог:

Выставляем нужные параметры:

  • Name — IN для вывода который будет входом, OUT для выхода и GND для земли соответственно.
  • Direction — тип вывода. Выбери… ммм, думаю, для всех будет уместным Pwr. Все же это силовая цепь.
  • Swap level — В данном случае не нужно, пригождается когда у нас несколько выводов однотипных, как например, вентили в К155ЛА3 и мы можем пользовать их в любом порядке. Вот тут то и задается Swap для однотипных выводов. И потом, в схематике, их можно безболезнено менять местами, чтобы разводка красивей получалась. Толком правда я с этим еще не разбирался.
  • Length — длина вывода. Оставь по дефолту
  • Function — УГО назначения (тактовый, IO или инверсный)
  • Visible — оставь только Pin. Зачем нам номера выводов в трехвыводном корпусе? А для микросхем многоногих лучше делать Both

Получается вот такая красота:

Осталось добавить обозначение и значение. Бери инструмент Text и рисуй две текстовые метки. В одну впиши прям текстом «>VALUE», а в другую «>NAME» — это специальные тэги, вместо них Eagle потом подставит значения. Рисовать их лучше на слоях tValue и tName соответственно. Чтобы можно было скопом отключить все имена или все значения.

На этом с символом можно закончить. Благо он простой. Переходим к созданию корпуса. И тут у нас два пути.

Простой способ — копирование из готового.
Не закрывая библиотеку, перейди в главное окно Eagle и найди там в разделе библиотек либу ref-packages.lbr — это коллекция разных корпусов, каких там только нет. Нам надо ТО-220.

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

Они сразу же покажутся в библиотеке. Теперь в нашей библиотеке будут два корпуса.

Надо назначить им название выводов. Жми снова Package и выбирай корпус который будешь редактировать. Хватай инструмент Info и тыкай им по очереди в каждый контакт.

Откроется диалог настройки пятачка и в нем надо выставить поля

  • Name — имя контакта. По даташиту, у LM1117 первый вывод это GND/ADJ Вот так и назовем его.
  • Drill — это размер отверстия.
  • Diameter — размер пятачка. Стоит авто — это значит, что он будет вычислен автоматом исходя из диаметра отверстия и правил разводки платы. Но можно выставить и конкретное значение.
  • Shape — это форма пятачка, в данном случае Long и повернутая на 90 градусов (строка Angle).
  • Thermals — сделает нам термопереход если окажется, что этот вывод должен быть подключен к полигону.
  • Stop — означает, что мы сразу же для него генерируем слой маски
  • First — указывает, что это первый вывод корпуса (справедливо для микросхем) и в таком случае он автоматом может быть другой формы, скажем квадратной. Это все оговаривается в правилах схемы.

Также, по даташиту, прописываешь остальные выводы. Если у тебя микросхема, то выводы проще пронумеровать 1, 2, 3 и так далее.

Жми сохранить корпус. Готово! Можно переходить к созданию элемента.

Сложный способ — создание корпуса с нуля.
Жми кнопочку Package и откроется такой же диалог как и в случае с Symbol

Там пишем в поле New пиши TO220 — имя нашего будущего корпуса, а потом жми Pac и New. Скажи «да» на вопрос о создании нового корпуса. Откроется поле в котором можно рисовать:

Настраиваем сетку на 2.54мм и рисуем наш корпус. Сначала ставим пятачки:

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

Теперь бери инструмент wire и рисуй вокруг детали, на слое tPlace, ее посадочное место.

Потом, тем же wire, по слою tKeepOut, нарисуем возможный габарит радиатора.

Осталось добавить надписи. Ставь такие же текстовые метки >VALUE и >NAME, но с одной разницей. >VALUE размещаешь на слое tValues, а >NAME на слое tNames.

Также рекомендую тыкнуться в слои tStop/bStop и поглядеть на наличие паяльной маски надо контактами (штриховочка такая). А то потом забудешь и, глядишь, дорастешь до изготовления плат на производстве, отдашь, а тебе придет плата с закрытыми маской контактами.

Матюков по этому поводу будет ООЧЕНЬ много, так что сразу же проверь маску. Особенно если делаешь не простые пятачки (игл к ним сам маску обычно рисует), а какие нибудь полигоны для запаивания радиаторов, например.

Вот поверх них надо на слой tStop (или bStop если деталь внизу) тоже положить полигон, чуть большего размера, чтобы открыть эту область от маски.

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

Сохраняй корпус и переходим к созданию элемента.

Создание элемента
Элемент это уже связанный комплекс корпуса и его УГО. Тыкай кнопочку Device и в окне

Впиши в поле New название детали LM1117, жми кнопочку Dev и Ок. Игл опять спросит создать ли новый девайс. Говори «да».

Откроется окно создания детальки:

Сначала надо добавить УГО. Жми там сбоку кнопочку ADD и ставь на бело поле наш рисунок стабилизатора. Ставь так, чтобы крестик внутри был, иначе криво будет на схеме смотреться =)

И жми кнопочку NEW справа внизу, чтобы добавить корпус.

Выбирай корпус, в поле Variant пиши что нибудь вроде TO-220-Horizital. Потом также добавь второй корпус.
Получится такая вот картина:

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

Остается их соответственно выбирать и жать кнопку Connect, привязывая один к другому. А поскольку мы не поленились и в УГО и в корпусе дали им названия, то ошибиться будет очень сложно :)))

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

Жми кнопку Prefix и выставлй там что либо вроде «U» — и все эти микросхемы на плате будут зваться U1, U2 и так далее. Если это не сделать там будет уродливое U$1. Значение Value оставь выключеным. Сохраняй библиотеку, подключай ее в главном окне Eagle в проект и пробуй добавить на схему.

Библиотеки могут быть более хитрыми, например с многосоставными элементами, когда ставишь какую-нибудь К155ЛА3, а у ней внутри четыре одинаковых 2И-НЕ элемента. И их ставишь по одному, да потом еще меняешь как хочешь.

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

Он там весьма и весьма мощный.

Также есть один очень мощный скрипт по созданию библиотек. Запускаешь File — Run — make-symbol-device-package-bsdl.ulp и вылезает здоровенный диалог. В нем можно прям из даташита вписать циферки разные и получить готовый корпус любой конфигурации почти. Причем уже с готовым Symbol и упакованный в Device. Сам пока еще правда не разбирался.

Проверка платы
После разведения и трассировки можно проверить плату на корректность. Для этого есть инструмент ERC — electrical rule check. Нажав на него ты получишь список всех ошибок и предупреждений. Некоторые ошибки можно игнорировать, некоторые нет. Тут думать надо. Например, у меня ругается следующим образом:

Первые ошибки гласят о том, что у цепи ENABLE не совпадение типов выводов. Помнишь я говорил, что вывод может быть Input, Output, Power, IO и так далее? Вот игл это проверяет, предупреждая если ты, например, засунешь питание или землю на информационный вывод.

Нет, может так и надо по схеме, но нетипично и вызвает подозрение и лучше на это обратить внимание — не ошибка ли. В данном случае, Орел ругается на то, что ENABLE это чисто вход и идет соединение входа с входом. На это можно забить, т.к. это косяк компонента в библиотеке, т.к. у FT232 эти выводы не Input, а Input/Output.

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

Ну и ряд warning из серии, что к такому то выводу подключено питание, нет ряда номиналов и так далее. Оглядев их все, понимаю, что ничего критичного и можно забить — выделяю их и жму Approve, мол расслабься Птаха, это не бага а фича 🙂

Второй этап проверки это DRC — проверка допусков и размеров. Это уже делается на печатной плате. Жмешь кнопку DRC и вылезает окно с вводом правил проверки. А внизу есть кнопочка Check. Нажмешь ее и на плате появится штриховочки такие, обозначая слабые места, не соответствующие правилам, а сбоку выскочит окошко с ошибками и типом ошибки.

Тыкая на ошибку Eagle покажет тебе этот участок схемы крупней. Например, ошибка типа «Clearance» это слишком близко дорожка идет, или отверстие меньше чем надо и так далее. Если правила слишком брутальные (скажем минимальный зазор не меньше миллиметра), то на мелкий корпус будет очень много мата.

Главное это увидеть, а решать забить/исправить можно уже по ходу процесса.

Печать чертежа
Вот чертеж готов, проверен и его надо вывести на печать. Тут все просто — чтобы не смешивать людей и коней, надо выключить ненужные слои и оставить только то что нам надо. Скажем, распечатываем мы нижнюю сторону. Не вопрос, оставляем слои Bottom, Pads, Via, Dimension и все. Все остальные выключаем вообще.

Надо распечатать шелкографию для нанесения на верхний слой? Тогда выключаем все кроме tNames, tPlace, Dimension и остается на плате только рисунки обозначений.

Ну, а на печать выводим просто через диалог печати, где можно заодно и развернуть плату зеркально, если печатаем верхнюю сторону. Также там надо обратить внимание на галочку Black — чтобы все вывелось черным цветом.

Ну и одна небольшая хитрость. Дело в том, что в Eagle нельзя произвольно менять размер дырочек и пятачков на плате. А штатные размеры при домашнем изготовлении не сильно удобны. Обычно делаешь дырочку не более 0.3мм, чтобы сверло центровалось.

Но не править же ради этого все библиотеки? Поэтому есть один костыль — скрипт drill-aid.ulp. Когда плата будет готова, то через File — Run запускай его, указывай размер дырочек и он поверх всех твоих отверстий положит плашки с дырочкой указанного размера.

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

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

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

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

И выяснилось, что все куда круче чем кажется!

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

Ввел, например, «display top» — появился верхний слой. А ввел параметр с минусом «display -top» верхний слой исчез. Можно и сразу пару параметров. Например, команда «display -top bottom;» выключит верхний и включит нижний.

Аналогично сделает и «display 1 -16;» Т.к. слои top и bottom имеют номера 1 и 16, соответственно. То же самое можно сделать и в отношении других слоев. Да и вообще группировать команды (а их там немало) разным способом.

А теперь лезем в раздел Options Assign и на хоткеи вешаем наши скрипты. У меня это выглядит так:

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

В следующий раз напишу про коллекцию скриптов и автотрассировку, если сам разберусь во всех этих параметрах 😉

Источник: http://easyelectronics.ru/rabota-v-eagle-cad-chast-2.html

Eagle Cad. Создание компонента. Ч1

Введение

Что мне нравится в Eagle Cad, так это большое количество готовых библиотек. Однако рано или поздно все равно возникает момент, когда нужного компонента нет и нужно создавать его самому.

В этом посте мы рассмотрим процесс создания библиотеки и новых компонентов. 

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

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

Создание библиотеки

Наш первый шаг – это создание новой библиотеки. Запускаем Eagle и в верхнем меню выбираем File > New > Library.

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

Сразу сохраним нашу библиотеку. Выбираем в верхнем меню File > Save As, указывая папку для сохранения и название библиотеки. Допустим название библиотеки будет test-lib.

Ок. Библиотека создана, но она пока что пустая и не подключена к Eagle`у.

Что будет размещаться в библиотеке? Библиотеки обычно содержат три базовых компонента:- Package: посадочное место (футпринт), используемое в редакторе печатных плат
Symbol: условное графическое обозначение компонента, используемое в редакторе схем
Device: сам компонент, состоящий из графического символа и посадочного места.Для создания полноценного компонента нам понадобится и посадочное место, и графическое обозначение компонента. Начнем с посадочного места.

Создание посадочного места в Eagle

Нажимаем на иконку Package или выбираем в верхнем меню Library > Package.Откроется диалоговое окно со списком всех посадочных мест библиотеки. Сейчас оно, естественно, пустое. Вводим название нового посадочного места и нажимаем Ок.

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

Выбираем в верхнем меню View > Grid, откроется диалоговое окно настройки сетки. 

В выпадающих списках выбираем mm вместо inch. Что еще здесь можно настроить?Display – это управление отображением сетки.
Style – стиль отображения сетки: линии или точки.
Size – шаг основной сетки.

Multiple – количество шагов сетки, через которые будут отображаться линии (точки)
Alt – шаг альтернативной сетки. Активируется при нажатии и удерживании кнопки Alt.
Default – установка значений по умолчанию.
Finest– установка наименьшего шага сетки.

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

Например для создания площадки можно нажать на иконку Pad, выбрать в верхнем меню Draw > Pad или набрать в консоли команду pad

Нажали на иконку Pad. Наверху изменилась панель инструментов и курсор приобрел форму контактной площадки. В панели инструментов можно выбрать форму контактной площадки, внешний диаметр площадки (Diametr), внутренний диаметр отверстия (Drill) и угол поворота площадки (Angle). 

Для нашего примера параметры резистора будут такие.

d = 0.58
D = 2.5
L1 = 6.5

Выбираем круглую контактную площадку, внутренний диаметр 0.8 мм нам подойдет, внешний оставим автоматическим. Расставляем две контактные площадки для резистора на рабочее поле редактора.

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

Например, можно взять по 3 мм с обоих сторон от корпуса. 

Уже поставленные площадки можно двигать с помощью инструмента Move (меню Edit > Move или кнопка F7).

Измерить расстояние между выводами можно с помощью инструмента Dimension (меню Draw > Dimension)Каждая контактная площадка имеет имя. При создании контактной площадки Eagle автоматически присваивает ей имя.

Это имя можно изменить с помощью инструмента Name (меню Edit > Name), но для резистора мы не будем этого делать. 

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

Выбираем инструмент Wire (меню Edit > Wire), в верхнем меню выбираем слой tPlace, толщину линии и рисуем.

Также в верхнем меню можно менять другие параметры рисования: способ рисования линии (под прямым углом, под углом 45 и т.д.), радиус закругления (miter), тип (непрерывная, пунктирная и т.д.).

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

Теперь нужно разместить атрибуты посадочного места – имя и значение. Имя размещается на слое tName. Нажимаем на иконку Text (меню Draw > Text) , вводим в диалоговом окне >NAME, нажимаем Ок. В верхнем меню устанавливаем размер шрифта, векторный тип и размещаем надпись рядом с резистором.

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

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

 Сохраняем результат File > save. Посадочное место (футпринт) для компонента готово. 

Создание графического обозначения компонента в Eagle

Переходим к созданию условного графического обозначения (УГО) или символа компонента. Выбираем в меню редактора посадочных мест Library > Symbol

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

Так же как мы это делали для редактора посадочных мест в меню View > Grid. Теперь нужно нарисовать два вывода. Выбираем инструмент Pin (меню Draw > Pin) и над окном редактора отобразится панель с настройками вывода.

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

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

Видимость.

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

Параметр свопирования определяет взаимозаменяемость выводов компонента. Свопирование – это операция, используемая при разводке схем. Она позволяет “перекинуть” цепь на другой (идентичный) вывод компонента. Если swaplevel равен 0, то выводы нельзя менять местами.

Если больше 0, то выводы с одинаковым swaplevel взаимозаменяемы. Выводы резистора взаимозаменяемы, поэтому для его выводов можно установить этот параметр равным, например, 1. Но поскольку резистор имеет симметричную форму, от этого мы ничего не выиграем. Другое дело микросхемы. Вот там функция свопирования очень помогает.

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

Имя вывода можно изменить с помощью инструмента Name, но для резистора нам это не нужно. 

Нарисуем графическое изображение резистора. На отечественных схемах он отображается в виде прямоугольника размером 4 на 10 мм.

Нажимаем на инструмент Wire, выбираем слой Symbols, устанавливаем требуемую толщину линии и рисуем. Процесс рисования аналогичен описанному выше.

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

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

Добавляем символу резистора атрибуты – имя и значение.

Выбираем инструмент Text (меню Draw > Text), в открывшееся окно вводим >NAME, устанавливаем слой Names, размер шрифта и размещаем надпись около резистора.

Аналогично поступаем и с атрибутом “значение”: текст >VALUE, слой Values. Тип шрифта здесь не важен, можно оставить как есть. 

Символ готов, сохраняем полученный результат.

Создание библиотечного компонента в Eagle

Дело за малым – нужно создать компонент, объединив посадочное место и его графическое изображение. Выбираем в меню Library > Device и в открывшемся окне пишем имя нашего нового библиотечного компонента. Откроется очередной редактор.Вызываем инструмент ADD (меню Edit >Add) и добавляем на рабочее поле символ резистора.

У появившегося изображения есть два параметра. Addlevel – параметр размещения.

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

О нем я уже упоминал выше, только в данном случае этот параметр относится не к выводам компонента, а к его частям. У нас никаких блоков нет, поэтому его тоже пропустим. G$1 – это автоматически присвоенное имя.

Чтобы резистор именовался на схемах с буквой R, нужно вписать ее в поле Prefix

С правой стороны нажимаем кнопку New и добавляем компоненту посадочное место. Затем нажимаем Connect и связываем выводы символа с выводами посадочного места. 

С помощью кнопки Append можно связывать несколько выводов посадочного места с одним выводом символа. Сохраняем результат. Компонент готов!Подключить его к проекту можно из редактора схем с помощью меню Library > Use.
Продолжение следует…

Ссылки

Eagle Cad. Рисование схемы

Источник: http://chipenable.ru/index.php/programming-avr/item/185

Eagle: как самому сделать библиотечный компонент

Источник: http://microsin.net/adminstuff/others/eagle-how-to-make-a-custom-library-part.html

Да здравствует Eagle Cad. Часть 2 – Создание своего компонента. — Сообщество «Электронные Поделки» на DRIVE2

В этой части кратко пробежимся по созданию нового элемента в библиотеке Eagle Cad. Сейчас для одного проекта мне нужно отрисовать 4х контактное реле от Лады Калина. Без костылей тут не обошлось, ибо нельзя сделать длинные металлизированные отверстия, пришлось сделать ряд из обычных круглых отверстий.

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

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

Берем элемент Wire и начинаем рисовать на слое Symbols. Это основной слой для рисования компонента принципиальной схемы.

Далее добавляем необходимый текст. В данном случае текст — часть элемента. Обычно имена пинов привязываются к самим пинам.

Далее нужно добавить обозначение и значение. Берем инструмент Text и рисуем две текстовые метки. В одну пишем прям текстом «>VALUE», а в другую «>NAME» — это специальные тэги, вместо них Eagle потом подставит значения. Рисовать их лучше на слоях tValue и tName соответственно. Чтобы можно было скопом отключить все имена или все значения. © DiHalt

Берем элемент Pin и расставляем пины. По-умолчанию у них причудливые имена.

Но их можно переименовать через свойства.

А это как небольшое отступление от темы. Например, вам понадобилось скопировать уже существующее изображение в другой элемент. Выделяем все командой Group, жмем Copy (два маленьких человечка), а дальше правой кнопкой на листе — Copy: Group. Вот так, весьма причудливо, Eagle копирует элементы.

Добавляем новый корпус. По аналогии с добавлением УГО. Package -> New -> Ok. И сразу выставляем удобный шаг сетки. Я предпочитаю работать с шагом 1мм и дополнительным шагом в 0.1мм. Дополнительный шаг работает при зажатом Alt.

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

Есть такая удобная штука — называется Mark (маркер). Он служит для установки точки отсчета побочной оси координат. Например мне удобно рисовать от левого верхнего угла, ставлю туда маркер и слежу за координатам в соседнем окошке. Расставляем наши пады. Они есть разных форм.

Добавляем необходимый текст, который будет напечатан в слое шелкографии. Не забудьте перевести текст в вектор, иначе будут проблемы при переводе в gerber для производства.

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

Такой момент — запоминайте последовательные номера отверстий, далее придется их соединять воедино. Я планирую сверлить в домашних условиях, поэтому делаю прерывисто.

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

Последний этап создание нового компонента. Объединение символа и корпуса воедино. Добавляем новый Device. Добавляем в этот девайс наше изображение и корпус.

Теперь то, о чем я говорил. Нужно поставить пины символа в соответствие падам корпуса. Выбираем пин G$1.4 (контакт 30 реле), соединяем с падом P$1 (Connect) и добавляем все оставшиеся к нему кнопкой Append. Получится список соединенных падов, соответствующих одному пину.

Сохраняем компонент и добавляем его на схему. Готово.

Можно соединять.

Всем спасибо.

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

Ссылка на часть 1: Долой Sprint Layout, да здравствует Eagle Cad. Часть 1.

Источник: https://www.drive2.ru/c/1834619/

Библиотеки

 В связи с тем, что штатных библиотек у EAGLE очень много (к примеру, в версии 4.09r2 их 169, и занимают они более 16 мегабайт), я не возьму на себя героический труд – описывать каждую.

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

. Согласитесь, просто нелепо.

   Итак, открываем браузер библиотек. Ниже в алфавитном порядке перечислены самые употребляемые среди пользователей библиотеки (опрос был произведён в мае 2002 года).

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

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

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

В таких ситуациях Вы можете либо копировать готовые компоненты из других библиотек в нужную библиотеку (как это делается, описано в [2]), либо создать нужный компонент и библиотеку компонентов с нуля. В этой статье будет рассматриваться создание нового компонента (перевод статьи [1]). 

[Шаг 1. Запустите панель управления Eagle]

На системе Linux выполните команду eagle из командной строки. На Windows кликните на иконку запуска Eagle на рабочем столе, или выберите в меню Пуск -> Все программы -> EAGLE Layout Editor 6.2.0 (цифры означают номер версии) -> EAGLE 6.2.0.

[Шаг 2. Выберите нужную библиотеку для проекта, или создайте новую]

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

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

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

Чтобы создать новую библиотеку, перейдите в меню и выберите File -> New -> Library. После создания новой библиотеки сразу же сохраните её в корневую папку проекта, и дайте ей понятное имя файла.

Примечание: в Eagle при создании библиотеки иногда случается некий глюк. Когда Вы выберете File -> New -> Library, то Вам все равно предложат открыть уже существующую (! непонятно зачем) библиотеку, и только потом, уже в редакторе библиотеки, Вы можете выбрать в меню File -> New. Создастся новая библиотека.

Если же Вы хотите добавить новый компонент в уже существующую библиотеку (я Вам этого не советовал!), то выберите в списке Libraries нужную библиотеку и в контекстном меню выберите Open.

[Шаг 3. Работа с новой библиотекой]

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

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

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

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

[Шаг 4. Уделите время изучению даташита на компонент]

В этом руководстве в качестве примера создания компонента выбран гироскоп ADXRS150 компании Analog Devices. Чтобы получить все нужные размеры корпуса нужно открыть и изучить его даташит.

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

Мы начнем создавать компонент именно с корпуса. Нужно создать 32-выводный корпус BGA (Ball Grid Array, массив шариковых выводов). Из даташита можно узнать, что шарики имеют диаметр 0.55 мм, и расстояние между их центрами составляет 0.80 мм.

Расстояние между центрами крайних шариков составляет 4.80 мм.

[Шаг 5. Начало создания корпуса компонента (package)]

Кликните на иконку корпуса в окне редактора библиотеки. Откроется маленькое окно и в поле ввода New: введите имя корпуса. Имя должно быть информативным, отражающим тип корпуса, в нашем примере это будет имя BGA-32. После этого кликните на кнопку OK. Высветится окошко подтверждения: “Create new package 'BGA-32'?”, подтвердите, кликнув на кнопку Yes.

[Шаг 6. Настройка координатной сетки]

Диалог редактирования координатной сетки вызывается вот этой кнопкой (также можно ввести команду grid, или выбрать в меню View -> Grid):

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

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

Настройте координатную сетку так, чтобы её основной шаг был в 2 раза меньше шага выводов, и альтернативный шаг (когда удерживается клавиша Alt) сделайте в 5 или 10 раз меньше.

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

Для нашего примера диаметр шарика 0.55 мм, и расстояние между центами шариков 0.8 мм. Таким образом, удобно настроить координатную сетку так, чтобы шаг выводов соответствовал шагу координатной сетки. Можно настроить координатную сетку следующим образом: в поле Size вписать значение 0.

2 мм, в поле Multiple указать 5, и в поле Alt указать 0.2 (альтернативно можно указать в поле Alt другое число, тогда координатная сетка будет меняться при удерживании клавиши Alt). Если указать Multiple 1, то координатная сетка будет слишком мала для отображения, и не будет видна.

Оставьте радиокнопку Display в положении On, и радиокнопку Style в положении Lines.

[Шаг 7. Добавление выводов (pads)]

Если Вы в этой точке хотите сделать копию другого корпуса (package) из другой библиотеки, то можете использовать команду copy следующего синтаксиса (команду следует вводить в командной строке, которая находится чуть выше рабочего поля редактора):

copy packagename@libraryname

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

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

Введите в командной строке редактора команду smd, эта команда нужна для создания планарных выводов компонента. По умолчанию будет выбран слой Top. В выпадающем списке Smd по умолчанию не отображен круглый вывод, для того чтобы он стал круглым, нужно ввести размер “0.55 x 0.55”, и выбрать скругление (roundness) 100%.

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

Альтернативно в командной строке можно вводить координаты вывода (x-coord y-coord), и вывод компонента будет размещен там, где Вы хотите.

Совет: может быть, было бы проще сделать точку отсчета центр чипа, и просто давать координаты для размещения выводов (3.2 0) (-3.2 0) … и так далее.

[Шаг 8. Добавление оформления для корпуса]

В слое tPlace поместите графику края чипа, и поместите также метку, показывающую место расположения шарика A1.

Линии рисуются инструментом Wire. Введите команду wire в командной строке редактора. Выберите слой 21 tPlace. Теперь нарисуйте 7 мм квадрат вокруг всех выводов, которые мы нарисовали на предыдущем шаге. Можно рисовать линии вручную, либо вводить их координаты в командной строке.

[Шаг 9. Именование выводов]

Чтобы упростить дальнейшее использование компонента, хорошей идеей будет дать имена выводам. Введите в командной строке команду name, и сделайте двойной клик на каждом выводе корпуса компонента. Будет появляться окно диалога, где нужно просто ввести новое имя. Здесь не нужно использовать функциональные имена выводов чипа (наподобие SCK, MISO и т. п.

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

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

[Шаг 10. Добавление для посадочного места атрибутов NAME и VALUE]

Для многих устройств нужно на печатной плате шелкографией показывать позиционное обозначение (RefDes, Reference Designator, например R1, R2, C1) и номинал (1k, 4.7uF и т. п.

), а для некоторых нужно показать только позиционное обозначение. Положение позиционного обозначения определяет атрибут >NAME, а положение номинала атрибут >VALUE.

Чтобы добавить эти атрибуты, добавьте соответствующий текст на слои 25 tNames и 27 tValues:

Слой Текст атрибута, который нужно добавить на этот слой
25 tNames >NAME
27 tValues >VALUE

Параметры для имени (Name, этот атрибут используется для имени типа компонента) и значения (Value, этот атрибут показывает номинальное значение для компонента, например для резистора номинал 1 кОм) добавляются на отдельных слоях tName и tValue соответственно.

Выберите инструмент ввода текста, или введите команду text в командной строке редактора. Выберите слой tName layer, подходящий размер шрифта, и поместите текст возле верхнего левого края компонента. Повторите процесс для value, но на этот раз выберите слой tValue, и разместите атрибут возле нижнего края корпуса.

Убедитесь, что все графические элементы корпуса находятся на нужных слоях. Это можно сделать, если выключить все слои, кроме одного (с помощью инструмента Display), в котором Вы проверяете графику.

[Шаг 11. Начало создания символа компонента (symbol)]

Кликните на кнопку Symbol и добавьте новый символ. Этот шаг очень похож на шаг 5, отличие только в том, что это symbol, а не package.

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

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

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

[Шаг 12. Вернемся к даташиту]

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

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

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

[Шаг 13. Нарисуем symbol]

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

Как только прямоугольник символа нарисован, введите команду pin в командной строке редактора, и начните размещать 32 вывода по краю нарисованного прямоугольника.

[Шаг 14. Именование выводов символа]

После размещения выводов они получили имена P$1-p$32. Использование компонента упростится, если дать выводам символа те же имена, которые даны в даташите.

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

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

Поменять отображение можно через свойства вывода (инструмент Info), или выбором в меню Edit -> Change -> Visible, затем выберите один из вариантов отображения (off, pad, pin, both). Затем кликните на каждый вывод. Для микросхемы подойдет вариант both, для разъема pad, для резистора или конденсатора off.

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

Иногда нужно на схеме отображать и имена, и номера выводов (например, если компонент это микросхема), иногда только номера выводов (например если компонент это разъем), а иногда не нужно отображать ни номера, ни имена выводов (например если компонент это резистор или конденсатор).

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

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

имя вывода не будет видно на схеме, этот вариант подойдет для коннектора), pin отображается имя вывода символа и не отображается имя посадочного места (т. е. номер вывода детали выден не будет) и both на схеме будут видны и имя, и номер вывода (подойдет для микросхемы).

Имя библиотеки Краткое описание компонентов библиотеки
 40xx.lbr, 45xx.lbr Логические микросхемы КМОП-серии
 74ac-logic.lbr, 74ttl-din.lbr,
 74xx-eu.lbr, 74xx-us.lbr
Логические микросхемы ТТЛ-серии
 atmel.lbr AVR-устройства от ATMEL
 battery.lbr Батареи, аккумуляторы, разъёмы стандартных аккумуляторов
 con*.lbr Всевозможные разъёмы
 crystal.lbr Кварцевые резонаторы и сборки
 dil.lbr Разъёмы DIL (панели под микросхемы)
 diode.lbr Диоды и стабилитроны
 discrete.lbr «Универсальная» библиотека, здесь втиснуто всего дискретного понемногу
 display-hp.lbr Светодиодные дисплеи от Hewlett Packard
 display-lcd.lbr Жидкокристаллические индикаторы от Hitachi и Data Modul
 fiber-optic-hp.lbr Оптические разъёмы от Hewlett Packard
 fiber-optic-siemens.lbr Оптические разъёмы от Siemens
 fuse.lbr Предохранители и держатели под них
 heatsink.lbr Стандартные радиаторы известных производителей электроники
 ic-package.lbr Стандартные варианты посадочных мест для микросхем
 inductors.lbr Катушки индуктивности, дроссели
 led.lbr Светодиоды
 microchip.lbr PIC-контроллеры и другие устройства от MicroChip
 opto-trans-siemens.lbr Оптотранзисторы от Siemens
 optocoupler.lbr Оптроны
 plcc-socket.lbr Разъёмы типа PLCC
 pot.lbr Подстроечные резисторы (с переменными у EAGLE напряжённая ситуация)
 rcl.lbr

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

 rectifier.lbr Диодные мосты и сборки
 relay.lbr Реле от Eichhoff, Finder, Fujitsu, HAMLIN, OMRON, Matsushita, NAiS, Siemens и Schrack
 resistor-net.lbr Резисторы в упаковке «линейкой»
 resistor-power.lbr Мощные резисторы
 smd-ipc.lbr Стандартные SMD-корпуса дискретных элементов
 supply1.lbr и supply2.lbr Символы подключения питания
 switch-dil.lbr Выключатели в DIL-корпусах
 switch-omron.lbr Кнопки популярной фирмы OMRON
 switch.lbr Различные тумблеры, кнопки, выключатели и переключатели
 trafo-siemens.lbr Трансформаторы, катушки от Siemens
 transistor-fet.lbr Полевые транзисторы
 transistor-npn.lbr Транзисторы «обратной» проводимости
 transistor-pnp.lbr Транзисторы «прямой» проводимости
 transistor-power.lbr Транзисторы большой мощности
 transistor-small-signal.lbr Малосигнальные транзисторы («ремейк» transistor-npn.lbr и transistor-pnp.lbr)
 triac.lbr Тиристоры, симисторы, переключающие диоды
 v-reg.lbr Интегральные стабилизаторы напряжения
 varistor.lbr Варисторы и терморезисторы
 wirepad.lbr Одиночные выводы схемы

   А вообще-то нужно просто хорошенько пройтись по библиотекам и прочитать описание (Description) к каждой библиотеке. Создатели EAGLE не поленились и сделали достаточно подробные описания к каждой библиотеке. Правда, на английском языке…

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

Источник: http://radio-hobby.org/modules/instruction/eagle/biblioteki

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