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


Были сделаны полезные выводы, проведена дальнейшая работа, проект развивался. Появился интерфейс коммандной строки (CLI). На сегодняшний день можно говорить о некотором milestone: проект достиг версии 0.1.


В этот статье я рассмотрю типичный рабочий процесс по созданию платы в среде KiCad и использованием утилиты QEDA.


КДПВ


Предупреждение: будут картинки и, как следствие, трафик.


Вместо преамбулы


Кратко напомню, что для работы надо установить Node.js, а затем запустить в консоли (в *nix может потребоваться sudo):


npm install -g qeda

Ну и конечно же нам потребуется KiCad EDA, который также необходимо установить.


Описанная ниже разработка ведётся в Ubuntu Linux, но в общем случае (вероятно, с некоторыми поправками) возможна в любой ОС.


В данный момент проекту катастрофически не достаёт документации, но это планируется исправить в будущем.


Об устройстве


Устройство представляет собой адаптер для подключения Wi-Fi модуля ESP-07 к автопилоту Pixhawk.


Формирование библиотеки элементов


Собственно это и есть центральная часть нашего повествования.


Если всё установилось без ошибок, то в системе должна была появиться новая утилита коммандной строки. Проверим, что это так — запустим в консоли:


qeda --version

Если вы видите что-то вроде...


QEDA v0.1.4

… значит мы можем продолжать.


Для начала выберем папку для будущего проекта. В моём случае это будет директория wifi-adapter.


mkdir wifi-adapter
cd wifi-adapter

Шаг 1. Выбор производителя печатных плат


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


Итак, для примера возьмём OSH Park. Из существенных для нас являются требования по:


  • минимальному расстоянию между проводниками: 6 mil (0.2 mm) minimum spacing
  • минимальному диаметру отверстия: 13 mil (0.4 mm) minimum drill size
  • минимальной ширине ободка металлизированного отвестия: 7 mil (0.2 mm) minimum annular ring

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


Создадим папку для будущей библиотеки элементов:


mkdir lib
cd lib

Теперь используя консольную команду qeda пропишем вышеупомянутые ограничения. Повторюсь, что пока команды не документированы, так что пока буду пояснять их по месту.


qeda config pattern.clearance.padToPad 0.2 # минимальный зазор между контактными площадками
qeda config pattern.minimum.drillDiameter 0.4 # минимальный диаметр отверстия
qeda config pattern.minimum.ringWidth 0.2 # минимальная ширина ободка металлизированного отвестия

После выполнения этих команд в текущей директории появится файл .qeda.yaml, который хранит все указанные настройки.


Шаг 2. Прочие настройки


Мы можем выбрать предпочитаемый способ генерирования посадочных мест (pattern) микросхем: рекомендуемый производителем или по стандарту IPC-7351. По умолчанию задан рекомендуемый производителем (значения по умолчанию задавать в настройках не обязательно, но мы продублируем их для демонстрации возможностей):


qeda config pattern.preferManufacturer true

Те элементы, в чьих описаниях не содержится рекомендаций производителя, рассчитываются по стандарту IPC-7351. Стандарт предусматривает три уровня плотности компоновки (density level):


  • Least (L) — самый плотный (рекомендуется при ограниченных габаритах печатной платы)
  • Nominal (N) — нормальный (рекомендуется в большинстве случаев)
  • Most (M) — наименее плотная компоновка (рекомендуется для плат, рассчитанных на жёсткие условия эксплуатации)

Так как мы не ограничены в габаритах, выбираем наименее плотный вариант:


qeda config pattern.densityLevel M

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


qeda config pattern.minimum.spaceForIron 0.5

Также есть возможность настроить следующие параметры (в скобках указаны значения по умолчанию):


  • pattern.clearance.padToMask (0.05): расстояние от края контактной площадки до края маски (раскрытие маски)
  • pattern.minimum.maskWidth (0.2): минимальная ширина пояска маски (имеет приоритет над предыдущим параметром)
  • pattern.lineWidth.silkscreen (0.12): толщина линии в слое шелкографии
  • pattern.fontSize.refDes (1.2): высота шрифта для позиционных обозначений (reference designator)

Мы оставим эти параметры по умолчанию.


Кроме этого, есть возможность задать кое-какие настройки будущих условных графических обозначений (УГО) элементов (schematic symbol):


  • symbol.style ('default'): стиль начертания УГО, альтернативный вариант: 'GOST'
  • symbol.gridSize (2.5): размер ячейки сетки привязки
  • symbol.fontSize.refDes (2.5): высота шрифта для позиционных обозначений (reference designator)
  • symbol.fontSize.name (2.5): высота шрифта для наименования элемента
  • symbol.fontSize.pin (2.5): высота шрифта для обозначения выводов

Их так же трогать не будем.


Шаг 3. Добавление элементов


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


qeda add espressif/esp-07 # модуль Wi-Fi
qeda add capacitor/c0603 # конденсатор 0603
qeda add capacitor/c1210 # конденсатор 1210
qeda add resistor/r0603 # резистор 0603
qeda add misc/tp-th-1 # метализированное отверстие (testpoint)
qeda add ti/lm1117mpx # LDO
qeda add hirose/df13a-6p-1.25h # разъём


Если нужного элемента не оказалось в репозитории, необходимо создать поддиректорию library и добавить туда описание элемента в формате YAML.


Добавим ещё символы питания и земли:


qeda power +5V # питание +5 В
qeda power +3V3 # питание +3.3 В
qeda ground signal/GND # сигнальная земля (допустимые префиксы: 'chassis/', 'earth/' и без префикса)

Шаг 4. Генерация библиотеки


Ну вот мы и подошли к основному и самому простому шагу. Назовём нашу библиотеку wa.


qeda generate wa

Если процесс завершился без ошибок, то в текущей директории lib должны появиться две поддиректории:


  • library, содержащая кэшированные YAML-описания используемых элементов
  • kicad с библиотечными файлами, предназначенными для KiCad

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


Проектирование схемы


Создадим проект KiCad в директории wifi-adapter/board.


Так как наша библиотека элементов является самодостаточной, можно удалить все библиотеки KiCad'а по умолчанию, и добавить только нашу wa:


Eeschema Properties


Рисуем схему:


Schematic


А в стиле GOST схема выглядела бы так:


Schematic GOST


QEDA избавляет от необходимости такого этапа, как ассоциирование посадочных мест условным графическим обозначениям (assign component footprint), так как каждому элементу уже ассоциировано уникальное посадочное место. Иначе говоря, Cvpcb запускать не придётся.


Генерируем netlist.


Проектирование печатной платы


Для начала так же сообщаем редактору, что надо черпать посадочные места из нашей свежеиспечённой библиотеки wa. Для этого в директории проекта создаём файл fp-lib-table со следующим содержимым:


(fp_lib_table
  (lib (name wa)(type KiCad)(uri ${KIPRJMOD}/../lib/kicad/wa.pretty)(options "")(descr ""))
)

Импортируем netlist, делаем auto-spread.


Footprints


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


PCB


Realistic 3D:


PCB 3D


Генерируем gerber'ы и можно отдавать в производство.


Заключение


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


Планы на будущее:


  • Испытать утилиту на более сложном проекте многослойной платы и довести её до производства.
  • Документировать все настройки и возможности.
  • Запустить веб-сервис, облегчающий работу с утилитой.
  • Развивать сервис в сторону поддержки новых функций и разных EDA.

Исходники:


Поделиться с друзьями
-->

Комментарии (13)


  1. maisvendoo
    14.08.2016 16:41
    +2

    Отрадно что появляются статьи по такому замечательному проекту как KiCAD. Весьма достойная альтернатива коммерческим продуктам. Использую в

    своих любительских проектах


  1. user343
    14.08.2016 19:47

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


    1. argz
      14.08.2016 19:58

      Там всё прозрачно.
      Плюс OSHPark генерирует картинки послойно, на которых можно посмотреть, правильные ли гербера отосланы.


      1. madf
        15.08.2016 12:02

        на их превьюхе не всё видно, была у них технологическая проблема, с убогим качеством шелкографии… теперь они вроде исправились
        а так да, OSH — молодцы


    1. shamilsan
      14.08.2016 20:26

      Вот здесь есть рекомендации самого производителя по генерации gerber.


    1. SL_RU
      15.08.2016 11:56
      +2

      Ещё есть замечательная программка ZofzPCB. Она позволяет просматривать герберфайлы в 3д, послойно, детально и вообще как угодно. Автоматически можно проверить на наличие ошибок и прочего. Даже не знаю, как без неё раньше жил — теперь ни одну платку теперь в релиз не пропускаю без проверки тут.


  1. user343
    14.08.2016 21:04

    Спасибо. А то их можно экспортировать хоть из sprint layout (у меня windows), но из такой простой программки потом дюймы/миллиметры китайцы не так поймут или чего-нить не просверлится на пр-ве и «плакали денежки». А gerbv (gerber viewer), которым я раньше пользовался, таких ошибок на экране не покажет.
    Ещё вопрос по статье:
    последняя картинка с названием «Realistic 3D» точно трёхмерная?
    Может спец. очки одевать надо или анимацию и флэш в браузере включать?
    ПМСМ должно быть как-то так: http://dangerousprototypes.com/docs/images/f/f8/Kerkythea_front.jpg


    1. shamilsan
      14.08.2016 21:15

      Это просто скриншот из 3D Viewer'а, который входит в состав KiCad. Ну да, согласен, трёхмерного в данном скриншоте мало :)
      Просто пока утилита не поддерживает генерацию 3D-изображений самих элементов, поэтому отображается только сама плата, но зато близко к тому, как она будет выглядеть в жизни.


  1. tvi
    14.08.2016 21:16

    К Kicad'у, кстати приложили руки ребята из ЦЕРН. а они весьма толковые вещи используют.


  1. madf
    15.08.2016 12:08

    Куча сапров существует (платных/бесплатных) и неважно в чем и как делается, главная проблема — это откуда брать новые элементы схем (про модели даже не говорю) и тут всё упирается в удобство, простоту и быстроту создания новых элементов…


    1. user343
      16.08.2016 10:47

      Для популярных коммерческих CAD сами производители микросхем часто элементы выкладывают.
      Любительским сапрам приходится отставать или конвертеры делать.
      например
      http://www.ti.com/product/LM5041/toolssoftware — для относительно новых микрух только SPICE модели
      TPS65982 — есть Design Files для 2х сапров (кажется).


      1. madf
        16.08.2016 11:07

        Сколько пользуюсь «производителями микросхем», очень малая доля кто так делает. Скорее «нет» — чем «да».
        А ровняться на всё новое, не удачный пример для частного использования, радиолюбительства (порой дорого и хрен достанешь). Да и не всегда стараешься брать такие корпуса, которые обычным паяльником фиг припаяешь.


        1. shamilsan
          16.08.2016 12:50

          Вот и меня не устраивают ни обрывочные библиотеки от производителей, ни генераторы типа Ultra Librarian, ни редакторы элементов во многих САПР. Именно для преодоления этого всего и был задуман проект QEDA. Сейчас использую его в связке с KiCad для проектирования более или менее серьёзной платы, лично для меня очень удобно.