О разработке топологии печатных плат и трассировке

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

Что такое посадочное место? Что такое переход? Что такое дорожка?

Глоссарий, содержащий разные термины, можно найти здесь.

Инструментарий pcb

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

Где почитать об основах работы в pcb?

Руководство по pcb содержит краткое описание пользовательского интерфейса в разделе "Для начинающих".

Есть ли способ сохранить файл в формате для старой версии?

После добавления новых возможностей в формат файла старые версии программы могут подавиться этими перлами в кусках топологии. Для предотвращения такого несчастья pcb-файлы содержат записи о минимально допустимой версии программы. Старые версии pcb отказываются загружать файлы топологии, сохранённые более новыми. В качестве примера можно назвать добавление в 2010 г. вырезов в полигоны. Чтобы открыть файлы топологии, в которых они используются, вам понадобится версия pcb, скомпилированная из исходников позднее июня 2010 г.

К сожалению, нельзя сохранить топологию таким образом, чтобы старые версии pcb смогли её понять. Но если не использовать вырезы в полигонах, можно просто вручную исправить версию файла в заголовке на 20070407 и открыть полученный файл в старой версии pcb.

Я нашёл ошибку! Что мне делать?

  1. Проверьте, что нужно сделать, чтобы воспроизвести эту ошибку.
  2. Спросите в списке рассылки geda-user, есть ли способ её обойти или не победили ли её уже в последней версии pcb. Учтите, что прежде чем писать в этот список рассылки, на него нужно подписаться.
  3. Проверьте, не отмечена ли уже эта проблема в системе отслеживания ошибок pcb. Если нет, заполните отчёт об ошибке. Обязательно представьте всю информацию, необходимую для воспроизведения ошибки, и укажите версию пакета pcb, её содержащую.
  4. Наконец, как и для всех проектов с открытым исходным кодом, вы можете напрячь свои программистские мускулы и попробовать исправить ошибку самостоятельно. Пожалуйста, представьте заплату с нужными вам изменениями в систему отслеживания ошибок. Заплата будет охотно принята для улучшения следующей версии pcb.

Как настроить использование нормативов производства (то есть спецификации диаметров свёрл, ширины/просвета для дорожек)?

Эта тема раскрывается в руководстве.

Неочевидные аспекты графического интерфейса

Меня достало автопанорамирование. Что мне делать?

Возможность автопанорамирования удалена в сентябре 2011 г. Поэтому вам может помочь установка более свежей версии.

Если вы используете более старую версию pcb, можно сделать следующее:

Клавиша [Delete] иногда не хочет удалять

Вероятно, вы пытаетесь удалить выделенный объект. Клавиша [Delete] в pcb действует не на выделение, а на объект, находящийся под курсором мыши. Следовательно, если объект выделен, а мышь находится в каком-то другом месте, ничего удалено не будет. Вывод: нужно просто указать мышью на объект и нажать клавишу [Delete]. Выделять объект не надо.

Тем не менее текущее выделение можно удалить клавишей [Backspace].

Я пытаюсь переместить объект, но pcb не даёт мне это сделать!

Скорее всего объект заблокирован. Заблокированные объекты не подсвечиваются. Чтобы увидеть, что это на самом деле так, надо выбрать Выделить все соединённые объекты из меню Выделение. Для заблокированных посадочных мест над точкой их привязки в виде ромбика отображается маленькая буква «L». Для разблокировки нужного объекта воспользуйтесь инструментом LOCK. Учтите, что состояние блокировки объекта переключается при каждом щелчке по нему этим инструментом. После этого для объекта открывается окно отчёта, в котором это состояние отображается в последней строке.

Если вы хотите удалить все блокировки, обратите внимание на возможность открыть свой файл *.pcb в любимом текстовом редакторе и удалить в нём все строки lock.

Другой причиной для числовых объектов может быть установка Только названия в меню Настройки. Когда выбрана такая настройка, инструмент выделения будет действовать исключительно на текст. Это полезно при плотной компоновке. Есть также дополнительная настройка Заблокировать названия.

Вопросы по посадочным местам

Как pcb работает с посадочными местами?

pcb поддерживает два абсолютно разных формата библиотек посадочных мест:

  1. Первый из них называют oldlib, pcblib или библиотека M4. В этой системе для создания посадочных мест “на лету” используется макроязык M4. Библиотека M4 довольно велика. Она имеет мощную возможность быстрого определения целых семейств посадочных мест с помощью соответствующего базового макроса. В pcblib имеются определения для нескольких семейств корпусов. Начиная со среза pcb-20070208 вся эта библиотека доступна в формате newlib (см. следующий параграф) под названием pcblib-newlib.
  2. Вторая библиотека посадочных мест для pcb называется newlib. Посадочные места newlib определяются в текстовых файлах, в которых прописывается вызов каждого графического примитива в отдельности, из которых и составляется посадочное место. Посадочные места newlib могут создаваться или графически в pcb, или другими методами, производящими текстовые файлы (в текстовом редакторе, с помощью скриптов на awk/perl/ruby и т. д.). Особенно мощным является применение скриптов или языков программирования, так как с их помощью можно создавать посадочные места для больших корпусов или для целых семейств компонентов.

Поэтому, при разработке топологической схемы платы вы можете либо использовать посадочные места, поставляемые в комплекте с pcb, либо найти их в сети интернет, либо создать свои собственные и поместить в предназначенный для них каталог. В Руководстве пользователя pcb есть полная и современная документация по формату файлов элементов. На сайте gedasymbols.org имеется некоторое количество посадочных мест, предоставленных пользователями. Несколько неполное, но полезное руководство доступно на веб-странице http://www.brorson.com/gEDA/ (ищите по ключевому слову “newlib”).

Где найти готовые посадочные места для pcb?

Я хочу развести плату в pcb. Как узнать, какое значение задать атрибуту footprint?

Этот вопрос является общим для новых пользователей gEDA. В самом деле вопрос помощи новичкам в определении названий нужных им посадочных мест компонентов лежит в основе продолжающихся дебатов о лёгких символах против тяжёлых. В текущей версии gEDA/gaf, содержащей лёгкие символы, вам надо прикреплять атрибуты footprint на этапе редактирования схем (то есть в gschem или gattrib). Какое название использовать для посадочного места, зависит от того, какой вы пользуетесь библиотекой — newlib или M4 (pcblib).

newlib

В библиотеке newlib каждое посадочное место лежит в отдельном файле и имя данного файла является его названием.

Определить названия нужных посадочных мест в newlib можно разными способами:

Библиотека M4

В библиотеке M4 посадочные места сохраняются в виде макросов M4; обычно в каждом файле определяется несколько (много) посадочных мест. Различные посадочные места в одном и том же файле — это, как правило, вариации одного и того же шаблона (например, DIP-8, DIP-14, DIP-16 и т. д.). Легче всего найти подходящее значение для атрибута footprint, пролистав библиотеку pcblib в окне библиотек pcb. Этот атрибут отображается в описании элемента в квадратных скобках. Кроме того, список посадочных мест из pcblib можно найти на веб-странице символов gEDA.

Следующим библиотекам M4 уделялось больше внимания и в них вносилось больше улучшений, нежели в прочие:

И в заключение добавим, что и для библиотеки newlib, и для M4, чрезвычайно важно проверять, что для используемого вами названия посадочного места при помещении элемента в pcb будет вставлено именно то посадочное место, которое вам нужно. Поэтому очень важно внимательно проверить посадочное место перед его использованием. Проверить посадочное место можно щёлкнув по нему в окне библиотеки посадочных мест и поместив его на пустое место в рабочей области pcb. Внимательно рассмотрите посадочное место и убедитесь в правильности количества выводов/контактных площадок, размеров и прочего.

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

Как быть с различными посадочными местами для одного типа прибора?

Например, операционный усилитель может быть в корпусе DIP8 или SO8. Резистор может быть одним из 0603, 0805, 1208 или для выводного монтажа. Как узнать, какие использовать корпуса и посадочные места, и как дальше работать с выбранными вариантами?

Прежде всего, какое посадочное место вам нужно, решать вам, а не вашей программе САПР. Вы ответственны за выбор предпочтительных типов корпусов или посадочных мест и за прикрепление соответствующих атрибутов footprint к компонентам в схеме. И когда вы выбрали подходящий вам корпус (и посадочное место для него), то вам надо или найти соответствующее посадочное место, или начертить своё и сохранить его в локальном каталоге.

Что касается дальнейшей работы с выбранными посадочными местами (и с действительно большим количеством атрибутов компонентов, которые вам, вероятно, придётся использовать): пользуйтесь программой gattrib. Это как раз то, для чего она и нужна.

Как начертить новое посадочное место?

Все делают это по-разному. Кто-то чертит посадочные места целиком в pcb. Кто-то сначала делает в pcb заготовку и затем доводит её вручную (например, в emacs). Кто-то пишет скрипты на Perl или Python для автогенерации посадочных мест.

Как мне изменить/отредактировать имеющееся посадочное место?

Можно преобразовать посадочное место в обычную топологию, отредактировать её части и обратно преобразовать в посадочное место. В следующем перечне жирным наклонным шрифтом выделены действия из меню Буфер (если не указан иной пункт меню).

  1. Выделите элемент.
  2. ПравкаКопировать выделенное в буфер ([Ctrl-c]).
  3. Разбить элементы в буфере на части. Выводы станут переходами, а контактные площадки — дорожками. К сожалению, часть информации при этом потеряется. А именно, флаги установки прямоугольной формы выводов и контактных площадок. Эту информацию позже придётся воссоздать.
  4. Вставить из буфера
  5. Произведите нужные изменения. Учтите, что можно работать только с переходами, дорожками и прямоугольниками. Не должно быть никакого текста, никаких дуг2), никаких полигонов.
  6. Выделите все объекты, являющиеся частями посадочного места.
  7. ПравкаКопировать выделенное в буфер ([Ctrl-c]). Положение перекрестия курсора будет определять точку привязки результирующего посадочного места. Эта точка будет отмечена маленьким ромбиком.
  8. Преобразовать буфер в элемент. Переходы будут преобразованы в выводы. Дорожки и прямоугольники станут контактными площадками для поверхностного монтажа.
  9. Вставить из буфера.
  10. Наводя указатель мыши на контактные площадки, которые стали скруглёнными при выполнении шага 4, нажимайте [q]. При этом скруглённые площадки будут становиться прямоугольными.
  11. Пройдитесь по всем контактным площадкам и, нажимая [n], задайте для каждой название.
  12. Переместив указатель мыши в то место, где нет площадок и выводов, задайте элементу название.
  13. Переместите название в то место, в котором, по вашему мнению, должно отображаться позиционное обозначение или значение компонента (тип или номинал).
  14. Выделите всё и скопируйте в буфер (ПравкаКопировать выделенное в буфер или [Ctrl-c]).
  15. Сохранить элементы из буфера в файл.

Или же можно отредактировать исходный код посадочного места в своём любимом текстовом редакторе.

Как переместить ромбик посадочного места?

Точка привязки посадочного места отмечается маленьким ромбиком. Чтобы переместить её в другое место по отношению к изображению посадочного места, нужно изменить координаты всех объектов. Это можно сделать вручную в текстовом редакторе. Если же вы хотите сделать это из графического интерфейса pcb, нужно разбить посадочное место на части, а затем собрать его снова. Подробный перечень шагов указан выше. Обратите внимание, что положение ромбика определяется положением перекрестия курсора при копировании в буфер.

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

pcb не сохраняет слой шелкографии, когда я пытаюсь начертить посадочное место

В слое шелкографии посадочных мест могут быть только линии и дуги. Все прочие объекты, такие как полигоны, прямоугольники и текст, при преобразовании содержимого буфера в элемент (Преобразовать буфер в элемент) молча игнорируются. Если вам нужен текст в изображении посадочного места, придётся буквально начертить каждую букву с помощью инструмента LINE.

Как правильно сделать двухстороннее посадочное место?

Для помещения контактных площадок на противоположную сторону платы можно использовать флаг onsolder. Для определения двухстороннего соединителя вам понадобится что-то вроде этого:

Pad[-40000 -7000 -40000 7000 2700 2400 3000 "B1" "B1" "square"]
Pad[-40000 -7000 -40000 3000 2700 2400 3000 "A1" "A1" "square,onsolder"]

Если вы начертите посадочное место в pcb и выберете Преобразовать буфер в элемент, линии на втором слое станут контактными площадками с флагом “onsolder”. Да, имеется в виду именно второй слой, независимо от того, как он называется.

Как добиться того, чтобы некоторые контактные площадки были без паяльной пасты?

Иногда открытые участки проводников не должны покрываться паяльной пастой. Общеизвестным примером являются контактные площадки соединителя непосредственного сочленения (концевые контакты печатной платы). Этого можно добиться установкой флага nopaste. В настоящее время из графического интерфейса pcb этот флаг установить невозможно. Его можно добавить для контактных площадок посадочного места в текстовом редакторе.

Как добавить библиотеку посадочных мест для pcb?

Библиотеки посадочных мест можно добавить из графического интерфейса:
ФайлНастройки…БиблиотекаКАТАЛОГ_ПОСАДОЧНЫХ_МЕСТ
Или можно отредактировать файл $HOME/.pcb/preferences. Убедитесь, что не запущен ни один процесс pcb. Поищите строку, начинающуюся с library-newlib. Не забудьте подключить новый каталог в файле gsch2pcbrc или в локальном gafrc (имеется в виду при использовании gsch2pcb).

Как обновить посадочное место в моей топологии?

Автоматического способа заместить все экземпляры посадочного места новой версией пока нет. Но есть специальный режим вставки из буфера, который поможет уменьшить количество щелчков мышью при ручной замене.
Откройте диалоговое окно с помощью ОкноБиблиотека и выберите новое посадочное место. Рабочим инструментом станет инструмент вставки из буфера BUF и в буфер будет загружено новое посадочное место. Если надо, поверните его с помощью БуферПовернуть буфер. Расположите новое посадочное место над старым и, нажав [Shift], щёлкните левой кнопкой мыши, чтобы заместить старое посадочное место новым. Следите, чтобы не перевернуть его на 180 градусов, проверьте подключение линий связи нажатием [o] и, если вдруг оказалось, что посадочное место расположено задом наперёд, отмените операцию.

pcb не находит моих посадочных мест. Почему?

Путь доступа к посадочным местам, который использует программа pcb, определяется переменной Pcb.elementPath в файле ресурсов app-defaults, называющемся PCB3). Путь к этому файлу задаётся с помощью переменной окружения XAPPLRESDIR, обычно задаваемой из скрипта-обёртки pcb.

Вот я набрал себе посадочных мест. Куда их теперь складывать?

Я предпочитаю “готовые для производства” посадочные места складывать в один каталог, расположенный отдельно от каталога установки pcb. Когда выходит новая версия pcb, я не меняю файлы проектов или библиотеки. Если в библиотеке pcb есть посадочные места в формате newlib, которые я хочу использовать, я копирую их в этот каталог посадочных мест, “готовых для производства”.

Вместо того, чтобы менять файлы конфигурации, чтобы gsch2pcb находил посадочные места, я создаю скрипт-обёртку sch2pcb, содержащий путь доступа к посадочным местам. Все пользователи используют такой же скрипт и имеют доступ к тем же самым посадочным местам для производства.

Чтобы использовать скрипт sch2pcb, вместо FOOTPRINT_DIR задайте свой каталог посадочных мест. Вот его содержимое:

#!/bin/bash
gsch2pcb --elements-dir FOOTPRINT_DIR $@

Или версия другого пользователя:

#!/bin/bash
#Этот скрипт написал John Luciani
gsch2pcb --elements-dir /home/user/pcb/footprints/user --use-files $@

Или можно использовать файл проекта, из которого gsch2pcb читает свои параметры. Например, файл myproject может выглядеть так:

schematics myschematic.sch myschematic2.sch
elements-dir /myfootprintdir
output-name mypcb
skip-m4

В файле примера задаётся поиск посадочных мест, используемых в myschematic.sch и myschematic2.sch, в каталоге myfootprintdir, пропуск посадочных мест типа M4 и создание mypcb.pcb. Затем при запуске gsch2pcb в качестве аргумента нужно задать имя файла проекта:

gsch2pcb myproject

Размещение компонентов

Как повернуть выделение (то есть более одного элемента)?

  1. Выберите элементы для поворота
  2. БуферВырезать выделенное в буфер
  3. БуферПовернуть буфер на +90° (или -90°)
  4. Щёлкните где-нибудь на плате и выделение снова будет вставлено.

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

Как повернуть объекты на произвольный угол?

  1. Вырежьте объект в буфер обмена.
  2. Наберите :FreeRotateBuffer(45). При нажатии двоеточия откроется окно командной строки. Вместо “45” введите нужный угол поворота.
  3. Вставьте объект назад на свою плату.

Примечание: по внутренним причинам FreeRotateBuffer не работает с правильными квадратами. Обойти это ограничение можно составлением квадрата из двух или более полигонов.

Как переместить объекты на произвольное расстояние?

  1. Наведите указатель мыши на объект для перемещения.
  2. Наберите :MoveObject(x,y,unit). При нажатии двоеточия откроется окно командной строки. Вместо “x” и “y” введите нужные координаты, а вместо “unit” — “mm” или “mil”.
  3. Нажмите [Enter].

Если обе координаты заданы с префиксом «+» или «-», объект будет перемещён на заданные значения относительно текущего положения. В противном случае заданные значения будут новыми абсолютными координатами объекта.

Как переместить объекты в абсолютно заданные координаты?

Используйте команду MoveObject() как указано выше.

Как изменить размер графического объекта (например, текста, линий шелкографии и др.)?

Перейдя в ФайлНастройки…Приращения, размер приращений можно изменить. (Примечание: в настоящее время эта настройка сломана.)

Как разместить компоненты на обеих сторонах печатной платы?

Есть два варианта:

Не получается перемещать компоненты на другую сторону платы!

Мышь действует только на те компоненты, что расположены на активной стороне платы. Это нужно для устранения неоднозначности в том случае, когда компоненты расположены на обеих сторонах, верхней и нижней. По умолчанию активна верхняя сторона, а нижняя считается “обратной стороной”, компоненты на ней игнорируются. Чтобы сделать компоненты обратной стороны доступными, можно поменять роли сторон. Добиться этого можно нажатием [Tab], [Shift-Tab], [Ctrl-Tab] или [Ctrl-Shift-Tab]. Эти сочетания клавиш вместе со сменой активной стороны вызывают и разнообразные перевороты. В частности:

Как узнать, на какой стороне расположен компонент?

Если в данный момент компонент находится на обратной стороне платы, шелкография для него будет отображаться серым цветом. Если вы не уверены, отключите показ обратной стороны кнопкой “обратная сторона”, расположенной в нижней части набора кнопок слоёв. При этом должна перестать отображаться шелкография всех находящихся на обратной стороне компонентов.

Как начертить шелкографию на обратной стороне платы?

Хотя для слоя шелкографии в окне pcb есть только одна кнопка, шелкография автоматически располагается на обеих сторонах. В обычном случае эта кнопка относится к шелкографии на стороне компонентов платы. Чтобы поместить текст или линии шелкографии на сторону пайки, плату нужно перевернуть нажатием [Tab] (или [Shift-Tab], если вам больше нравится переворачивать слева-направо). Это всё равно что перевернуть плату обратной стороной вверх. Слой пайки окажется наверху, а слой компонентов — внизу. Объекты слоя шелкографии на стороне компонентов станут серыми. Когда вы чертите в слое шелкографии, линии всегда помещаются на текущий слой шелкографии, то есть тот, что находится сверху, в данном случае это слой на стороне пайки. Точно так же ведётся работа и со слоем шелкографии на стороне компонентов. Чтобы вернуть обычный вид, переверните плату ещё раз.

Почему текст, который я добавляю на сторону пайки, не переворачивается?

Добавляйте его перевернув плату (нажатием [Tab]). Просто выбрать сторону пайки недостаточно. Новый текст всегда читается правильно с той стороны, на которую вы смотрите при его вводе.

Можно ли задать произвольный размер сетки?

Да. Можно использовать команду setvalue(grid,value,unit). Чтобы это сделать:

  1. Наберите :SetValue(grid,=x,unit). При нажатии двоеточия откроется окно командной строки. Вместо “x” введите нужный размер сетки, а вместо “unit” — “mm” или “mil”.
  2. Нажмите [Enter].

Как настроить начало координат в pcb?

Абсолютное начало координат всегда находится в верхнем левом углу рабочей области. Его нельзя задать в другом месте. Но можно задавать координаты объектов и относительно точки на текущей сетке. В GTK2-версии pcb координаты отображаются в верхнем правом углу основного окна. Правая пара показывает абсолютные координаты, а левая — относительные, по отношению к произвольно установленной метке. Нажатием клавиш [Ctrl-m] эта метка устанавливается в текущую координату. Вы можете, например, установить эту метку на какую-либо точку сетки или на определённый вывод компонента.

Как измерить расстояния между объектами и их размеры?

С помощью [Ctrl-m] задайте точку отсчёта и в правом верхнем углу окна pcb вы увидите положение указателя мыши относительно данной точки. Для некоторых объектов, таких как переходы и дорожки, полезную информацию можно найти в окне отчёта об объекте. Чтобы открыть его, надо навести указатель мыши на нужный объект и нажать [Ctrl-r].

Как для определённых соединений скрыть линии связи?

В окне списка соединений дважды щёлкните по определённому названию линии связи, затем нажмите [o] в окне платы. Линии связи для этого соединения будут скрыты. В окне Список соединений рядом с названием данной линии связи появится звёздочка (*). Чтобы получить обратное, проделайте то же самое.

Трассировка

Как провести соединение со стороны пайки на сторону компонентов и обратно?

При вычерчивании дорожек инструментом LINE нажатием цифр на клавиатуре можно переключить слои. При этом в конечной точке последнего законченного сегмента автоматически будет помещён переход.

Как изменить стиль трассировки?

Для трассировки есть наборы предопределённых размеров. Названия этих наборов самоочевидны (“сигналы” [Signal], “питание” [Power], “толстый” [Fat] и “тонкий” [Skinny]). Чтобы настроить размеры текущего набора под себя, нажмите кнопку Стили трассировки. Настроить названия этих наборов параметров и их значения по умолчанию можно в файле конфигурации (~/.pcb/settings для GTK-HID или ~/.Xdefaults для Lesstif-HID). Вот пример такой настройки:

route-styles = Signal,1000,3600,2000,1000:Power,2500,6000,3500,1000:Fat,4000,6000,3500,1000:Skinny,600,2402,1181,600

Обязательно удалите любые другие строки route-style в ~/.pcb/preferences. Иначе данная строка настроек будет проигнорирована.

Инструмент добавления линий LINE может работать с изломами дорожек в нескольких режимах. Текущий режим работы отображается внизу страницы в строке состояния:

  1. линии под 45°, затем вертикальные/горизонтальные (строка состояния: “\_”)
  2. вертикальные/горизонтальные линии, затем под 45° (строка состояния: “_/”)
  3. линии только вертикальные, горизонтальные или под 45° (строка состояния: “45”)
  4. линии под произвольным углом (строка состояния: “all”)

Способ доступа к этим режимам в разных версиях графического интерфейса различается. В текущем срезе GTK (v20060288) по умолчанию установлен режим “_/”, но клавишей [Shift] можно временно переключаться на “\_”. Клавишей [/] Можно переключиться на режим 45°. Для разрешения произвольных углов нажмите клавишу [.] или выберите в меню настроек Линии любого направления.

Вопросы трассировки

Я запутался! Как вернуть всё назад?

Универсальная клавиша отката изменений [u] работает даже в процессе проведения дорожек. При её нажатии последний сегмент будет удалён, но инструмент LINE останется выбран. Так что можно сразу же продолжить разводку и найти лучший маршрут.

Как переместить набор дорожек на другой слой?

  1. Выделите дорожки. Легче всего это сделать, отключив всё, кроме нужного слоя (то есть слои шелкографии, выводов, другие слои…)
  2. Теперь сделайте новый слой текущим. Да, этот слой может стать видимым. Ничего страшного, ведь вы уже выбрали нужные дорожки.
  3. Нажмите [Shift-m] и все выделенные дорожки будут перемещены в текущий слой.

Как сделать переходы открытыми, то есть не покрытыми паяльной маской?

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

Для отдельных переходов:

  1. Включите слой паяльной маски. Это приведёт к тому, что клавиша [k] будет относиться к просвету в паяльной маске, вместо зазора между контактной площадкой перехода и полигоном.
  2. Наведите мышь на переход (в новых версиях pcb вид курсора мыши при этом изменится).
  3. Нажмите несколько раз [k], пока просвет в паяльной маске не превысит диаметр площадки перехода. При каждом нажатии клавиши просвет увеличивается на 2 мила. Первое нажатие приведёт к тому, что площадка перехода станет видна через паяльную маску. Действительный размер просвета при этом будет равен только 2 милам. Нажатием [Shift-k] просвет можно уменьшать.

Для групп переходов:

  1. Выделите все переходы, которые нужно очистить от паяльной маски. Чтобы выделить только переходы, для удобства можно отключить все прочие слои.
  2. Включите слой паяльной маски.
  3. Несколько раз нажмите клавиши [Ctrl-k]. Нажатие [Shift-Ctrl-k] приведёт к уменьшению просвета для всех выделенных объектов.

Командный интерфейс даёт больше контроля над действительным зазором (или просветом в паяльной маске, если она включена). Нажмите [:], чтобы открыть окно командной строки, и наберите:

ChangeClearSize(SelectedVias, <delta>)

Здесь <delta> — размер в сотых долях мила. То есть, например, 3000 соответствует 30 милам. При простом задании целых значений <delta>, зазор будет установлен в указанное значение. Если же перед значением указан знак, «-» или «+», величина зазора будет соответственно уменьшена или увеличена. Эта же команда используется для выводов (при задании SelectedPins), контактных площадок (SelectedPads), линий (SelectedLines), дуг (SelectedArcs) и даже просто объектов (SelectedObjects).

Как изменить просвет в паяльной маске вокруг отверстия/контактной площадки?

По умолчанию размер просвета для отверстий и контактных площадок задаётся в соответствующем файле посадочного места. Иногда этот размер может не подходить для проекта. Просвет для отдельных отверстий и контактных площадок можно изменять “на лету”, точно так же, как и для переходов. Более подробно это описано в разделе выше. Если просвет для контактной площадки не соответствует требованиям производителя ваших плат, рассмотрите возможность создания локальных копий файлов посадочных мест и соответствующего изменения просветов в них самих.

Как изменить размер моих дорожек?

Есть несколько способов изменить размер уже проведённых дорожек:

  1. Нажать [s] для увеличения, или [Shift-s] для уменьшения размера дорожки под курсором мыши.
  2. Выбрать ВыделениеРазмер выделенных объектовЛинии -10 милов. Размер изменения можно настроить в ФайлНастройки…Размеры. Это повлияет только на дорожки, так что выделение может содержать компоненты, текст, переходы и тому подобное.
  3. Выделить дорожки, которые нужно изменить, и набрать :ChangeSize(SelectedLines,+4,mils). Нажатие двоеточия вызовет окно командной строки, а ChangeSize() — это команда вызова ранее описанного действия. Замените +4 нужным размером увеличения дорожек. Для уменьшения дорожек задайте знак минус. Если знак задан не будет, размер дорожек будет установлен в указанное значение.

Как сделать переход для соединения дорожки с землёй в другом слое?

  1. Сделайте активным слой земли.
  2. Выберите инструмент добавления переходов VIA.
  3. Добавьте в нужном месте переход (щелчком левой кнопкой мыши).
  4. Теперь выберите инструмент добавления термобарьеров THRM.
  5. Щёлкните левой кнопкой по только что добавленному переходу.
  6. Теперь активизируйте нужный вам слой.
  7. Выберите инструмент добавления линий LINE.
  8. Проведите дорожку от или к переходу на активном слое обычным способом.

Как проще всего сделать "термопереход"?

Термопереход — это не переход с термобарьером. Вернее, это переход без термобарьера, соединяющий полигоны на обеих сторонах платы. Такие переходы полностью заполняются припоем для создания области с большой теплоёмкостью, используемой для теплоотвода. Больше информации вы найдёте в Freescale App-Note AN4005.

Вот некоторые предложения:

Я хочу начертить дорожку между двумя сегментами одного и того же соединения, но pcb мне не даёт! Почему?

Наверно вы чертите дорожки в то время как включен режим автоматического соблюдения проектных норм. Вот несколько советов о том, как соединить два сегмента:

pcb не даёт мне присоединить дорожку к ни к чему не присоединённому проводнику!

Это известный недостаток режима автоматического соблюдения проектных норм. В этом режиме инструмент LINE разрешает присоединять дорожки только к тем проводникам, которые относятся к тому же соединению (из списка соединений), что и то место, откуда дорожка начата.

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

  1. Войдите в режим линии LINE ([F2]).
  2. Наведите курсор мыши на неприсоединённый проводник.
  3. Нажмите [f], чтобы пометить его как найденный (“found”).
  4. Начните линию с другого места. Оба проводника должны быть теперь помечены цветом как найденные (“found”) и должны соединяться друг с другом.

Я хочу начертить два перехода очень близко друг к другу, но pcb мне не даёт!

К сожалению, старые версии pcb не только не дают вам разместить перекрывающиеся переходы, но и отбрасывают их при загрузке топологии. В декабре 2010 года это слишком осторожное поведение было исправлено. Если вам на самом деле нужны перекрывающиеся переходы, вам следует установить более свежую версию pcb.

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

Кажется, pcb портит названия моих компонентов и жалуется, что не может найти для выводов подходящих соединений! Что делать?

Скорее всего вы назвали их так, что pcb думает, что они являются одним прибором. Буквы в нижнем регистре в конце позиционного обозначения игнорируются. Поэтому, например, оба компонента U2foo и U2bar pcb воспринимает как U2. При создании линий связи pcb будет искать соединения для U2, которые, конечно, отсутствуют. Буквы в нижнем регистре предназначены для различения секций многосекционных компонентов, например, символов операционных усилителей, которые идут по четыре штуки в одном корпусе.
Вывод: никогда не используйте в конце позиционного обозначения буквы в нижнем регистре, за исключением случаев, когда вы точно знаете, что делаете.

Как настроить цвет и толщину линий связи?

Цвет линий связи можно настроить с помощью ФайлНастройки…ЦветаОсновные цвета.

Настроить толщину линий связи из графического интерфейса в настоящее время нельзя, но можно вручную отредактировать файл $HOME/.pcb/preferences. Завершите все процессы pcb (закройте все окна) и поищите строку, начинающуюся с rat-thickness.

Значения 0..19 задают фиксированную толщину в пикселах экрана. Любое большее значение считается заданным в единицах измерения pcb (то есть 100 соответствует 1 милу). В последнем случае при изменении масштаба в pcb будут соответствующим образом масштабироваться и линии связи.

Где эта последняя оставшаяся линия связи?

Иногда оставшиеся линии связи трудно увидеть, потому что это могут быть линии нулевой длины. Такой случай может возникнуть, когда почему-то отсутствует переход. Чтобы они попались вам на глаза, нужно задать достаточно большую толщину для них, например 3000 милов. Толщина линий связи задаётся в $HOME/.pcb/preferences.

Кроме дорожек и посадочных мест

Как сделать копию рисунка, напечатанной топологии или какой-нибудь печатной платы?

Посмотрите страницу http://www.delorie.com/pcb/bg-image.html на веб-сайте DJ Delorie о HID программы pcb.

Это замечательный способ для создания копии сделанного вручную рисунка или другой печатной платы, когда, скажем, вы сделали её какой-то проприетарной программой в несвободном формате, ограничения которого хотели бы теперь “снять”. Кроме того, фоновое изображение можно использовать как инструмент для переработки или модернизации.

Если не хотите, чтобы размер рабочей области pcb был ограничен площадью этой платы, то есть, если нужно добавочное пространство вокруг платы, добавьте его в gimp. Мне нравится окаймлять плату полями в 1 дюйм. При установке размеров платы в pcb нужно учитывать это добавочное пространство. [Ctrl-m] поможет вам проверить масштаб. Заодно, до загрузки изображения в pcb, в gimp или другой подобной программе можно исправить недостатки своего рисунка или искажения, получившиеся в результате сканирования.

Не могу скопировать контактные площадки в топологию. Что за ерунда?

Вопрос: Я хочу скопировать часть существующей топологии в другое место.

Я могу выделить существующую область. Всё, вроде, нормально.

БуферКопировать выделенное в буфер, вроде выполняется успешно. (Не ругается.)

Потом я вставляю скопированную область… и, всё что получается, это пара дорожек и несколько переходов. Контактные площадки, над которыми я так долго корпел, не копируются. Что за ерунда!?!?!?

Ответ: Если слой шелкографии отключен, нельзя скопировать элементы через буфер обмена. Странно, но вот так оно работает. Поэтому, прежде чем пытаться копировать что-то в топологию, включите слой шелкографии.

Как добавлять сплошные металлизированные области?

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

Как полигону назначить соединение?

Полигонам соединения не “назначаются”, они к ним присоединяются. В pcb “носителями” имён соединений являются только контактные площадки. Это значит, что для присоединения контактной площадки к полигону нужно предусмотреть какой-нибудь проводник. Тогда соединение этой контактной площадки будет автоматически относиться и к полигону.

Как к полигону присоединить дорожки, контактные площадки или переходы?

Есть разные способы правильного подключения различных типов объектов к полигону:

Полигоны закорачивают мои дорожки! Что мне делать?

При проведении дорожек вы не установили Очистка полигонов новыми линиями и дугами в меню Настройки. Чтобы переключить флаг присоединения join для всех выделенных на данный момент дорожек, в окне команд наберите changejoin(selected). Это действие привязано к клавишам [Shift-j]. Если вместо переключения флага присоединения join его нужно установить или снять, можно использовать команды SetFlag(selected, join) и ClrFlag(selected, join). Более подробное описание указанных команд можно посмотреть в описании SetFlag в Руководстве по pcb.

Как изменить зазор в полигоне?

В pcb зазор не является свойством собственно полигонов. Это свойство имеют дорожки, контактные площадки и выводы. То есть зазор нужно настраивать для отдельных объектов.

Убедитесь, что слой паяльной маски не активен. Иначе нижеследующие действия будут применяться к паяльной маске вместо полигонов. Для увеличения зазора для объекта, находящегося под курсором, нажмите [k]. [Ctrl-k] делает то же самое для выделенных объектов. Нажатие [Shift] вместе с одной из этих комбинаций приведёт к уменьшению зазора. Чтобы изменить дорожку целиком, нажмите [f] для нахождения всех сегментов, присоединённых к объекту под курсором, и выполните действие Select(connection).

Размер увеличения можно настроить в диалоговом окне ФайлНастройки…Приращения. (Примечание: в настоящее время эта настройка игнорируется.)

Указанный способ действует каждый раз на один объект. Чтобы менять зазоры для всех выделенных объектов, воспользуйтесь действием ChangeClearSize(Selected,<amount>,<unit>). Параметр величины <amount> должен быть числом. Знак перед ним указывает на увеличение или уменьшение. Если перед числом стоит знак =, зазор устанавливается точно в указанное значение. Параметр <unit> может быть указан как mil (милы) или mm (миллиметры). Если он не указан, то по умолчанию в качестве единицы измерения используется внутренняя единица, равная 0,01 мил.

Кроме того, имеется специальная функция, действующая только на те объекты, зазор которых меньше заданного минимума: MinClearGap(Selected,<amount>,<unit>).

Как при редактировании топологии скрыть полигоны?

Поместите полигоны (и прямоугольники) на отдельный слой. В диалоговом окне Настройки… обеспечьте, чтобы этот слой не был в той же группе, что и дорожки. Запретите слой, щёлкнув по кнопке соответствующего слоя в основном окне. После завершения изменений подключите слой полигонов к слою дорожек в диалоговом окне Настройки…. Придётся сохранить и перезагрузить топологию, чтобы вызвать повторный обсчёт полигонов, чтобы они адаптировались к изменениям. Того же самого можно достичь перезапуском программы.

Из-за полигонов тормозит графический интерфейс. Что с этим делать?

Части полигона, не подключенные ни к какому соединению, автоматически игнорируются. Таким образом эффективно удаляются изолированные участки металлизации. Хотя это и желательно для настоящих плат, но требует применения довольно пространных алгоритмов расчёта. Поэтому это необязательно ошибка, но скорее цена, которую мы платим за мощную возможность. Есть всё же пара способов улучшить ситуацию:

После того как я определил слои земли, pcb слишком долго грузится. Что делать?

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

Как редактировать полигоны?

Есть четыре основных способа редактирования полигонов. Вершины углов полигона можно двигать и удалять, а также вставлять двумя способами. Полигоны одинаково легко редактировать в режиме “контуров” (НастройкиКонтуры полигонов) и в нормальном режиме. Переместить вершину можно просто сняв выделение с полигона и щёлкнув и потащив её в новое место. Для удаления вершины угла полигона наведите перекрестие курсора на эту точку и нажмите клавишу [Delete]. Для вставки вершины можно использовать инструмент вставки точек INS (включается также нажатием клавиши [Ins]). Сначала щёлкните по той стороне, которую нужно разделить новой точкой. Щёлкните и потащите новую точку. Другой вариант этого способа: 1) щёлкните, чтобы выбрать сторону; 2) щёлкните, чтобы поместить новую вершину.

(Примечание: вставка вершин полигона работает, как правило, ТОЛЬКО при разрешении “линий в любых направлениях” (НастройкаЛинии в любом направлении). Причина кроется в том, что в pcb есть мощная система ограничения линий углами 45/90 градусов. Если попробовать вставить новую вершину для полигона, стороны которого не расположены точно под 45 или 90 градусов, pcb запретит это действие!)

Как присоединить переходы к полигону для теплоотвода или полного экранирования?

Часто бывает полезно, чтобы для теплоотдачи переходы целиком соединялись с полигоном (областью металлизации), и очевидная проблема в том, что в pcb для целого полигона определён только один флаг “очистки выводами/переходами” (переключаемый клавишей [s]). Нам же нужно соединить с полигоном только некоторые из выводов/переходов, причём соединить их лучше, чем это позволяет нам инструмент добавления термобарьеров. Есть несколько вариантов, как это сделать.

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

Приём заполнения дугами можно использовать также в местах плотной компоновки, помещая для уменьшения размера, скажем, две из четырёх дуг.

Другой приём — сделать линию нулевой длины. Возьмите одиночный сегмент линии и совместите его конечную точку с начальной. Теперь у вас есть “точечная линия” (круг) с диаметром, равным толщине линии. Если надо, переместите её на другой слой (нажатием клавиши [m]). Для соединения перехода с полигоном расположите этот объект по его центру.

Опытные пользователи могут захотеть иметь небольшую библиотеку таких нестандартных объектов, сохранив их как элементы. Удобно также скопировать такие объекты в один из буферов pcb, так что они всегда будут под рукой.

Можно также поверх того полигона, к которому вы хотите присоединить свои переходы, добавить другой полигон. Тогда вам надо снять флаг “очистки выводами/полигонами) и переходы будут присоединены к расположенному снизу полигону большего размера.

Можно ли убрать маску с полигонов? (Можно ли сделать полигон участком открытой меди, то есть без паяльной маски?)

В настоящее время способа непосредственной очистки паяльной маски полигонами нет. Обычный обходной манёвр — работать с контактными площадками.

  1. Начертите дорожку в середине области, над которой не должно быть маски. Каждая дорожка станет контактной площадкой.
  2. Выберите эти дорожки.
  3. В меню Выделение выберите Преобразовать выделенное в элементы.
  4. Активизируйте слой паяльной маски. Паяльная маска не должна покрывать дорожки.
  5. Увеличьте зазор контактных площадок так, чтобы он соответствовал открытому участку меди нужного размера. Для этого наводя курсор мыши на площадки нажимайте [k].
  6. Дополнительно можно нажимать [q], устанавливая таким образом для площадок флаг квадратной формы square.

Хотя ширина площадок ограничена величиной 250 милов, зазор может быть любым.

Как увеличить размер всех выводов?

Это действие выполняется в два приёма. Сначала надо выделить объекты для обработки. Затем выполнить для них функцию:

  1. Выделите все компоненты. Можно отключить все слои, кроме шелкографии, чтобы инструмент выделения SEL не действовал на дорожки.
  2. В меню выберите ВыделениеРазмер выделенных объектовВыводы +10 милов

Для удобства повторения действий можно оторвать подменю, щёлкнув на пунктирной линии, и оно останется на экране.

Или же задайте действие ChangeSize из окна команды:

ChangeSize(SelectedPins, SIZE)

Подставьте вместо SIZE нужный размер в сотых долях мила. 1 мм = 3937. Если перед SIZE стоит знак «-», размер уменьшается. Если «+», увеличивается. Если знака нет, число интерпретируется как абсолютное значение. Синтаксис команды ChangeSize приводится в Руководстве по pcb.

Как добавить отверстия для крепежа?

Вставьте посадочное место для крепёжного отверстия или переход.

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

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

Примеры посадочных мест можно посмотреть на странице http://www.luciani.org/geda/pcb/pcb-footprint-list.html#Hardware.

Почему для вывода можно сделать термобарьер, а для контактной площадки нельзя?

Причина в том, что интервал между выводами обычно достаточен для того, чтобы области металлизации вокруг них не разрывались ни с какой стороны, а контактные площадки обычно расположены так плотно, что для них это условие не выполняется. Из-за этого необходимо вручную чертить “перемычки” термобарьера для соединения контактных площадок со слоем земли. Не забудьте изменить настройки так, чтобы новые линии при их вычерчивании соединялись с областями металлизации. Если нужно сделать несколько таких термобарьеров, потратьте немного времени, создайте один из них в нужном вам виде, а затем полученные перемычки можно скопировать в буфер и вставлять в нужных местах.

Можно ли в pcb делать односторонние платы?

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

Разрабатывайте плату как двухстороннюю, но с дорожками только на стороне пайки. Если вы пользуетесь автотрассировщиком, отключите все слои, кроме нижнего. Это заставит автотрассировщик работать только с этим слоем. Если вам нужны проволочные перемычки, то чтобы подсказать pcb, что существуют действительные соединения, есть два варианта. На верхнем слое можно начертить дорожки, как это делается для двухсторонней платы. Или же можно создать символ “джампера” в схеме и поместить его в тех местах, где нужна перемычка. Скорее всего это тяжелее, но зато, если надо, таким образом вы сможете чётко устанавливать размеры перемычек.

В односторонних платах нет металлизированных отверстий, поэтому диаметр площадок выводов должен быть больше, обычно в два-три раза больше размера отверстия. Контактные площадки некоторых посадочных мест в стандартной библиотеке слишком малы, и это будет слабым местом при разработке односторонней платы. Скопируйте их в локальную библиотеку и подкорректируйте, задав нужные вам размеры.

При экспорте в Gerber-файлы удалите Gerber-файл для стороны компонентов и переименуйте файл для металлизированных отверстий так, чтобы он относился к неметаллизированным4). Ура! Односторонняя плата готова!

Где можно найти скрипты для обработки pcb-файлов?

Одной из замечательных особенностей pcb является использование довольно понятного текстового формата файла. Поэтому многие разработчики для разных видов обработки своих плат используют скрипты (обычно на Perl). Эти скрипты можно использовать как есть или модифицировать для своих целей. Вот несколько ссылок на ресурсы с полезными скриптами:

  1. Много скриптов предоставил на своём сайте John Luciani. В его коллекцию входят как скрипты для создания посадочных мест, так и …
  2. На сайте David Rowe есть скрипты для обновления элементов, а также для формирования из pcb-файлов их объединения или разницы.
  3. Stuart Brorson написал простой скрипт, создающий посадочные места для двухвыводных пассивных компонентов для поверхностного монтажа. tar-архив, сжатый gzip, находится здесь .
  4. На веб-сайте gedasymbols.org собрана коллекция посадочных мест, символов, скриптов и другие материалы многих содействующих проекту gEDA пользователей. Этот веб-сайт организован в виде страниц отдельных пользователей, так что если вы потратите некоторое время, чтобы полистать его, то может быть найдёте как раз то, что искали!

Как импортировать векторные изображения, сделанные в других программах?

Существует сторонняя утилита с открытым исходным кодом pstoedit, конвертирующая данные в формате Postscript в формат pcb. Она входит во многие основные дистрибутивы Linux. Вы можете создать логотип или оригинальную топологию в своей любимой программе работы с векторной графикой. Если можете, произведите экспорт в формат EPS и убедитесь, что ваш логотип подогнан под размеры ограничительной рамки (“bounding box”) (проверьте это, открыв его в программе просмотра Postscript, например в ggv). Если экспорт в EPS недоступен, можно произвести экспорт в Postscript с помощью печати в файл. В этом случае ограничительную рамку можно добавить с помощью ps2epsi. Запустите pstoedit с ключом -f pcb, чтобы произвести корректный pcb-файл, графика в котором представлена в виде дорожек в слое 1. Загрузите полученный файл в pcb. Графика будет размещена где-то в левом нижнем углу области просмотра. Может быть, чтобы её увидеть, понадобится уменьшить масштаб.

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

Есть ли способ импортировать чертёж в формате DXF из приложений САПР для механики?

Фильтра для непосредственной загрузки DXF в pcb нет. Но программа с открытым исходным кодом qcad может открывать файлы DXF и экспортировать их в Postscript. Полученный Postscript-файл можно преобразовать в формат программы pcb утилитой pstoedit (см. выше).

Как легче всего сделать необычное посадочное место?

Иногда для посадочных мест требуются такие формы, которые трудно начертить с помощью ограниченных графических средств pcb. Легче начать чертить их в программе для работы с векторной графикой inkscape, а потом сконвертировать в формат pcb. В inkscape:

Сконвертируйте в формат pcb:

pstoedit -f pcb > footprint.pcb

В pcb сделайте следующее:

В текстовом редакторе:

Как задать название топологии?

Название текущей платы можно задать с помощью меню ПравкаИзменить названиетопологии. Здесь задаётся атрибут названия топологии. Этот атрибут используется для действий, связанных с экспортом, и не пересекается с именем файла.

Есть ли способ сделать несколько экземпляров части схемы?

В графическом интерфейсе нет возможности автоматически делать похожие части схем. Группы дорожек и переходов можно копировать, но посадочные места придётся размещать вручную. При размещении отключите Автоматическое соблюдение норм для зазоров в меню Настройки. Иначе pcb не позволит вам соединить посадочные места со скопированными дорожками и переходами.

John Luciani написал пару скриптов на Perl, которые легче справляются с такой ситуацией. Скрипт sch-matrix помещает на лист несколько копий базового блока. Он как надо изменяет номера и позиции символов. Скрипт размещения pcb-matrix располагает несколько копий экземпляра топологии в виде матрицы. В результате получается пара соответствующих друг другу схем — принципиальная и топологическая, — на которых размещено несколько одинаковых частей схемы. Подробности можно посмотреть на его сайте, оттуда же можно эти скрипты и скачать.

Эта пара скриптов написана несколько лет назад и используется редко. Так что может быть для использования со свежими версиями pcb их надо модифицировать. Приветствуется любая помощь, как отчёты об ошибках, так и заплаты.

Можно ли установить фоном растровое изображение?

Для установки растровой графики фоном рабочей области существует специальный ключ командной строки. Изображение может быть в формате JPG, PNG или PPM. Чтобы изображение не сильно портило отображение текущих цветов топологии, уменьшите его контраст в gimp или другом графическом редакторе. Затем запустите pcb следующим образом:

$ pcb --bg-image background.png layout.pcb

Изображение будет растянуто по размеру рабочей области. Снимок экрана с видом страницы pcb с фоновым изображением можно увидеть на странице HOWTO от DJ Delorie.

Автотрассировщик

Как большую часть соединений развести автотрассировщиком?

  1. Отключите видимость тех слоёв, которые не должны разводиться автоматически.
  2. Отключите видимость переходов, если не хотите, чтобы добавлялись новые переходы.
  3. Для слоёв питания/земли, для которых вы хотите использовать автотрассировку, используйте только прямоугольники. (То есть не используйте инструмент вставки полигонов POLY, используйте инструмент вставки прямоугольников RECT!)
  4. Подключите каждый слой питания/земли, который должен использовать автотрассировщик, хотя бы одной дорожкой к тому соединению (из списка соединений), к которому он должен относиться.
  5. На каждом слое автотрассировки очертите непрерывными линиями исключаемые области.
  6. Задайте в списке соединений стили трассировки, чтобы каждое соединение разводилось в заданном стиле5).
  7. Для соединений, стиль трассировки которых не определён в списке соединений, задайте текущий стиль, воспользовавшись кнопкой внизу рабочего окна.
  8. Запретите те соединения, которые не должны разводиться автоматически. Признак запрета “*” добавляется/удаляется двойным щелчком по ним в окне списка соединений.
  9. Обновите линии связи (нажатием клавиши [o]).
  10. Выберите в меню настроек Показывать попытки автотрассировщика, если хотите наблюдать процесс разводки.
  11. В меню соединений выберите Автотрассировка всех соединений.

Примечание о запрете соединений: если вы хотите развести некоторые соединения немного позже самостоятельно, не используя слои металлизации, обычно лучше сначала попробовать развести их автотрассировщиком, а затем уже вручную удалить. Если вы планируете вручную задавать слои питания/земли, рассмотрите возможность составить их из одного или более простых прямоугольников и попробовать развести всё автотрассировщиком.

Если вы на самом деле хотите по уши влезть в трассировщик, так как делаете особый проект, например, содержащий только компоненты для выводного монтажа, можете поковыряться с метриками стоимости направлений для слоёв, для этого откройте исходный файл autoroute.c и измените метрики стоимости направлений в строках 929-940, а затем попробуйте ещё раз. Ещё больше завязнуть с метриками стоимости можно в строках 4540-4569, но это вряд ли хорошая идея, если только вы не хотите просто поэкспериментировать.

Как заставить автотрассировщик размещать дорожки только на определённом слое?

Просто отключите слои, на которых дорожки вам не нужны (обычно зелёный и синий), щелчком мыши по названию слоя. Затем запустите автотрассировку.

Как автотрассировщику запретить обрабатывать некоторые соединения?

Откройте окно списка соединений. В нём есть возможность включения или исключения соединений из обрабатываемого перечня линий связи. Если вы используете GTK-HID, дважды щёлкните по соединению, которое нужно запретить. Убедитесь, что разрешены только нужные вам соединения. Оптимизируйте линии связи нажатием [o]. Выберите Автотрассировка всех соединений.

Как заставить автотрассировщик разводить дорожки только внутри контуров моей платы?

Область работы автотрассировщика можно ограничить, начертив медный полигон, соответствующий границам платы, и поместив его в каждый слой, в котором планируется автотрассировка. Кроме того, эту хитрость можно использовать для ограничения автотрассировки небольшими областями. Если же у вас какое-то соединение где-то случайно коснулось этого полигона, все его дорожки, конечно, будут закорочены на этот полигон.

Как развести слои питания и земли автотрассировщиком?

Подключите полигон, который должен стать слоем питания, к соединению, и автотрассировщик при разводке будет его учитывать. Кое-где для разводки питания и обеспечения разводки внутри контуров платы может быть для полигона придётся настроить несколько “хитрых” зазоров.

Можно ли заранее определить особый стиль автотрассировки для некоторых соединений?

Да, каждому соединению можно назначить свой стиль трассировки. Это обычно делается в файле списка соединений. Формат таков:

netname [название_стиля] название_элемента1-номер_вывода1 название_элемента2-номер_вывода2 ...

Квадратными скобками отмечен необязательный элемент.

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

Разводка, сделанная автотрассировщиком, нерациональна!

Это технологическое ограничение современного автотрассировщика. Он бессеточный, и использует только прямоугольники.

Разводка, сделанная автотрассировщиком, ужасна!

Вы пробовали запускать различные инструменты оптимизации из меню СоединенияОптимизировать дорожки?

Gerber-файлы, печать и другие вопросы ввода-вывода

Возможно ли получить вывод, не используя графический интерфейс?

Да, для pcb можно задать экспорт из командной строки. Все параметры, задаваемые в диалоговом окне печати, можно использовать и из командной строки. Несколько простых примеров:

Gerber-файлы:

pcb -x gerber --gerberfile BOARD BOARD.pcb

Encapsulated Postscript:

pcb -x eps --eps-file BOARD.eps

Печать в многостраничный Postscript-файл:

pcb -x ps --psfile BOARD.ps BOARD.pcb

Формат PNG:

pcb -x png --dpi 300 --only-visible --outfile BOARD.png BOARD.pcb

Разные функции вывода принимают разные ключи. Подробности можно узнать, посмотрев вывод команды pcb --help.

Как напечатать только определённые слои?

Из графического интерфейса:

Из командной строки:

pcb -x eps \
  --layer-stack "outline,top,silk" \
  --as-shown \
  --eps-file "foobar.eps" BOARD.pcb

Строка layer-stack (стек слоёв) может содержать список разделённых запятыми слоёв, используемых в графическом интерфейсе. Нужно задать ключ --as-shown. В противном случае будет использоваться файл стека слоёв по умолчанию. Кроме того, есть несколько идентификаторов, которые фактически слоями не являются, например pins (выводы) или invisible (невидимые объекты). Если в строке layer-stack вы зададите неизвестный идентификатор слоя, программа pcb выдаст перечень известных ей названий слоёв.

Как напечатать нижнюю сторону платы?

Из командной строки: к строке layer-stack команды печати добавить “solderside” (сторона пайки). Пример:

  pcb -x eps --layer-stack "silk,solderside" \
     --as-shown \
     --eps-file "/tmp/foobar.eps" BOARD.pcb

Как настроить контуры платы, чтобы пойти с моими Gerber-файлами к производителю плат?

pcb интерпретирует линии в слое outline как контуры печатной платы. Если такого слоя нет, можно либо переименовать слой (ПравкаИзменить названиетекущего слоя), либо создать новый слой (ФайлНастройкиСлоиДобавить) и соответствующим образом его переименовать. Учтите, что название слоя регистрозависимо.

Можно начертить контур платы в pcb. Просто вычерчиваете желаемый контур с помощью инструмента LINE, можно также использовать ARC. Большинство производителей плат обрежет платы по центру линий. Таким образом можно создавать платы любой формы. Дуги, полигоны и текст в слое контуров платы outline также войдут в Gerber-файл.

Можно также отредактировать .pcb-файл своей топологии вручную. Обычно для контуров платы я использую восьмой слой:

Layer(8 "outline")
(
	Line[x1 y1 x2 y2 1000 2000 0x00000000]
	Line[x2 y2 x3 y3 1000 2000 0x00000000]
	Line[x3 y3 x4 y4 1000 2000 0x00000000]
	Line[x4 y4 x1 y1 1000 2000 0x00000000]
	Line[<для непрямоугольных плат здесь будет задано больше точек> 1000 2000 0x00000000]
)

pcb произведёт Gerber-файл $NAME.outline.gbr, содержащий исключительно только объекты слоя контуров платы outline.

Как обеспечить, чтобы отверстия в проекте были только определённых размеров?

Некоторые производители приводят списки стандартных размеров свёрл и взимают дополнительную плату, если в проекте содержатся другие размеры. Такой список можно поместить в “файл ресурсов производителя”. Там же можно определить исключения и указать, должен ли выбираться ближайший диаметр или значение должно округляться до следующего в списке. Синтаксис таких файлов приведён в разделе Vendor-drill-mapping руководства по pcb.

Загрузите этот файл в pcb с помощью Загрузить файл ресурсов производителя из основного меню. Или можно воспользоваться командой :LoadVendor(drillfile). Вместо drillfile задайте имя своего файла.

При загрузке pcb заменит размеры отверстий, чтобы топология соответствовала данному списку. Если нужно заново согласовать отверстия с уже загруженным файлом ресурсов, можно выбрать Согласовать со свёрлами производителя из меню Соединения.

Сколько контактных площадок в моей топологии?

Некоторые производители плат для расчёта стоимости запрашивают количество контактных площадок SMD-компонентов. Определить их количество в топологии можно с помощью gerbv.

  1. Произведите экспорт топологии в Gerber-файлы
  2. Откройте файл $NAME.frontpaste.gbr в gerbv.
  3. Из меню Analyze откройте окно Gerber codes report.
  4. Вкладка Aperture usage покажет количество контактных площадок.

Я закончил разработку топологии своей платы. Как мне проверить свой проект?

Кроме запуска команды проверки соответствия проектным нормам, очень важно проверить свои Gerber-файлы. В gEDA Suite эту задачу выполняет программа gerbv. Вот кое-что из того, что следует проверить:

Экспорт в другие форматы: растровые и PS-файлы

Что это за xy-max в диалоговом окне экспорта PNG?

Это значение ограничивает размер изображения в пикселах при сохранении отношения сторон. Например, при установке его в 400, плата размером 6000×8000 будет преобразована в изображение размером 300×400, но плата размером 6000×4500 будет преобразована в изображение размером 400×300.

Настройка под себя

Мне не нравится этот несовременный чёрный фон. Можно ли сделать рабочую область светлой?

В GTK-HID можно вызвать диалоговое окно настроек из меню Файл. Во вкладке Цвета можно легко настроить любые цвета с помощью удобного стандартного интерфейса выбора цветов GTK. При закрытии приложения цвета сохраняются в $HOME/.pcb/preferences. В Lesstif-HID диалогового окна настроек нет. Цвета можно настроить в $HOME/.pcb/settings.

Как для диалогового окна экспорта в Postscript настроить значения по умолчанию?

Можно задавать ключи диалогового окна печати в Postscript как параметры командной строки при вызове pcb. Чтобы узнать доступные ключи, наберите pcb --help. Эти ключи можно задать и в файле $HOME/.pcb/settings. Файл, в котором настраивается печать на A4 без маркеров выравнивания и задаётся многостраничный вывод, будет содержать:

media = A4
align-marks = 0
multi-file = 1

Как настроить поведение мыши?

Поведение мыши нельзя настроить из графического интерфейса. Но его можно приспособить под свои нужды без перекомпиляции. Вот что надо сделать:

Как временно изменить привязки клавиш?

В GTK-версии pcb есть изящный способ изменения привязок клавиш “на лету”:

Такая настройка сбросится при следующем запуске pcb.

Как изменить привязки клавиш насовсем?

Если вы используете интерфейс GTK, то используемые по умолчанию привязки клавиш определяются в файлах gpcb-menu.res. При запуске pcb считывает конфигурацию из системного пути доступа, например /usr/local/share или /usr/share/. Чтобы сделать свои изменения привязок клавиш постоянными, можно скопировать системный файл в $HOME/.pcb/gpcb-menu.res и отредактировать его по своему вкусу. Настройки из этого файла будут переопределять системные.

Для интерфейса Lesstif вместо gpcb-menu.res используются файлы pcb-menu.res.

Можно ли настроить меню?

Для GTK-интерфейса меню определяется в gpcb-menu.res. Вы можете положить локализованную копию в $HOME/.pcb/. Замечания о настройке привязки клавиш и поведения мыши смотрите выше.

Вы не ответили на мой вопрос. Где ещё можно получить информацию по pcb?

Быстрый ответ на свой вопрос можно получить в списке рассылки geda-user. Если вы не нашли ответа на свой вопрос о pcb на этой странице или в другой документации, пишите в список рассылки! Учтите, что прежде чем писать в этот список рассылки, на него нужно подписаться. Списки рассылки gEDA и их архивы можно найти на странице http://wiki.geda-project.org/geda:mailinglists.ru.

1) В более новых версиях pcb вложенные разделы раскрываются, там же отображаются элементы, а справа находится окно предпросмотра посадочных мест. — Прим. перев.
2) В слое шелкографии дуги использовать можно. — Прим. перев.
3) Речь здесь идёт о ресурсах pcb с Xaw-интерфейсом, который заменён на GTK-интерфейс в 2005-ом году, поэтому для более свежих версий данный ответ неактуален. — Прим. перев.
4) Например, mv myfile.plated-drill.cnc myfile.unplated-drill.cnc. Названия нужно согласовать с производителем плат. — Прим. перев.
5) В настоящее время, насколько мне известно, это можно сделать, только отредактировав список соединений вручную. — Прим. перев.