CadSoft EAGLE: Готовим печатную плату к производству - создание групповой заготовки

panel_pcb_logoЕсли надо сделать несколько одинаковых печатных плат, их удобно объединить в групповую заготовку (panelized PCB). В такой заготовке платы могут разделяться двумя способами — скрайбированием (v-scoring) и фрезерованием (milling) с созданием перемычек. Попробуем быстро создать групповую заготовку в программе CadSoft Eagle при помощи специального скрипта. Все картинки в статье кликабельные.

Предыстория

Сделал я как-то систему авто-полива для своего домашнего сада. И такой удачной она получилась, что такую же срочно захотели иметь у себя половина моих родственников и друзей. Понятное дело — сад цветёт и пахнет, как на дрожжах, а ты знай себе только подливай воду в расходную ёмкость раз в месяц, а то и в два. Но тут выходила неувязка — создавал-то систему для себя, поэтому её головное устройство собрано на макетной плате с кучей проводов — эдакий франкенштейн (фото не привожу, чтобы не травмировать чью-то хрупкую психику). Размножать такое «чудо» среди близких мне, да и просто знакомых, людей я посчитал недостойным — «юзабилити» девайса отчаянно стремилось к нулю. Было решено привести всё к нормальному виду, разработав печатную плату, которую потом (в перспективе) можно было бы засунуть в пластиковый корпус.

Ну, что делать… Открыл свой любимый (проверенный временем, надёжный и безотказный) Eagle и начал ваять. В итоге получилась простенькая двухстороняя плата размерами 88,265 x 73,66 мм (заливку «земляного» полигона отключил для наглядности):

Исходная плата в программе CadSoft Eagle

Все компоненты я разместил на верхней стороне (кроме фильтрующих SMD-конденсаторов и нескольких сопротивлений). Смоделировал плату (без деталей) в Google SketchUp, чтобы увидеть, что получится в результате. Получилось так:

Верхняя сторона платы

на нижней стороне — вышеупомянутные конденсаторы, сопротивления, а также «копирайты» (куда же без них?!). Отдельно в нижнем слое меди «Bottom» отметил дату ревизии платы. Мало ли, вдруг устройство пойдёт в широкие массы, и начнутся глобальные доработки его функциональности ;)

Нижняя сторона платы

Групповая заготовка


Как уже было сказано выше, если надо сделать несколько одинаковых печатных плат, их удобно объединить в групповую заготовку (panelized PCB). В такой заготовке платы могут разделяться двумя способами — скрайбированием (v-scoring) и фрезерованием (milling) с созданием перемычек.

Скрайбирование — самый простой способ разделения, когда между платами с обеих сторон заготовки делаются продольные v-образные надрезы, по которым платы могут быть отломаны друг от друга. Используется такой метод при производстве прямоугольных и квадратных печатных плат для автоматической сборки, когда ни один из компонентов не выступает за габариты платы (разъёмы, выключатели и т.п.). На рисунке виден поперечный разрез групповой заготовки в месте соединения двух печатных плат:

Поперечный разрез печатной платы при скрайбировании

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

Перемычки с перфорацией при фрезеровании

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

Не знаю, как кто, а я люблю делать групповые заготовки под фрезерование. Люблю отламывать перемычки. А всё началось с SIM-карт... В этот раз тоже не буду изменять своим пристрастиям.

При подготовке к созданию групповой заготовки в программе CadSoft Eagle (скорее всего, как и во всех других подобных программах) надо иметь в виду, что при клонировании компонентов исходной платы все их имена будут созданы заново, а их нумерация будет продолжена. То есть, если на исходной плате было две микросхемы — DD1 и DD2, то при копировании этих микросхем новым копиям будут присвоены имена DD3 и DD4. Таким образом, шелкография на платах в групповой заготовке будет различаться. Нас это не устраивает.

И снова создатели Eagle'а позаботились об этом и предусмотрели скрипт panelize.ulp, который копирует весь текст из слоёв tNames и bNames (в этих слоях Eagle держит имена компонентов) в слои _tNames и _bNames соответственно. По-умолчанию, слой _tNames получает ID 125 (идентификатор слоя tNames + 100) и жёлтый цвет, а слой _bNames — ID 126 (идентификатор слоя bNames + 100) и фиолетовый цвет.

Добавились новые слои - _tNames и _bNames

Находим на главной панели окна печатной платы программы Eagle кнопку ULP. Нажимаем её. В открывшемся списке скриптов находим и выпоняем скрипт panelize.ulp.

После выполнения данного скрипта можно отключить отображение слоёв tNames и bNames за ненадобностью, выполнив команду "DISP -tNames -bNames;", и работать с только что созданными слоями _tNames и _bNames. Учтите, что скрипт panelize.ulp копирует уже существующие имена компонентов. Поэтому, если вы добавите в схему новые компоненты, вам надо будет вручную создать клоны их имён в соответствующих слоях.

Почти всё готово для создания групповой заготовки. Убедимся только, что левый нижний край платы находится в центре системы координат (X0, Y0):

Левый нижний угол в начале отсчёта координат

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

Итак, для начала сделаю пробную партию из 4 штук (для самых нетерпеливых заказчиков). Открываем страницу со скриптом панелизации — http://scripts.urtos.net/ru/eagle/pcb_panelizer. Заполняю поля следующим образом (справа от каждого поля есть подсказка, если чё).

Заполненная форма скрипта

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

Результирующий набор команд для Eagle'a

Копируем и вставляем полученный код в командную строку Eagle'а, которая находится прямо над рабочим полем программы.

Код вставлен в командную строку

Нажимаем Enter и видим, как вокруг исходной платы появляются 3 её клона с заданным отстоянием друг от друга.

Групповая заготовка готова

Отключаем все слои, кроме слоя фрезеровки Milling ("DISP None +46;"), чтобы увидеть отдельно контуры групповой заготовки вместе с внутренними вырезами, образованными перемычками между элементами заготовки.

Слой фрезеровки Milling (id 46)

Также можно полюбоваться результатом, смоделировав плату в SketchUp'е:

AvtoPoliv_PCB_Panelized_Top

AvtoPoliv_PCB_Panelized_Skewed

Вроде, всё в порядке. Теперь можно перегонять всё в GERBER-формат и отправлять на производство...

При подготовке статьи были использованы иллюстрации из руководства по производству печатных плат компании «Резонит» (rezonit.ru).

Оригинал статьи находится по адресу: http://www.urtos.net/manuals/cadsoft-eagle-gotovim-platu-k-proizvodstvu-gruppovaya-zagotovka/.
  • +8
  • 16 июня 2015, 21:04
  • uRTOS

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

RSS свернуть / развернуть
Люблю отламывать перемычки. А всё началось с SIM-карт...
Там же вроде как раз скрайбирование)
0
  • avatar
  • Vga
  • 16 июня 2015, 21:13
Вроде как, фрезерование с перемычками ;)
SIM-card
0
Ну да, но перемычки-то скрайбированные)
0
Боюсь ошибиться но по моему мнению это самая настоящая просечка. Операция производится методом обычной штамповки.
0
Ты про прорези или про надрезы на перемычках? Хотя, возможно, они делаются одновременно. С технологией не знаком, видел только результат)
0
Хотя, возможно, они делаются одновременно.
Совершенно верно.
Вылетают из под штампа как из пулемета.
0
Собственно как бы ничего нового, но зато на доступном языке для осваивающих Eagle. Браво!
Технология действительно очень удобная что касаемо изготовления одинаковых плат в большом количестве.
Тут вот был затронут больной вопрос для многих это разделение готовых плат фрезерованием и скайбированием. Должен сказать что к сожалению не у всех радиолюбителей есть пока такая возможность, особенно у проживающих в глубинке. Особенно когда нужна небольшая партия плат. И особенно когда эти платы нужны как говорится ещё вчера.
Я как раз сейчас работаю над небольшим устройством для разрезания стеклотекстолита скайбированием. Должен сказать что уже устал " царапать " заготовки резаком. Хочется чего то более прогрессивного и менее утомительного. Если все пойдет по маслу как задумал то обязательно поделюсь с народом.
Ещё раз браво!
0
Метод описан хорошо, для начинающих в Eagle будет очень полезен. Но по факту бесполезен. Обычно на производство отдается одиночный гербер и говориться хочу столько то плат :) Если надо указывается способ разделения оных. А теперь посчитайте по стоимости даем гербер скажем платы 50х50 в тот же Резонит или ее же но размноженную на 4-е. :)
+1
Еще немного добавлю может быть полезен дома когда сам делаешь на станочке ЧПУ и надо несколько однотипных плат закрутить, но тоже не очень если честно т.к надо настроить обрезку оных а фреза по умолчанию идет по центру линии. На производстве это настраивается специально, в домашних же условиях это выглядит так :) Фреза по контуру 1,5 мм :)
0
Для подобных задач я, как раз, и писал утилиту (miniCAM). Она, в том числе, генерирует перемычки (причем правильные, а не так, как на картинке) и правит обрезку по контуру с учетом диаметра инструмента.
0
хотел попробовать миникам, а там куча файлов и папок с одинаковым названием, что с этим делать непонятно…
jar файла нет, компилить эту кучу не вариант
0
В релизах лежит собраный бинарник.
0
вылетает с ошибками

java version "1.7.0_01"
Java(TM) SE Runtime Environment (build 1.7.0_01-b08)
Java HotSpot(TM) Client VM (build 21.1-b02, mixed mode)
...

Exception in thread "main" java.lang.reflect.InvocationTargetException
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:601)
        at com.simontuffs.onejar.Boot.run(Boot.java:340)
        at com.simontuffs.onejar.Boot.main(Boot.java:166)
Caused by: java.lang.IllegalStateException: No match found
        at java.util.regex.Matcher.group(Matcher.java:485)
        at com.baremetalstudios.minicam.parser.ExcellonParser.parseGroup(ExcellonParser.java:79)
        at com.baremetalstudios.minicam.parser.ExcellonParser.parse(ExcellonParser.java:47)
        at com.baremetalstudios.minicam.MiniCAM.runProcessing(MiniCAM.java:142)
        at com.baremetalstudios.minicam.MiniCAM.main(MiniCAM.java:75)
        ... 6 more
0
Подозреваю дело во формате файла сверловки. Первая версия расчитана на очень примитивный вариант екселоновского формата, который получается на выходе gerbmerge. Я допиливал парсер (и много других мелких улучшений), но новая версия еще не готова, что бы ее выкладывать.
0
А разве не на то гитхаб нужен, чтобы коммитить и код в разработке?
0
Когда я допиливал код я был как раз в процессе переезда, интернет был только эпизодически, а вкомитить код было далеко не самой важной задачей. Сейчас тоже пока руки не доходят.
0
Это ж гит. Коммитить можно когда угодно, а пихнуть коммиты на сервер — по возможности.
0
Локальные коммиты я делаю, естественно. Я имел в виду, что не пушил пока изменений на сервер.
0
Вот я и предлагаю их таки пушить, для интересующихся… Для отделения стабильного и найтли кода на гитхабе вполне достаточно средств, так что никаких особых причин не выкладывать недоделки нет.
0
Дойдут руки — запушу. Тут после очередного переезда еще ящики с барахлом до конца не разобраны…
0
На производстве их тебе объединят в панель с нужным разделением. Скрипт этот совершенно бесполезен без знания форм и размеров заготовок на производстве и какими фрезами будет резаться.
0
Я бы добавил, что китайцы в большенстве своем запрещают самостоятельное панелирование, а если и разрешают, то без Vcut и фрезы, мол бери сам нажовку и пили сколько влезет :)
0
Ага можно только шелкографией а далее ручками:)
0
Как по мне, то проще повозиться разок и настроить полуавтоматическую панелизацию. Помимо всего прочего, такой подход позволяет готовить панели для разных плат, а не только для одного типа.
0
Где же ты был, мне пришлось это руками рисовать + panelize.ulp:


Пробовал использовать gerbmerge, но он не осилил правильно скопировать логотип на плате.
0
Тулза существует больше года. Более того, я приглашал бетатестеров…
По поводу gerbmerge: у меня проблем со слоями не было, вероятно дело в настройках или в версии.
0
Версия 1.8, свежак с сайта. Все слои отлично копирует, проблема именно с копированием логотипа, который заливается через import-bmp.ulp. Вот его корёжит по полной программе.
0
Я так думаю, что надо внимательно посмотреть гербер, который при этом генерится. Ну и посмотреть в каком слое это делается.
0
Кстати, если есть воспроизводимый пример, то его вполне можно отправить авторам, они починят.
0
Они с 2011 года эту софтину не обновляют, поддержут, как же.
Только хардкор, только самостоятельный патчинг.
0
Если софтина достаточно хорошо работает и так, зачем что-то допиливать? В любом случае, я бы попытался связаться с авторами.
0
А потом открыть герберы в cam350, ибо производители плат в нем мозаику и клеют, прямо из герберов.
0
Публикация скрипта в виде онлайн-сервиса — вопрос принципиальный? Оффлайн-тулза не планируется? Знаю, очередное обострение плюшкинизма, но желание стащить скриптец в закрома не покидает. На случай всякого стрема (нет отключили, хостинг рухнул и т.п.)
0
Могу и ULP-скрипт запилить. Проблем нет.
0
Пилите, пилите, к заметке прикладывайте Я так думаю многим пригодиться, особенно тем кто только осваивает данную прогу.
0
Вот очень хорошие видео по подготовке плат к серийному производству
Размеры платы у Вас, мягко говоря, не обычные: 88,265 x 73,66 мм
Я всегда стараюсь делать кратность по ГОСТ 53429-2009, относительно свежий. В Вашем случае это 2.5 мм кратность, 90 х 75 мм. Ну и для допуска что-то оставить. Если не устраивает ГОСТовская кратность, то хотя бы 0.5 мм выбрать. Если делаем на западе, то кратность по дюймам\милам
Я при панелизации всегда предусматриваю тестовую топологию, хотя бы для контроля паразитных параметров.
Шелкографию лучше не поворачивать на 90 градусов, и очень-очень желательно что бы был зазор между шелкографией и проводником, иначе беда.
Переходные отверстия на полигонах у Вас идеальные, еще можно при помощи кучки переходных отводить тепло от не сильно греюшихся элементов. Если плату делаем по комбинированному позитивному методу, то на стоимость наличие-отсутствие металлизации в мелкосерийном производстве не влияет.
И самое важное, по краям панели обязательно нужно оставлять гарантийный поясок
0
Если делаем на западе, то кратность по дюймам\милам
Совершенно не факт. Я бы даже сказал, что это скорее исключение, чем правило. За дюймовую систему еще кое-как держатся штаты, но остальные давно перешли на метрическую. Более того, даже в штатах от весьма авторитетных людей (например, от Mentor Graphics) звучат призывы переходить на метрическую систему при разработке плат.
0
Благодарю Вас за критику, советы и замечания. Но, что касается платы в статье, то она приведена исключительно для примера. Не знаю, зачем Вы заострили своё внимание на ней. Ведь речь в статье идёт не об искусстве разработки печатных плат, а об одном из способов создания групповой заготовки. «Необычные» размеры моей платы получились из-за используемого шага в 0,635 мм. Я часто использую такой шаг и даже на 0,3175 перехожу иногда. Но ни разу ещё при отправке своих плат в производство не слышал о том, что с их размерами что-то не так. Всех Вам благ!
0
из-за используемого шага в 0,635 мм. Я часто использую такой шаг и даже на 0,3175 перехожу иногда.
А в чем смысл такого шага? Я бы понял 0.3-0.2-0.1, но такие дробные шаги (особенно в игле, который всегда проводит дорожки к центру пада) это не очень удобно, как по мне.

P.S. я, обычно, пользуюсь сеткой 0.1мм, последнее время иногда 0.05мм. альтернативная сетка у меня всегда половина основной.
0
А в чем смысл такого шага? Я бы понял 0.3-0.2-0.1, но такие дробные шаги (особенно в игле, который всегда проводит дорожки к центру пада) это не очень удобно, как по мне.
Начнём с того, что мне так удобно. Вам же удобны значения 0.1 мм или 0.05 мм. В моей сугубо любительской практике в основном приходится иметь дело с компонентами, у которых расстояние между выводами привязано к дюйму — 1,27 мм, 2,54 мм. Делая сетку кратной этим значениям, проще проводить дорожки между падами (да и вообще, красивее разводка получается). Ну а во всех других случаях, чтобы дорожки всегда подходили к центрам падов, я рисую их «от пада». В этом случае шаг сетки ни на что не влияет.
0
В моей сугубо любительской практике в основном приходится иметь дело с компонентами, у которых расстояние между выводами привязано к дюйму — 1,27 мм, 2,54 мм.
В моей, не менее любительской практике, компоненты с таким шагом это, разве что, корпуса типа SO да «гребенки». Все остальное метрическое — резисторы, конденсаторы, чипы, всевозможные разъемы, дисплеи и так далее. Проводить между падами вполне нормально получается и с метрическим шагом. Что же касается красивости разводки, то она получается автоматически, как только шаг сетки совпадает или кратен ширине дорожки и зазора. В вашем случае дорожки и зазоры тоже прийдется делать дюймовые, что требует ненужного напряжения и, как по мне, совершенно не удобно.
Ну а во всех других случаях, чтобы дорожки всегда подходили к центрам падов, я рисую их «от пада». В этом случае шаг сетки ни на что не влияет.
Как сказать, с учетом того, что большинство компонентов метрические — влияет (появляются ненужные сдвиги при подводе дорожек).

P.S. я бы еще понял, если бы все было в милах или дюймах, но постоянно оперировать числами с длинными хвостами после десятичной точки — утонченный мазохизм, как по мне.
0
В вашем случае дорожки и зазоры тоже прийдется делать дюймовые, что требует ненужного напряжения и, как по мне, совершенно не удобно.
На вкус и цвет — фломастеры разные :) Вы пытаетесь убедить меня, что «правильно только так, а не иначе». Может Вы и правы, если разрабатывать плату по ГОСТам. Я же делаю для себя, поэтому делаю так, как удобно мне. Вам нравится, когда за запятой одна цифра, меня же вполне устраивают 3 и даже 4. Абсолютно никакого напряжения от «длинных хвостов» я не испытываю. Главное, чтобы не были превышены параметры завода-изготовителя плат, согласны? Ну а уж если делаешь для себя, то хозяин — барин, как говорится ;)

… появляются ненужные сдвиги при подводе дорожек.
Я рисую всегда вручную. И никаких сдвигов не появляется. Начните дорожку от центра одного пада, но не доводите её до второго, с которым она должна соединиться. Потом начните дорожку от центра второго пада и ведите её в сторону первой. Вне зависимости от шага сетки, Eagle соединит обе дорожки. Всё будет ровно и красиво.

постоянно оперировать числами с длинными хвостами после десятичной точки — утонченный мазохизм, как по мне
Я уважаю Ваше мнение. Но сохраняю за собой право на своё собственное ;) Я никого не призываю пользоваться шагом в 0.635 мм или 0.3175 мм и не говорю, что использовать такой шаг — правильно. Просто мне так удобно :)
0
Вы пытаетесь убедить меня, что «правильно только так, а не иначе».
Нет, всего лишь удивляюсь вашей изобретательности в поисках неудобств :)
Может Вы и правы, если разрабатывать плату по ГОСТам.
Я не разрабатываю плат по гостам. И не «может», а я таки прав :)
Я рисую всегда вручную. И никаких сдвигов не появляется. Начните дорожку от центра одного пада, но не доводите её до второго, с которым она должна соединиться. Потом начните дорожку от центра второго пада и ведите её в сторону первой. Вне зависимости от шага сетки, Eagle соединит обе дорожки. Всё будет ровно и красиво.
Угу, я в курсе этого приема. Вот только потом проводник не ляжет в сетку. Это не проблема для одного вывода, но обязательно вылезет на шине.
Просто мне так удобно :)
Я ни в коем случае не отрицаю вашего права на извращения. Всего лишь удивился, что даже в таком вопросе люди умудряются изголяться :)
0
резисторы, конденсаторы
Разве 1206/0805/etc метрические? ЕМНИП у них размеры в дюймах указаны.
0
Разве 1206/0805/etc метрические? ЕМНИП у них размеры в дюймах указаны.
Ты не поверишь, но они именно метрические. И футпринты под них тоже. Более того, у привычных нам «дюймовых» названий есть «метрические» аналоги 0402 -> 1005, 0603 -> 1608, 0805 -> 2012, 1005 -> 2512, 1206 -> 3216, 1210 -> 3225 и так далее. Наконец, некоторые компоненты (например некоторые кварцы) изначально маркируются в метрической системе, например весьма популярные 3225, хотя размер в точности такой как у соответствующих резисторов и конденсаторов.
0
День добрый!
есть небольшой вопрос:
делаем файл сверловки после просматриваем в вивере и видим только отверстия для одной платы. как же остальные?
Файл сверловки делал как Di Halt в своих статьях описывал.
Подскажите как должен всетаки выглядеть файл сверловки для групповой заготовки? Пробовал делать по рекомендации изготовителя плат, тот же эффект отверстия для одной платы.

спасибо
0
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.