132а. DipTrace: свои корпуса и компоненты
В разделе 132 плата собиралась из готовых деталей. Рано или поздно нужной детали в стандартных библиотеках не окажется — новый датчик, разъём редкой серии, микросхема в корпусе BGA. Этот раздел о том, как сделать её самому: посадочное место, символ для схемы, 3D-модель и связь между ними. И о том, как читать имена готовых корпусов — по ним видно всё о детали, не открывая её.
Меню, кнопки и числа примеров сверены с руководством к установленной
версии DipTrace 5.3. Правило имён проверено на 1 629 корпусах из трёх
стандартных библиотек: имя разобрано программой и сравнено с описанием,
которое записано в той же библиотеке рядом с ним. Сверяет
_verify/dip132a_check.py.
Как это называется в документации
Оригинал Перевод Pattern Editor редактор корпусов (посадочных мест) Component Editor редактор компонентов (символ плюс корпус) Pattern Generator (IPC-7351) генератор корпусов по стандарту IPC-7351 pad template стандарт площадки: сохранённый набор её параметров RefDes (reference designator) позиционное обозначение: R, C, U… net port порт цепи: символ, соединяющий провода по имени pin-to-pad connection связь вывода символа с площадкой корпуса density level (most, nominal, least) плотность монтажа: наибольшая, средняя, наименьшая
132а.1 Из чего состоит компонент
Компонент DipTrace — это три изображения одной детали для трёх этапов работы:
| Что | Где нужно | Где правится | Файл |
|---|---|---|---|
| символ | схема | редактор компонентов | библиотека компонентов .eli или .elixml |
| корпус (посадочное место) | плата | только редактор корпусов | библиотека корпусов .lib или .libxml |
| 3D-модель | объёмный вид, выгрузка в механический САПР | подключается в редакторе корпусов | .step, .iges, .wrl, .3ds |
Связи между ними свободные: одному символу можно дать разные корпуса (резистор выводной и SMD), один корпус — разным символам. Редактор компонентов умеет только привязать корпус к символу; изменить сам корпус в нём нельзя.
Отсюда порядок работы: сначала корпус, потом символ. Если подходящий корпус уже есть в стандартных библиотеках, первый шаг пропускают и сразу идут в редактор компонентов.
Компоненты живут только внутри библиотек — даже единственную деталь придётся положить в свою библиотеку.
132а.2 Своя библиотека
В редакторе корпусов: кнопка на панели библиотек слева → New Library.
В окне — имя, подсказка и группа. По умолчанию предлагается группа
User Patterns; вне групп библиотеку сохранить нельзя. Затем
Library / Save: имя файла в программе не показывается, папка по
умолчанию — Документы/DipTrace/My Libraries.
Три правила хранения:
- В папку стандартных библиотек сохранить не даст сама программа. И правильно: стандартные библиотеки — часть установки и меняются вместе с ней.
- Для контроля версий — XML. Библиотеку можно сохранить в
.libxml(корпуса) и.elixml(компоненты); руководство советует именно это, если файлы лежат в git. Двоичный.libв истории — непрозрачный кусок, по которому не видно, что поменялось. - Свои библиотеки — не внутри программы. На macOS руководство
прямо предупреждает: папку
My Librariesможно потерять при удалении программы.
132а.3 Корпус вручную: резистор с шагом 0,4 дюйма
Пример из руководства — выводной резистор «RES 400».
- На панели Pattern Properties: имя
RES 400, позиционное обозначениеR, номинал47kΩ. Задаётся только буквенная часть обозначения — номера R1, R2… плата раздаст сама. - Сетка 0,05 дюйма (View / Units или Shift+U — смена единиц), инструмент Place Pad, две площадки.
- Размерная линия Objects / Place Dimension / Horizontal от центра до центра — она пересчитывается сама, когда площадки двигают. Площадки разводят на 0,4 дюйма = 10,16 мм.
- Площадки: обе сквозные 0,09 × 0,09 дюйма с круглым отверстием 0,04 дюйма; первая — прямоугольная, вторая — овальная. Так на плате видно, где вывод 1.
- Шелкография — прямоугольник на слое Top Silk.
- Edit / Center Pattern (Ctrl+Alt+C) — начало координат в центр.
Стандартные и собственные свойства площадки. Pattern / Standard Pad Properties задаёт параметры сразу для всех площадок корпуса; форм пять: Ellipse, Obround, Rectangle, D-Shape, Polygon, у прямоугольника — радиус скругления. Чтобы одной площадке дать своё, в её свойствах (вкладка Type / Dimensions) снимают галочку Use Pattern's Standard Pad Properties.
Многоугольная площадка делается двумя способами: форма Polygon и кнопка Points (пример руководства — правильный восьмиугольник радиусом 0,045 дюйма), или многоугольник, нарисованный на сигнальном слое, → правый щелчок → Convert to Pad.
Слои. Список справа длинный; кнопка под ним позволяет отметить «приоритетные» слои — Top Dimensions, Top Silk, Top Comp Outline, Top Mask, Top Paste, Top, Bottom — и показывать только их (Show Priority Layers Only).
132а.4 Корпус генератором IPC-7351
Руками корпус рисуют редко: стандарт IPC-7351 описывает, как по размерам детали из документации рассчитать площадки. В DipTrace для этого на панели Pattern Properties выбирают стиль IPC-7351 — появляется кнопка генератора.
Пример руководства — выводной резистор HVR37:
| Поле генератора | Значение |
|---|---|
| тип | Through Hole |
| семейство / подсемейство | Axial / Resistor |
| Pitch (зелёное — необязательное) | пусто: рассчитает сам |
| Amax (красное — обязательное) | 4 мм |
| bmin / bmax | 0,67 / 0,73 мм |
| Dmax | 12 мм |
| Emax | 4 мм |
Кнопка Recalculate считает размеры площадок, OK создаёт корпус вместе с 3D-моделью. Красные поля обязательны, зелёные — нет. Если выбрано собственное имя корпуса (Use Unique Pattern Name), нужно указать производителя — без него корпус не создастся.
У BGA генератор спрашивает ещё число шариков по сторонам, шаг, порядок нумерации и тип шарика. Пример руководства — корпус 8 × 8 с шагом 0,8 мм: шарик Collapsing Ball, Amax 1,45 мм, диаметр шарика 0,41–0,51 мм, размеры корпуса 7,9–8,1 мм.
132а.5 BGA-144 вручную: матрица и нумерация
Руководство строит BGA-144 из матрицы:
- Единицы — мм, Pattern / Standard Pad Properties: Surface, Ellipse, 0,45 × 0,45 мм.
- На панели Pattern Properties: стиль Matrix, 13 столбцов, 13 строк, шаг 0,8 мм по X и Y. Появляется 169 площадок.
- Центр 5 × 5 выделяют рамкой и удаляют: 169 − 25 = 144.
- Номера сейчас 1…169 с дырой в середине — для BGA так нельзя. Выделить всё (Ctrl+A) → правый щелчок → Pad Array Numbers → тип BGA Matrix. Теперь номера — A1, A2…
Буквы строк. В стандартной библиотеке BGA с шагом 0,8 мм строки обозначены буквами A…H, J…N, P, R, T, U, V, W, Y, затем AA, AB… Букв O, Q, S, X, Z нет ни в одном из 546 корпусов, I встречается как исключение. Причина — их легко спутать с цифрами (I и 1, O и 0). Поэтому у матрицы 13 × 13 последняя строка — N, а не M.
Нумерация по контуру. Для корпусов с выводами по всем четырём сторонам (QUAD — например, QFP) есть тип нумерации Contour: первой становится площадка, по которой щёлкнули правой кнопкой, — так нумерацию можно начать с любого угла или с середины стороны.
Проверка своего корпуса. Сначала выяснить, каким видом нарисован чертёж в документации — сверху (top view) или снизу (bottom view): расположение шариков BGA и выводов многих разъёмов часто дают видом снизу. Корпус на плате рисуют видом сверху, поэтому A1 ставят в тот угол, где он виден сверху, и сверяют пару дальних номеров — A1 и N13. Готовый корпус печатают в масштабе 1:1 и кладут на лист настоящую деталь: у разъёмов так ловится зеркальный корпус до заказа платы.
132а.6 SOIC-28 по документации
Второй ручной пример — микросхема в SOIC-28:
| Параметр | Значение |
|---|---|
| стиль на панели | Lines, 28 площадок |
| площадка | Surface, Rectangle, 0,6 × 2 мм |
| шаг (Pad Spacing) | 1,27 мм |
| расстояние между рядами (Line Spacing) | 9,4 мм |
В каждом ряду 14 площадок, от первой до последней 13 × 1,27 = 16,51 мм. Номера выходят правильными сразу — перенумеровывать не нужно. Руководство затем поворачивает корпус на 90° (Edit / Rotate Pattern, Ctrl+Alt+R), чтобы совпасть с рисунком в документации.
Совет, который руководство даёт по дороге: закрепить свойства корпуса кнопкой замка на панели — чтобы случайный щелчок не перестроил готовую матрицу площадок.
132а.7 3D-модель: три способа
| Способ | Когда |
|---|---|
| файл модели (STEP, IGES, WRL, 3DS) | есть модель от производителя или из пакета моделей DipTrace |
| модель из генератора | корпус сделан генератором IPC-7351 — модель уже есть |
| модель по контуру | SMD-деталь простой формы: DipTrace вытягивает контур на заданную высоту |
Из файла. Кнопка 3D на панели Pattern Properties → All Models.
Для RES 400 руководство берёт res-10.16_5.1x2.5.step — в имени модели
тот же шаг выводов, 10,16 мм. Модель пришлось повернуть по Z на 90°
и приподнять — сдвиг по Z 0,03 дюйма. Когда модель подключена, кнопка
3D светится зелёным.
Похожая модель — тоже годится. Для BGA-144 руководство взяло модель
bga-144_12x12x1.27_17x17.step — корпус крупнее, шаг 1,27 мм — и уменьшило
масштаб: для объёмного вида точность
до десятой миллиметра не нужна.
По контуру. Objects / Precise Shape Placement: прямоугольник 11 × 11 мм на слое Top Outline с привязкой к центру; затем в окне 3D — режим By Component Outline и высота 1 мм.
Две опечатки руководства, чтобы не искать того, чего нет: в тексте написано «Precize Shape Placement», а в самой программе пункт называется Precise Shape Placement; кнопка генератора в тексте названа «IPC-7315 Pattern Generator», а стандарт — IPC-7351.
132а.8 Символ и привязка корпуса
Редактор компонентов устроен так же, как редактор корпусов. Отличия:
- Стили символа — четыре: Free, 2 Sides, IC-2 Sides, IC-4 Sides. 2 Sides и IC-2 Sides отличаются только прямоугольником корпуса.
- Тип части: Normal, Power and GND, Net Port. Часть питания у компонента может быть только одна; порт цепи — символ из одной части, который соединяет провода по имени (так делают VCC и GND).
- Сетка 0,1 дюйма. Длина вывода и шаг между выводами должны делиться на шаг сетки — тогда все ключевые точки вывода, и конец, к которому подходит провод, лежат в узлах сетки.
Привязка корпуса: Component / Attached Pattern. DipTrace сам соединяет выводы символа с площадками по номерам; связь можно проверить и переназначить щелчками «вывод → площадка». Номера выводов и их типы удобнее править в Component / Pin Manager.
Инверсия в имени вывода пишется тильдой: normal ~invert — черта
над частью имени начинается и заканчивается на ~. Подписи двигает
инструмент View / Move Text Tool (F10).
Конденсатору руководство даёт готовый корпус CAPPRD500W60D1050H1450
из стандартной библиотеки электролитических конденсаторов — как читать
такое имя, в следующем подразделе.
132а.9 Как читать имя корпуса
Имена в стандартных библиотеках DipTrace собраны по правилу IPC-7351:
размеры записаны прямо в имени, в сотых долях миллиметра. Разбирает их
короткая программа (_verify/dip132a/ipcname.py):
H = lambda s: int(s) / 100 # «1200» → 12,00 мм
RULES = [
# BGA144CP80_13X13_1200X1200X120B45N
(r"BGA(\d+)CP(\d+)_(\d+)X(\d+)_(\d+)X(\d+)X(\d+)B(\d+)([MNL])",
lambda m: dict(kind="BGA", pins=int(m[1]), pitch=H(m[2]), cols=int(m[3]), rows=int(m[4]),
body_l=H(m[5]), body_w=H(m[6]), height=H(m[7]), ball=H(m[8]), density=DENSITY[m[9]])),
# SOIC28P127_1790X1032X265L83X42N
(r"SOIC(\d+)P(\d+)_(\d+)X(\d+)X(\d+)L(\d+)X(\d+)([MNL])",
lambda m: dict(kind="SOIC", pins=int(m[1]), pitch=H(m[2]), body_l=H(m[3]), span=H(m[4]),
height=H(m[5]), lead_l=H(m[6]), lead_w=H(m[7]), density=DENSITY[m[8]])),
# CAPPRD500W60D1050H1450
(r"CAPPRD(\d+)W(\d+)D(\d+)H(\d+)",
lambda m: dict(kind="CAPPRD", spacing=H(m[1]), lead_w=H(m[2]), diameter=H(m[3]), height=H(m[4]))),
]
Три примера:
| Имя | Что в нём |
|---|---|
BGA144CP80_13X13_1200X1200X120B45N |
144 шарика, шаг 0,80 мм, матрица 13 × 13, корпус 12,00 × 12,00 × 1,20 мм, шарик 0,45 мм, средняя плотность |
SOIC28P127_1790X1032X265L83X42N |
28 выводов, шаг 1,27 мм, корпус 17,90 мм, размах выводов 10,32 мм, высота 2,65 мм, вывод 0,83 × 0,42 мм, средняя плотность |
CAPPRD500W60D1050H1450 |
конденсатор полярный радиальный: шаг выводов 5,00 мм, вывод 0,60 мм, диаметр 10,50 мм, высота 14,50 мм |
Последняя буква — плотность монтажа: M (most) — самые крупные площадки с запасом для пайки, N (nominal) — средние, L (least) — самые маленькие, для плотной компоновки. Многие корпуса лежат в библиотеке во всех трёх вариантах — например, BGA на 16 шариков с шагом 0,8 мм.
Проверка прошлась по трём библиотекам — BGA с шагом 0,8 мм (546 имён),
SOIC с шагом 1,27 мм (955) и электролитические конденсаторы (128) —
и сравнила каждое разобранное имя с описанием рядом с ним. Расхождений
нет, если помнить одно: в имени размер округлён до сотых. Описание
говорит «10.325mm lead span», имя — 1032.
Суффиксы _AD1, _AD2 — дубликаты того же корпуса (так их и называет
описание, «alternative duplicate»), _AP1 — корпус, у которого распаяна
только часть выводов: SOIC16-28P127…_AP1 — 16 выводов из 28 с нумерацией
до 28.
132а.10 Грабли
Свой компонент в стандартной библиотеке. DipTrace туда и не пустит, а файл, подложенный в папку установки вручную, легко потерять при переустановке.
Корпус в редакторе компонентов «не редактируется». Так и задумано: только редактор корпусов. В редакторе компонентов — лишь привязка.
Выводы BGA пронумерованы 1…169. Матрица по умолчанию нумерует подряд; после удаления центра нужна Pad Array Numbers → BGA Matrix.
Деталь встаёт на плату только зеркально. Корпус нарисовали по виду снизу из документации, а на плате нужен вид сверху (132а.5).
Выводы символа не попадают в сетку схемы. Длина или шаг выводов не делятся на шаг сетки. Правило редактора: всё кратно сетке, лучше 0,1 дюйма.
Генератор не создаёт корпус с собственным именем. Не указан производитель при включённом Use Unique Pattern Name.
Площадка SMD «сквозь всю плату». SMD-площадка лежит только на текущем слое; размер отверстия у неё не учитывается. Если деталь стоит снизу, её площадки переносят командой Change Side.
Имя корпуса «не совпадает» с документацией на сотые. Не ошибка: в имени размеры округлены до сотых миллиметра, точные — в описании корпуса.
Библиотека в git показывает только «двоичный файл изменён». Сохраните
её в XML — .libxml или .elixml.
132а.11 Итоги
- Компонент = символ + корпус + 3D-модель; корпус правится только в редакторе корпусов. Сначала корпус, потом символ.
- Свои библиотеки — в свою группу и свою папку; для git — XML.
- RES 400: шаг 0,4 дюйма = 10,16 мм, первая площадка прямоугольная.
- Генератор IPC-7351 считает площадки по размерам из документации; красные поля обязательны.
- BGA-144 = матрица 13 × 13 без центра 5 × 5; строки A…N без I, O, Q, S, X, Z; нумерация — BGA Matrix.
- SOIC-28: 0,6 × 2 мм, шаг 1,27, между рядами 9,4 мм; ряд — 16,51 мм.
- Имя корпуса по IPC-7351 содержит все размеры в сотых долях миллиметра; M/N/L — плотность монтажа. На 1 629 именах разбор совпал с описаниями.
Полные исходники
ipcname.py — разбор имени корпуса по правилу IPC-7351.
# -*- coding: utf-8 -*-
"""Разбор имени корпуса по правилу IPC-7351, как их пишет библиотека DipTrace.
python ipcname.py BGA144CP80_13X13_1200X1200X120B45N SOIC28P127_1790X1032X265L83X42N
"""
import re
import sys
DENSITY = {"M": "most", "N": "nominal", "L": "least"}
H = lambda s: int(s) / 100 # «1200» → 12,00 мм: размеры записаны в сотых долях миллиметра
RULES = [
# BGA144CP80_13X13_1200X1200X120B45N
(r"BGA(\d+)CP(\d+)_(\d+)X(\d+)_(\d+)X(\d+)X(\d+)B(\d+)([MNL])",
lambda m: dict(kind="BGA", pins=int(m[1]), pitch=H(m[2]), cols=int(m[3]), rows=int(m[4]),
body_l=H(m[5]), body_w=H(m[6]), height=H(m[7]), ball=H(m[8]), density=DENSITY[m[9]])),
# SOIC28P127_1790X1032X265L83X42N
(r"SOIC(\d+)P(\d+)_(\d+)X(\d+)X(\d+)L(\d+)X(\d+)([MNL])",
lambda m: dict(kind="SOIC", pins=int(m[1]), pitch=H(m[2]), body_l=H(m[3]), span=H(m[4]),
height=H(m[5]), lead_l=H(m[6]), lead_w=H(m[7]), density=DENSITY[m[8]])),
# CAPPRD500W60D1050H1450
(r"CAPPRD(\d+)W(\d+)D(\d+)H(\d+)",
lambda m: dict(kind="CAPPRD", spacing=H(m[1]), lead_w=H(m[2]), diameter=H(m[3]), height=H(m[4]))),
]
def decode(name):
for rx, make in RULES:
m = re.fullmatch(rx, name)
if m:
return make(m)
return None
if __name__ == "__main__":
for n in sys.argv[1:]:
print(n, decode(n))
Дальше: раздел 132б «DipTrace: слои, правила, трассировка и медь» — контур и вырезы, классы цепей, заливка и термобарьеры.