Эта статья является приложением к циклу статей "KiCad для начинающих". Она не была запланирована, но у одного читателя возникли сложности с подключением и использование сторонних библиотек компонентов и посадочных мест. Поскольку подобные проблемы могут возникнуть и других читателей, особенно, в связи с выходом версии 6.0.0, подробный разбор проблем и путей их решения может оказаться полезным.
В статье будет показана и работа в старой (5.1.12, Windows 10) версии KiCad, и в новой (6.0.0, Linux). И различия между версиями будут значимыми.
В качестве примера будет использована именно та самая библиотека. Точнее, одна из трех библиотек. И начать нужно с того, что библиотеки были конвертированы (не мной!) из Eagle, причем не самой старой версии (9.2.2). Конвертация выполнялась расширением eagle-lbr2kicad-1.0.ulp, но она не совсем корректна. Точнее, после конвертации библиотеки никакой обработке не подвергались. И это первая проблема.
Вторая проблема в том, что библиотека посадочных мест конвертировалась в совсем уж старый формат KiCad. А это означает, что внести в нее изменения невозможно. При этом пользоваться библиотеками, даже в таком виде, все таки возможно. Но, безусловно, лучше будет перенести из них все необходимое в новые библиотеки. И отредактировать.
О библиотеках рассказывалось в двух статьях цикла. Приведу ссылки на них, что бы не повторяться
Подопытные библиотеки читатель нашел на GitHub, вот ссылка
https://github.com/judge2005/Eagle-and-KiCAD-Nixie-Libs
В статье будет рассматриваться только nixies-us, но с остальными библиотеками все точно так же.
Различия версий библиотек
Да простят меню любители ретро, четвертую ветку KiCad я не буду рассматривать ни в каком виде.
KiCad 5.x.x
Как вы должны помнить, в пятой ветке библиотеки компонентов являются текстовыми файлами с расширением .lib. Причем он сразу считался Legacy (унаследованный, старый). Все компоненты библиотеки располагаются в едином файле. Включая УГО, описания выводов, дополнительные параметры, ссылки на посадочные места
Иные форматы библиотек компонентов недоступны. Впрочем, мы это подробно рассматривали ранее.
А вот для библиотек посадочных мест выбор вариантов больше. Причем есть возможность использовать и форматы сторонних программ
Ранее мы рассматривали работу именно с форматом KiCad, и только с ним. Библиотеки этого формата являются каталогами (расширение имени .pretty) в которых располагаются файлы с расширением .kicad_mod. Каждый такой файл и является одним посадочным местом.
Устаревший (Legacy) формат хранит все посадочные места в едином файле с расширением .mod. Однако, этот формат поддерживается только для чтения. То есть, посадочные места из такой библиотеки использовать можно, но никакие изменения внести нельзя
Но с этим мы чуть позже разберемся, тут все просто. Другие форматы рассматривать сегодня не будем. Как и 3-х мерные модели.
KiCad 6.x.x
Библиотеки символов в новой, шестой, ветке KiCad стали доступны в двух форматах
Старый формат, файлы .lib, мы уже знаем. Библиотеки нового формата хранятся в файлах .kicad_sym. При этом все компоненты по прежнему располагаются в едином файле, только его содержимое стало другим. Но файл по прежнему текстовый. Переключение формата библиотеки никак не изменяет самой библиотеки. Оно влияет только на то, как KiCad будет работать с такой библиотекой. Преобразовать и старого формата в новый возможно. Кнопка миграции на иллюстрации видна. Старая библиотека при этом сохранятся.
Форматы библиотек посадочных мест не изменились
Но возможность использования GitHub напрямую пропала. Впрочем, невелика потеря.
Точно так же, как в пятой ветке, можно использовать библиотеки посадочных мест устаревшего формата, но нельзя их изменить
Подопытные библиотеки
Ссылку на библиотеки Nixies я уже давал. Теперь рассмотрим их подробнее. Каждая из библиотек, а их всего три (mynixies, nixies-us, nixiemisc) представления набором из трех файлов
- lbr - это оригинальный файл библиотеки Eagle, который и конвертировался
- lib - библиотека символов KiCad. Это Legacy формат. На первый взгляд, проблем не должно быть, но это не так. Скоро увидим
- mod - библиотека посадочных мест KiCad. И это тоже Legacy, что уже является проблемой, как мы видели чуть ранее.
Для работы в KiCad нам потребуются только файлы .lib и .mod. Но возни будет не мало.
Подключаем библиотеку компонентов
Настоятельно не рекомендую размещать собственные библиотеки в одном каталоге со стандартными. Тем более, сторонние библиотеки. Как говорится, вас предупредили.
Поскольку устаревший формат поддерживается и в старых версиях KiCad, и в новой, процесс подключения будет очень похож. Я покажу его на примере KiCad 6.0.0
В KiCad пятой ветки просто из вариантов формата (правый нижний угол) будет доступен только legacy (*.lib).
Более подробно мы этот процесс уже рассматривали в статьях цикла, поэтому я показал лишь отличия. Можно добавить и три библиотеки сразу, но я добавляю только nixies-us, как и обещал.
После добавления у нас в списке подключенных библиотек компонентов (символов) появится nixies-us и ее тип будет определен корректно - Legacy
Для KiCad 5.x.x больше ничего не требуется, а для KiCad 6.x.x нужно выполнить преобразование в новый формат нажав кнопку "Migrate Libraries". Без этого мы не сможем редактировать библиотеку.
Теперь можно открыть редактор компонентов, найти нашу библиотеку и посмотреть, все ли правильно подключилось
Да, все правильно. На первый взгляд! Но с этим будем разбираться позже. Иллюстрация сделана в KiCad 6.0.0, но в и в 5.1.12 все будет так же. Можно закрыть редактор и приступить к подключению библиотеки посадочных мест.
Подключаем библиотеку посадочных мест
Настоятельно не рекомендую размещать собственные библиотеки в одном каталоге со стандартными. Тем более, сторонние библиотеки. Как говорится, вас предупредили.
С библиотеками посадочных мест нам придется рассмотреть версии KiCad по отдельности, так появляются нюансы.
KiCad 5.1.12
Видно, что в окне выбора библиотеки есть возможность выбрать и формат. Да, можно оставить вариант по умолчанию "Все поддерживаемые форматы", но лучше немного подсказать KiCad и сразу выбрать "KiCad Legacy (*.mod)". Осталось выбрать файл .mod с нашей библиотекой и работа закончена.
Запускаем редактор посадочных мест и проверяем
На первый взгляд, все в порядке. Но это, увы, не так. Разберемся чуть позже.
KiCad 6.0.0
Пробуем повторить все действия в новой версии. И вот тут нас ждет небольшой "УПС!"....
Возможность выбора формата библиотеки просто не предусмотрена. Мы не можем открыть файл. Мы может только открыть каталог, что соответствует формату KiCad, а не Legacy. Как быть? Придется поработать руками...
Мы можем попробовать добавить и пустую строку, заранее выбрать формат Legacy и попробовать указать файл. Все будет точно так же, можно задать каталог, но нельзя файл. Тем не менее, можно вручную ввести полное имя файла библиотеки (с полным путем). Вводить все вручную немного лень, поэтому добавим каталог, хоть это о неверно. Получим такое
Теперь сменим формат на Legacy и кликнем по пути к каталогу. Нам потребуется добавить в конец пути имя файла. Вот так
Одновременно я изменил и имя библиотеки на nixies-us, так как имя каталога не является названием библиотеки.
Запускаем редактор посадочных мест и проверяем
На первый взгляд, все хорошо. Но мы то уже знаем, что впереди еще много засад!
Повторюсь, можно добавить в список библиотек пустую строку и заполнить все поля вручную. Результат будет тем же самым. Даже по трудоемкости не намного сложнее.
Пробуем использовать подключенные библиотеки
Давайте создадим пустой проект. Принципиальная схема будет тривиальной, состоящей из одного единственного индикатора ИН-8. Вот иллюстрация для KiCad 5.1.12
Для KiCad 6.0.0 внешний вид будет немного другой, но суть та же самая. Я уже задал позиционный номер для индикатора. Проверку правил выполнять не будем, сразу переходим к печатной плате и переносим туда наш единственный компонент.
И тут нас поджидает очередной "УПС!"....
Ровно тоже самое будет и в версии 6.0.0, только внешний вид немного иной. Не удалось найти посадочное место. Но мы же подключили библиотеку посадочный мест, в чем же дело? А вот с этим и давайте разбираться.
Разбираемся с компонентом
Давайте запустим редактор компонентов и откроем в нем IN-8. Сначала все будем делать в версии 5.1.12. Мы уже знаем, что внешне проблем не видно, поэтому давайте заглянем в свойства компонента
Здесь тоже не видно никаких проблем. Посадочное место назначено, да и в списке посадочных мест (на соответствующей вкладке) указан шаблон *IN-8*. Правда имени посадочного места не предшествует имя библиотеки, как мы привыкли. Возможно, в этом и кроется проблема? Давайте выполним привязку посадочного места еще раз
Я не показываю, как выполняется привязка, мы этот вопрос подробно рассматривали в предыдущих статьях. Сохраняем отредактированный компонент и библиотеку. Снова пытаемся перенести компоненты из схемы на плату. УРА! Теперь у нас все получилось.
Для проверки, что проблема действительно решена, давайте отредактируем компонент IN-14 и добавим его в схему. После чего, снова перенесем компоненты схемы на плату. И снова все получилось!
Пробуем использовать тот же самый способ и в версии 6.0.0. Точно так же, выполняем снова привязку посадочного места к компоненту для IN-8 и IN14. Добавляет эти компоненты в схему и переносим их из схемы на плату. И снова у нас все получилось!
Еще раз обращаю ваше внимание, что для версии 6.0.0 обязательно выполнить миграцию библиотеки компонентов в новый формат! Иначе ничего не получится.
Таким образом, мы "починили" нужные нам компоненты в библиотеке. Разумеется, это же (перепривязка посадочного места) нужно сделать и для оставшихся компонентов библиотеки.
Проблема возникла из-за того, что исходная библиотека была конвертирована, но не отредактирована после этого. И мы это исправили.
Разбираемся с посадочным местом
Увы, то, что у нас все получилось, еще не означает, что проблем не осталось. Давайте еще раз посмотрим на посадочное место, например, IN-8 (иллюстрация из Kicad 6.0.0)
Ничего не замечаете, ничего не кажется странным? Обратите внимание на странную надпись ">NAME". Это наследие из Eagle, так указывается место отображения позиционного обозначения компонента в этой программе. В KiCad нужно использовать "REF**". Кроме того, и надпись "Val**" в KiCad не используется, вместо этого должно указываться имя посадочного места. К тому же, оно должно располагаться в слое F.Fab, а не F.Silkscreen.
Что бы все исправить, открываем свойства посадочного места. И сразу видим еще одну проблему
Здесь я уже заменил ">NAME" на "REF**", занес в поле "Значение" имя посадочного места, и сменил слой на F.Fab. А проблема кроется в типе посадочного места. Да, тип "Other" (иное) тоже допустим, но у нас все таки выводной компонент. Потому давайте выберем "Выводной монтаж". Осталось нажать ОК.
Контактные площадки подозрений не вызывают, и с ними действительно все в порядке (можете проверить). Графические элементы располагаются в слое F.Silkscreen и не перекрывают контактные площадки, поэтому они будут нанесены на плату и проблем при этом не возникнет. Все? Не, не все. Отсутствуют границы посадочного места. Добавьте их самостоятельно.
Результат будет примерно таким (KiCad 6.0.0)
И тут нас ждет очередной "УПС!", правда мы его видели в начале статьи. Мы получаем сообщение, что сохранить в старом формате нельзя.
И вот тут мы опять разделяем две версии...
KiCad 6.0.0
Нам предлагают сохранить библиотеку в новом формате (.pretty). Хорошо, попытаемся это сделать. И нас ждет очередной "УПС!"...
Вариант "Сохранить как" просто недоступен! Значит, нам предлагали сделать то, что сделать нельзя. Обидно, но ничего не поделать. Нужно создать новую библиотеку и перенести посадочное место в нее. Или использовать уже существующую библиотеку нового формата.
Перенос, точнее, создание копии посадочного места, делается кликом правой кнопкой мыши на нашем отредактированном компоненте в списке компонентов библиотеки
Откроется окно, в котором можно выбрать библиотеку, куда будет помещена копия посадочного места, и имя, которое будет иметь копия
Все, теперь осталось еще раз выполнить привязку посадочного места к компоненту, уже из новой библиотеки, нами отредактированному.
И так для всех посадочных мест и компонентов. Сложно? Нет, не сложно. Но ручных действий много. Тут нет злого умысла, просто предполагалось, что пользователи KiCad 6.х.х или ранее пользовались версиями 5.х.х, а значит, библиотеки все таки более свежего формата, или совсем новые пользователи, и библиотеки у них старые отсутствуют.
KiCad 5.1.12
А вот тут все гораздо проще. Мы можем проста напросто сохранить всю библиотеку в новом формате
Откроется окно, где можно выбрать место расположения библиотеки и имя библиотеки (имя каталога, как мы помним). Тип автоматически выбран новый.
Нажимаем "Сохранить" и получаем преобразованную библиотеку, уже подключенную. Старая сохраняется, но ее можно спокойно отключить и удалить.
Заключение
Вот, собственно говоря, и все. После всех этих действий библиотеками можно пользоваться.
При этом не нужно считать, что такие сложности и проблемы возникают всегда при использовании сторонних библиотек. Вовсе нет! Более того, описанный в статье случай действительно сложный и нетипичный. Это комбинация конвертированной библиотеки из совсем другой программы, что уже требует особого внимания, плюс совсем древний формат библиотеки посадочных мест.
Неудивительно, что он вызвал затруднения у читателя, который только недавно стал использовать KiCad. Поэтому я посчитал полезным подробно, иногда, возможно, излишне подробно, описать и проблемы, и пути их решения.
В том, что мы сегодня делали, нет ничего особенно сложного или необычного. Для новичков затруднения вызваны тем, что нужно хорошо представлять все взаимосвязи элементов KiCad. Поэтому я все очень подробно описывал ранее, и для компонентов, и для посадочных мест. Но, видимо, этого оказалось недостаточно для случаев посложнее.
Вот так и появилась сегодняшняя статья-приложение к циклу.
Остались вопросы? Хотите что то уточнить? Задавайте вопросы в комментариях. Обязательно со всеми вопросами разберемся.