- PVSM.RU - https://www.pvsm.ru -
Мы — небольшой стартап, который занимается разработкой современной электроники. Разумеется, мы регулярно делаем тестовые партии небольшого размера, для изготовления которых заказывать полноценное производство не имеет смысла — стоимость подготовки будет самой крупной статьёй бюджета. Поэтому мы регулярно придумываем, как быстрее, дешевле и эффективнее собирать эти партии самостоятельно. Иногда в процессе рождается что-то новое или допиливается что-то старое. Результатом мы и будем с вами периодически делиться.
Один из способов снизить себестоимость изготовления печатных плат — это объединение нескольких плат на одной заготовке и отправка на фабрику этой заготовки как единого проекта. Фокус в том, что серьёзные фабрики берут деньги за подготовку производства каждой платы, а ориентированные на DIY китайцы часто предлагают (Seeedstudio, например) фиксированную цену за фиксированный размер текстолита. В первом случае единый проект, даже если он в итоге разрезается на несколько плат, будет считаться как одна плата, а во втором — можно вместить на одну стандартную заготовку несколько небольших плат.
Кроме того, объединение плат удобно, если вы делаете фиксированные комплекты — например, у вас в проекте один управляющий модуль и четыре исполнительных; в таком случае банально удобно положить их на одну заготовку и всегда заказывать именно таким комплектом.
У нас в данном случае было и то, и другое — и комплект, и желание сэкономить на производстве пробной партии.
Это — один проект. В нём 32 платы 13 разных видов. Как собрать такой проект за четверть часа — ниже.
Как ни удивительно, но попытка найти готовый и хотя бы относительно доступный софт для такой операции довольно быстро доводит человека до депрессии — после первого пяточка сайтов, предлагающих позвонить по указанному номеру телефона для получения индивидуального предложения по цене. Проблема в том, что непосредственной работой с файлами формата Gerber RS-274X обычно занимаются фабрики, а потому и стоимость всего подобного софта — традиционная для коммерческого применения, от нескольких сотен долларов за рабочее место.
Бюджетные же предложения либо умеют лишь размножать одну плату на много копий (в Eagle, например, это родная функция), но не собирать несколько файлов из разных проектов. либо — чаще — не умеют ничего. Из относительно дешёвого мне удалось найти лишь ViewMate Deluxe, стоящий хоть и не особо сильно, но всё же меньше $100 и умеющий редактировать герберы — вот только работа в нём местами уж очень сильно похожа на изощренную пытку.
Помимо всего этого великолепия, есть один пакет, совершенно бесплатный — GPLv3 — и созданный ровно для этой задачи: проглотить пачку герберов от разных проектов и разместить их на одном листе.
Это GerbMerge, скрипт на питоне. Сожрав ваши герберы [1], он несколько минут пытается расположить их тысячами разных способов, выбирая из них наилучший — с его точки зрения.
GerbMerge умеет работать только с файлами формата Gerber RS-274X и Excellon, но это трудно считать недостатком — любой CAD, которым хотя бы теоретически можно пользоваться, умеет экспортировать платы в этих форматах, а любая фабрика умеет их принимать. Более того, если вы хотите максимальную гарантию результата и минимальный шанс на кривые руки фабрики — именно Gerber + Excellon, предварительно проверенные вами, и надо им отправлять.
Я не даю сейчас ссылку на сайт GerbMerge, потому как непонятно, что считать его сайтом — судя по истории правок и копирайтов, он пару раз переходил из рук в руки с паузами в год-другой, и каждый раз оказывался заброшен. В результате, когда я попробовал его запустить, то быстро обнаружил, что:
Тем не менее, альтернатив и вовсе видно не было. Поэтому после недолгих раздумий команда профессиональных маркетологов, ни разу в жизни не написавшая ни строчки на Python, села и привела gerbmerge в порядок.
А вот теперь — ссылка: github.com/unwireddevices/gerbmerge [2]
В версии 1.9.4, которая сейчас по данной ссылке и доступна, gerbmerge:
GerbMerge — это скрипт на питоне, поэтому установка имеет свои особенности. Запущен он может быть на Linux и Windows (нативном и под Cygwin), теоретически также и на MacOS, но я не проверял — не на чем.
Linux.
Так как python, pip и gcc у вас почти наверняка уже установлены, остаётся поставить simpleparse — pip install simpleparse, а затем перейти к gerbmerge. Скачайте с гитхаба архив исходников [3], распакуйте, зайдите внутрь:
python setup.py sdist
sudo pip install dist/gerbmerge-1.9.4.tar_gz
Первая команда подготовит установочный пакет под вашу систему, вторая его установит. Можно, конечно, сразу сделать sudo python setup.py install, но тогда при желании расстаться с gerbmerge или обновить его вы будете удалять его файлы ручками.
Windows / Cygwin.
Установите Cygwin с пакетами python, python-setuptools и gcc (последний нужен для сборки simpleparse). Скачайте архив исходников gerbmerge, распакуйте, запустите Cygwin и зайдите в каталог с исходниками.
easy_install-x.y pip
pip install simpleparse
python setup.py sdist
pip install dist/gerbmerge-1.9.4.tar_gz
Первая команда (вместо x.y будет версия вашего питона, то есть, скорее всего 2.7) установит pip, остальное — так же, как в линуксе.
Windows нативный.
Скачайте инсталяшку питона под вашу систему [4] и установите его — по умолчанию он ставится в C:Python27 и тащит нужный нам pip с собой. Скачайте gerbmerge, распакуйте. Запустите cmd.exe и проследуйте в папку с исходниками gerbmerge:
c:python27scriptspip.exe install simpleparse
c:python27python.exe setyp.py sdist
c:python27scriptspip.exe istall distgerbmerge-1.9.4.zip
Всё. Если в предыдущих случаях gerbmerge запускался, собственно, командой gerbmerge, то здесь для запуска надо позвать файл c:Python27gerbmerge.bat (если вы поставили Python в другую папку, то путь надо изменить соответственно).
Для работы gerbmerge требуется конфигурационный файл и наборы файлов с герберами исходных плат. На гитхабе в папке examples есть примеры и того, и другого — причём как для дюймовых герберов, так и для метрических.
Конфигурационный файл описывает несколько базовых параметров, а после них перечисляет все платы, которые вам надо будет собрать — с указанием, где лежат и как называются их файлы, а также сколько штук каждой поставить в финальный проект:
[DEFAULT]
projdir = .
[Options]
ExcellonLeadingZeros = 1
PanelWidth = 400
PanelHeight = 300
XSpacing = 2
YSpacing = 2
MeasurementUnits = mm
AllowMissingLayers = 0
[MergeOutputFiles]
Prefix = %(projdir)s/merged
*TopLayer=%(prefix)s/Top.gbr
*BottomLayer=%(prefix)s/Bottom.gbr
*TopSilkscreen=%(prefix)s/TopSilk.gbr
*BottomSilkscreen=%(prefix)s/BottomSilk.gbr
*TopSoldermask=%(prefix)s/TopMask.gbr
*BottomSoldermask=%(prefix)s/BottomMask.gbr
Drills=%(prefix)s/Drills.txt
BoardOutline=%(prefix)s/BoardOutline.gbr
ToolList = %(prefix)s/Tools.drl
Placement = %(prefix)s/Placement.txt
[aa]
Prefix=%(projdir)s/aa
*TopLayer=%(prefix)s/Top.gbr
*BottomLayer=%(prefix)s/Bottom.gbr
*TopSilkscreen=%(prefix)s/TopSilk.gbr
*TopSoldermask=%(prefix)s/TopMask.gbr
*BottomSilkscreen=%(prefix)s/BottomSilk.gbr
*BottomSoldermask=%(prefix)s/BottomMask.gbr
Drills=%(prefix)s/Through.drl
BoardOutline=%(prefix)s/BoardOutline.gbr
Repeat = 10
[bb]
Prefix=%(projdir)s/bb
*TopLayer=%(prefix)s/Top.gbr
*BottomLayer=%(prefix)s/Bottom.gbr
*TopSilkscreen=%(prefix)s/TopSilk.gbr
*TopSoldermask=%(prefix)s/TopMask.gbr
*BottomSilkscreen=%(prefix)s/BottomSilk.gbr
*BottomSoldermask=%(prefix)s/BottomMask.gbr
Drills=%(prefix)s/Through.drl
BoardOutline=%(prefix)s/BoardOutline.gbr
Repeat = 6
В этом примере — две платы, лежащие в папках aa и bb, файлы в них — со стандартными именами экспорта DipTrace. Папки лежат рядом, gerbmerge запускается тут же, поэтому каталог проекта — просто «.», а пути к папкам, соответственно, «./aa» и «./bb». Первой платы надо сделать 10 штук на одной заготовке, второй — шесть. Герберы — в миллиметрах, максимальный размер панели — 400×300 мм, между платами надо сделать зазоры 2 мм, чтобы фабрика прорезала их фрезой (размеры панелей и зазоров спрашивайте у конкретной фабрики). Формат Excellon для сверлильного станка записывать с нулями в начале, при отсутствии какого-либо файла из перечисленных — ругаться. Результат надо сохранить в папку merged с указанными именами файлов.
Обратите внимание, что все файлы, кроме BoardOutline и Drills, начинаются со звёздочки — так надо. Если поставить AllowMissingLayers в единицу, файлы со звёздочками могут отсутствовать. Но звёздочка должна быть в любом случае (не сильно логично, но такие мелочи исправлять уже лень, они никому не мешают).
После создания конфига остаётся только запустить gerbmerge с ним в качестве единственного параметра:
gerbmerge layout.cfg
Или, если вы до сих пор не примкнули к миру Свободы, Равенства и Братства (как я), а также не любите Cygwin (не как я), то:
C:Python27gerbmerge.bat layout.cfg
При запуске gerbmerge вывешивает простыню дисклеймера и ждёт нажатия «y», если вам это надоело — добавьте параметр «-s».
Если иное не сказано в конфиге, gerbmerge работает вечно, периодически сообщая, что он не умер. Остановить его можно в любой момент, нажав Ctrl-C — он сохранит конфигурацию плат, которую на этот момент будет считать наиболее удачной, в файлы, и завершится. К сожалению, как-то отследить, насколько результат удачен, невозможно, поэтому просто давайте ему достаточно времени — от пяти минут на среднем Core i* до пятнадцати на AMD Sempron хватает для получения аккуратного размещения даже для проекта вроде описанного перед катом.
Приятная особенность gerbmerge — он автоматически отрезает то, что вылезает за края конкретной платы. Поэтому, например, если у вас стоят компоненты с торчащей наружу шелкографией (высовывающийся за края разъём, например), эта шелкография в итоговом проекте на соседнюю плату не попадёт. Обрезание отверстий и шелкографии можно отключить в опциях командной строки.
Полученные файлы стоит привычно проверить любым Gerber-просмотрщиком (я обычно пользуюсь Viewplot [5]) — и если ничего не разъехалось, то отправлять на фабрику.
Тот самый проект из 32 плат 13 видов, исполненный в текстолите компанией «Микролит»:
Вопросов у фабрики не возникло, на качество нареканий нет.
Q: На черта вам вообще столько плат???
A: Вот для этого проекта [6].
Автор: Unwired Devices LLC
Источник [7]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/e-lektronika-dlya-nachinayushhih/110918
Ссылки в тексте:
[1] Сожрав ваши герберы: http://floristics.info/images/stati_photo/kot_est_tsvety/kot_est_tsvety.jpg
[2] github.com/unwireddevices/gerbmerge: https://github.com/unwireddevices/gerbmerge
[3] архив исходников: https://github.com/unwireddevices/gerbmerge/archive/master.zip
[4] инсталяшку питона под вашу систему: https://www.python.org/downloads/release/python-2711/
[5] Viewplot: http://www.viewplot.com/
[6] этого проекта: http://files.unwireddevices.com/dl/index.php/s/HfbVOADr1M3F9v3
[7] Источник: https://geektimes.ru/post/270182/
Нажмите здесь для печати.