Как я впервые делал печатную плату при помощи KiCad

20 ноября 2017

Так исторически сложилось, что в качестве ПО для построения принципиальных схем и проектирования печатных плат долгое время я использовал EAGLE. Эта программа мне очень нравится низким порогом вхождения, наличием freeware версии, и, конечно же, поддержкой Linux. Столкнувшись в какой-то момент с ограничениями бесплатной версии (принципиальные схемы ограничены двумя листами, можно делать платы размером примерно до 10x10 см, число слоев в плате ограничено двумя) я решил купить EAGLE. И тогда я узнал, что компания-разработчик не продает его гражданам России. Вообще. Почему — не знаю. Тогда я впервые серьезно задумался о переходе на бесплатный и открытый KiCad.

А недавно, в силу некоторых нерелевантных причин, мне понадобилась небольшая платка — понижающий регулятор напряжения на 3.3 В, притом обязательно линейный, и питаемый от Mini или Micro USB. Импульсных регуляторов с AliExpress у меня хоть отбавляй, а вот платы с линейным регулятором что-то ни одной не нашлось. Можно было сделать и на макетке, но паять на ней разъем Micro USB не особо приятно. Вот я и решил сделать плату, ну и KiCad осилить заодно.

В Arch Linux лучше ставить KiCad из AUR:

yaourt -S kicad-git kicad-library-git

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

sudo pacman -S kicad kicad-library kicad-library-3d

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

Принципиальная схема, построенная в KiCad

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

В отличие от EAGLE, KiCad не присваивает имена компонентам сразу. То есть, вместо «C1» и «C2» сначала вы получите два «C?». Чтобы присвоить имена всем компонентам на схеме, следует воспользоваться диалогом Tools → Annotate Schematic. Если подумать, то это логично. В процессе работы над схемой вы можете создавать и удалять компоненты. Если присваивать им имена сразу, в нумерации могут образоваться дырки. И потом поди разберись, почему на шелкографии я вижу R10, R11 и R13, а вот R12 что-то нигде не могу найти.

Еще одно отличие от EAGLE заключается в том, что обозначение компонентов на принципиальной схеме и то, как они будут выглядеть на плате (footprints) разделено. Другими словами, когда вы рисуете схему и хотите добавить керамический конденсатор, вы просто добавляете керамический конденсатор. Будет ли это конденсатор для монтажа через отверстия, или SMD-компонент размера 1206, вы решите потом. Футпринт редактируется в свойствах компонента в поле Footprint. Если подумать, это тоже очень логично, и намного удобнее, чем сделано в EAGLE. Например, если я решил изменить футпринт компонента, мне не нужно удалять его на схеме и добавлять заново — я могу просто отредактировать его футпринт. Кроме того, по мере добавления новых компонентов в KiCad количество логических представлений и футпринтов растет линейно, а в EAGLE — квадратично. Другими словами, в KiCad проще найти то, что вы ищите.

Важно! В KiCad можно установить кучу дополнительных футпринтов. Делается это в приложении PCB Library Editor, в меню Preferences → Footprint Library Wizard. Там нужно выбрать импорт библиотек с GitHub и нажать пару раз Next → Next → Next.

Из интересного в Eeschema также есть возможность автоматического поиска ошибок, доступная в меню Tools → Eletrical Rules Checker. Как и другие ERC, которые мне доводилось использовать, этот иногда ругается по делу, а иногда генерирует предупреждения, которые я не понимаю. Поэтому в целом я стараюсь не слишком полагаться на ERC. Однако прогнать его разок прежде, чем перейти к проектированию платы, никогда не повредит.

За проектирование печатных плат в KiCad отвечает программа Pcbnew:

Печатная плата, спроектированная в KiCad

Поскольку это совершенно отдельная от Eeschema программа, для получения так называемого крысиного гнезда (rat’s nest) из принципиальной схемы в KiCad требуется дополнительный шаг. В Eeschema нужно сказать Tools → Generate Netlist File. Затем в Pcbnew сказать Tools → Read Netlist. Или, то же самое можно сделать быстрее, воспользовавшись меню Tools → Update PCB from Schematic в программе Eeschema. Затем раскидываем компоненты, соединяем их дорожками, рисуем заполненные области (filled zones) — в общем, как обычно. Разве что, особое внимание следует уделить Design Rules. Там настраиваются ширина дорожки, размеры отверстий, и другие параметры.

Отдельного упоминания заслуживает 3D Viewer (доступен в Pcbnew в меню View → 3D Viewer):

3D-модель будущей платы, построенная в KiCad

Возможность эта не только красивая, но и весьма полезная на практике. 3D Viewer позволяет убедиться, что все компоненты действительно будут расположены там, где вы думаете, что между ними достаточно свободного места, чтобы все это потом можно было спаять, и так далее.

Ситуация с автороутером в KiCad интересная. Своего автороутера у него нет, но он умеет интегрироваться со сторонним автороутером под названием FreeRoute. Для его использования нужно установить виртуальную машину Java. Затем скачать файл binaries/FreeRouting.jar из этого репозитория и сохранить его под именем /usr/bin/freeroute.jar. После этого автороутером можно будет воспользоваться в Pcbnew в меню Tools → FreeRoute. Автороутер вроде нормальный, работает.

Впрочем, в последнее время я предпочитаю разводить платы самостоятельно, чтобы точно понимать, где какая дорожка и зачем была проведена. Тем более, что при ручной разводке KiCad подсвечивает место, с которым должна быть соединена дорожка, и сам рисует ее с учетом настроенных Design Rules. То есть, для создания дорожки нужно сделать ровно два клика — откуда рисуем, и куда, остальное KiCad сделает автоматически. А при необходимости можно и подсказать, где именно должна проходить дорожка. Получается как бы полуавтоматический роутинг, сочетающий в себе сильные стороны ручного и автоматического подхода.

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

Моя первая плата, сделанная в KiCad

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

Для получения негатива, ровно как и рисунка для ЛУТ, нужно воспользоваться диалогом File → Plot в программе Pcbnew (не перепутайте с File → Print). В качестве формата выбираем PDF. Выбор между негативом и позитивом, а также зеркальное отражение — все настраивается. Если нужно распечатать сразу несколько копий, в главном окне Pcbnew можно выделить нужный фрагмент и скопировать его, нажав правую кнопку мыши и выбрав Create Array. При попытке напечатать получившийся PDF через Evince рисунок почему-то исказился вплоть до исчезновения дорожек. Если печатать при помощи утилиты lpr, то все хорошо. Кстати, файлы Gerber можно сгенерировать в том же диалоге, просто выберите вместо PDF формат Gerber.

Fun fact! KiCad использует текстовый формат файлов. Это не только хорошо работает с Git, но и позволяет быстро производить множество однотипных изменений в проекте. Например, изменить диаметр всех via можно одной консольной командой: sed -i.bak 's/drill 0.2/drill 0.3/g' main.kicad_pcb.

Итого, я безумно доволен, и теперь вообще не понимаю, зачем все это время страдал с EAGLE. KiCad открыт и бесплатен, работает везде, не имеет никаких ограничений, обладает громадной библиотекой компонентов, и в нем просто все работает. О чем еще можно мечтать?

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

Исходники к данной статье, как обычно, вы найдете на GitHub.

Дополнение: В KiCad 5.0 был добавлен SPICE-симулятор, основанный на ngspice. Пример его использования вы найдете в статье Базовые аналоговые фильтры: теория и практика.

Дополнение: Как оказалось, кастомные футпринты создаются довольно просто. Компонент нужно отсканировать на сканере (обычном, для бумаги), импортировать растровое изображение в Inkscape, обвести пады и прочие интересующие части, и сохранить результат в формате DXF. Или компонент можно обвести карандашом на листе бумаги и отсканировать этот лист. Затем DXF импортируется в Footprint Editor, в котором по имеющемуся рисунку располагаются пады, отверстия и шелкография. Главное — это при экспорте и импорте DXF указать «mm» в качестве base unit, иначе поползет масштаб. Последним шагом нужно удалить слой Dwgs.User, что делается прямым редактированием .kicad_mod файла футпринта в текстовом редакторе. Что же до кастомных символов, то они просто рисуются в Symbol Editor’е. Сделанные мной символы и футпринты можно посмотреть здесь.

Метки: .


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