Но есть проблема: профессиональный CAD-редактор стоит не дёшево, а свободно распространяемые не всегда удобны в использовании.
К счастью на помощь всегда может прийти Blender. Да, он не предназначен для создания чертежей и точных моделей. Но тем не менее позволяет быстро создавать трёхмерные модели электронных компонентов для последующего их импорта в трассировщики. В этой статье я опишу способ создания модели микросхемы и подключения её к библиотеке компонентов KiCad.
![](https://habrastorage.org/webt/pc/sl/bp/pcslbpoqus0ksppb0sil7sjcihi.png)
Для примера нарисуем модель микроконтроллера STM32F405xx в корпусе LQFP64. Всю необходимую информацию для работы берем из datasheet.
![](https://habrastorage.org/webt/nk/ri/mg/nkrimgijyxblmufmvtkufmgokqy.png)
![](https://habrastorage.org/webt/dt/ya/t8/dtyat84dtl0kc1snheodd5h9h2u.png)
1. Подготовка Blender'а
Запускаем Blender и для начала удаляем все не нужные компоненты со сцены: свет, куб и камеру. Выделяем объект правой кнопкой мыши и нажимаем «X». Либо выделяем все объекты кнопкой «A» и затем «X».
Для дальнейшей работы нам понадобится боковая панель настроек, для её вызова нажимаем «N». Окно, готовое к работе должно выглядеть примерно так:
![](https://habrastorage.org/webt/ba/ai/56/baai56dd3qdwkf-ijknolocmysc.png)
Для удобства отключим режим отображения перспективы – цифра «5» на дополнительной клавиатуре.
Оси координат в Blender’е и в KiCad’e не совпадают, поэтому нашу микросхему мы будем рисовать так, чтобы её высота совпадала с осью Y, а длина и ширина с осями X и Z соответственно. Перейдём на вид справа нажатием цифры «3» на дополнительной клавиатуре. Если 3D-курсор находится не в центре, комбинацию клавиш Shift + C.
2. Создаём корпус микросхемы
Корпус микросхемы создадим из куба. Слева в панели Create выбираем фигуру Cube. Или с помощью комбинации клавишь Shift + A в выпадающем меню выбираем Mesh > Cube.
![](https://habrastorage.org/webt/os/r4/um/osr4umnn5krgdafwx-etopjvgou.png)
Появившийся куб расположен в центре сцены и имеет размеры 2х2х2 условных единиц. Это видно в правой боковой панели (которую мы вызвали нажатием клавиши «N»). Если изменить сейчас размеры куба, то вместе с размерамы будет изменяться и масштаб фигуры, что в дальнейшем может привести к странным эффектам. Поэтому сбросим масштабирование: выделяем объект и выбираем внизу в панели Object > Apply > Scale (или Cntrl + A; S).
3. Задаём размеры микросхемы
Теперь зададим размеры корпуса. В datasheet находим длину, ширину и высоту корпуса микросхемы: 10 мм на 10 мм на 1.45 мм (макс.). Эти числа используем в качестве размера нашего пока ещё куба. Как уже упоминалось выше, размеры по X и Z – длина и ширина, а размер по оси Y – высота.
![](https://habrastorage.org/webt/--/kh/tl/--khtlr5waxzvouvkt-vkhbpmfc.png)
4. Размещаем корпус микросхемы
Следующим шагом разместим корпус на правильной высоте. Для этого перейдем в режим редактирования объекта (кнопка «Tab») и выберем поверхность в качестве элемента редактирования (face select). Затем выберем верхнюю поверхность микросхемы – она у нас находится справа и нажмём комбинацию клавиш Shift + S > Cursor to selected:
![](https://habrastorage.org/webt/83/cq/qg/83cqqgrnuvl5xh4zo025-lzxrxu.png)
Выходим из режима редактирования кнопкой «Tab». Далее в окне Tools > Edit устанавливаем точку привязки фигуры с помощью Set Origin > Origin to 3D Cursor.
![](https://habrastorage.org/webt/ve/wl/gx/vewlgxylayjyi8qlre6u2i4iclc.png)
Видим, что теперь положение объекта по оси Y изменилось с нуля на 0.725. Разместим объект так, что бы верхняя часть корпуса была смещена относительно начала координат на 1,6 мм – это наша максимальная высота компонента.
![](https://habrastorage.org/webt/yj/80/lk/yj80lkxofu0e3c9vg2txt2lj5ri.png)
5. Добавляем рёбра
Габариты корпуса заданы верно. Теперь можно косметически улучшить вид, добавив рёбра, как показано в pdf. Точных размеров там нет, поэтому сделаем это на глаз.
Переходим в режим редактировани (клавиша «Tab») и выбираем ребро как объект редактирования (edge select). Зажав клавишу Shift выделяем четыре боковых ребра объекта.
![](https://habrastorage.org/webt/5d/kx/hk/5dkxhkannynueicso8o4v3-zpyo.png)
К выделенным элементам применим функцию Bevel – внизу на панели выбираем Mesh > Edges > Bevel, или жмём Cntrl + B. Далее либо на клавиатуре вбиваем число (к примеру 0.05), либо перемещая мышь выбираем нужный размер фаски.
![](https://habrastorage.org/webt/m-/m1/cy/m-m1cyozmwvm3calulgd-gm2fkq.png)
Теперь сделаем скосы сверху и снизу копуса микросхемы, как показано на виде микросхемы сбоку.
Для этого в режиме редактирования добавим новое ребро: в меню Tools > Loop Cut and Slide или комбинацией Cntr + R. Расположим ребро, как показано на рисунке.
![](https://habrastorage.org/webt/lv/v2/oh/lvv2oh9hmzjep21ys725d_cz_bm.png)
После нажатия правой кнопку мыши, ребро автоматически расположится в центре фигуры. И к нему сразу применим модификатор Bevel, как мы это проделывали с боковыми рёбрами. Размер зададим равным 0.2 (максимальный размер «с» на чертеже).
Теперь уменьшим верхнюю и нижнюю поверхности микросхемы. Включаем режим редактирования поверхностей (Face select) и выделяем верх и низ микросхемы. К двум выделеным поверхностям применим модификатор Scale (клавиша «S»). С помощью мыши на глаз, или вбив определённое число (к примеру 0.96) масштабируем выбранные поверхности.
![](https://habrastorage.org/webt/r5/1b/bw/r51bbwec9v3qpxop0qzne8hidxq.png)
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 и зададим расчитанные координаты:
![](https://habrastorage.org/webt/qf/7v/of/qf7vof6b0vutdglqyeh_hp7kwnq.png)
Для дальнейшей обработки сбросим масштабирование и поворот фигуры: Object > Apply > Rotation and Scale. Или Cntrl+A > Rotation and Scale. (Как в шаге 2). Теперь нашей поверхности зададим размеры вывода в сечении: по ширине размер b = 0.27 мм (ось Z), по высоте размер с= 0.2 мм (ось Y). И по координате Y сместим её на значение, равное 0.1
![](https://habrastorage.org/webt/l6/x0/2m/l6x02moc2-fv2jfra4murg-pffc.png)
Теперь «выдавим» из поверхности форму ножки микросхемы. Перейдём к виду сверху («7» на дополнительной клавиатуре). Включим режим редактирования — «Tab» и выделим созданную поверхность. С помощью Tools > Extrude > Region (или клавиши «Е»), затем «Х» (по оси Х), введём -0.6 с клавиатуры и «Enter». Число 0.6 у нас соответствует размеру L на чертеже.
Цвет ножки отличается от цвета микросхемы, потому что она оказалась «вывернута» наизнанку. Если включить отображение нормалей, то можно увидеть, что они все направлены внутрь. Исправим это: выделим фигуру клавишей «А» и в панели Shaidng/UV > Normals нажмём Flip Direction. Теперь фигура построена верно.
![](https://habrastorage.org/webt/0p/fp/n2/0pfpn2iqsen289lmlim4i2tgueo.png)
Избежать этой процедуры можно было бы развернув поверхность на 180 градусов перед операцией «выдавливания».
Создадим дополнительное ребро на выводе микросхемы с помощью команды Tools > Loop Cut and Slide (или Cntrl + R) и расположим его ближе к внутреннему краю.
![](https://habrastorage.org/webt/pd/-2/gc/pd-2gcp6uwxtt_val_flb_ecw8a.png)
Выделим верхний сегмента на созданнай поверхности и выдавим ее (клавиша «Е») вверх по координате «Y» до середины микросхемы.
![](https://habrastorage.org/webt/1d/wg/it/1dwgitgs5rottjsdhr8mtnmngz0.png)
Новую поверхность сместим слегка в сторону микросхемы: «G» — переместить, «Х» — только по оси Х.
![](https://habrastorage.org/webt/vq/vb/hr/vqvbhrgevf5blqljtcgwvikcsjq.png)
Проделаем вышеописанные операции для верхней части вывода. В итоге должны получить примерно следующую картину.
![](https://habrastorage.org/webt/zp/ky/fz/zpkyfzxxejslpqcqegl-lt24kxm.png)
Для красоты подвинем угловые рёбра, и получим вполне симпатичную ножку микросхемы.
![](https://habrastorage.org/webt/s8/b7/z4/s8b7z4vhj8xlju_tf1enkjkubci.png)
7. Клонируем вывод микросхемы
С помощью модификатора Array создадим 18 выводов микросхемы с одной стороны. Для начала сбросим позицию и масштабирование вывода. Выходим из режима редактирования «Tab», выделяем ножку, и применяем Apply > Location, Rotation, Scale. Это необходимо, чтобы для следующего модификатора корректно расчиталось смещение клонированных объектов.
Добавляем модификатор Array.
![](https://habrastorage.org/webt/v_/k3/oy/v_k3oyxb3go255rlcb01dsdjgjo.png)
В параметрах модификатора задаём количество = 18, выделяем смещение Constant, и расстояние по оси Z = -0.5
![](https://habrastorage.org/webt/pv/pg/ax/pvpgaxvxeqejjo9c0_vhokgjlam.png)
Получили ряд выводов. Создадим их копии для оставшися трёх сторон. Для этого убираем выделение со всех объектов, устанавливаем 3D-курсовр в центр – Shift + C. И создаём пустой объект – Shift+A > Empty > Plain Axes.
![](https://habrastorage.org/webt/bc/yn/rv/bcynrvu53whjwdjkuemlf8lrrp0.png)
Теперь выделяем созданный ранее вывод микросхемы, и создаём ещё раз модификатор Array. Только на этот раз выбираем Object offset, и созданный ранее Empty-объект. Количество копий указываем равным 4.
![](https://habrastorage.org/webt/8a/tj/hh/8atjhh7kuo_4yrn5oz-ig-zvx84.png)
Чтобы расположить созданные копии в правильном положении, выделяем Empty объект и поворачиваем его относительно оси Y на 90 градусов. Кнопки «R» и «Y», затем вбиваем значение угла «90».
![](https://habrastorage.org/webt/-v/6o/tt/-v6ottnohx8u3snohl_mhab-rie.png)
8. Цвет микросхемы
Покрасим для красоты нашу микросхему и выводы в разные цвета. Выделим корпус микросхемы, и в закладке материалов создадим новый материал:
![](https://habrastorage.org/webt/b1/qy/ob/b1qyob-5hozqjmaptwrrotdy5us.png)
И присваиваем ему тёмно-серый цвет:
![](https://habrastorage.org/webt/xl/yl/cp/xlylcpcewaudnzi77l1rwl-g_vg.png)
Ту же самую операцию проделываем для выводов микросхемы, но цвет делаем чуть поярче.
На этом создание микросхемы можно считать законченым.
9. Экспортируем полученую модель в KiCad
Экспортируем модель в формат vrml. File > Export > VRML2. Если такого меню нет, то сначала идём в File > User Preferences… > Add-ons. В поиске вбиваем vrml и устанавливаем флажок напротив Import-Export VRML2 и Import-Export Web3D X3D/VRML2 format.
![](https://habrastorage.org/webt/wy/lr/-i/wylr-ick9rxbxvx3pol3-raqfsa.png)
При экспорте нам нужно привести единицы измерения к дюймам. Для этого в поле Scale вводим число 0.393701 (1 mm/ 2.54 inch = 0.393701).
![](https://habrastorage.org/webt/aa/xl/9k/aaxl9kuweiw5hrr6ddxbv6lptsc.png)
Всё, модель микросхемы готова.
10. Подключаем модель в KiCad’e
Создаём посадочную площадку в библиотеке и подключаем трёхмерную модель. Если на предыдущих шагах всё сделано правильно, то модель должна сразу «лечь» на своё место.
![](https://habrastorage.org/webt/do/r6/5c/dor65ctkxj8w9bszznhg9pdbif0.png)
Созданную таким методом микросхему вполне можно использовать для визуального контроля посадочной площадки.
Комментарии (19)
oisee
09.07.2018 15:04«Проектируя печатные платы часто возникает потребность добавить трёхмерную модель электронного компонента на плату.»
<шутка про проезжавшую мимо слетевшую шляпу>
Что-то это случается слишком часто, потому не личкой:
Если уж очень хочется воспользоваться деепричастным оборотом, то:
«Проектируя печатные платы, я часто ощущал потребность добавить трёхмерную модель электронного компонента на плату.»
или
«Во время проектирования печатных плат, часто возникает потребность добавить трёхмерную модель электронного компонента на плату.»
Подробнее: www.mn.ru/society/edu/88769Abwindzentrierer Автор
09.07.2018 15:15Проверяя свою следующую статью, я буду стараться сразу исправлять подобные ошибки :)
Sl-Alex
09.07.2018 15:15Спасибо за статью! Знал бы я раньше, что и как в Blender делать, возможно, не стал бы всё полностью в OpenSCAD создавать. А есть ли возможность сделать эту модель параметризуемой, чтобы не переделывать её каждый раз под другой размер корпуса или шаг выводов?
Abwindzentrierer Автор
09.07.2018 15:22Да, для Blender'а можно писать свои скрипты и дополнения на Python. И такие задачи можно было бы автоматизировать. Но пока что на создание описанного в статье компонента у меня уходит 5-10 минут, поэтому отсутствует мотивация в создании подобной программы.
DonAgosto
09.07.2018 21:52Если нужно бесплатно и с параметризацией — FreeCAD отличный вариант. Классический твердотельный CAD. API на Python присутствует — можете свой собственный генератор компонентов сделать.
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 в KiCadSl-Alex
09.07.2018 22:43+1Да, FreeCAD отличная штука, но в итоге для стандартных SMD корпусов (SO, TQFP и т. д.) я использую один гибкий OpenSCAD шаблон. Надо другой корпус — вбил цифры, сгенерировал, раскрасил. Готовые нестандартные или сложные компоненты из интернета тоже очень помогают. В итоге самому создавать приходится достаточно редко, но ещё один альтернативный вариант с пошаговой инструкцией для такого творчества точно лишним не будет.
semen-pro
10.07.2018 12:53Разве OpenSCAD не встроен в FreeCAD? или мне показалось?
Sl-Alex
10.07.2018 13:24Да, там есть модуль OpenSCAD, вроде бы и экспорт в этом формате поддерживается, но наибольшая гибкость в параметризации получается, если писать сразу в OpenSCAD, тогда можно и тригонометрию и другие функции использовать.
antage
10.07.2018 01:25Вы считаете что в Blender корпуса создавать удобнее? Если да, расскажите подробнее почему.
Я вот наоборот, читая статью, думал "насколько же проще можно было бы это сделать в OpenSCAD".Abwindzentrierer Автор
10.07.2018 08:45Моё мнение, что Blender удобнее, чисто субъективное. Я с ним лучше знаком. Опять же, Blender это не CAD программа. Поэтому некоторые вещи в ней не очевидны: как задавать точный размер, в каких единицах измерения получится модель, как расположить элементы относительно друг друга. Найдя ответы на эти вопросы, у меня получилось очень быстро решать задачу создания корпусов микросхем. Грубо говоря, для меня это меньше кликов мышкой, чем в FreeCad, и меньше написания текста, чем в OpenSCAD.
Sl-Alex
10.07.2018 09:57возможно, не стал бы всё полностью в OpenSCAD создавать
Я имел в виду, что, хотя во многих случаях (особенно в описанном в статье) OpenSCAD действительно удобнее всего, но создавать в нём абсолютно всё, как я делал изначально — уже перебор. Например, тот же разъём USB (или нечто подобное, но нестандартное) после прочтения статьи, мне кажется, в Blender будет легче нарисовать, чем даже в том же FreeCAD. В этом смысле автора статьи абсолютно поддерживаю. Больше open source, хорошего и разного!
eps
09.07.2018 16:03При экспорте нам нужно привести единицы измерения к дюймам
Ужасно ведь! Даже в той единственной стране, где эти дюймы используются, технические программы обычно работают в СИ, почему KiCAD не смог?
teakettle
09.07.2018 18:03Кроме кикада общался с опенсурсной geda и проприетарной EagleCAD — они тоже по умолчанию считают в дюймах.
Mingun
09.07.2018 17:01А почему у вас «рёбра» (которые «edge») превратились в «грани»? «Грани» это таки «face».
gopotyr
Abwindzentrierer,
молодец, продолжай! Я только начал ковырять KiCad. Статьи — полезные.
MrJones
Советую Вам ознакомиться с САПРом Altium Designer версии 16 и старше.
В рамках данной публикации можно отметить, что в AD есть встроенный генератор 3D-моделей, да и в целом он имеет больший функционал.
Если Вас интересует KiCAD ввиду его свободного распространения, то могу отметить, в данном сегменте нет ничего лучше KiCAD)