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

Для получения 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-файлы в векторный формат. Выполним File -> Export -> SVG, зададим имя и обязательно расширение *.svg, сохраним.
После чего в Inkscape можно создавать новый файл формата А4, импортировать в документ полученные *.svg файлы и подготавливить их к печати (трансформировать, продублировать, подкорректировать, разместить на листе и т.п.). на виртуальном PDF-принтере.
Пример для оценки разрешения получившихся PDF-ок:



PS: просьба не обращать внимание на мелкие пропуски, недочеты в ПП и т.п.
Всем спасибо за внимание!
- Altium Designer
- Gerbv
- Inkscape
- Bullzip PDF Printer
Генерация Gerber-файлов в Altium Designer
В качестве примера возьмем мою первую ПП, вот такую:
Для получения 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: просьба не обращать внимание на мелкие пропуски, недочеты в ПП и т.п.
Всем спасибо за внимание!
- +5
- 30 июня 2013, 15:35
- Ferrocen
Извиняюсь за орфографию – второпях недоглядел. Что касается прямой печати с Альтиума, то в моем случае это не совсем подходящий вариант. Уважаемый kalik верно предположил на счет того, что PDF'ками удобно делиться с другими или же просто передавать их на печать.
Как мне кажется в приведенном мною подходе удается получить больше возможностей и вариантов с манипуляциями со слоями. В CAM-редакторе можно создать множество композитных слоев, подготовить негативные фотошаблоны, а в векторном редакторе продублировать и расположить на листе в любом кол-ве, плотности и вариациях. В САМ-редакторе также можно создавать массивы из слоев.
Инструмент SmartPDF существует давно и он не предназначен для формирования подходящих выходных файлов ПП. Он больше подходит для генерации развернутых отсчетов или создания учебных иллюстраций.
Не вижу смысла разводить споры на тему целесообразности данного метода. Если кому-то изложенная информация окажется полезной, то на здоровье…
Как мне кажется в приведенном мною подходе удается получить больше возможностей и вариантов с манипуляциями со слоями. В CAM-редакторе можно создать множество композитных слоев, подготовить негативные фотошаблоны, а в векторном редакторе продублировать и расположить на листе в любом кол-ве, плотности и вариациях. В САМ-редакторе также можно создавать массивы из слоев.
Инструмент SmartPDF существует давно и он не предназначен для формирования подходящих выходных файлов ПП. Он больше подходит для генерации развернутых отсчетов или создания учебных иллюстраций.
Не вижу смысла разводить споры на тему целесообразности данного метода. Если кому-то изложенная информация окажется полезной, то на здоровье…
Если мне память не изменяет, то SmartPDF (пыталяся выводить через него на печать) не совсем верно пропорции выдает да и качество и вправду только для создания отчетной и наглядной документации
Отлично он выдает. И пропорции в нем отлично настраиваются 1к1. А главное pdf генерит сразу векторный, что потом отлично компонуется в Кореле.
Альтиум-Корел-Печать. И так как все в векторе, то и проблем с разрешением нет, в типографии мне вообще с каким то зверским разрешением выводят, четкость неимоверная.
Альтиум-Корел-Печать. И так как все в векторе, то и проблем с разрешением нет, в типографии мне вообще с каким то зверским разрешением выводят, четкость неимоверная.
Пользуюсь похожей методикой, позаимствованной у тов. bsvi.
От себя добавлю (вру, про это когда-то писал тов. evsi ), что иногда удобно делать фотошаблон с отверстиями диаметром ~0.4 мм — тогда сверло не так сильно скользит. Для этого достаточно в файле сверловки (он находится в папке [Project Outputs for ...]) указать диаметр сверла для всех отверстий 0.4. Файл сверловки опознается по расширению .txt.
Пример:
От себя добавлю (вру, про это когда-то писал тов. 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 //и тут
%
...
Для этого достаточно в файле сверловки (он находится в папке [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, и вот теперь из всего этого компота можно создавать композиты как под ЛУТ (с номинальными диаметрами отверстий) так и под фоторезист с координатами сверловки.
Кроме того, панелизацию удобнее всё же делать в Альтиуме, а не во внешнем редакторе, если интересно-расскажу.
- Highlander
- 01 июля 2013, 16:21
- ↑
- ↓
Подразумеваю что под панелизацией имеется в виду создание «массивов» ПП, т.е. их «размножение» путем Edit -> Objects -> Array. Метод вполне юзабельный.
под панелизацией имеется в виду создание «массивов» ПП,Да, совершенно верно. Ваш метод тоже годится. Но есть ещё один (штатный) вариант-добавляем в готовый проэкт пустой .pcb, потом Place -> Embedded Board Array/Panelize, выбираем уже готовый и сохранённый .pcb проэкта, указываем размеры и количество копий-и вуаля. Метод хорош тем, что позволяет получать панели с нужным количеством копий быстро, не надо ничего выравнивать и совмещать, всё делается автоматом, и о зазорах между экземплярами плат не надо беспокоиться(актуально при выполнении скрайбирования), всё опять же генерируется автоматом. Прямо тут же, после размещения панели, на нужных слоях выводится вся требуемая для завода информация-дублируется название проэкта, выводится тип материала ПП, суммарная площадь панели, делаются метки совмещения слоёв и т.п. После этого следуют уже выше описанные операции по подготовке герберов, и-можно отправлять на завод. Или в типографию и потом на завод. Или делать композитные слои и отправлять на принтер, тут уж кому как… :)
- Highlander
- 01 июля 2013, 19:54
- ↑
- ↓
Что же сразу такие грубые аналогии с гландами
Соглашусь, ваш метод более «академичен». Буду использовать, спасибо.
Соглашусь, ваш метод более «академичен». Буду использовать, спасибо.
Что же сразу такие грубые аналогии с гландамиДа я сегодня полдня со слесарями прообщался, на матерно-техническом… Не обращайте внимания, в общем, это я так, по инерции… Ничего личного, одним словом. :)
- Highlander
- 01 июля 2013, 21:12
- ↑
- ↓
Как все сложно-то… Просто добавляю в проект Альтиума Output Job File. В нем в разделе Documentation Output добавляю PCB Prints. Далее его конфигурирую по необходимости (оставляю необходимые слои, плюс там же можно настроить зеркальное отображение и все остальное). Вывожу в pdf, получившийся pdf загоняю в InkScape и делаю инверсию цветов (для фоторезиста). Поначалу тоже гемороился в выводом герберов и прочим, пока товари не подсказал. ;)
- UncleHarry
- 01 июля 2013, 16:58
- ↓
Перед тем как задать вопрос хотел бы сделать небольшое вступление. Печатные платы делаю не на «заводе», а в рукопашную с помощью известной технологии фоторезиста. Пару дней назад понадобился мне юсб мост на FT2232, естественно создав проект в Альтиуме была разведена печатная плата. Оставалось дело за малым, вывести нужные мне слои во внешнюю программу (я использую CorelDRAW 15), так как векторный формат могут распечатать в любом специализированным центре. После команды Edit->Composite layers->Build composite создается нужный мне слой с медью и сверловкой, после этого можно спокойно экспортировать гербер файл. При этом создается несколько файлов один имеет имя самого экспортируемого слоя, а остальные без имен только с расширением «.С*». Теперь можно запустить программу Gerbv, благодаря которой модно указать цвет нужного подслоя тем самым ориентировать фотошаблон под позитивную или негативную технологию. После чего просто сохранить файл с расширением *.ps (пост скрипт) и импортировать в CorelDraw. Впрочем так я все время и делал, но в последнем проекте я использую микросхему FT2232 в корпусе LQFP48. Ширина пада на футпринте 0.3 мм.
Собственно сам вопрос: После выполнения всех шагов по выведению гербера из проекта, файл с расширением *.ps импортируется в CorelDraw но тут возникает проблема – все дорожки отходящие от микросхемы в корпусе LQFP48 имеют большую ширину (было в проекте 0.3мм., стало 0.353) чем сам пад футпринта. С чем связанно не знаю, не пойму на каком этапе искать ошибку? Как определить кто или что сбоит, этот дрейф толщины дороже просто выносит мозг…
Ролик для удобства изложения
Собственно сам вопрос: После выполнения всех шагов по выведению гербера из проекта, файл с расширением *.ps импортируется в CorelDraw но тут возникает проблема – все дорожки отходящие от микросхемы в корпусе LQFP48 имеют большую ширину (было в проекте 0.3мм., стало 0.353) чем сам пад футпринта. С чем связанно не знаю, не пойму на каком этапе искать ошибку? Как определить кто или что сбоит, этот дрейф толщины дороже просто выносит мозг…
Ролик для удобства изложения
Раньше тоже экспортировал в Corel и там накладывал надписи и др. Но при шаге выводов менее 0.8 мм Corel смещает дорожки и немного уводит размеры.
Сегодня проверил другие платы в кореле, та же петрушка. Правда не у всех дорожек, но дрейф по-прежнему варьируется в диапазоне +-0.030мм.
INN , а как вы выводите шаблоны сейчас?
INN , а как вы выводите шаблоны сейчас?
Из gerbv можно делать SVG и печатать из InkScape. Причем нужные слои с нужными слоями собирать сразу. Если править шаблоны потом не нужно, то можно сразу и PDF генерить с помощью rvsg-convert.
Можно и SVG в Inkscape импортировать, но проблема от этого не уходит.

Самое интересное что в gerbv все выглядит так как надо но при экспорте все резко меняется. Дорожки толщиной 0.5мм остались такими какими должны быть, а все что ниже съехало.(((
Что за rvsg-convert?

Самое интересное что в gerbv все выглядит так как надо но при экспорте все резко меняется. Дорожки толщиной 0.5мм остались такими какими должны быть, а все что ниже съехало.(((
Что за rvsg-convert?
У меня не получается сохранить gerber в svg. При сохранении получается только слой со сверловкой. Есть другие способы качественно сохранить гербер в pdf?
Пробовал через smartPDF делать, но там некоторые участки получаются дырявые там, где должны быть сплошные…
Пробовал через smartPDF делать, но там некоторые участки получаются дырявые там, где должны быть сплошные…
Выше я уже упоминал rsvg-convert. Вот он умеет делать напрямую конверсию SVG->PDF. Версия под нужную платформу легко гуглится (или ставится из пакета).
кстати, да, размеры уезжают. Мне кажется, это связано с алгоритмами рендеринга (например, использование одинарной точности вместо двойной). Уход малых размеров, как я заметил, разный, в зависимости от драйвера принтера который используется для печати в PDF (я могу задавать в windows принтер, которым якобы является виртуальный CUPS-PDF).
Ещё интересно, что маленькие отверстия становятся не совсем круглые.
Ещё интересно, что маленькие отверстия становятся не совсем круглые.
Комментарии (32)
RSS свернуть / развернуть