Для изготовления печатной платы крайне важна информация о посадочных местах компонентов (footprint). Это проекция на плоскость монтажа контуров элементов и их выводов, а также сведения о типе выводов: сквозное отверстие (via) или контактная площадка поверхностного монтажа (pad). Редактор pcb имеет более или менее обширные библиотеки распространенных посадочных мест, но часто приходится создавать пользовательские.
Редактор печатных плат, работающий с утилитами gEDA называется pcb. От других, значительно более известных, приложений, таких как как P-CAD (теперь Altium), его отличает очень большая простота использования. При этом он позволяет делать вполне профессиональные печатные платы. В pcb можно сразу импортировать файл схемы, если у каждого компонента имеется установленный атрибут footprint. Вот ими для начала и займемся.
Откроем схему ltimer.sch, которая была получена у нас в конце прошлого поста и добавим атрибуты всем элементам. Какие? Это увидите из дальнейшего.
gnetlist имеет возможность создать перечень элементов схем. В рабочем каталоге, куда надо закинуть ltimer.sch, создадим очень простой файл attribs всего с двумя строчками:
value
footprint
После этого выдадим команду:
$ gnetlist -g bom ltimer.sch -o ltimer.bom
В результате у нас должен образоваться такой файл:
refdes value footprint
F1 0.5A fuse
C1 3300u c_el
C3 3300u c_el
C5 330u c_el
R1 100 0805
S1 switch btn
R3 100k pot
R2 1k 0805
C2 0.1u 0805
U1 ne555 DIP8
T3 pin P1
T2 pin P1
T1 pin P1
C6 0.68u c_a
R5 180 0.5wa
D1 zen12 zen
D2 dg dio
C4 0.1u 0805
VS1 triac TO92
R4 300 0805
Разумеется, юниксоиды при помощи awk, perl или python могут расписать его получше, если число позиций занимает несколько страниц. Формат файла очень прост и понятен. В attribs можно добавить любые атрибуты (refdes добавляется по умолчанию).
Есть также GUI утилита gattrib, для массовой правки атрибутов, но она кажется не слишком удачно сделанной. Можно написать и скрипт для этих же целей: составлять списки атрибутов и управлять их видимостью, ведь формат файлов sch является открытым и хорошо документирован. Например:
*
* Перечень элементов
*
refdes value \footprint
R1 10k ar1
R2 1k ar3
C1 \1uF 0805
C2 \10uF ca
. . .
Косая черта (или другой символ, или скобки) делает атрибут скрытым на схеме: в приведенном примере, в случае footprint скрыта сразу вся колонка, а в случае типов/номиналов скрыты только значения емкостей конденсаторов. Этот же скрипт может заменять gnetlist с опцией bom. Но это лишь идея, кому-то и gattrib покажется достаточно хорошим.
Сейчас представляется самым важным назначить атрибут footprint. Выбрать посадочные места можно из библиотек pcb. Кое-что подходящее у нас уже есть. Запустим pcb и получим элементарные навыки обращения с ним.
Интерфейс программы очень простой и понятный. Серый прямоугольник в окне - это "заготовка" платы. Ее очень легко можно масштабировать колесиком мыши и перемещать при нажатой правой кнопке мыши. Попробуйте сами.
С левой стороны список выбора активного слоя, ниже - кнопки инструментов, а еще ниже - круглые переключатели для выбора предустановленной ширины линии/дорожки. Все это можно настроить. Как и в gschem в pcb имеется "многостраничный" буфер обмена, который помогает работать со сложной правкой.
Библиотечные элементы выбираются командой I - появляется окно со списком и фильтром, очень похожее на то, что есть в gschem. Подберем, например, посадочное место под конденсатор C1. Это "банка", размером 16х25 мм (диаметр х высота). 16 мм - это 620 mil, тысячных долей дюйма (25,4 мм). В фильтре библиотеки пишем rcy300 (300 mil это радиус):
Пока ничего никуда не надо вставлять. Просто укажем значение RCY300P в качестве footprint для конденсаторов C1 и С3. Запишем пока в файл ltimer.bom в колонку footprint. Для C2 выберем RCY200P. Конденсатор C6 аксиальный, но скорее типа К73-17 с расстоянием между выводами 20 мм. Поищем в библиотеке acy800. Есть такой, запишем его. Резистор мощностью 0.5 Вт имеет расстояние между выводами 12-15 мм. Поищем элемент acy500. Переменный резистор R3 я выбираю BOURNS_3224W для поверхностного монтажа, потому, что у меня есть как раз такие несколько штук. Если у вас другие, то ничего страшного, мы очень скоро как раз перейдем к созданию своих посадочных мест. Это очень важная тема и ее никак нельзя обойти.
Таким образом, список материалов приобретает у нас пока вид:
ref val footprint
---------------------------
F1 0.5A FU ------- ??
T3 CONN1 P1 ------- ??
T2 CONN1 P1
T1 CONN1 P1
S1 switch BT ------- ??
C1 3300u RCY300P
C3 3300u RCY300P
C5 330u RCY200P
R1 100 0805
R3 100k BOURNS_3224W
R2 1k 0805
C2 0.1u 0805
U1 LM555 DIP8
C6 0.68u ACY800
R5 180 ACY500
D1 1N4742A DO-41
D2 1N4004 DO-41
C4 0.1u 0805
VS1 BT131-600 TO92
R4 300 0805
В верхние строчки вынесены посадочные места, которые не удалось найти. Мы создадим их сами. В качестве разминки, для знакомства с редактором, создадим печатную плату с тремя впаянными на нее предохранителями. Я отдаю себе отчет в бессмысленности этой платы, но как ознакомительный пример - это то, что надо.
Начнем с пользовательских библиотек. Прежде всего, все посадочные места хранятся в файлах .fp (footprint) в каталогах библиотек. Кроме системных библиотек, могут быть указаны и пользовательские. В pcb это делается привычным для большинства пользователей образом. Надо указать путь в каталог с пользовательской библиотекой из меню File | Preferences... | Library
Конечно, это только пример. Вы можете выбирать свой путь в домашнем каталоге. А в данном примере библиотечный каталог fplib для посадочных мест, будет содержать недостающие модели.
Начнем с посадочного места под предохранитель. Пусть мы напаиваем его на плату, как smd-элемент. Этот вариант хорош тем, что не требует никаких держателей и сам предохранитель горит довольно редко. Начинать надо с геометрии компонента. Обычный предохранитель представляет собой цилиндр диаметром 5 мм и длиной 20 мм. Значит, центры площадок должны быть разнесены на 20 мм. Ширина площадок 5 мм. Получаются два квадрата 5x5 мм, разнесенные относительно центров на 20 мм.
Эти квадраты надо сделать на верхнем слое платы. Начнем с первого квадрата. Убедимся, что выбран слой top и настроим координатную сетку. Сейчас удобно ее переключить в миллиметры. Это можно сделать кнопкой в правом верхнем углу окна (по умолчанию там mil). Обнулим текущую сетку нажав комбинацию клавиш Shift-G несколько раз, пока в строке состояния не будет обозначено, что grid=0.0000 mm. Кстати, заодно и включим отображение сетки, выбрав из меню View флажок Enable Visible Grid. Затем установим шаг сетки равным аж 5 мм. Это делается нажатием клавиш Ctrl-G нужное число раз (удержанием при большом числе шагов) и смотрим на индикатор, чтобы не прозевать свою остановку.
После этого выполнить точнейшее построение будет раз плюнуть. Выбираем инструмент RECT и делаем первый квадрат в самом углу. Второй квадрат делаем на четыре квадрата правее. Переключаем шаг сетки координат на 2.5 мм, нажимая клавиши Shift-Ctrl-G. Теперь указатель попадает точно в центры квадратов. Можно было бы скопировать квадраты в буфер, но добавим им немного рисунка в слое шелкографии. Приучаемся сразу к точности! Вместо рисования линий от балды поставим задачу: обозначить предохранитель двумя линиями, отстоящими от каждого квадрата на 1 мм.
Для этого переключим слой на Silk (черный цвет). Координатную сетку переключим на 1 мм. Привяжем координаты к одной стороне квадрата следующим образом. Выберем команду меню View | Realign grid. Наведем указатель на угол левого квадрата - он прилипнет к нему - и кликнем. Координатная сетка привязана.
Выберем в инструментах команду Line и проведем линию в нужном месте. Затем повторим вторую линию:
После этого вернем шаг координатной сетки 2.5 мм и привяжем сетку к углу квадрата. Снова переключимся на слой Top и выделим оба квадрата и нарисованные линии. Это можно сделать, обведя объекты рамкой или кликая поочередно при нажатой клавише Shift. Установим курсор на центре первого квадрата (это важно!) и нажмем Ctrl-X. Элементы будут вырезаны в буфер.
Теперь вырезанное надо преобразовать в элемент. Это делается командой Buffer | Convert buffer to element. Можно попробовать вставить элемент в рабочую область, чтобы посмотреть, как он выглядит. Но сейчас самое важное - сохранить его в файле. Выберем команду Buffer | Save buffer elements to file. Сохраним его в файле FU.fp в каталоге fplib.
Теперь изготовим еще один элемент. Это монтажная точка со сквозным отверстием. Она будет использоваться для пайки внешних соединений. Она состоит из двух квадратных контактных площадок с переходным отверстием. Пусть сторона квадрата будет равна 4 мм, а отверстие посередине будет диаметром 1 мм.
Выберем инструмент Via (переходные отверстия). По умолчанию оно довольно маленькое. Клавишами Shift-V будем увеличивать его размер, следя за строкой состояния. Чтобы легче было следить за внешним размером в миллиметрах, начала в слое шелка нарисуем временные линии - квадрат со стороной 4 мм. Шаг координат надо установить 2 мм и центр квадрата должен быть одним из узлов координатной сетки. Увеличим внешний размер переходного отверстия до совпадения с квадратом. Удалим вспомогательные линии, чтобы они не мешали.
Затем увеличим размер внутреннего отверстия до 1 мм. Это лучше сделать выбирая команду меню Select | Change drilling hole of selected object | Vias + 10 mil несколько раз. (Сочетание клавиш Alt-V которое по умолчанию предусмотрено для увеличения внутреннего отверстия, может конфликтовать с сочетаниями оконного менеджера. У меня Xfce, так что мне стоило бы переписать конфиг и переназначить сочетание клавиш.)
Получить информацию о геометрии и принадлежности объекта можно, когда мышь находится над ним и мы нажимаем сочетание Ctrl-R. Так мы узнаем о диаметре внутреннего отверстия. Добившись нужного размера, копируем переходное отверстие в буфер и конвертируем в элемент. Сохраняем его в файле P1.fp
Оба созданных элемента будут доступны из библиотеки после выхода и повторного запуска pcb. Чтобы создать плату теперь достаточно вставить в рабочую область несколько "предохранителей", контактов и соединить их дорожками (инструментом Line) в слое Top. Обратите внимание: все выводы элементов строго пронумерованы! Это имеет очень больше значение для элементов, в которых недопустимо путать выводы, например, полярные конденсаторы, диоды, не говоря уже о транзисторах и микросхемах.
Если мы хотим, чтобы площадки под контакты были квадратными, то следует просто навести на площадку мышь и нажать клавишу Q. Файлы .fp - это обычные текстовые файлы и все элементы имеют определенные флаги. Если мы хотим, чтобы площадки были квадратными по умолчанию, то вместо:
Element["" "" "" "" 31496 31496 0 0 0 100 ""]
(
Pin[0 0 15600 2000 16200 4000 "" "1" ""]
)
файл P1.fp должен выглядеть так:
Element["" "" "" "" 31496 31496 0 0 0 100 ""]
(
Pin[0 0 15600 2000 16200 4000 "" "1" "square"]
)
Расположив элементы на плате, мы можем добавить надписи в слое Silk. Затем снова переходим в слой Top, выбираем стиль дорожек Power и проводим их согласно необходимой топологии. Если толщина дорожек нас не устраивает, то можно увеличить ее несколько раз нажимая на клавишу S.
Затем переходим в слой Outline и рисуем контуры платы. Плата должна принять примерно такой вид:
Если эту плату изготовить промышленным способом, то она будет иметь вот такой вид:
Теперь нам остается изготовить посадочное место под кнопку и можно будет двигаться дальше. Мы возьмем маленькую, так называемую "тактовую" кнопку, которую используют на пультах и небольших клавиатурах. Имея фрагмент ее чертежа:
расположим переходные отверстия строго по координатам, привязанным к размерным цепям чертежа, как можно точнее. Иначе при монтаже придется гнуть выводы и ломать их. Кстати, выводы кнопок обычно изготовлены из фосфористой бронзы с луженым покрытием, так что они довольно ломкие.
Вот так выглядит посадочное место под кнопку в редакторе pcb:
Линий, обозначающих кнопку в слое Silk, можно не делать, но обычно такие графические элементы помогают на сборочных чертежах платы, даже если плату изготавливают в кустарных условиях.
Делая это посадочное место сначала выберем шаг координат равным 0.5 мм. Переходное отверстие выберем, предварительно включив стиль разводки Fat. Нам нужно достаточно большое отверстие. Получив информацию о нем (Ctrl-R) мы видим, что внутренний диаметр отверстия меньше требуемого 0.8890 мм. Увеличим его на шаг (10 mil), как было описано выше. Диаметр получится чуть больше миллиметра, но это не так уж и плохо, за счет металлизации переходных отверстий их реальный диаметр становится меньше. Затем нужно увеличить и внешний диаметр меди, иначе пайка получится слабой, тем более, что это компонент, находящийся под переменной механической нагрузкой.
Это первое отверстие и, как вывод, оно будет иметь первый номер в последовательности. Можно установить в его центре относительные координаты 0,0. Для этого наведем мышь на центр отверстия и нажмем Ctrl-M. Появится маркер-крестик, и координаты будут отсчитываться относительно него. В строке меню справа есть две рамки. В левой из них и показаны относительные координаты в текущих единицах. Выделим и скопируем в буфер первое отверстие.
Второе, третье и четвертое отверстие легко разносятся со вставкой по имеющимся координатам согласно размерам из чертежа. Последнее отверстие потребует уточнения координат. Выберем шаг координат 0.25 мм и поставим маркер в центр прямоугольника, вершины которого лежат в центрах отверстий. Можно помочь себе, если включить в меню Settings 'All direction' lines а затем нарисовать крест по диагоналям в слое Silk. Установив маркер на перекрестие (два раза нажимаем Ctrl-M: первое нажатие выключает прежний маркер), убираем вспомогательные линии.
Последнее отверстие имеет теперь относительные координаты 0, -4.1 мм. Переключим координатную сетку на 0.05 мм и вставим последнее отверстие из буфера. Затем можно снова установить шаг сетки на 1 мм. Полученные отверстия выделим и скопируем в буфер. Перед этим установим курсор на центр первого отверстия. Конвертируем выделение в элемент и сохраним в файл BT.fp в каталоге fplib.
Принципиальную схему снабдим всеми атрибутами, которые перечислены у нас в самой последней версии списка материалов. Это можно сделать как в редакторе gschem, так и при помощи утилиты gattrib.
Получилось довольно много и пора заканчивать. Следующий пост будет последним в этой серии. Там плата будет окончательно разведена. Кроме того, мы увидим, как и в какие форматы можно экспортировать результат.
Дальше