Подготовка плат для фоторезиста в Eagle CAD

Думаю нет необходимости рассказывать о том, что такое Eagle CAD и какие возможности это программа дает для разработки схем и печатных плат. По сути она стала стандартом «де-факто» у западных радиолюбителей.

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

Для работы с фоторезистом типа ПФ-ВЩ шаблоны должны быть выполнены в виде негативов. В Eagle это можно сделать, выбрав в качестве устройства вывода PS_INVERTED в CAM Processor, но такой способ не позволяет уменьшить размеры отверстий для облегчения сверловки с помощью скрипта drill-aid.ulp — у меня его слой просто игнорируется. Для борьбы с этой неприятностью было придуман следующий способ

Делай раз. Gerber
Итак, начнем с того, что откроем заранее разведенную плату:
plata

Здесь мы видим 2-слойную печатную плату. Нам нужно будет изготовить отдельно 2 слоя, причем верхний отзеркалить. Запускаем CAM Processor, через диалог Open Job открываем стандартный Job gerb274x.cam. Это шаблон, который сгенерирует нам gerber-файлы. Их-то и следует отдавать на производство, но мы пойдем другим путем и немного над ними пошаманим. Генерим gerber'ы, нажав Process Job. Также нам понадобится файл сверловки Excellon. Аналогичным путем открываем и выполняем excellon.cam. Теперь в папке с проектом у нас оказалась куча разных файлов gerber. Переходим к следующему шагу.

Делай два. Gerbv
Теперь нам понадобится текстовый редактор и программа Gerbv. В Linux ее можно установить в большинстве дистрибутивов, для Windows она вроде тоже есть, но я не пробовал. Если кто подскажет аналог — дополню.

Проблема Eagle в том, что пятаки и отверстия он рисует только те, что зашиты в библиотеке и изменить их на плате или на отдельном элементе простого пути нет. А нам хотелось бы иметь отверстия поменьше, чтобы удобнее было сверлить. Для этого я придумал такой финт. Открываем любым текстовым редактором *.drd файл сверловки. Он будет иметь примерно такое содержание

%
M48
M72
T01C0.0197
T02C0.0374
T03C0.0400
T04C0.0906
%
T01
X4501Y5801
<...>
X4301Y13401

T02
X5759Y14046
<...>
X6743Y14046

T03
X2001Y5201
X2001Y6201
<...>
X10501Y15401
T04

X8621Y15901
X3881Y15901
M30



Если приложить немного смекалки, становится понятно, что

T01C0.0197
T02C0.0374
T03C0.0400
T04C0.0906

это определение размеров отверстий, а

T01
X4501Y5801
<...>
X4301Y13401

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

%
M48
M72
T01C0.0197
T04C0.0906
%
T01
X4501Y5801
<...>
X10501Y15401
T04
X8621Y15901
X3881Y15901
M30


Самое большое сверло я оставил, это крепление USB-разъема. Хотя его тоже можно было бы сделать поменьше.

Теперь запускаем Gerbv и импортируем в него наши Gerber-файлы. Нам нужны файлы drd, cmp и sol. Это сверловка, верхняя медь и нижняя медь. Дальше идут хитрые манипуляции.

Перетаскиваем на самый верх слой сверловки. Щелчком на цветном квадратике устанавливаем его цвет на черный. Для слоев меди аналогично выбираем белый цвет. Теперь один из медных слоев отключаем (снимаем галочку рядом с ним) и делаем экспорт в SVG (Файл — Экспорт — SVG). Так же поступаем со вторым.

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


Делай четыре. А попроще?
Поскольку Gerber-файлы имеют текстовый формат, а SVG это обычный XML, не должно представить большой трудности написать скрипт, который одно переделывал бы в другое. Чем я и собираюсь заняться. Как только будет готово, выложу его на пользование всем желающим

Комментарии (51)

RSS свернуть / развернуть
>Делай четыре. А попроще?
Вставлю свое жало…
>… выбрав в качестве устройства вывода PS_INVERTED в CAM Processor,…
дальше открываем любым текстовым редактором и ищем в конце (обычно) конструкцию вида:
433024 292294 8128 h
где 433024 299994 — вероятнее всего координаты :-)
а вот 8128 — это как раз «отверстие» в пятаке диаметром 0.8128 мм.
я например заменяю это значение на 3128 (просто понравилось сочетание). Заменять цифири, например как вариЯнт, можно «поиск/замена» все в том же редакторе… Можно и скриптик изваять. Я надеюсь не надо обьяснять что вместо 8128 могут и другие диаметры быть :-). Отличительная особенность отверстий символ «h».
0
а постскрипт чем размножить/на печать вывести?
0
>Делай четыре. А попроще?
Вставлю свое жало…
>… выбрав в качестве устройства вывода PS_INVERTED в CAM Processor,…
дальше открываем любым текстовым редактором и ищем в конце (обычно) конструкцию вида:
433024 292294 8128 h
где 433024 299994 — вероятнее всего координаты :-)
а вот 8128 — это как раз «отверстие» в пятаке диаметром 0.8128 мм.
я например заменяю это значение на 3128 (просто понравилось сочетание). Заменять цифири, например как вариЯнт, можно «поиск/замена» все в том же редакторе… Можно и скриптик изваять. Я надеюсь не надо обьяснять что вместо 8128 могут и другие диаметры быть :-). Отличительная особенность отверстий символ «h». А, чутка не забыл… потом можно файлик в корел, инкскейп, сК1…
+1
Во как шустро… компоновать можно в инкскейпе… ща пробую освоить sK1 sk1project.org/ (не реклама)
0
Eagle еще неплохо в PNG экспортирует. Гасим ненужные слои. Далее File -> Export -> Image. Вводим имя файла, ставим галку в Monochrome, Resolution выбираем 600 dpi и жмем ОК. Затем полученный PNG грузим в GIMP переводим в негатив и на печать.

Результат — на одну программу в цепочке меньше.
0
PNG растровый формат, мне все-таки кажется, что здесь чем позднее растеризация (в идеале на принтере/плоттере), тем лучше
0
Несколько запоздало, но все-таки хочу высказать автору свою благодарность. В свое время статья здорово мне помогла. Ну и хочу внести свою лепту в автоматизацию процесса. Руками герберы в SVG мне конвертировать быстро надоело, поэтому решил, все-таки, почитать документацию :) В итоге оказалось, что у gerbv есть весьма удобная командная строка, которая позволяет легко автоматизировать конвертацию любого нужного набота Gerber-файлов в SVG (и не только). Сейчас я пользуюсь вот такими командами:

gerbv -b#000000 -f#000000 -f#ffffff -f#FFFFFF -o panel_sol.svg -xsvg merge2.drd merge2.cmp merge2.bor
gerbv -b#FFFFFF -f#000000 -f#000000 -xsvg -o panel_top_sm.svg merge2.bor merge2.stc

Первая генерит SVG из файлов merge2.drd (сверловка) merge2.cmp (сторона компонентов) merge2.bor (границы платы). Вторая делает тоже самое для паяльной маски. Параметр -b задает цвет фона (черный). Параметр -f задает цвет слоя для очередного файла, то есть первый встреченный параметр -f задает цвет слоя из первого файла, второй для второго и так далее. Порядок файлов важен! Да, добавление рамки (то есть границ платы) это моя модификация, рамка оказалась очень полезна для работы с паяльной маской. Те, кому не нужна рамка, могут смело выбросить соответствующие параметры из списка (соответствующий файл и соответствующий параметр -f). Тем же, кто собирается это использовать, я настоятельно рекомендую помнить о том, что рамке нужно задавать ненулевую ширину, иначе она не будет видна на фотошаблоне. Для своих плат я ставлю, обычно, 0.2мм, но это дело вкуса. При этом следует иметь ввиду, что рамка влияет на заливку полигонов, которые к ней прилегают.
Поскольку изначально файлы генерятся в нормальном виде, а для фоторезиста нужны зеркальные файлы, я изменил соответствующий джоб (проставил галочку Mirror на всех слоях). Кроме того, в стандартный gerb274x.cam я добавил джоб для сверловки, так что все нужные мне файлы генерятся за один проход. Если будет интерес, я могу выложить модифицированный cam job у себя в блоге.
+1
  • avatar
  • evsi
  • 20 декабря 2011, 19:49
ух ты! спасибо!
кстати всегда интересно было, почему считается, что для ФР нужны зеркальные файлы? подложка же прозрачная, перевернул другой стороной — вот и зеркально
0
Причина весьма проста: рисунок должен быть как можно ближе к фоторезисту, иначе появятся засветы на те участки, которые должны быть закрыты фотошаблоном. К сведению: пленка, на которой печатается фотошаблон, имеет немалую толщину — 100мкм, чего более чем достаточно для появления засветов.
+1
спасибо, учту
0
либо можно по другому, сравнив файлы после CAM процессора с Fill Pads и без, в конце пост скрипта будут строки:
479996 105258 5000 h

505396 105258 10000 h
479996 130658 5000 h
это и есть отверстия, где 479996 130658 < — координаты, а 5000 h < — это диаметр, 10000=1мм меняем на нужное значение и все:)
может кому пригодится:)
0
забыл сказать, CAM выбираю PS_INVERTED
0
В гербере (точнее, в екселоне) править диаметр проще. Да и мержить в панель герберы не в пример проще, с учетом наличия тулзов.
0
возможно, но у меня 3 операции занимает все, 1 экспорт в ps_inverted подправить отверстия, и в гимпе забить весь лист А4 шаблонами — печать
0
У меня точно так же — генерация герберов — генерация панели и конвертация в svg (это все делает скрипт) — печать из Inkscape. Одну операцию можно сократить, у меня есть скрипт, который прогоняет джобы сам, но я все никак не соберусь его интегрировать в общий тулчейн.
0
Собственно, вот тут я полностью описываю текущую технологию подготовки шаблонов.
0
Блин, трендец, столько операций. Сколько возможностей накосячить при этом особенно с редактированием сверл, возможность получить 5мм дырень там где должно быть переходное на 0,5мм. :)

В подготовке шаблона для пленочного резиста со слоем drill-aid.ulp все просто.

1.Открываем будущую плату со слоем drill-aid.ulp.
2.Открываем CAM процессор и один раз настраиваем вкладки (тип выходного файла .ps ) для слоев Top, и Вottom в отдельной вкладке отдельно выводим слой drill-aid.ulp.
3.Сохраняем сделанные настройки под любым именем они примут расширение.сам
4.Выгоняем три файла это Top, Bottom и третий будет только слой drill-aid.ulp.
5.Открываем Corel закидываем туда эти файлы и ставим рамку со свойством инверсия.
6.И все все все
7.Спокойно печатаем на пленку и делаем плату операция занимает 1 минуту.
0
Интересно, но, меняем в CAM одну переменную, получаем сразу кернение не зависимо от того какое оно на плате, Corel у меня и небыло:) ОС Дебиан. И того имеем, перегоняем в инвертированный (и при необходимости маски в неинвертированный) ps, в гимпе на А4 раставляем платы. Где тут косячить?
0
Вместе с top и bottom имеет смысл выводить и dimension. Здорово помогает в некоторых ситуациях, а при наличии маски IMHO его включать надо обязательно (и в маску тоже), что бы маска в процессе доработки напильником обработки платы не скалывалась.
0
Согласен. Но в слое маски слой dimension имеет место быть если маска однокомпонентная, китайская. Если же использовать двухкомпонентную то у последней коэффициент прилепания к плате значительно выше.
0
Это не отменяет того факта, что обрабатывать плату с уже нанесенной рамкой удобнее :) Хотя, конечно, если это делает ЧПУ фрезер, то ему все равно.
0
:)
Ага вот поэтому ша оный и допиливаю дабы ручками меньше ваять.
0
а ворклог будет чпу? ))) или мож я чего забыл ) мог ведь…
0
Ваяюю потихоньку по вечерам. :))
0
таки ж интересно ))) просто мне тоже предстоит ))))
0
Так я по мере готовности тех или иных блоков ветку обновляю, времени ток вот блин мало дабы оперативно делать.
0
Поскольку Gerber-файлы имеют текстовый формат, а SVG это обычный XML, не должно представить большой трудности написать скрипт, который одно переделывал бы в другое.
Ещё бы в обратную сторону из svg в gerber.
0
Спасибо за статью. До нее с герберами не работал, печатал напрямую из орла… Попробовал методику, предложенную в статье, возник вопрос, на который пока ответа не нашел. После формирования всех гербер-файлов и импорта в инкскейп заметил, что полигоны получаются не ровно белые (или черные) а в тонкую полосочку, причем ширина и частота этих полосок каждый раз разная при формировании svg-файла. Пробовал другие программы для просмотра герберов — тоже видны полоски. На последней картинке в статье такие же полоски. Как с этим бороться? Заранее спасибо за советы
0
Полоски возникают из самой сути герберов и способа изготовления плат с их участием, а именно: гербер-файл описывает апертуры и их движение по заготовке. Т.е. на машине, которая изготавливает платы, есть устройство засветки, которое формирует световое пятно определенного диаметра и может перемещать его по поверхности шаблона. Т.е. действительно сплошной заливки при таком способе изготовления быть не может, она достигается наложением соседних полос. Бороться с этим не надо, при печати они сливаются и на результат влияния не оказывают
0
Увы, бороться с этим приходится, поскольку получить полосатый фотошаблон вполне реально.
0
По поводу борьбы с полосами. Убрал полосы импортом гербера в Sprint-Layout.
0
Повернуть проще. И делается (почти) автоматом.
0
Не спорю повернуть скриптом проще, но как написал ниже marvin_yorke полосы не исчезают. В моем случае они остались на фотошаблоне после поворота. Хотя возможно это Gerbv + Inkscape под окнами себя так ведут.
0
Я поворачиваю не gerbv+inkscape, а с помощью gerbmerge, описывая плату в панели как повернутую.
0
Да, забыл уточнить, хотя врядли это влияет на результат: герберы из платы я генерю не руками, это делает скрит, последовательно вызывая для слоев отдельные джобы из джоб файла.
0
Меня всегда интересовал именно этот вопрос: что используют китайские PCB сервисы и заводы — растровый барабанный плоттер или векторный с апертурами?

1. Растровый барабанный — на барабан закрепляют фотошаблон и он крутится, а каретка с ист.света очень медленно ползет вдоль оси барабана и рисует очень тонким лучом света, т.е. принцип почти тот же, что и у лазерного/светодиодного принтера. Естественно там использовано специальное ПО, которое векторный Gerber формат переводит в огромный растровый массив 0 и 1 для управления засветкой, т.е. подобно тому, как векторный файл PostScript или PCL преобразуется в микро-компьютере принтера в выходной растр.

2. Векторный плоттер-построитель с апертурным диском (true Gerber plotter) — чем-то напоминает 2-х координатный ЧПУ станок с двигающейся по осям x и y светоголовкой с диском, который поворотом может менять апертуры (обычно круги и квадраты разных размеров, бывает, что и готовые пады вместе с термобарьерами), имеющиеся на нем. ПО у него намного проще — преобразовать команды Gerber в движение головки, менять апертуры(крутить диск) и включать/выключать лампу фото-головки. Причем, сам апертурный диск надо готовить специально заранее для каждой платы(видимо на нем же или на барабанном плоттере) или использовать какие-то из стандартных на заводе дисков. Фотошаблоны используются позитивные и негативные, причем бывает что конечный фотошаблон платы надо составить из нескольких промежуточных фотошаблонов(позитивных/негативных) методом наложения их друг на друга. Учась в институте, я видел такой старый плоттер, но он не использовался — использовался барабанный. Рисовать фотошаблоны он может намного дольше, чем барабанный, кроме того вся эта свистопляска с апертурной маской и часто промежуточными шаблонами в фотолаборатории.

seeed и itead studio требуют файлы Gerber и шлепают сразу фотошаблоны для плат, возможно сотнями за сутки. У них по любому должен быть барабанный плоттер — такого гемороя с векторным они бы не выдержали бы.

Вот поэтому меня и интересует вопрос: почему тогда заводы при подготовке производства партии PCB требуют некое немалое бабло за некую подготовку фотошаблона.
0
seed и itead studio сами ни фотошаблонов ни плат не делают. Это так называемый батчинг сервис. Из пачки заказов они формируют один и заказывают его, грубо говоря, «по площади», 10 листов. И, естественно, платят setup fee (баксов 30-50). Просто она размазывается по несколько десятков, а то и сотен плат на панели и практически не заметна в общей стоимости. Полученные панели они сами нарезают, разбирают на заказы и рассылают.

По поводу вывода герберов. Насколько я знаю, используются типографские фотонаборные автоматы. На каком именно они принципе работают — я не в курсе. Подозреваю это аналоги лазерных принтеров, только печатающих на пленке лазером напрямую (то есть без тонера и прочих прибамбасов).
0
А что такое setup_fee и за что ее платят?

У них на сайте в блоге год или два назад вроде мелькали фотки и видео из цеха, как они изготовляют платы.
0
setup fee (иногда ее называют tooling) платят за подготовку оснастки — фотошаблонов, программ для станков, сборку герберов в панели и тому подобного. Всех деталей я не знаю, к тому же они зависят от конкретного производства.

Там был только процесс нарезания плат, окончательная промывка и упаковка.
0
Я проблему решил сборкой фотошаблонов (в герберах) в панели с поворотом на 90 градусов, тогда после экспорта в svg полоски отсутствуют.
0
скорее всего просто не видны. не быть их там, насколько я понимаю, не может
0
Да, они там, конечно, есть. Но тут уже вылазит ограничения по точности при растризации. На практике, если полоски есть на картинке, они почти всегда есть и на фотошаблоне. Если же их на картинке нет, то их гарантированно нет и на фотошаблне.
0
Да, я как-то постил статью по автоматизации процессов подготовки фотошаблонов.
0
спасибо всем за ответы. будем пробовать бороться с полосками.
0
Можно все сделать намного проще, c уменшенными отверстиями: Экспорт из EagleCAD в Inkscape
0
А можно описать процесс словами?
0
Всмысле написать? Например экспортируете верхний слой отдельно через File-CAM Processor, формат EPS, снять Fill Pads, слои боттом, падс, виас, дименшен. Слой созданный через drill-aid (centralDrills) экспортировать отдельна таким же образом отдельно(выключить все слои в CAM Processor кроме centralDrills и дименшена) Ну и все, последняя задача это отцентровать слой боттом со слоём дырок, например через абсолютное позиционирование, это удобно сделать привязко к сетке. Я считаю, что возня с Gerbv излишняя, все делается за пол минуты.
Всё это подробно показано и описано в видео по ссылке.
0
Думаю, вам будет интересно посмотреть вот это. Заодно узнаете зачем CAM процессору меню File.
0
Спасибо! что-то я сразу вашу статью не заметил, job-ы ещё больше ускорят процесс=)
0
Еще больше ускорить процесс можно с помощью запуска CAM-а из коммандлайна. Если интересно, могу выложить куда-нибудь скрипт на баше, который автоматом применяет указанный CAM к указанной плате.
0
Нашёл!!! Нашёл способ выводить в негативе так, как мне хочется!
Долго бодался с выводом в негативе под фоторезист, и таки нашёл красивое решение. Как всегда — суть в мелочах. Для вывода в негативе запускаем CAM процессор, выставляем нужные слои, в качестве устройства выбираем PS_INVERTED — это много где написано.
EAGLE CAM - PS_INVERTED
На выходе получаем файл PostScript. Но ваша плата будет располагаться в самом низу страницы, что меня не устраивало — ради печатки 50*50мм портить лист плёнки?! Можете назвать меня Плюшкиным, но imho — это транжирство. До вчерашнего дня конвертил через GIMP — но обрезать и таскать рисунок платы вручную лениво, плюс ко всему — растровый формат,, и при разрешении 600 dpi комп эта процедура подгружает весьма ощутимо.
А теперь суть: PostScript — это текстовый файл на одноимённом языке программирования. И там есть команда трансляции координат — translate (если кого интересуют подробности — поиск в помощь).
После строк (в начале файла)
/EU { 254 div 0.072 mul } def
/inch { 72 mul } def

вставляем

0 inch 7 inch translate

И наша плата мигрирует вверх, в данном случае на 7 дюймов. Берём прогу способную переварить PostScript и выводим на печать. Linux-ы умеют «искаропки», под Win — мне понравился конвертер в pdf, но за давностью не вспомню, что за зверь.
0
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.