В этом разделе рассматриваются общие вопросы технологии разработки печатных плат. Если вы только начинаете изучать электронику, то, возможно, извлечёте некоторую пользу из приведённых здесь ответов.
Глоссарий, содержащий разные термины, можно найти здесь.
В этом разделе приводятся ответы на вопросы собственно о программе с открытым исходным кодом pcb, предназначенной для разработки топологии печатных плат.
Руководство по pcb содержит краткое описание пользовательского интерфейса в разделе "Для начинающих".
После добавления новых возможностей в формат файла старые версии программы могут подавиться этими перлами в кусках топологии. Для предотвращения такого несчастья pcb-файлы содержат записи о минимально допустимой версии программы. Старые версии pcb отказываются загружать файлы топологии, сохранённые более новыми. В качестве примера можно назвать добавление в 2010 г. вырезов в полигоны. Чтобы открыть файлы топологии, в которых они используются, вам понадобится версия pcb, скомпилированная из исходников позднее июня 2010 г.
К сожалению, нельзя сохранить топологию таким образом, чтобы старые версии pcb смогли её понять. Но если не использовать вырезы в полигонах, можно просто вручную исправить версию файла в заголовке на 20070407 и открыть полученный файл в старой версии pcb.
Эта тема раскрывается в руководстве.
Возможность автопанорамирования удалена в сентябре 2011 г. Поэтому вам может помочь установка более свежей версии.
Если вы используете более старую версию pcb, можно сделать следующее:
$HOME/.pcb/preferences
.Вероятно, вы пытаетесь удалить выделенный объект. Клавиша [Delete] в pcb действует не на выделение, а на объект, находящийся под курсором мыши. Следовательно, если объект выделен, а мышь находится в каком-то другом месте, ничего удалено не будет. Вывод: нужно просто указать мышью на объект и нажать клавишу [Delete]. Выделять объект не надо.
Тем не менее текущее выделение можно удалить клавишей [Backspace].
Скорее всего объект заблокирован. Заблокированные объекты не подсвечиваются. Чтобы увидеть, что это на самом деле так, надо выбрать Выделить все соединённые объекты из меню Выделение. Для заблокированных посадочных мест над точкой их привязки в виде ромбика отображается маленькая буква «L». Для разблокировки нужного объекта воспользуйтесь инструментом LOCK. Учтите, что состояние блокировки объекта переключается при каждом щелчке по нему этим инструментом. После этого для объекта открывается окно отчёта, в котором это состояние отображается в последней строке.
Если вы хотите удалить все блокировки, обратите внимание на возможность открыть
свой файл *.pcb
в любимом текстовом редакторе и удалить в нём все
строки lock
.
Другой причиной для числовых объектов может быть установка Только названия в меню Настройки. Когда выбрана такая настройка, инструмент выделения будет действовать исключительно на текст. Это полезно при плотной компоновке. Есть также дополнительная настройка Заблокировать названия.
pcb поддерживает два абсолютно разных формата библиотек посадочных мест:
Поэтому, при разработке топологической схемы платы вы можете либо использовать посадочные места, поставляемые в комплекте с pcb, либо найти их в сети интернет, либо создать свои собственные и поместить в предназначенный для них каталог. В Руководстве пользователя pcb есть полная и современная документация по формату файлов элементов. На сайте gedasymbols.org имеется некоторое количество посадочных мест, предоставленных пользователями. Несколько неполное, но полезное руководство доступно на веб-странице http://www.brorson.com/gEDA/ (ищите по ключевому слову “newlib”).
newlib
и pcblib-newlib
. В них находятся библиотеки, используемые в pcb по умолчанию.
Этот вопрос является общим для новых пользователей gEDA. В самом деле вопрос
помощи новичкам в определении названий нужных им посадочных мест компонентов лежит в
основе продолжающихся дебатов о лёгких символах против тяжёлых. В текущей
версии gEDA/gaf, содержащей лёгкие символы, вам надо прикреплять атрибуты
footprint
на этапе редактирования схем (то есть в gschem или
gattrib). Какое название использовать для посадочного места, зависит от того,
какой вы пользуетесь библиотекой — newlib или M4 (pcblib).
В библиотеке newlib каждое посадочное место лежит в отдельном файле и имя данного файла является его названием.
Определить названия нужных посадочных мест в newlib можно разными способами:
footprint
в gschem или gattrib должно в точности соответствовать указанному в перечне названию.${PREFIX}/share/pcb/newlib
. (${PREFIX}
— это каталог установки, задаваемый при конфигурировании/сборке pcb.) В качестве значения атрибута footprint
нужно задать имя файла нужного вам посадочного места./usr/local/geda/share/pcb/newlib/generic_SMD_packages/0805_reflow_solder
.footprint
для него равным 0805_reflow_solder.--elements-dir
(из командной строки).--elements-dir
, задавая в качестве параметра локальный каталог с файлами посадочных мест.
В библиотеке 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 для автогенерации посадочных мест.
Можно преобразовать посадочное место в обычную топологию, отредактировать её части и обратно преобразовать в посадочное место. В следующем перечне жирным наклонным шрифтом выделены действия из меню Буфер (если не указан иной пункт меню).
Или же можно отредактировать исходный код посадочного места в своём любимом текстовом редакторе.
Точка привязки посадочного места отмечается маленьким ромбиком. Чтобы переместить её в другое место по отношению к изображению посадочного места, нужно изменить координаты всех объектов. Это можно сделать вручную в текстовом редакторе. Если же вы хотите сделать это из графического интерфейса 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 этот флаг установить невозможно. Его можно
добавить для контактных площадок посадочного места в текстовом редакторе.
Библиотеки посадочных мест можно добавить из графического интерфейса:
Файл → Настройки… → Библиотека → КАТАЛОГ_ПОСАДОЧНЫХ_МЕСТ
Или можно отредактировать файл $HOME/.pcb/preferences
. Убедитесь, что не
запущен ни один процесс pcb. Поищите строку, начинающуюся с library-newlib
.
Не забудьте подключить новый каталог в файле gsch2pcbrc
или в локальном
gafrc
(имеется в виду при использовании gsch2pcb).
Автоматического способа заместить все экземпляры посадочного места новой
версией пока нет. Но есть специальный режим вставки из буфера, который поможет
уменьшить количество щелчков мышью при ручной замене.
Откройте диалоговое окно с помощью Окно → Библиотека и
выберите новое посадочное место. Рабочим инструментом станет инструмент
вставки из буфера BUF и в буфер будет загружено новое посадочное место.
Если надо, поверните его с помощью Буфер → Повернуть буфер.
Расположите новое посадочное место над старым и, нажав [Shift], щёлкните
левой кнопкой мыши, чтобы заместить старое посадочное место новым. Следите,
чтобы не перевернуть его на 180 градусов, проверьте подключение
линий связи
нажатием [o] и, если вдруг оказалось, что посадочное место расположено
задом наперёд, отмените операцию.
Путь доступа к посадочным местам, который использует программа pcb,
определяется переменной Pcb.elementPath
в файле ресурсов app-defaults,
называющемся PCB
3). Путь к
этому файлу задаётся с помощью переменной окружения 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
Внимание: при использовании квадратных контактных площадок полигоны могут не очищаться надлежащим образом. Однако с прямоугольными площадками всё работает нормально. Это известная проблема, причина которой кроется в сложности определения направления ориентации квадратной площадки.
:FreeRotateBuffer(45)
. При нажатии двоеточия откроется окно командной строки. Вместо “45” введите нужный угол поворота.
Примечание: по внутренним причинам FreeRotateBuffer
не работает с правильными
квадратами. Обойти это ограничение можно составлением квадрата из двух или более
полигонов.
:MoveObject(x,y,unit)
. При нажатии двоеточия откроется окно командной строки. Вместо “x” и “y” введите нужные координаты, а вместо “unit” — “mm” или “mil”.Если обе координаты заданы с префиксом «+» или «-», объект будет перемещён на заданные значения относительно текущего положения. В противном случае заданные значения будут новыми абсолютными координатами объекта.
Используйте команду MoveObject()
как указано
выше.
Перейдя в Файл → Настройки… → Приращения, размер приращений можно изменить. (Примечание: в настоящее время эта настройка сломана.)
Есть два варианта:
Мышь действует только на те компоненты, что расположены на активной стороне платы. Это нужно для устранения неоднозначности в том случае, когда компоненты расположены на обеих сторонах, верхней и нижней. По умолчанию активна верхняя сторона, а нижняя считается “обратной стороной”, компоненты на ней игнорируются. Чтобы сделать компоненты обратной стороны доступными, можно поменять роли сторон. Добиться этого можно нажатием [Tab], [Shift-Tab], [Ctrl-Tab] или [Ctrl-Shift-Tab]. Эти сочетания клавиш вместе со сменой активной стороны вызывают и разнообразные перевороты. В частности:
Если в данный момент компонент находится на обратной стороне платы, шелкография для него будет отображаться серым цветом. Если вы не уверены, отключите показ обратной стороны кнопкой “обратная сторона”, расположенной в нижней части набора кнопок слоёв. При этом должна перестать отображаться шелкография всех находящихся на обратной стороне компонентов.
Хотя для слоя шелкографии в окне pcb есть только одна кнопка, шелкография автоматически располагается на обеих сторонах. В обычном случае эта кнопка относится к шелкографии на стороне компонентов платы. Чтобы поместить текст или линии шелкографии на сторону пайки, плату нужно перевернуть нажатием [Tab] (или [Shift-Tab], если вам больше нравится переворачивать слева-направо). Это всё равно что перевернуть плату обратной стороной вверх. Слой пайки окажется наверху, а слой компонентов — внизу. Объекты слоя шелкографии на стороне компонентов станут серыми. Когда вы чертите в слое шелкографии, линии всегда помещаются на текущий слой шелкографии, то есть тот, что находится сверху, в данном случае это слой на стороне пайки. Точно так же ведётся работа и со слоем шелкографии на стороне компонентов. Чтобы вернуть обычный вид, переверните плату ещё раз.
Добавляйте его перевернув плату (нажатием [Tab]). Просто выбрать сторону пайки недостаточно. Новый текст всегда читается правильно с той стороны, на которую вы смотрите при его вводе.
Да. Можно использовать команду setvalue(grid,value,unit)
.
Чтобы это сделать:
:SetValue(grid,=x,unit)
. При нажатии двоеточия откроется окно командной строки. Вместо “x” введите нужный размер сетки, а вместо “unit” — “mm” или “mil”.Абсолютное начало координат всегда находится в верхнем левом углу рабочей области. Его нельзя задать в другом месте. Но можно задавать координаты объектов и относительно точки на текущей сетке. В 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 может работать с изломами дорожек в нескольких режимах. Текущий режим работы отображается внизу страницы в строке состояния:
Способ доступа к этим режимам в разных версиях графического интерфейса различается. В текущем срезе GTK (v20060288) по умолчанию установлен режим “_/”, но клавишей [Shift] можно временно переключаться на “\_”. Клавишей [/] Можно переключиться на режим 45°. Для разрешения произвольных углов нажмите клавишу [.] или выберите в меню настроек Линии любого направления.
Универсальная клавиша отката изменений [u] работает даже в процессе проведения дорожек. При её нажатии последний сегмент будет удалён, но инструмент LINE останется выбран. Так что можно сразу же продолжить разводку и найти лучший маршрут.
По умолчанию переходы в pcb покрываются паяльной маской. Сделать переходы открытыми можно, установив для них величину просвета в паяльной маске в подходящее значение. Это можно сделать для каждого объекта в отдельности или для всех выделенных объектов сразу.
Для отдельных переходов:
Для групп переходов:
Командный интерфейс даёт больше контроля над действительным зазором (или просветом в паяльной маске, если она включена). Нажмите [:], чтобы открыть окно командной строки, и наберите:
ChangeClearSize(SelectedVias, <delta>)
Здесь <delta>
— размер в сотых долях мила. То есть, например, 3000
соответствует 30 милам. При простом задании целых значений <delta>
,
зазор будет установлен в указанное значение. Если же
перед значением указан знак, «-» или «+», величина зазора будет
соответственно уменьшена или увеличена. Эта же команда используется для
выводов (при задании SelectedPins
), контактных площадок
(SelectedPads
), линий (SelectedLines
), дуг (SelectedArcs
) и даже
просто объектов (SelectedObjects
).
По умолчанию размер просвета для отверстий и контактных площадок задаётся в соответствующем файле посадочного места. Иногда этот размер может не подходить для проекта. Просвет для отдельных отверстий и контактных площадок можно изменять “на лету”, точно так же, как и для переходов. Более подробно это описано в разделе выше. Если просвет для контактной площадки не соответствует требованиям производителя ваших плат, рассмотрите возможность создания локальных копий файлов посадочных мест и соответствующего изменения просветов в них самих.
Есть несколько способов изменить размер уже проведённых дорожек:
:ChangeSize(SelectedLines,+4,mils)
. Нажатие двоеточия вызовет окно командной строки, а ChangeSize()
— это команда вызова ранее описанного действия. Замените +4
нужным размером увеличения дорожек. Для уменьшения дорожек задайте знак минус. Если знак задан не будет, размер дорожек будет установлен в указанное значение.Термопереход — это не переход с термобарьером. Вернее, это переход без термобарьера, соединяющий полигоны на обеих сторонах платы. Такие переходы полностью заполняются припоем для создания области с большой теплоёмкостью, используемой для теплоотвода. Больше информации вы найдёте в Freescale App-Note AN4005.
Вот некоторые предложения:
Наверно вы чертите дорожки в то время как включен режим автоматического соблюдения проектных норм. Вот несколько советов о том, как соединить два сегмента:
Это известный недостаток режима автоматического соблюдения проектных норм. В этом режиме инструмент LINE разрешает присоединять дорожки только к тем проводникам, которые относятся к тому же соединению (из списка соединений), что и то место, откуда дорожка начата.
Есть по крайней мере два способа присоединения к ни к чему не присоединённому
проводнику. Очевидно, можно просто временно отключить Автоматическое
соблюдение норм для зазоров в меню настроек. В другом способе используется
тот факт, что режим автоматического обеспечения проектных норм доверяет флагу
found
:
К сожалению, старые версии pcb не только не дают вам разместить перекрывающиеся переходы, но и отбрасывают их при загрузке топологии. В декабре 2010 года это слишком осторожное поведение было исправлено. Если вам на самом деле нужны перекрывающиеся переходы, вам следует установить более свежую версию pcb.
Версия от 2011 года всё ещё не разрешает вам размещать переходы настолько близко друг к другу, что их отверстия перекрывались бы. Тем не менее она не выразит недовольство, если вы ухитритесь обойти это ограничение. Например, если вы поместите рядом крохотные переходы, а потом увеличите их размеры.
Скорее всего вы назвали их так, что 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
. Для этого нужно навести стрелку мыши на эту дорожку и нажать клавишу [j]. Или же можно выделить нужные линии и выполнить команду SetFlag(selected,join)
. Для присоединения новых линий можно отключить Очистка полигонов новыми линиями и дугами в меню Настройки. Полигон сразу же сольётся с дорожкой.join
. (См. выше.)
При проведении дорожек вы не установили Очистка полигонов новыми линиями и
дугами в меню Настройки. Чтобы переключить флаг присоединения 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>)
.
Поместите полигоны (и прямоугольники) на отдельный слой. В диалоговом окне Настройки… обеспечьте, чтобы этот слой не был в той же группе, что и дорожки. Запретите слой, щёлкнув по кнопке соответствующего слоя в основном окне. После завершения изменений подключите слой полигонов к слою дорожек в диалоговом окне Настройки…. Придётся сохранить и перезагрузить топологию, чтобы вызвать повторный обсчёт полигонов, чтобы они адаптировались к изменениям. Того же самого можно достичь перезапуском программы.
Части полигона, не подключенные ни к какому соединению, автоматически игнорируются. Таким образом эффективно удаляются изолированные участки металлизации. Хотя это и желательно для настоящих плат, но требует применения довольно пространных алгоритмов расчёта. Поэтому это необязательно ошибка, но скорее цена, которую мы платим за мощную возможность. Есть всё же пара способов улучшить ситуацию:
Обсчёт полигонов — потенциально дорогая операция с точки зрения потребления ресурсов процессора. Если ваша топология не очень сложна, то скорее всего у вас определено чрезмерно много полигонов. Чтобы найти и удалить ненужные, посмотрите исходный текст файла своей топологии. Если это не тот случай, для улучшения ситуации можно принять меры, указанные выше.
Есть четыре основных способа редактирования полигонов. Вершины углов полигона можно двигать и удалять, а также вставлять двумя способами. Полигоны одинаково легко редактировать в режиме “контуров” (Настройки → Контуры полигонов) и в нормальном режиме. Переместить вершину можно просто сняв выделение с полигона и щёлкнув и потащив её в новое место. Для удаления вершины угла полигона наведите перекрестие курсора на эту точку и нажмите клавишу [Delete]. Для вставки вершины можно использовать инструмент вставки точек INS (включается также нажатием клавиши [Ins]). Сначала щёлкните по той стороне, которую нужно разделить новой точкой. Щёлкните и потащите новую точку. Другой вариант этого способа: 1) щёлкните, чтобы выбрать сторону; 2) щёлкните, чтобы поместить новую вершину.
(Примечание: вставка вершин полигона работает, как правило, ТОЛЬКО при разрешении “линий в любых направлениях” (Настройка → Линии в любом направлении). Причина кроется в том, что в pcb есть мощная система ограничения линий углами 45/90 градусов. Если попробовать вставить новую вершину для полигона, стороны которого не расположены точно под 45 или 90 градусов, pcb запретит это действие!)
Часто бывает полезно, чтобы для теплоотдачи переходы целиком соединялись с полигоном (областью металлизации), и очевидная проблема в том, что в pcb для целого полигона определён только один флаг “очистки выводами/переходами” (переключаемый клавишей [s]). Нам же нужно соединить с полигоном только некоторые из выводов/переходов, причём соединить их лучше, чем это позволяет нам инструмент добавления термобарьеров. Есть несколько вариантов, как это сделать.
Один способ, сделать объект, почти такой же как и термобарьер в том отношении, что он располагается между переходом и полигоном. Разница в том, что фактически нужно сделать кольцо, полностью заполняющее пространство между отверстием и полигоном (который, поскольку для него включено использование зазоров, не соединяется с выводом). Это кольцо делается из четырёх сегментов дуг. Эти четыре объекта можно скопировать в буфер и создать таким образом “инструмент добавления термоперехода с нулевым зазором”. Недостаток такого приёма в том, что когда нужно будет изменить размер перехода, придётся также менять и размер элементов заполнения.
Приём заполнения дугами можно использовать также в местах плотной компоновки, помещая для уменьшения размера, скажем, две из четырёх дуг.
Другой приём — сделать линию нулевой длины. Возьмите одиночный сегмент линии и совместите его конечную точку с начальной. Теперь у вас есть “точечная линия” (круг) с диаметром, равным толщине линии. Если надо, переместите её на другой слой (нажатием клавиши [m]). Для соединения перехода с полигоном расположите этот объект по его центру.
Опытные пользователи могут захотеть иметь небольшую библиотеку таких нестандартных объектов, сохранив их как элементы. Удобно также скопировать такие объекты в один из буферов pcb, так что они всегда будут под рукой.
Можно также поверх того полигона, к которому вы хотите присоединить свои переходы, добавить другой полигон. Тогда вам надо снять флаг “очистки выводами/полигонами) и переходы будут присоединены к расположенному снизу полигону большего размера.
В настоящее время способа непосредственной очистки паяльной маски полигонами нет. Обычный обходной манёвр — работать с контактными площадками.
square
.Хотя ширина площадок ограничена величиной 250 милов, зазор может быть любым.
Это действие выполняется в два приёма. Сначала надо выделить объекты для обработки. Затем выполнить для них функцию:
Для удобства повторения действий можно оторвать подменю, щёлкнув на пунктирной линии, и оно останется на экране.
Или же задайте действие ChangeSize
из окна команды:
ChangeSize(SelectedPins, SIZE)
Подставьте вместо SIZE
нужный размер в сотых долях мила. 1 мм = 3937. Если
перед SIZE
стоит знак «-», размер уменьшается. Если «+», увеличивается.
Если знака нет, число интерпретируется как абсолютное значение. Синтаксис
команды ChangeSize
приводится в
Руководстве по pcb.
Вставьте посадочное место для крепёжного отверстия или переход.
Если контактные площадки вокруг крепёжного отверстия должны иметь
электрическое соединение, это соединение нужно отразить в принципиальной
схеме. Добавьте в схему символ крепёжного отверстия и задайте ему
соответствующий атрибут посадочного места footprint
.
Я предпочитаю создавать посадочные места для разных видов деталей для крепежа. У меня есть множество шелкографических изображений разнообразных комбинаций деталей (гайки, гайки с шайбами и т. д.). Такие изображения содержат удобные точки привязки для их размещения при разработке платы.
Примеры посадочных мест можно посмотреть на странице http://www.luciani.org/geda/pcb/pcb-footprint-list.html#Hardware.
Причина в том, что интервал между выводами обычно достаточен для того, чтобы области металлизации вокруг них не разрывались ни с какой стороны, а контактные площадки обычно расположены так плотно, что для них это условие не выполняется. Из-за этого необходимо вручную чертить “перемычки” термобарьера для соединения контактных площадок со слоем земли. Не забудьте изменить настройки так, чтобы новые линии при их вычерчивании соединялись с областями металлизации. Если нужно сделать несколько таких термобарьеров, потратьте немного времени, создайте один из них в нужном вам виде, а затем полученные перемычки можно скопировать в буфер и вставлять в нужных местах.
Когда речь идёт об односторонней плате, это всего лишь вопрос терминологии. В pcb нет такого понятия как односторонняя плата, бывает лишь двухсторонняя, на одной из сторон которой ничего нет.
Разрабатывайте плату как двухстороннюю, но с дорожками только на стороне пайки. Если вы пользуетесь автотрассировщиком, отключите все слои, кроме нижнего. Это заставит автотрассировщик работать только с этим слоем. Если вам нужны проволочные перемычки, то чтобы подсказать pcb, что существуют действительные соединения, есть два варианта. На верхнем слое можно начертить дорожки, как это делается для двухсторонней платы. Или же можно создать символ “джампера” в схеме и поместить его в тех местах, где нужна перемычка. Скорее всего это тяжелее, но зато, если надо, таким образом вы сможете чётко устанавливать размеры перемычек.
В односторонних платах нет металлизированных отверстий, поэтому диаметр площадок выводов должен быть больше, обычно в два-три раза больше размера отверстия. Контактные площадки некоторых посадочных мест в стандартной библиотеке слишком малы, и это будет слабым местом при разработке односторонней платы. Скопируйте их в локальную библиотеку и подкорректируйте, задав нужные вам размеры.
При экспорте в Gerber-файлы удалите Gerber-файл для стороны компонентов и переименуйте файл для металлизированных отверстий так, чтобы он относился к неметаллизированным4). Ура! Односторонняя плата готова!
Одной из замечательных особенностей pcb является использование довольно понятного текстового формата файла. Поэтому многие разработчики для разных видов обработки своих плат используют скрипты (обычно на Perl). Эти скрипты можно использовать как есть или модифицировать для своих целей. Вот несколько ссылок на ресурсы с полезными скриптами:
Существует сторонняя утилита с открытым исходным кодом pstoedit,
конвертирующая данные в формате Postscript
в формат pcb
. Она входит во
многие основные дистрибутивы Linux. Вы можете создать логотип или оригинальную
топологию в своей любимой программе работы с векторной графикой. Если
можете, произведите экспорт в формат EPS
и убедитесь, что ваш логотип
подогнан под размеры ограничительной рамки (“bounding box”) (проверьте это,
открыв его в программе просмотра Postscript
, например в
ggv). Если экспорт в EPS
недоступен, можно произвести экспорт в
Postscript
с помощью печати в файл. В этом случае ограничительную рамку
можно добавить с помощью
ps2epsi. Запустите
pstoedit с ключом -f pcb
, чтобы произвести корректный pcb-файл, графика в
котором представлена в виде дорожек в слое 1. Загрузите полученный файл в
pcb. Графика будет размещена где-то в левом нижнем углу области просмотра.
Может быть, чтобы её увидеть, понадобится уменьшить масштаб.
Импорт внешней векторной графики может быть полезен в том случае, когда нужна нестандартная форма платы. Скопировать форму в свой проект можно с помощью буфера обмена.
Фильтра для непосредственной загрузки DXF в pcb нет. Но программа с открытым исходным кодом qcad может открывать файлы DXF и экспортировать их в Postscript. Полученный Postscript-файл можно преобразовать в формат программы pcb утилитой pstoedit (см. выше).
Иногда для посадочных мест требуются такие формы, которые трудно начертить с помощью ограниченных графических средств pcb. Легче начать чертить их в программе для работы с векторной графикой inkscape, а потом сконвертировать в формат pcb. В inkscape:
Сконвертируйте в формат pcb:
pstoedit -f pcb > footprint.pcb
В pcb сделайте следующее:
В текстовом редакторе:
*.fp
туда, где 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.
Примечание о запрете соединений: если вы хотите развести некоторые соединения немного позже самостоятельно, не используя слои металлизации, обычно лучше сначала попробовать развести их автотрассировщиком, а затем уже вручную удалить. Если вы планируете вручную задавать слои питания/земли, рассмотрите возможность составить их из одного или более простых прямоугольников и попробовать развести всё автотрассировщиком.
Если вы на самом деле хотите по уши влезть в трассировщик, так как делаете
особый проект, например, содержащий только компоненты для выводного монтажа,
можете поковыряться с метриками стоимости направлений для слоёв, для этого
откройте исходный файл autoroute.c
и измените метрики стоимости
направлений в строках 929-940, а затем попробуйте ещё раз. Ещё больше
завязнуть с метриками стоимости можно в строках 4540-4569, но это вряд ли
хорошая идея, если только вы не хотите просто поэкспериментировать.
Просто отключите слои, на которых дорожки вам не нужны (обычно зелёный и синий), щелчком мыши по названию слоя. Затем запустите автотрассировку.
Откройте окно списка соединений. В нём есть возможность включения или исключения соединений из обрабатываемого перечня линий связи. Если вы используете GTK-HID, дважды щёлкните по соединению, которое нужно запретить. Убедитесь, что разрешены только нужные вам соединения. Оптимизируйте линии связи нажатием [o]. Выберите Автотрассировка всех соединений.
Область работы автотрассировщика можно ограничить, начертив медный полигон, соответствующий границам платы, и поместив его в каждый слой, в котором планируется автотрассировка. Кроме того, эту хитрость можно использовать для ограничения автотрассировки небольшими областями. Если же у вас какое-то соединение где-то случайно коснулось этого полигона, все его дорожки, конечно, будут закорочены на этот полигон.
Подключите полигон, который должен стать слоем питания, к соединению, и автотрассировщик при разводке будет его учитывать. Кое-где для разводки питания и обеспечения разводки внутри контуров платы может быть для полигона придётся настроить несколько “хитрых” зазоров.
Да, каждому соединению можно назначить свой стиль трассировки. Это обычно делается в файле списка соединений. Формат таков:
netname [название_стиля] название_элемента1-номер_вывода1 название_элемента2-номер_вывода2 ...
Квадратными скобками отмечен необязательный элемент.
Можно вручную отредактировать свой список соединений и добавить стили для каждого соединения. Автотрассировщик будет учитывать стиль каждого соединения, включая ширину проводников, характеристики переходов и зазоры.
Это технологическое ограничение современного автотрассировщика. Он бессеточный, и использует только прямоугольники.
Вы пробовали запускать различные инструменты оптимизации из меню Соединения → Оптимизировать дорожки?
Да, для 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
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.
$NAME.frontpaste.gbr
в gerbv.Кроме запуска команды проверки соответствия проектным нормам, очень важно проверить свои Gerber-файлы. В gEDA Suite эту задачу выполняет программа gerbv. Вот кое-что из того, что следует проверить:
Это значение ограничивает размер изображения в пикселах при сохранении отношения сторон. Например, при установке его в 400, плата размером 6000×8000 будет преобразована в изображение размером 300×400, но плата размером 6000×4500 будет преобразована в изображение размером 400×300.
В GTK-HID можно вызвать диалоговое окно настроек из меню
Файл. Во вкладке Цвета можно легко настроить любые цвета с помощью
удобного стандартного интерфейса выбора цветов GTK. При закрытии приложения
цвета сохраняются в $HOME/.pcb/preferences
.
В Lesstif-HID диалогового окна настроек нет. Цвета можно
настроить в $HOME/.pcb/settings
.
Можно задавать ключи диалогового окна печати в Postscript как параметры
командной строки при вызове pcb. Чтобы узнать доступные ключи, наберите
pcb --help
. Эти ключи можно задать и в файле
$HOME/.pcb/settings
. Файл, в котором настраивается печать на A4 без маркеров
выравнивания и задаётся многостраничный вывод, будет содержать:
media = A4 align-marks = 0 multi-file = 1
Поведение мыши нельзя настроить из графического интерфейса. Но его можно приспособить под свои нужды без перекомпиляции. Вот что надо сделать:
gpcb-menu.res
. Для интерфейса Lesstif есть подобный файл, называющийся pcb-menu.res
;$HOME/.pcb
;gpcb-menu.res
, будут замещены.В 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/
. Замечания о настройке
привязки клавиш и поведения мыши смотрите выше.
Быстрый ответ на свой вопрос можно получить в списке рассылки geda-user. Если вы не нашли ответа на свой вопрос о pcb на этой странице или в другой документации, пишите в список рассылки! Учтите, что прежде чем писать в этот список рассылки, на него нужно подписаться. Списки рассылки gEDA и их архивы можно найти на странице http://wiki.geda-project.org/geda:mailinglists.ru.
mv myfile.plated-drill.cnc myfile.unplated-drill.cnc
. Названия нужно
согласовать с производителем плат. — Прим. перев.