Получение фотошаблонов в PDF высокого качества

Посвящается всем увлеченным в изготовлении ПП посредством фоторезистивного метода в домашних условиях. В поисках способа получения выходных файлов фотошаблонов высокого качества была опробована следующая методика. Суть ее проста – получаем Gerber-файлы, преобразуем их в векторный формат, а затем работаем с векторными изображениями в любом доступном редакторе и выводим их на виртуальный PDF-принтер. Преобразование Gerber-файлов в векторный формат не новость – статья на эту тему уже была, тык. Я предлагаю слегка измененный способ, поэтому прошу за «изобретение велосипеда» не пинать. И так, нам понадобится следующая связка программных средств:
  • Altium Designer
  • Gerbv
  • Inkscape
  • Bullzip PDF Printer



Генерация Gerber-файлов в Altium Designer
В качестве примера возьмем мою первую ПП, вот такую:
3D Model
Для получения Gerber-файлов необходимо выполнить некоторую, для кого-то уже известную, последовательность действий. Выбираем File -> Fabrication Outputs -> Gerber Files, в открывшемся окне устанавливаем требуемые параметры, проходясь по всем вкладкам. Стоит напомнить, что указанные в самом начале единицы измерения «Units» и «точность формата» выходных файлов «Format» необходимо выставлять точно такие же в дальнейшем, по мере требования. На кладке «Layers» отмечаем слои «Top Layer, Bottom Layer, Top Solder, Bottom Solder» и слой, на котором определена граница ПП. У меня для этого задействовано два слоя «Outline» и «Cutting». Слой «Cutting» используется для грубой механической обрезки, а слой «Outline» для точного подгона размеров и форм. При этом зеркальное отражения для нижних сигнального «Bottom Layer» и защитной маски «Bottom Solder» не отмечаем. После нажатия на ОК попадаем во встроенный в Altium Designer CAM-редактор. Здесь для удобства я переименовываю полученные слои. ВАЖНО! При переименовании не забывайте добавлять расширения в именах слоев!
Теперь необходимо получить файл сверловки. Выполняем Files -> Fabrication Outputs -> NC Drill Files. Отмечаем нужные параметры, не забывая про соответствие значений для «Units» и «Format». Экспортируем в нужный формат, выбрав File -> Export -> Save Drill. Здесь также выставляем правильные значения для «Units». Задаем имя и сохраняем. Временный CAM-документ со сверловкой можно закрывать без сохранения. Переходим в главный CAM-документ с основными слоями и импортируем файл сверловки, выполнив File -> Import -> Drill. В итоге получается вот так:




Следующим этапом будет получение «составных» (Composite Layers) слоев, а также негативных «фотошаблонов» (Films). Для получения «составных» слоев выполняем Edit -> Composite Layers -> Build composite. В открывшемся окне задаем имя для нового слоя и добавляем верхний сигнальный слой «Top Layer». Здесь я добавляю еще один слой, определяющий границу для грубой мех. обрезки ПП – «Cutting». Для этих слоев поляризация «Polarity» устанавливается как «Dark». Не забываем добавить слой сверловки и установить поляризацию как «Clear».

В результате получается новый слой:

Тоже самое проделываем и для нижнего слоя «Bottom Layer».

Результат:



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




Настало время создать негативные «фотошаблоны». Для этого в окне САМ-редактора отмечаем только один составной слой, для начала верхний. Выполняем Tools -> Film Wizard и в появившемся окне устанавливаем размер фотошаблона. Значения выбирается немного большим размера ПП – устанавливаются строго целые числа в дюймах. В полях «Array Numder» устанавливаем значения «1». По нажатию кнопки «Neg./Mirror...» в первой вкладке «Negative Layers» отмечаем только тот слой, с которым работаем на данный момент. Во второй вкладке ничего не трогаем. Нажимаем ОК, отказываемся от предложения удалить «старые» объекты и получаем результат:



Тоже самое проделываем для нижнего слоя, за исключение того, что теперь в "Film Wizard'е" по нажатию кнопки «Neg./Mirror...» и во второй вкладке «Mirror Layers» отмечаем слой, с которым работаем на данный момент. Получаем зеркальный вариант:

Для слоев защитных паяльных масок нет необходимости делать негативные «фотошаблоны» с помощью «Film Wizard'a». Хотя с его помощью можно отзеркалить паяльную маску для нижнего слоя. В таком случае действия аналогичные как для сигнального нижнего слоя, за исключением того, что только во второй вкладке «Mirror Layers» отмечаем нужный слой. Результат зеркального преобразования:



На этом этапе можно экспортировать Gerber-файлы для дальнейших манипуляций с ними. Выполняем «File -> Export -> Gerber», ВАЖНО!, ставим галочку на «Separate Composite layers to individual Files», выбираем выходной формат RS-274-X, жмем ОК и в появившемся окне выбираем нужные слои для экспорта (негативные фотошаблоны для сигнальных, паяльную маску верхнего и отзеркаленную паяльную маску нижнего):



Преобразования Gerber-файлов в векторный формат
Для этого используется бесплатная утилита Gerbv (gEDA's Gerber Viewer). Выполняем File -> Open layer(s) и выбираем созданный выше набор Gerber-файлов. В окне списка слоев можно наблюдать следующее:



Здесь нам необходимо расположить слои в определенном порядке, наложив их друг на друга, иначе при преобразовании в векторный формат один слой окажется под другим и не будет виден. Начнем с негативного фотошаблона верхнего слоя. Для этого снимем галочки со всех остальных и расположим нужные слои в правильной последовательности. Последовательность идет сверху-вниз: слой сверловки, сигнальный слой, граница ПП и подложка «фотопленки». Тоже самое применимо и для нижнего сигнального слоя. Слои с защитной паяльной маской можно не перемещать. В тоже время изменим цвета слоев на черно-белые. Для удобства можно изменить и фон в главном окне программы (на белый). Ниже приведен пример правильного расположения слоев и их цветов:



Теперь, последовательно отмечая только группу слоев, формирующую необходимый «фотошаблон», можно экспортировать Gerber-файлы в векторный формат. Выполним File -> Export -> SVG, зададим имя и обязательно расширение *.svg, сохраним.
После чего в Inkscape можно создавать новый файл формата А4, импортировать в документ полученные *.svg файлы и подготавливить их к печати (трансформировать, продублировать, подкорректировать, разместить на листе и т.п.). на виртуальном PDF-принтере.
Пример для оценки разрешения получившихся PDF-ок:






PS: просьба не обращать внимание на мелкие пропуски, недочеты в ПП и т.п.


Всем спасибо за внимание!


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

RSS свернуть / развернуть
фотошобланов :) орфография, жеж ;)
0
Может конечно и пригодится в будущем, пока печатаю с альтиума и не парюсь по таким делам…
0
Не понимаю физику процесса. Чем печать векторного PDF лучше прямой печати векторного формата из программы? Или это для того, чтобы с нами платами поделиться?
0
А чем плох вывод прямо в PDF из, скажем, Egale? Зачем в середине гребер и виртуальный PDF-принтер?
0
В последней версии Altium Designer добавили новый инструмент SmartPDF, с помощью которого можно сделать все вышеперечисленное.
0
Извиняюсь за орфографию – второпях недоглядел. Что касается прямой печати с Альтиума, то в моем случае это не совсем подходящий вариант. Уважаемый kalik верно предположил на счет того, что PDF'ками удобно делиться с другими или же просто передавать их на печать.
Как мне кажется в приведенном мною подходе удается получить больше возможностей и вариантов с манипуляциями со слоями. В CAM-редакторе можно создать множество композитных слоев, подготовить негативные фотошаблоны, а в векторном редакторе продублировать и расположить на листе в любом кол-ве, плотности и вариациях. В САМ-редакторе также можно создавать массивы из слоев.
Инструмент SmartPDF существует давно и он не предназначен для формирования подходящих выходных файлов ПП. Он больше подходит для генерации развернутых отсчетов или создания учебных иллюстраций.
Не вижу смысла разводить споры на тему целесообразности данного метода. Если кому-то изложенная информация окажется полезной, то на здоровье…
+2
Если мне память не изменяет, то SmartPDF (пыталяся выводить через него на печать) не совсем верно пропорции выдает да и качество и вправду только для создания отчетной и наглядной документации
+1
Отлично он выдает. И пропорции в нем отлично настраиваются 1к1. А главное pdf генерит сразу векторный, что потом отлично компонуется в Кореле.
Альтиум-Корел-Печать. И так как все в векторе, то и проблем с разрешением нет, в типографии мне вообще с каким то зверским разрешением выводят, четкость неимоверная.
0
Пользуюсь похожей методикой, позаимствованной у тов. bsvi.
От себя добавлю (вру, про это когда-то писал тов. evsi ), что иногда удобно делать фотошаблон с отверстиями диаметром ~0.4 мм — тогда сверло не так сильно скользит. Для этого достаточно в файле сверловки (он находится в папке [Project Outputs for ...]) указать диаметр сверла для всех отверстий 0.4. Файл сверловки опознается по расширению .txt.
Пример:
M48
;Layer_Color=9474304
;FILE_FORMAT=4:4
METRIC,LZ
;TYPE=PLATED
T1F00S00C0.4000               //меняем тут
T2F00S00C0.4000               //и тут
%
...
+1
Для этого достаточно в файле сверловки (он находится в папке [Project Outputs for ...])
Эхма, ну вот же у нас народ любит рвать гланды через ж… :)

Сначала выполняем из Альтиума Files -> Fabrication Outputs -> NC Drill Files, получаем .cam-файл со сверловкой, переключаемся на .cam файл с герберами, делаем импорт сверловки, собственно говоря, всё как в статье, но с одним отличием-.cam файл со сверловкой не закрываем. После импорта сверловки в основной файл камтастика (в слоях появится новый слой «имя_проэкта.txt») опять переключаемся на файл со сверловкой, и из главного меню выбираем: Tables -> NC tools, откроется окошко Tool table, в котором будут перечислены все необходимые для проэкта диаметры сверловок. Теперь надо все диаметры изменить на величину наименьшего используемого в проэкте отверстия минус 0.1мм. К примеру, если наименьшее отверстие — это via диаметром 0.5мм, то все отверстия надо сделать 0.4мм. При редактировании надо помнить, что у крайней на данный момент версии Альтиума (13.1.2), помимо всех остальных прочих, есть глючок как раз в этом самом Tool table-для того, чтобы значение отредактировалось, его надо переписать целиком, если просто ткнуть мышкой в цифру, стереть её и вставить другую-изменения не сохраняются. Надо выделить значение, и вбить поверх него новое. После редактирования значений нажимаем Ок, и из главного меню выбираем: File -> Export -> Save drill, выбираем слой (в файле сверловки он будет один-единственный), переименовываем cam.drl в centers.drl, и выбираем для сохранения директорию Project Outputs текущего проэкта (ещё один глюк-камтастик не привязан к текущему проэкту, но помнит пути от предыдущего сохранения, так что там будет путь к Project Output предыдущего проэкта, где делалась эта операция), и сохраняем сверловку. Вот теперь файл со сверловкой можно таки закрыть, и импортировать в основной файл нашу созданную сверловку (только надо её выбрать в списке импорта-там появится наш свежесозданный centers.drl). После импорта в слоях появится centers.drl, и вот теперь из всего этого компота можно создавать композиты как под ЛУТ (с номинальными диаметрами отверстий) так и под фоторезист с координатами сверловки.

Кроме того, панелизацию удобнее всё же делать в Альтиуме, а не во внешнем редакторе, если интересно-расскажу.
0
Подразумеваю что под панелизацией имеется в виду создание «массивов» ПП, т.е. их «размножение» путем Edit -> Objects -> Array. Метод вполне юзабельный.
0
под панелизацией имеется в виду создание «массивов» ПП,
Да, совершенно верно. Ваш метод тоже годится. Но есть ещё один (штатный) вариант-добавляем в готовый проэкт пустой .pcb, потом Place -> Embedded Board Array/Panelize, выбираем уже готовый и сохранённый .pcb проэкта, указываем размеры и количество копий-и вуаля. Метод хорош тем, что позволяет получать панели с нужным количеством копий быстро, не надо ничего выравнивать и совмещать, всё делается автоматом, и о зазорах между экземплярами плат не надо беспокоиться(актуально при выполнении скрайбирования), всё опять же генерируется автоматом. Прямо тут же, после размещения панели, на нужных слоях выводится вся требуемая для завода информация-дублируется название проэкта, выводится тип материала ПП, суммарная площадь панели, делаются метки совмещения слоёв и т.п. После этого следуют уже выше описанные операции по подготовке герберов, и-можно отправлять на завод. Или в типографию и потом на завод. Или делать композитные слои и отправлять на принтер, тут уж кому как… :)
0
Что же сразу такие грубые аналогии с гландами
Соглашусь, ваш метод более «академичен». Буду использовать, спасибо.
0
Что же сразу такие грубые аналогии с гландами
Да я сегодня полдня со слесарями прообщался, на матерно-техническом… Не обращайте внимания, в общем, это я так, по инерции… Ничего личного, одним словом. :)
0
Как все сложно-то… Просто добавляю в проект Альтиума Output Job File. В нем в разделе Documentation Output добавляю PCB Prints. Далее его конфигурирую по необходимости (оставляю необходимые слои, плюс там же можно настроить зеркальное отображение и все остальное). Вывожу в pdf, получившийся pdf загоняю в InkScape и делаю инверсию цветов (для фоторезиста). Поначалу тоже гемороился в выводом герберов и прочим, пока товари не подсказал. ;)
0
Эм, каждый дро***, как он хочет…
-1
Дык и я о том же…
0
Перед тем как задать вопрос хотел бы сделать небольшое вступление. Печатные платы делаю не на «заводе», а в рукопашную с помощью известной технологии фоторезиста. Пару дней назад понадобился мне юсб мост на FT2232, естественно создав проект в Альтиуме была разведена печатная плата. Оставалось дело за малым, вывести нужные мне слои во внешнюю программу (я использую CorelDRAW 15), так как векторный формат могут распечатать в любом специализированным центре. После команды Edit->Composite layers->Build composite создается нужный мне слой с медью и сверловкой, после этого можно спокойно экспортировать гербер файл. При этом создается несколько файлов один имеет имя самого экспортируемого слоя, а остальные без имен только с расширением «.С*». Теперь можно запустить программу Gerbv, благодаря которой модно указать цвет нужного подслоя тем самым ориентировать фотошаблон под позитивную или негативную технологию. После чего просто сохранить файл с расширением *.ps (пост скрипт) и импортировать в CorelDraw. Впрочем так я все время и делал, но в последнем проекте я использую микросхему FT2232 в корпусе LQFP48. Ширина пада на футпринте 0.3 мм.
Собственно сам вопрос: После выполнения всех шагов по выведению гербера из проекта, файл с расширением *.ps импортируется в CorelDraw но тут возникает проблема – все дорожки отходящие от микросхемы в корпусе LQFP48 имеют большую ширину (было в проекте 0.3мм., стало 0.353) чем сам пад футпринта. С чем связанно не знаю, не пойму на каком этапе искать ошибку? Как определить кто или что сбоит, этот дрейф толщины дороже просто выносит мозг…

Ролик для удобства изложения
0
Раньше тоже экспортировал в Corel и там накладывал надписи и др. Но при шаге выводов менее 0.8 мм Corel смещает дорожки и немного уводит размеры.
0
Сегодня проверил другие платы в кореле, та же петрушка. Правда не у всех дорожек, но дрейф по-прежнему варьируется в диапазоне +-0.030мм.
INN , а как вы выводите шаблоны сейчас?
0
Делаю герберы и непосредственно с PCADа печатаю.
0
P.S. Забыл поблагодарить автора статьи. Последнюю плату делал в Altium-е, статья пригодилась, спасибо. PDF не делал, а после герберов — film-wizard и на печать.
0
Какая минимальная толщина дорожки была у вас в проекте?
0
Дорожка 0.25 и такой же зазор.
0
Из gerbv можно делать SVG и печатать из InkScape. Причем нужные слои с нужными слоями собирать сразу. Если править шаблоны потом не нужно, то можно сразу и PDF генерить с помощью rvsg-convert.
0
Можно и SVG в Inkscape импортировать, но проблема от этого не уходит.


Самое интересное что в gerbv все выглядит так как надо но при экспорте все резко меняется. Дорожки толщиной 0.5мм остались такими какими должны быть, а все что ниже съехало.(((
Что за rvsg-convert?
0
Не помню точно, в каком-то из пакетов в комплекте шла. Кажется в либе для работы с svg. Да, от такой фигни с изменением размеров (а еще от полосатости шаблонов) мне помогает поворот шаблонов на 90 градусов в процессе сборки панели из отдельных плат с помощью gerbmerge.
0
Таки вывел!
0
У меня не получается сохранить gerber в svg. При сохранении получается только слой со сверловкой. Есть другие способы качественно сохранить гербер в pdf?
Пробовал через smartPDF делать, но там некоторые участки получаются дырявые там, где должны быть сплошные…
0
Выше я уже упоминал rsvg-convert. Вот он умеет делать напрямую конверсию SVG->PDF. Версия под нужную платформу легко гуглится (или ставится из пакета).
0
Выпрямил руки и получилось
Для чего-то использовал инверсию слоя в самом Gerbv, как оказалось, этого делать нельзя.
Кстати, по тексту статьи, при создании gerber из pcb нужно не только в bottom но и в top убрать отзеркаливание.
А InkScape умеет сразу сохранять в pdf, причем с указанием DPI
0
кстати, да, размеры уезжают. Мне кажется, это связано с алгоритмами рендеринга (например, использование одинарной точности вместо двойной). Уход малых размеров, как я заметил, разный, в зависимости от драйвера принтера который используется для печати в PDF (я могу задавать в windows принтер, которым якобы является виртуальный CUPS-PDF).
Ещё интересно, что маленькие отверстия становятся не совсем круглые.
0
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.