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

Но есть проблема: профессиональный CAD-редактор стоит не дёшево, а свободно распространяемые не всегда удобны в использовании.

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


Для примера нарисуем модель микроконтроллера STM32F405xx в корпусе LQFP64. Всю необходимую информацию для работы берем из datasheet.





1. Подготовка Blender'а


Запускаем Blender и для начала удаляем все не нужные компоненты со сцены: свет, куб и камеру. Выделяем объект правой кнопкой мыши и нажимаем «X». Либо выделяем все объекты кнопкой «A» и затем «X».

Для дальнейшей работы нам понадобится боковая панель настроек, для её вызова нажимаем «N». Окно, готовое к работе должно выглядеть примерно так:



Для удобства отключим режим отображения перспективы – цифра «5» на дополнительной клавиатуре.

Оси координат в Blender’е и в KiCad’e не совпадают, поэтому нашу микросхему мы будем рисовать так, чтобы её высота совпадала с осью Y, а длина и ширина с осями X и Z соответственно. Перейдём на вид справа нажатием цифры «3» на дополнительной клавиатуре. Если 3D-курсор находится не в центре, комбинацию клавиш Shift + C.

2. Создаём корпус микросхемы


Корпус микросхемы создадим из куба. Слева в панели Create выбираем фигуру Cube. Или с помощью комбинации клавишь Shift + A в выпадающем меню выбираем Mesh > Cube.



Появившийся куб расположен в центре сцены и имеет размеры 2х2х2 условных единиц. Это видно в правой боковой панели (которую мы вызвали нажатием клавиши «N»). Если изменить сейчас размеры куба, то вместе с размерамы будет изменяться и масштаб фигуры, что в дальнейшем может привести к странным эффектам. Поэтому сбросим масштабирование: выделяем объект и выбираем внизу в панели Object > Apply > Scale (или Cntrl + A; S).

3. Задаём размеры микросхемы


Теперь зададим размеры корпуса. В datasheet находим длину, ширину и высоту корпуса микросхемы: 10 мм на 10 мм на 1.45 мм (макс.). Эти числа используем в качестве размера нашего пока ещё куба. Как уже упоминалось выше, размеры по X и Z – длина и ширина, а размер по оси Y – высота.



4. Размещаем корпус микросхемы


Следующим шагом разместим корпус на правильной высоте. Для этого перейдем в режим редактирования объекта (кнопка «Tab») и выберем поверхность в качестве элемента редактирования (face select). Затем выберем верхнюю поверхность микросхемы – она у нас находится справа и нажмём комбинацию клавиш Shift + S > Cursor to selected:



Выходим из режима редактирования кнопкой «Tab». Далее в окне Tools > Edit устанавливаем точку привязки фигуры с помощью Set Origin > Origin to 3D Cursor.



Видим, что теперь положение объекта по оси Y изменилось с нуля на 0.725. Разместим объект так, что бы верхняя часть корпуса была смещена относительно начала координат на 1,6 мм – это наша максимальная высота компонента.



5. Добавляем рёбра


Габариты корпуса заданы верно. Теперь можно косметически улучшить вид, добавив рёбра, как показано в pdf. Точных размеров там нет, поэтому сделаем это на глаз.

Переходим в режим редактировани (клавиша «Tab») и выбираем ребро как объект редактирования (edge select). Зажав клавишу Shift выделяем четыре боковых ребра объекта.



К выделенным элементам применим функцию Bevel – внизу на панели выбираем Mesh > Edges > Bevel, или жмём Cntrl + B. Далее либо на клавиатуре вбиваем число (к примеру 0.05), либо перемещая мышь выбираем нужный размер фаски.



Теперь сделаем скосы сверху и снизу копуса микросхемы, как показано на виде микросхемы сбоку.

Для этого в режиме редактирования добавим новое ребро: в меню Tools > Loop Cut and Slide или комбинацией Cntr + R. Расположим ребро, как показано на рисунке.



После нажатия правой кнопку мыши, ребро автоматически расположится в центре фигуры. И к нему сразу применим модификатор Bevel, как мы это проделывали с боковыми рёбрами. Размер зададим равным 0.2 (максимальный размер «с» на чертеже).

Теперь уменьшим верхнюю и нижнюю поверхности микросхемы. Включаем режим редактирования поверхностей (Face select) и выделяем верх и низ микросхемы. К двум выделеным поверхностям применим модификатор Scale (клавиша «S»). С помощью мыши на глаз, или вбив определённое число (к примеру 0.96) масштабируем выбранные поверхности.



6. Создаём первый вывод


Можно сказать, что корпус микросхемы готов. Осталось к нему приделать 64 вывода. Для начала рассчитаем положение первого вывода микросхемы. Размер «Е» (12 мм) на чертеже делим пополам и получаем внешюю координату по оси X = 12/2 = 6. Положение по оси Z в нашем случае равно Z = 0.5/2 + 0.5 * 9 = 4.25

Предварительно выйдя из режима редактирования и сняв выделение с корпуса, создадим поверхность, которую в дальнейшем преобразуем в контакт. Перейдем к виду справа (цифра «3» на дополнительной клавиатуре). И далее Create > Plane (Shift + A > Mesh > Plane). Повернём ее «лицом» к нам: Align to View и зададим расчитанные координаты:



Для дальнейшей обработки сбросим масштабирование и поворот фигуры: Object > Apply > Rotation and Scale. Или Cntrl+A > Rotation and Scale. (Как в шаге 2). Теперь нашей поверхности зададим размеры вывода в сечении: по ширине размер b = 0.27 мм (ось Z), по высоте размер с= 0.2 мм (ось Y). И по координате Y сместим её на значение, равное 0.1



Теперь «выдавим» из поверхности форму ножки микросхемы. Перейдём к виду сверху («7» на дополнительной клавиатуре). Включим режим редактирования — «Tab» и выделим созданную поверхность. С помощью Tools > Extrude > Region (или клавиши «Е»), затем «Х» (по оси Х), введём -0.6 с клавиатуры и «Enter». Число 0.6 у нас соответствует размеру L на чертеже.

Цвет ножки отличается от цвета микросхемы, потому что она оказалась «вывернута» наизнанку. Если включить отображение нормалей, то можно увидеть, что они все направлены внутрь. Исправим это: выделим фигуру клавишей «А» и в панели Shaidng/UV > Normals нажмём Flip Direction. Теперь фигура построена верно.



Избежать этой процедуры можно было бы развернув поверхность на 180 градусов перед операцией «выдавливания».

Создадим дополнительное ребро на выводе микросхемы с помощью команды Tools > Loop Cut and Slide (или Cntrl + R) и расположим его ближе к внутреннему краю.



Выделим верхний сегмента на созданнай поверхности и выдавим ее (клавиша «Е») вверх по координате «Y» до середины микросхемы.



Новую поверхность сместим слегка в сторону микросхемы: «G» — переместить, «Х» — только по оси Х.



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



Для красоты подвинем угловые рёбра, и получим вполне симпатичную ножку микросхемы.



7. Клонируем вывод микросхемы


С помощью модификатора Array создадим 18 выводов микросхемы с одной стороны. Для начала сбросим позицию и масштабирование вывода. Выходим из режима редактирования «Tab», выделяем ножку, и применяем Apply > Location, Rotation, Scale. Это необходимо, чтобы для следующего модификатора корректно расчиталось смещение клонированных объектов.
Добавляем модификатор Array.



В параметрах модификатора задаём количество = 18, выделяем смещение Constant, и расстояние по оси Z = -0.5



Получили ряд выводов. Создадим их копии для оставшися трёх сторон. Для этого убираем выделение со всех объектов, устанавливаем 3D-курсовр в центр – Shift + C. И создаём пустой объект – Shift+A > Empty > Plain Axes.



Теперь выделяем созданный ранее вывод микросхемы, и создаём ещё раз модификатор Array. Только на этот раз выбираем Object offset, и созданный ранее Empty-объект. Количество копий указываем равным 4.



Чтобы расположить созданные копии в правильном положении, выделяем Empty объект и поворачиваем его относительно оси Y на 90 градусов. Кнопки «R» и «Y», затем вбиваем значение угла «90».



8. Цвет микросхемы


Покрасим для красоты нашу микросхему и выводы в разные цвета. Выделим корпус микросхемы, и в закладке материалов создадим новый материал:



И присваиваем ему тёмно-серый цвет:



Ту же самую операцию проделываем для выводов микросхемы, но цвет делаем чуть поярче.

На этом создание микросхемы можно считать законченым.

9. Экспортируем полученую модель в KiCad


Экспортируем модель в формат vrml. File > Export > VRML2. Если такого меню нет, то сначала идём в File > User Preferences… > Add-ons. В поиске вбиваем vrml и устанавливаем флажок напротив Import-Export VRML2 и Import-Export Web3D X3D/VRML2 format.



При экспорте нам нужно привести единицы измерения к дюймам. Для этого в поле Scale вводим число 0.393701 (1 mm/ 2.54 inch = 0.393701).



Всё, модель микросхемы готова.

10. Подключаем модель в KiCad’e


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



Созданную таким методом микросхему вполне можно использовать для визуального контроля посадочной площадки.

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


  1. gopotyr
    09.07.2018 14:34

    Abwindzentrierer,
    молодец, продолжай! Я только начал ковырять KiCad. Статьи — полезные.


    1. MrJones
      12.07.2018 11:01

      Советую Вам ознакомиться с САПРом Altium Designer версии 16 и старше.
      В рамках данной публикации можно отметить, что в AD есть встроенный генератор 3D-моделей, да и в целом он имеет больший функционал.
      Если Вас интересует KiCAD ввиду его свободного распространения, то могу отметить, в данном сегменте нет ничего лучше KiCAD)


  1. oisee
    09.07.2018 15:04

    «Проектируя печатные платы часто возникает потребность добавить трёхмерную модель электронного компонента на плату.»

    <шутка про проезжавшую мимо слетевшую шляпу>
    Что-то это случается слишком часто, потому не личкой:

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

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

    Подробнее: www.mn.ru/society/edu/88769


    1. Abwindzentrierer Автор
      09.07.2018 15:15

      Проверяя свою следующую статью, я буду стараться сразу исправлять подобные ошибки :)


  1. Sl-Alex
    09.07.2018 15:15

    Спасибо за статью! Знал бы я раньше, что и как в Blender делать, возможно, не стал бы всё полностью в OpenSCAD создавать. А есть ли возможность сделать эту модель параметризуемой, чтобы не переделывать её каждый раз под другой размер корпуса или шаг выводов?


    1. Abwindzentrierer Автор
      09.07.2018 15:22

      Да, для Blender'а можно писать свои скрипты и дополнения на Python. И такие задачи можно было бы автоматизировать. Но пока что на создание описанного в статье компонента у меня уходит 5-10 минут, поэтому отсутствует мотивация в создании подобной программы.


    1. DonAgosto
      09.07.2018 21:52

      Если нужно бесплатно и с параметризацией — FreeCAD отличный вариант. Классический твердотельный CAD. API на Python присутствует — можете свой собственный генератор компонентов сделать.


      1. DonAgosto
        09.07.2018 22:08
        +1

        Да вот уже оказывается все сделали :) —
        github.com/easyw/kicad-3d-models-in-freecad
        github.com/easyw/kicadStepUpMod

        Но вобще, что касается стандартных компонентов, сейчас и моделировать обычно не требуется — в большинстве случаев все уже есть на GrabCAD или TraceParts. Скачиваем step/iges/etc., импортируем в какой-нито CAD, проверяем/редактируем, дальше через VRML в KiCad


        1. Sl-Alex
          09.07.2018 22:43
          +1

          Да, FreeCAD отличная штука, но в итоге для стандартных SMD корпусов (SO, TQFP и т. д.) я использую один гибкий OpenSCAD шаблон. Надо другой корпус — вбил цифры, сгенерировал, раскрасил. Готовые нестандартные или сложные компоненты из интернета тоже очень помогают. В итоге самому создавать приходится достаточно редко, но ещё один альтернативный вариант с пошаговой инструкцией для такого творчества точно лишним не будет.


          1. semen-pro
            10.07.2018 12:53

            Разве OpenSCAD не встроен в FreeCAD? или мне показалось?


            1. Sl-Alex
              10.07.2018 13:24

              Да, там есть модуль OpenSCAD, вроде бы и экспорт в этом формате поддерживается, но наибольшая гибкость в параметризации получается, если писать сразу в OpenSCAD, тогда можно и тригонометрию и другие функции использовать.


    1. antage
      10.07.2018 01:25

      Вы считаете что в Blender корпуса создавать удобнее? Если да, расскажите подробнее почему.
      Я вот наоборот, читая статью, думал "насколько же проще можно было бы это сделать в OpenSCAD".


      1. Abwindzentrierer Автор
        10.07.2018 08:45

        Моё мнение, что Blender удобнее, чисто субъективное. Я с ним лучше знаком. Опять же, Blender это не CAD программа. Поэтому некоторые вещи в ней не очевидны: как задавать точный размер, в каких единицах измерения получится модель, как расположить элементы относительно друг друга. Найдя ответы на эти вопросы, у меня получилось очень быстро решать задачу создания корпусов микросхем. Грубо говоря, для меня это меньше кликов мышкой, чем в FreeCad, и меньше написания текста, чем в OpenSCAD.


      1. Sl-Alex
        10.07.2018 09:57

        возможно, не стал бы всё полностью в OpenSCAD создавать

        Я имел в виду, что, хотя во многих случаях (особенно в описанном в статье) OpenSCAD действительно удобнее всего, но создавать в нём абсолютно всё, как я делал изначально — уже перебор. Например, тот же разъём USB (или нечто подобное, но нестандартное) после прочтения статьи, мне кажется, в Blender будет легче нарисовать, чем даже в том же FreeCAD. В этом смысле автора статьи абсолютно поддерживаю. Больше open source, хорошего и разного!


  1. madf
    09.07.2018 15:24

    Спасибо, оч полезно.


  1. eps
    09.07.2018 16:03

    При экспорте нам нужно привести единицы измерения к дюймам

    Ужасно ведь! Даже в той единственной стране, где эти дюймы используются, технические программы обычно работают в СИ, почему KiCAD не смог?


    1. teakettle
      09.07.2018 18:03

      Кроме кикада общался с опенсурсной geda и проприетарной EagleCAD — они тоже по умолчанию считают в дюймах.


  1. Mingun
    09.07.2018 17:01

    А почему у вас «рёбра» (которые «edge») превратились в «грани»? «Грани» это таки «face».


    1. Abwindzentrierer Автор
      09.07.2018 17:18

      Спасибо за замечание, исправил.