Работая в Kicad 5, рано или поздно сталкиваешься с тем, что в программе нет нативного функционала по созданию массивов печатных плат. Поэтому рассмотрим тему панелизации на примере плагина KiKit. Плагин в данное время активно развивается и имеет как стабильные версии, так и экспериментальные. Но для начала немного теории.
Панелизация — метод проектирования массива печатных плат для получения единой обработанной детали для сборщика печатных плат.
Собственно для чего это вообще нужно? Большинство производственного оборудования, манипуляторы захвата и установки деталей, аппараты избирательной пайки, аппараты пайки волной, передаточные конвейеры, не могут обрабатывать платы, у которых длинная сторона прямоугольника платы имеет размер менее 2-х дюймов. Если у вас именно такая плата, то вы должны либо добавлять технологические края, чтобы сделать плату больше, либо создавать массив плат, а лучше использовать и то и другое. То же самое касается плат нестандартной формы, т.е. если у платы нет двух параллельных краев для обработки на конвейере.
Т.е. определились, панелизация вам необходима, если ваша плата будет собираться на конвейере и в следующих случаях:
- У вас мелкая печатная плата;
- У вас плата нестандартной формы.
Если плата будет собираться вручную или у вас DIY проект, то вы можете использовать панелизацию, чтобы получить большее количество плат за меньшие деньги. Китайские сервисы вроде pcbway, jlcpcb предлагают специальные цены на платы размером до 100х100 мм за 10 штук, т.е. вы можете в стандартную панель 100 на 100 мм разместить несколько своих малогабаритных плат и заказать не 10 плат по специальной цене, а к примеру 40 плат за 2$. И это действительно довод для того, чтобы освоить данную технологию проектирования даже, если вы радиолюбитель.
Основная проблема в создании массива печатных плат это правильная организация депанелизации, т.е. выбор метода, который позволит вам отделить платы друг от друга после монтажа так, чтобы предотвратить повреждение отдельных плат или компонентов. Существует 2 наиболее предпочтительных метода депанелизации для малых количеств печатных плат в массиве – это V-образные канавки и перфорация с мостиками.
Я для себя выбрал второй метод и немного расскажу о нюансах работы с этим методом. Если вас заинтересует метод с V-образными канавками, то по нему также не мало информации в интернете.
Метод депанелизации с перфорацией и мостиками
При данном методе следует помнить, что проводники и компоненты должны быть по возможности на расстоянии не менее 3мм от прорезей разлома. Стандартом для метода перфорации с мостиками является перфорация с пятью отверстиями. Середину платы нужно укреплять сильнее, чтобы она не прогибалась при пайке волной.
Перфорационные отверстия, сделанные в центре дорожки разлома вызывают нежелательные выступы по сторонам платы. Не делайте так.
Существует спецификация мостиков перфорации в IPC-7351, разработанная для предотвращения выступания остаточного материала от перфорации за края платы после депанелизации. Выглядит одна вот так:
Я использую на практике отверстия диаметром 0.5 мм и расстояние между отверстиями 1 мм, отступ от края платы 0.25 мм.
Также не следует размещать мостики разлома под нависающими компонентами печатной платы. Это может привести к повреждению компонента при депанелизации.
Это основные рекомендации для данного метода депанелизации, однако, также следует помнить про рекомендации производителя печатных плат. К примеру, Pcbway рекомендует использовать минимальный зазор между платами 1.6 мм, минимальный размер панели 100х120 мм и ширину мостика с перфорацией не менее 5 мм. Более подробно про практику заказа панели плат можно прочитать в данной статье.
Закончим с теорией и переходим к практике применения плагина KiKit в Kicad.
Установка KiKit
KiKit — Python и CLI утилита для автоматизации задач панелизации печатных плат в Kicad. KiKit позволяет решать следующие задачи:
- Панелизация (мультиплицирование) печатных плат;
- Экспорт данных для производства;
- Создание html страницы с презентацией проекта печатной платы (пример страницы, сгенерированной KiKit).
Установка KiKit происходит через pip
. Для стабильной версии:
pip3 install kikit
Для последней версии:
pip3 install git+https://github.com/yaqwsx/KiKit@master
Фактически все, что позволяет сделать KiKit это создать панель печатных плат, то же можно сделать и в Pcbnew, но данный подход очень уж трудоемок и если планируются изменения, то их необходимо будет вносить в каждую из печатных плат в панели. Также KiKit позволяет одной командой создать все необходимые гербер файлы для производства.
У проекта богатая документация по CLI и панелизации. Но для быстрого старта нас сейчас интересует рассмотрение примера работы с плагином.
Работаем с плагином
В качестве примера возьму плату адаптера USB-UART (файл uni-quectel-adapter.kicad_pcb
), которую я делал для одного проекта.
Размеры печатной платы 40х22 мм.
Перед тем как работать с плагином иногда может быть необходимо извлечь печатную плату в отдельный файл. Это бывает полезно, когда у вас 2 и более платы в одном файле и вы хотите добавить их в панель. Если у вас только одна плата в файле, то можно этот шаг смело пропускать. Если не извлекать плату, то по умолчанию KiKit берет все компоненты, которые ограничены контуром печатной платы на слое Edge.cuts.
Для извлечения печатной платы в новый файл используется команда extractboard
, данная команда особенно полезна, если в проекте имеется несколько печатных плат в одном файле.
kikit panelize extractboard --sourcearea 125 75 50 40 <path_to_file>/uni-quectel-adapter.kicad_pcb output.kicad_pcb
--sourcearea
это область, в которой расположена плата или платы. Первые два числа координаты верхнего левого угла и вторые два числа ширина и высота в миллиметрах соответственно. Только те платы, которые войдут в область данного прямоугольника будут извлечены.
Теперь можно приступить к мультиплицированию.
kikit panelize grid --gridsize 2 2 --vcuts output.kicad_pcb panel.kicad_pcb
Данной командой мы сказали, что нам нужна панель размером 2 на 2, без пустого пространства между платами с разделением V-образными канавками. Вот что получилось:
Если после данной команды у вас что-то исчезло из компонентов на плате, то это просто не попало в прямоугольник, который задавался при извлечении платы.
К слову, метод разделения V-образными канавками в данном случае не подходит, потому как есть нависающие над краями компоненты и при депанелизации невозможно будет разрезать панель на отдельные платы, не повредив компоненты и сами платы.
Теперь посмотрим что получится, если разделим платы перфорацией.
kikit panelize grid --gridsize 2 2 --mousebites 0.5 1 0 output.kicad_pcb panel.kicad_pcb
В данной команде последовательно задаются диаметр отверстий (0.5 мм), расстояние между отверстиями (1 мм) и смещение (0 мм). Данный способ подходит для плат без закругленных углов. Чтобы понять, что мы получим после производства надо добавить к команде аргумент --radius
, который просимулирует работу фрезы. Минимальный диаметр отрезной фрезы 2 мм, следовательно задаем радиус 1 мм.
kikit panelize grid --gridsize 2 2 --mousebites 0.5 1 0 --radius 1 output.kicad_pcb panel.kicad_pcb
Хорошо видно что скругления плат стали выглядеть очень плохо, т.е. этот метод хорош только для ровных прямоугольных плат. Вообще, разработчик советует всегда использовать аргумент --radius
, чтобы сразу увидеть места, где не пройдет фреза.
Теперь самое время добавить зазоры между платами, чтобы фреза 2 мм могла свободно сформировать скругленные углы. Также добавим мостики с перфорацией с помощью аргументов --htabs
и --vtabs
.
kikit panelize grid --space 3 --gridsize 2 2 --tabwidth 3 --tabheight 3 --htabs 1 --vtabs 2 --mousebites 0.5 1 0.25 --radius 1 output.kicad_pcb panel.kicad_pcb
Теперь наша панель имеет мостики шириной 3 мм, по одному горизонтальных и по 2 вертикальных. Как видно аргумент --radius
теперь показывает корректную обработку закругленных углов.
Далее можно добавить технологические края или направляющие (rails) для нашей панели. Направляющие могут использоваться для размещения реперных знаков, которые необходимы при сборке. Это очень удобно, т.к. обычно, если плата маленькая, то зачастую на ней негде расположить 3 реперных знака. Направляющие можно добавить аргументом --railsTb <width>
(для верхней и нижней направляющих) или --railsLr <width>
(для левой и правой направляющих).
Далее добавляем реперные знаки в верхний левый, нижний левый и верхний правый углы аргументами --fiducials <horizontalOffset> <verticalOffset> <copperDiameter> <openingDiameter>
. Аналогично добавляются инструментальные отверстия --tooling <horizontalOffset> <verticalOffset> <diameter>
.
Если нам необходима рамка вокруг плат, то использовать комбинацию из двух видов направляющих будет неправильной стратегией. Рамка будет сделана, но депанелизация будет затруднена. Вместо этого надо использовать аргумент --panelsize
с комбинацией аргументов --framecutH
или --framecutV
, чтобы добавить перфорацию в углы рамки.
kikit panelize grid --space 3 --gridsize 2 2 --tabwidth 5 --tabheight 5 --htabs 1 --vtabs 2 --mousebites 0.5 1 0 --radius 1 --panelsize 100 65 --framecutH --fiducials 10 2.5 1 2 --tooling 5 2.5 1.5 doc/resources/conn.kicad_pcb panel.kicad_pcb
Как видно в углы рамки добавлена перфорация и депанелизация будет не сложной.
Мы рассмотрели команду grid
. Есть также команда tightgrid
, которая работает похоже, но вместо добавления зазоров и рамки, она добавляет рамку и контуры фрезеровки вокруг плат. Данная команда может быть полезна, когда платы в панели круглые, их проще будет выфрезеровать.
kikit panelize tightgrid --slotwidth 2.5 --space 8 --gridsize 2 2 --tabwidth 3 --tabheight 3 --htabs 1 --vtabs 2 --mousebites 0.5 1 0 --radius 1 --panelsize 100 65 output.kicad_pcb panel.kicad_pcb
Также с помощью аргумента --rotation
можно повернуть платы на произвольный угол. Для прямоугольных плат функция бесполезна, зато для круглых или плат нестандартной формы очень даже может пригодиться.
kikit panelize grid --space 2 --gridsize 2 2 --tabwidth 3 --tabheight 3 --mousebites 0.5 1 0 --radius 1 --panelsize 120 80 --rotation 45 output.kicad_pcb panel.kicad_pcb
Иногда может потребоваться точное размещение мостиков с перфорацией. Для этого нужно просто нарисовать линию в одном из слоев Kicad и задать аргумент --tabsfrom
. Я разместил линии на слоях Eco1 и Eco2.
kikit panelize grid --space 3 --gridsize 2 2 --htabs 0 --vtabs 0 --tabsfrom Eco1.User 3 --tabsfrom Eco2.User 5 --mousebites 0.5 1 0.25 --radius 1 --panelsize 100 65 --framecutH --fiducials 10 3 1 2 --tooling 5 3 1.5 output.kicad_pcb panel.kicad_pcb
Однако, данная команда не отработала корректно и я получил странную картину, решить данную проблему иной комбинацией опций пока не получается, возможно проблема в самом скрипте. Пробовал как стабильную сборку плагина, так и последнюю, результат аналогичный.
Если кто разберется в чем ошибка, то напишите, пожалуйста, в комментариях.
Еще одной особенностью программы является возможность экспорта файлов для производства.
Файлы для производства
KiKit поддерживает полностью автоматический экспорт всех необходимых данных для производства печатной платы, но т.к. каждый производитель имеет собственные требования к оформлению файлов, их именам и т.п., то нет какого то универсального экспортера. Вместо этого поддерживаются команды для каждого производителя в отдельности. В данный момент их два: JLCPCB и PCBWay.
Для JLCPCB используется команда следующего вида:
kikit fab jlcpcb [OPTIONS] BOARD OUTPUTDIR
После того, как команда отработает в директории OUTPUTDIR
мы сможем найти архив с файлами gerbers.zip
. Этот файл можно сразу же грузить на сайт jlcpcb.com. KiKit автоматически определит количество слоев.
Если кроме изготовления печатной платы вы планируете заказать сборку, то в опциях данной команды следует указать параметр --assembly
, а также указать файл схемы --schematic <schematic_file>
. KiKit сгенерирует еще два файла bom.csv
(bill of materials) и pos.csv
(component placement). С этими двумя файлами уже можно заказать сборку печатной платы сервисом. Однако, не забывайте проверить хотя бы BOM файл, его правильность зависит от вашей библиотеки компонентов Kicad. Также весьма желательно иметь в BOM файле только те компоненты, которые легко покупаются на внутреннем китайском рынке, в противном случае вас попросят найти замену или допаять недостающие детали самому.
С Pcbway аналогичная процедура, отличается лишь команда:
kikit fab pcbway [OPTIONS] BOARD OUTPUTDIR
Также можно добавить своего производителя печатных плат, однако, здесь уже потребуются знания в программировании на Python. Более подробно об этом можно прочитать в документации.
В документации можно найти много других аспектов, которые трудно все осветить в рамках одной статьи, да и я еще до конца не разобрался во всем. Удачи в освоении и читайте анонсы блога в Telegram канале.
Пишите в комментариях, как вы решаете задачу панелизации в Kicad.
Какая замечательная статья!