199. Сборка платы на заводе: перечень, файл установки и гербер
Плата разведена и проверена (разделы 130–135) — макет работает, пора превращать его в изделие. Завод делает две разные вещи: изготавливает голую плату по Gerber и сверловке и собирает её — покупает детали по перечню и ставит их автоматом по файлу установки. Как выгрузить эти файлы из DipTrace, разобрано в 132в; этот раздел — о другом: что в каждом файле лежит, как его читает завод и как проверить комплект до отправки, пока вопросы завода не превратились в неделю переписки.
Опыты — на плате раздела 131 (LQFP-48, 45×32 мм) в KiCad 9.0.9 из образа
kicad/kicad:9.0: выгрузки и сверки делает _verify/fab199/exports.sh
с bom.py, арифметику панели — panel.py. Сверяет
_verify/fab199_check.py.
Как это называется в документации
Оригинал Перевод fiducial mark реперный знак: круг меди для камеры автомата stencil трафарет: стальной лист с окнами по слою пасты turnkey сборка «под ключ»: детали покупает завод consigned assembly сборка из деталей заказчика DNP, do not populate «не устанавливать»: деталь есть в проекте, но не ставится MSL, moisture sensitivity level чувствительность корпуса к влаге до пайки tab routing, mouse bites фрезеровка с мостиками и перфорацией X-out забракованная плата внутри панели AOI, automated optical inspection автоматический оптический контроль пайки
199.1 Что завод хочет от вас
Комплект — четыре файла, и у каждого на заводе свой читатель:
| Файл | Кто читает | Что в нём |
|---|---|---|
| Gerber + сверловка | изготовление платы | геометрия каждого слоя и отверстия |
| перечень (BOM) | закупка | что купить: номиналы, корпуса, артикулы, замены |
| файл установки | автомат установки | где стоит каждая деталь: координаты, поворот, сторона |
| сборочный чертёж | инженер и контроль | вид платы с обозначениями — по нему проверяют готовое |
Если заказываете только голые платы, хватает первой строки. Для сборки нужны все четыре — и трафарет для пасты завод вырежет сам по слою пасты из того же Gerber.
Весь комплект отправляют одним архивом, и в имени архива — версия платы. У завода не бывает «контекста переписки»: собирать будут ровно то, что лежит в архиве, поэтому полкомплекта из письма недельной давности и полкомплекта «вот новый гербер» — верный путь к плате-франкенштейну.
199.2 Перечень (BOM)
Перечень — таблица «что купить и куда поставить». Минимум столбцов:
| Столбец | Пример | Зачем |
|---|---|---|
| обозначения | C1 C2 C3 C4 C5 C6 | связь с платой и файлом установки |
| количество | 6 | закупка считает по нему |
| номинал и допуск | 100 нФ ±10 %, 50 В, X7R | «просто 100 нФ» бывает на 6,3 В |
| корпус | 0603 (1608 метрич.) | в какой ленте деталь |
| артикул производителя | конкретное исполнение, не серия | по нему деталь покупают |
| замены | 1–2 равноценных артикула | иначе сборка встанет при дефиците |
Начало перечня даёт CAD: группировка деталей платы по паре
«номинал + корпус». На плате раздела 131 пятнадцать деталей складываются
в девять строк — шесть конденсаторов 0603 одной строкой, два 0805, и по
одной строке на микроконтроллер, стабилизатор, кварц, резистор, светодиод
и два разъёма (прогон bom.py):
строк перечня: 9, деталей: 15
деталей, у которых номинал пуст или повторяет имя корпуса: 15 из 15
Вторая строка прогона — главный урок. Плату раздела 131 собирал скрипт, номиналы деталям никто не задавал, и в колонке номинала оказалось имя корпуса: перечень выглядит заполненным, а купить по нему нечего. CAD знает о детали ровно то, что вы в неё записали; номинал, допуск и артикул сами не появятся. Типичные ошибки перечня:
| Ошибка | Чем кончается |
|---|---|
| номинал без напряжения и допуска | закупка возьмёт самое дешёвое |
| корпус «0603» без системы единиц | метрический 0603 — это имперский 0201 |
| артикул серии вместо исполнения | у серии десятки вариантов корпуса и ленты |
| детали «не ставить» не помечены DNP | их купят и поставят |
| нет замен | нет одной позиции — стоит вся сборка |
Про имперскую и метрическую сетку корпусов удобно помнить по именам
посадочных мест KiCad — они хранят обе: C_0603_1608Metric — имперский
0603, он же метрический 1608.
199.3 Файл установки (pick-and-place)
Файл установки — таблица для автомата: центр каждой детали, поворот и сторона платы. DipTrace выгружает его через File / Export / Pick and Place (132в.3), KiCad — командой:
kicad-cli pcb export pos --format csv --units mm -o out/pos.csv board.kicad_pcb
Несколько строк файла нашей платы (целиком — в прогоне exports.sh):
Ref,Val,Package,PosX,PosY,Rot,Side
"C1","C_0603_1608Metric","C_0603_1608Metric",26.750000,-21.962500,90.000000,top
"C2","C_0603_1608Metric","C_0603_1608Metric",30.962500,-12.250000,0.000000,top
"C5","C_0603_1608Metric","C_0603_1608Metric",5.000000,-11.500000,90.000000,top
"U1","LQFP-48_7x7mm_P0.5mm","LQFP-48_7x7mm_P0.5mm",24.000000,-15.000000,0.000000,top
Всего 15 строк — по числу деталей, все со стороной top. Что тут важно
проверить глазами:
- Координаты — центр корпуса, а не вывод 1: у U1 записана точка (24; −15) — ровно та, куда скрипт платы ставил середину LQFP-48.
- Ось Y растёт вверх, как в математике, а не вниз, как на экране: скрипт ставил C5 в точку (5; 11,5) от левого верхнего угла, в файле она превратилась в (5; −11,5). Завод совместит файл с Gerber и не ошибётся, но при самостоятельной проверке знак минус пугает первым.
- Поворот — в градусах против часовой от «как нарисован корпус в библиотеке»: у наших конденсаторов 0 и 90.
- Нуль координат обязан совпадать с нулём Gerber и сверловки — это тот же Offset из окон выгрузки (132в.3).
И сверка, которую стоит делать всегда: множество обозначений в файле
установки равно множеству обозначений перечня. У нас — 15 и 15, совпали
(прогон bom.py). Деталь, которая есть в одном файле и отсутствует в
другом, — это либо забытый DNP, либо потерянная при правке строка.
199.4 Гербер и сверловка
Что сдают на двухслойную плату: медь двух слоёв, маска и шелкография с двух сторон, паста для стороны со SMD, контур — и сверловка Excellon отдельным файлом, а не отверстиями в Gerber. У платы раздела 131 это восемь файлов Gerber плюс сверловка; какие галочки при выгрузке важны и как формат читается построчно — 132в.3 и 132в.5, повторять не будем.
Перед отправкой выходные файлы смотрят глазами в стороннем просмотрщике Gerber — не в том CAD, который их писал: он покажет то, что вы и так видели. Что ищут:
- слоёв меди столько, сколько заказано, и они не перепутаны местами;
- контур есть и совпадает на всех слоях; габарит — ваш (у платы 131 — 45×32 мм);
- маска открыта над площадками и закрыта над переходами; паста — только на SMD-площадках;
- сверловка легла отверстиями в центры площадок, единицы и формат координат в ней читаются однозначно;
- шелкография не залезает на площадки, надписи нижней стороны зеркальны.
Числа между файлами обязаны сходиться: на плате 131 паста 74 = числу SMD-площадок, маска 80 = 74 + 6 выводных, отверстий 10 — как выводов и переходов (сверено в 132в.5). Эта сверка ловит битую выгрузку за минуту — до завода, а не после.
199.5 Реперные знаки и технологические поля
Автомат ставит детали с точностью в сотые доли миллиметра, а плату ему подают с точностью «положили на конвейер». Разницу закрывает камера: она ищет реперные знаки — круги открытой меди — и по ним пересчитывает все координаты файла установки в координаты реальной заготовки.
Репер — это круг меди и свободная зона вокруг: без маски, шелкографии
и соседней меди, иначе камере не хватит контраста. Типовые размеры видно
прямо в стандартной библиотеке KiCad Fiducial.pretty (прогон
exports.sh): медь от 0,5 до 1,5 мм, окно маски минимум вдвое больше
меди; типовая середина ряда — Fiducial_1mm_Mask2mm: круг 1 мм
в окне 2 мм.
Сколько и где:
- три глобальных репера по углам, несимметрично — по трём точкам камера восстанавливает и сдвиг, и поворот, и масштаб заготовки, а несимметричное расположение не даёт зарядить панель повёрнутой на 180°;
- пара локальных по диагонали у корпусов с мелким шагом — наш LQFP-48 с шагом 0,5 мм как раз такой случай;
- реперы держат подальше от кромки: край заготовки шириной несколько миллиметров занят конвейером и захватами.
На плате раздела 131 реперов ноль (прогон bom.py) — для заводской
сборки их нужно добавить до заказа.
Кромку конвейер держит с двух сторон, и если детали стоят до самого края, плате нужны технологические поля — полосы по краю, которые после сборки отламывают. Типовая ширина — 5 мм: столько же, 0,2 дюйма, советует и пример панелизации DipTrace (132в.2). В полях живут реперы панели и крепёжные отверстия.
199.6 Панелизация
Мелкие платы собирают не поштучно, а панелью — несколько копий на одной заготовке с общими полями. Панель нужна, когда плата мельче, чем удобно конвейеру, когда детали стоят у самого края или когда плат много и жалко машинного времени на каждую по отдельности.
Разделяют платы двумя способами:
- V-рез — нож прокатывает канавку сверху и снизу, каждая снимает примерно треть толщины; у платы 1,6 мм остаётся перегородка около 0,5 мм, которую ломают о край стола. Нож идёт только по прямой и только от края до края заготовки — значит, годится для прямоугольных плат без выступов.
- Фрезеровка с мостиками — фреза выбирает канал вокруг платы любой формы; ширина канала равна диаметру фрезы, типовые 2 мм. Плату держат мостики шириной 2–5 мм: уже — панель гнётся под весом деталей, шире — не отломать без заусенца. Чтобы мостик ломался предсказуемо, его сверлят перфорацией — «мышиными укусами»: отверстия 0,5 мм с шагом 0,8 мм оставляют перегородки по 0,3 мм.
Арифметика панели 2×2 из нашей платы 45×32 мм: столбцы разделены
V-резом — платы вплотную, ряды — фрезерованным каналом 2 мм, поля
по 5 мм со всех сторон (прогон panel.py):
ширина: 5 + 45 + 0 + 45 + 5 = 100 мм
высота: 5 + 32 + 2 + 32 + 5 = 76 мм
Заготовка 100×76 мм несёт четыре платы — и это уже удобный конвейеру размер. Как собрать такую панель в DipTrace — Tools / Panelizing, 132в.2. Осталось одно слово из словаря завода: X-out — панель, в которой одна из плат забракована и помечена. Принимать ли такие панели или требовать только целые, оговаривают при заказе: у целых цена выше.
199.7 Что заказывать
Три варианта заказа, по нарастанию цены и убыванию хлопот:
| Вариант | Вы даёте | Завод делает |
|---|---|---|
| только платы | Gerber + сверловку | голые платы |
| платы + монтаж из ваших деталей | весь комплект и сами детали | consigned: ставит то, что прислали |
| «под ключ» (turnkey) | весь комплект | покупает детали и собирает |
Для мелкой серии «под ключ» почти всегда выгоднее по времени: неделя переписки о заменах дешевле, чем месяц самостоятельной закупки. Детали заказчика имеют смысл, когда в плате есть что-то дефицитное, что вы уже купили.
Сколько запасать:
- Платы — на две-три больше, чем нужно изделий: одна уйдёт на первое включение с ошибками (раздел 200), одна — про запас.
- Мелочь в лентах (резисторы, конденсаторы) — с запасом: заправка
питателя съедает начало ленты, автомат теряет детали при захвате.
Типовое правило — плюс 5 % или плюс 10 штук, что больше: на 10 плат
нашего примера нужно 60 конденсаторов 0603, запас — 10 штук (прогон
panel.py). - Дорогие микросхемы — по счёту плюс одна-две: потеря автомата редка, но не нулевая.
И про влагу: корпуса микросхем набирают её из воздуха, а при пайке оплавлением вода вскипает внутри корпуса — уровень чувствительности называется MSL. Практический вывод для заказчика деталей: присылать микросхемы в невскрытой сухой упаковке, а вскрытые — паять в срок или отдавать заводу на просушку.
199.8 Проверка комплекта перед отправкой
Контрольный список — каждая строка ловит реальную остановку сборки:
- DRC, целостность цепей и сравнение со схемой прогнаны после последней правки (132в.1).
- Числа между файлами сходятся: паста = SMD-площадки, маска = площадки, отверстия — в сверловке, а не в Gerber (132в.5).
- Нуль координат один у Gerber, сверловки и файла установки (132в.3).
- Множества обозначений в перечне и файле установки совпадают — у нас 15 и 15.
- В каждой строке перечня: номинал с допуском и напряжением, корпус с системой единиц, артикул исполнения и замены; DNP помечены.
- Реперы на плате или панели есть; детали у края — значит, есть поля.
- Выходные файлы просмотрены глазами в стороннем просмотрщике: слои, контур, габарит, зеркальность нижней шелкографии.
- Всё — одним архивом, в имени версия; внутри короткая заметка для завода: число слоёв, толщина, что собирать, что DNP.
Пункты 1–3 делает CAD, 4 — скрипт на десять строк, 5–8 — глаза. Полчаса на список против недели переписки с заводом — выгодный обмен.
199.9 Грабли
Завод остановил сборку и прислал список вопросов. Перечень собран из
CAD «как есть»: номинал повторяет имя корпуса — как все 15 деталей нашей
платы в прогоне bom.py. Купить по такому перечню нечего: номиналы,
артикулы и замены заполняют руками до отправки.
Приехала лента 0201 вместо 0603. Корпус в перечне записан числом без
системы единиц: метрический 0603 — это имперский 0201. Писать обе, как
в имени C_0603_1608Metric.
При проверке файла установки все Y — с минусом, «детали вне платы». Ось Y файла растёт вверх, а не вниз, как на экране: C5 из точки (5; 11,5) стала (5; −11,5). Это не ошибка — но сверить одну деталь с Gerber стоит.
Полярные детали стоят задом наперёд. Нуль поворота вашей библиотеки не совпал с тем, как деталь намотана в ленте. Автомату всё равно, кто прав, — завод сверяет спорные повороты по сборочному чертежу, поэтому чертёж и кладут в комплект.
Автомат не взял плату: нет реперов. На плате раздела 131 их ноль — как и на большинстве плат, разведённых «для макета». Три глобальных по углам плюс пара локальных у LQFP — до заказа.
Панель разломали — у крайних конденсаторов трещины. Керамика не терпит изгиба: при разломе панель гнётся, и мелочь у самой линии разлома трескается. Не ставить конденсаторы вплотную к V-резу и ориентировать их длинной стороной вдоль линии.
Ленту заказали ровно по счёту — не хватило. Заправка питателя съедает начало ленты, и точное число превращается в недостачу на последней плате. Мелочь — всегда с запасом: +5 % или +10 штук.
199.10 Итоги
- Комплект для завода — четыре файла: Gerber со сверловкой, перечень, файл установки, сборочный чертёж; один архив, версия в имени.
- Перечень платы 131 — 9 строк на 15 деталей; CAD даёт только группировку, номиналы с допусками, артикулы и замены заполняют руками.
- Файл установки: 15 строк Ref/Val/Package/X/Y/Rot/Side, координата — центр корпуса, ось Y вверх, поворот против часовой, нуль общий с Gerber.
- Реперы: медь 0,5–1,5 мм, окно маски минимум вдвое больше; три несимметрично по углам плюс пара локальных у шага 0,5 мм.
- Панель 2×2 из платы 45×32 при полях 5 мм, V-резе между столбцами и канале 2 мм между рядами — заготовка 100×76 мм; V-рез оставляет ~0,5 мм из 1,6; перфорация мостика — отверстия 0,5 мм с шагом 0,8 мм.
- Запас: мелочь +5 % или +10 штук (60 шт 0603 на 10 плат → +10), платы на 2–3 больше; перед отправкой — восемь пунктов списка 199.8.
Дальше: раздел 200 «Первое включение новой платы».