Гравировка печатных плат на ЧПУ фрезерном станке. Часть первая. FlatCam

Кто палит группку моей лабы в ВК уже наверное видел, что у меня там последнее время сплошняком идет тема фрезеровки плат. Я покупал фрезерный станок прежде всего для того, чтобы на нем сверлить, резать и вытачивать разные корпусные изделия. Как дополнение к 3D принтеру. Гравировать на нем именно рельеф печатных плат, вместо классического травления в хлорном железе , как то даже не подразумевалось. Но ради любопытства попробовал. Получилось занятно. Хотя и довольно шумно. Для простых плат, пожалуй, этот способ даже предпочтительней травления. Т.к. в одном цикле позволяет получить и сверловку и обрезку. Да и двусторонние платы теперь делать намного проще. Т.к. совмещать верх с низом гораздо проще при фрезеровке, чем при травлении. Ну обо всем по порядку.

▌Софт
Надо как то получить план резки в формате GCODE для ЧПУ станка, а у нас есть только стандартные GERBER и Exellon Drill. Способов это сделать много. Например, в eagle есть скрипт pcb2gcode который, будучи один раз сконфигурированный, позволяет подготовить все нужные файлы в один клик. Правда у него есть довольной неприятный недостаток — он весьма криво зеркалит плату, просто переворачивая координаты. В результате двусторонки в нем делать неудобно. Ну и не все пользуются иглом, поэтому я решил описать более универсальный способ получения гкода из гербера.

Воспользуемся такой замечательной програмкой как FlatCam. Это опенсорцное, кроссплатформенная штука, написанная на питоне. Интерфейс у него, как это принято в опенсорце, кривое, тормозное и глючное УГ с невнятной юзабельностью… Но! Это все отлично компенсируется тем, что графический интерфейс этой хреновины, после окончательной настройки и подбора всех параметров, вам нужен чуть чаще чем никогда. У FlatCam есть внутренняя консоль, похожая на консоль и eagle или AutoCAD. Куда можно скармливать команды и он сам все будет строить. А внутренняя консоль приложения это лучший интерфейс который можно придумать. Почему? А потому что в него можно загонять скрипты которые будут делать все рутинные операции автоматом. За что я, собственно, так люблю автокад и игл. Но обо всем по порядку.

Запилим двустороннюю плату. Возьмем стандартный набор gerber файлов который я отправляю на печать. О том как он формируется в EagleCAD я писал в одной из своих старых статей.

У нас там будет набор из файлов, из которых нам нужны только будут файлы

top_metal.gbr — верхний слой
bottom_metal.gbr — нижний слой
Dimensions.gbr — контур платы
drill.txt — сверловка

У меня они делаются запуском JOB проекта для CAM Eagle. Вот, можете скачать его и использовать. Корректный файл препроцессора, вывод которого без проблем принимают и наши конторы и китайские.

Запускаем FlatCam. Открывается такое белое окошко. Давайте все настроим. Идем во вкладку Options. И выбираем там Applications Default:

И выставляем там подряд все настройки. Во первых миллиметры, ибо империал нам нахер не упал.

Plot Options это просто настройки отображения. На результат не влияет. Галочка Plot решает за отображение, Sold за закраску, а Multicolored за разноцветность слоев.

Isolations Routing это то самое вырезание дорожек. Давайте тут сразу зададим дефолтные значения. Диаметр инструмента. Острие у штихеля может быть 0.1 или 0.2мм. Толще тоже бывают. Но эти самые ходовые. Лучше если параметр этот превосходит реальную ширину инструмента. Т.к. больше будет допуск и шире итоговые дорожки. Но, ни в коем случае не уже реального инструмента. Если сделать слишком широкие, то некоторые трассы просто не будут проложены, это будет видно. Между ними просто не пройдет инструмент. Так что надо ловить компромис. Обычно вкатывает 0.23 почти всегда.

Width (#passes) сколько делать проходов. Обычно один или два. Для очень узких дорожек не больше одного, а если топология жирная, да еще с силовыми дорожками и высокими напряжениями, то можно и побольше, для надежности.

Pass Overlap: перекрытие проходов. Указывается в частях от ширины. Т.е. 0.15 это 15% от ширины инструмента. Достаточно, чтобы сточить широкую канавку из двух, а не получить два штриха.

Combine Passes — эта галочка сливает разные проходы в одну обработку. Если ее не поставить, то у вас два прохода дадут два файла. Иногда полезно.

Board Cutout — обрезка платы. Тут также указываешь диаметр инструмента (Tool Dia:). На этот раз уже фрезы которая будет отрезать текстолит. Margin — это отступ от края контура по которому будет резаться. Gap size это ширина крепежных язычков, которыми будет соединена плата с пластиной из которой ее будут вырезать. Ну чтобы он не улетела в никуда. Потом их выламывают просто и все. В параметре Gaps можно выбрать где будут эти язычки и сколько их будет. Варинтов тут 2(T/B) — два вверху и внизу, 2(L/R) — два слева и справа, четыре штуки. Но эта хрень вещь бесполезная. Т.к. она умеет обрабатывать только квадратные платы. А если плата другой формы, то она обрезку сделает под квадрат. Как обкорнать не квадратную плату я расскажу ниже. Там все не просто.

Non-copper regions — настройки определяющие полигоны которые надо снести. Тут только задавать смещение от изначальной геометрии (Boundary Margin), там же галочка на скругление углов (Rounded Corners). Я не заморачивался тут с ними никогда.

Exellon Options — отображение сверловок. Plot — отображение, Solid — заливка. На конечный результат не влияет. Чисто опции интерфейса.

Create CNC JOB определяют параметры сверловки. Там есть глубина сверловки Cut Z, обычно ставится как толщина платы+0.2мм. Высота на которой сверло будет перемещаться к следующей точке — Travel Z, скорость подачи в мм/мин Feed rate. Я обычно ставлю 30. Торопиться тут некуда, особенно с очень тонкими сверлами. Toolchange Z — высота смены инструмента. Обычно при сверловке приходится менять сверла, т.к. много типов разных отверстий. Вот, для удобства, можно сразу задать высоту смены инструмента. Чтобы туда станок уходил перед остановкой на замену. Spindle speed это скорость вращения шпинделя, если конечно ваш ЧПУ станок может ей рулить. Мой вот не умеет (но я работаю над этим). Mill Holes — это интересная опция, указываем ей предельный диаметр. Скажем 1мм и все отверстия больше 1мм он будет пытаться не сверлить, а фрезеровать. Тогда можно воткнуть вместо сверла фрезу диаметром 1мм и забить на остальные размеры. Он их фрезанет и все.

Geometry Options — это, как я понял, настройки фрезеровки разных полигонов. Там все как и обычно Cut Z глубина фрезеровки, я поставил -0.1мм. Travel Z — безопасная высота перемещения от места до места, обычно пару миллиметров над платой. Feed Rate — скорость подачи. Тут индивидуально все. Tool dia — диаметр инструмента или его режущей кромки.

Paint Area — этим инструментом делается выкашивание меди с больших полигонов, как бы закрашивание их гравировкой. Тут все аналогично. Ставится диаметр инструмента (Tool dia), можно взять фрезу побольше т.к. 0.2 штихелем попробуй заштрихуй все, задается перекрытие проходов (Overlap) и отступ от от исходной линии контура который будет закрашен.

Ну и последний пункт это CNC Job Options. Он хорош тем, что тут можно еще раз указать диаметр инструмента (как понял, он пойдет в справку в гкод) и задать начальный кусок гкода (prepend) , который тупо вставится в начало и конечyый кусок гкода, который будет в конце (append). Тут можно пихать что угодно. Смену инструмента, остановку-пуск шпинделя, какие то подготовительные мероприятия и что на душу положит.

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

Создаем новый проект через File — New и вгружаем в него наши гербер файлы. Через File-OpenGerber и File-Open Exellon. Грузим все файлы.

Интерфейс тут, как я уже говорил, через жопу. На вкладке Project выбираем файл, на вкладке Selected делаем из него следующий шаг, у нас в проекте появляется еще один файл и с ним работаем дальше и так далее. И все это в правой части экрана в одну кашу сливается. Хотя выбрав файл, можно отключить отображение, сняв галочку с Plot. Причем если убрать отображение вообще всех слоев, то галочка Plot не снимется. Придется ее «передернуть», чтобы вернуть отображение обратно.

Скрываем все слои, кроме того с которым будем работать. Начнем со слоя Top. Выбираем его на вкладе Project и переходим на вкладку Selected (я предупреждал, что интерфейс наркоманский!)

Если вы изначально правильно настроили все дефолтные значения, то тут уже ничего крутить не надо. Все что нужно уже подставлено. Если нет, то заполните нужные значения. Теперь видите там ниже кнопки Generate Geometry в конце каждой секции? Каждая эта кнопка генерирует свой объект. Нас интересует Isolation — она сделает раскрой дорожек, с учетом ширины фрезы и количества проходов.

Поскольку все данные внесены, то жмем Generate Geometry и получаем результат:

Тут же можно и сделать обрезку платы. Это тоже сформирует отдельный обьект под обрезку. Это в следующей секции Board Cutout. Выбираем там нужные опции (о них было сказано выше, в описании общей настройки) и жмем под секцией кнопку Generate Geometry. Правда функция эта убогая и работает только для прямоугольных плат. Хрень, короче.

А на вкладке Project появился еще один объект:

Это контур нашей фрезеровки изолирующей проводники. Выбираем его и переходим в Selected, а там уже нас ждет подготовка под фрезеровку Create CNC Job:

Данные уже все вставлены, взяты из дефолтных. Можно подправить если вдруг что захотелось. Жмем Generate и получаем еще один обьект в Project.

Это трассировка. Теперь ее надо выгрузить в GCODE. Выбираем его, переходим на вкладку Selected и жмем кнопку Export GCODE, сохраняем файл. Готово!

Теперь разберемся со сверловкой. Сверлить будем с морды.

Да, если при вставке drill.txt из Eagle у вас в FlatCam отверстия убредают черт знает куда, то дело все в том, что в Eagle кривоватый экспорт Drill который иногда обрезает незначащие нули впереди. А формат Exellon этого не любит. Для этого у флаткама есть специальная опция. Надо написать в консоли FlatCam’a

set_sys excellon_zeros T

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

Выбираем наш Drill.txt и переходим на вкладку Selected. Тут нас поджидают диаметры отверстий. Можно выбрать все сразу и тогда они будут просверлены за один заход.

Если же поставить галочку Tool Change, то после отсверловки каждого диаметра станок будет останавливаться и показывать смену инструмента. Ну или менять его, если есть соответствующая оснастка. Там же можно указать высоту смены инструмента — Tool Change Z. Удобно когда бошка сама уходит на удобную высоту. А можно выбирать диаметры отдельно и получить несколько программ под каждый инструмент в отдельности. Когда все параметры указали, то жмем Generate и получаем еще один объект:

Выбираем его и делаем EXPORT GCODE

Получили сверловку в виде GCODE файла.

Теперь давайте разберемся с Bottom слоем. Ведь у нас двусторонка. Нижний слой надо отзеркалить и вот тут заключается одна хитрость. Ведь его надо не просто отзеркалить, но и в координаты попасть, чтобы у нас фрезеровка прошла там где надо. А для этого нужны реперные метки. А с ними тут вообще все весело и не очевидно.

Итак, убираем все лишние слои с экрана и открываем только bottom. Теперь в главном меню в пункте Tool выбираем инструмент Double Sided PCB Tool и он появляется на вкладке Tool

Выбираем там слой который мы будем зеркалить. Это наш Bottom_metal.gbr. А дальше надо выбрать:

Ось симметрии, по которой плата будет зеркалиться. А также реперные точки. В графу point box указываем координаты точки через которые должна пройти ось симметрии. Направление оси (по х или по у мы уже указали выше). Пусть будет по X. Как узнать координаты? А тут просто, кликаем мышкой примерно в середине платы. При клике у нас в буфер обмена сохраняются координаты куда мы кликнули. Их мы вставляем в поле Point Box. Через эту точку примерно пройдет ось симметрии:

Теперь надо поставить реперные отверстия. Их надо ставить слева и справа от платы по одну сторону оси симметрии:

Точно также, кликаем и копипастим их координаты в поле Aligment Hole через запятую. Только расставля их учитывайте, то, что они должны быть За зоной фрезеровки контура, отмеченной желтым цветом. Если это проебать, то у вас фреза при обрезке контура врежется в реперные штыри. Осталось только вписать диаметр реперных отверстий и нажать кнопку Create Aligment Drill и у вас появляются отличные симметричные реперные точки.

Теперь жмем кнопку Mirror Object и относительно той же оси симметрий наш слой bottom_metal.gbr зеркально развернется.

Все, теперь повторяем с ним те же операции, что и со слоем Top. Т.е. сформировать геометрию через Isolation Routing, потом по ней сделать Create CNC Job и экспортировать GCODE.

Aligment Drills экспортируем в GCODE точно также как мы это делали в с обычной сверловкой. Будут отдельным файлом.

Осталось самую малость. Сделать контур обрезки. Я уже говорил, что это можно сделать через CutOut, но он убогий и режет только прямоугольники. Даже если у вас плата в форме круга, он зафигачит вам его квадратуру. А это как бы не айс. К сожалению НОРМАЛЬНО через графический интерфейс тут ничего не сделать. Но графический интерфейс у флаткама всасывает по мощности консольному. Выполняем несколько комманд:

isolate Dimensions.gbr -dia 2 -passes 1 -outname cut

Эта команда сделает изолирующий контур вокруг фигуры Dimension.gbr, что есть контур нашей платы инструментом диаметром 2мм, нашей отрезной фрезой то есть. Сделает за один проход и сохранит в выходном объекте с именем cut.

exteriors cut -outname cutout

Эта команда возьмет наш обьект cut и на его основе сделает еще один обьект, по большей его кромке (т.к. isolate делает два контура, изолируя контур платы как изолировала бы дорожку). Результатом станет объект cutout

delete cut

Удаляем обьект cut т.к. он уже не нужен, а помойку разводить в проекте не хочется.

geocutout cutout -dia 2 -gapsize 0.8 -gaps tb

Эта команда обходит по контуру и создает траекторию резки. Причем она понимает и крепежные язычки. dia это диаметр режущей фрезы в 2мм, gapsize это размер крепженых язычков, а gaps их расположение. В данном случае tb означает top & bottom. Но можно указать число, например, 4. И будет четыре язычка.

cncjob cutout -z_cut -1.6 -z_move 2 -feedrate 60 -tooldia 2 -spindlespeed 20000 -outname cutout.tap

Эта команда делает обьект фрезеровки из траектории cutout углубляюсь на глубину z_cut в 1.6мм (толщина текстолита), безопасная дистанция z_move 2 мм над платой. С подачей feedrate 60мм/сек и диаметром обрезной фрезы в 2мм. Также указана скорость шпинделя spindlespeed 20000. Выходной файл зовется cutout.tap

delete cutout

Удаляем промежуточный обьект cutout, чтобы не засорял проект.

Все, у нас есть cutout.tap из которого можно сделать экспорт GCODE как мы уже делали раньше. Только обратите внимание на то, что у нас обрезка не зеркальная. Т.е. мы сверлим репера, сверлим основные отверстия, фрезеруем Top, потом переворачиваем плату, сажаем на репера, фрезераем Bottom, снова переворачиваем и фрезеруем контур. Чтобы сделать зеркальный Dimensions.gbr можно там же, где мы делали зеркалирование Bottom, после выставления точек реперов и оси симметрии и переворота Bottom слоя выбрать слой Dimensions и не меняя других значений нажать кнопку Mirror и для него. А потом уже сделать операцию формирования обрезки командами.

Команды не обязательно вставлять по одному, можно скопипастить прям пачкой, вот так:
isolate Dimensions.gbr -dia 2 -passes 1 -outname cut
exteriors cut -outname cutout
delete cut
geocutout cutout -dia 2 -gapsize 0.8 -gaps tb
cncjob cutout -z_cut -1.6 -z_move 2 -feedrate 60 -tooldia 2 -spindlespeed 20000 -outname cutout.tap
delete cutout

Теперь вы понимаете, почему я так матюгаюсь на интерфейс этой программы. СКОЛЬКО надо делать телодвижений для создания платы. А хотелось бы быстрей. И это возможно! Видели какой там командный интерфейс! А ведь можно сделать текстовый файл, куда записать все эти команды и запустить его как параметр к FlatCam и он начнет работать по нему сам. Скажем, вот такой файл cmd.tcl

new

set_sys excellon_zeros T

open_gerber d:/Mill/eagle/FTD/FT2232_db/Dimensions_mr.gbr
open_gerber d:/Mill/eagle/FTD/FT2232_db/Bottom_metal_mr.gbr
open_excellon d:/Mill/eagle/FTD/FT2232_db/drill_mr.txt

isolate Dimensions_mr.gbr -dia 1.5 -passes 1 -outname cut
exteriors cut -outname cutout
delete cut
geocutout cutout -dia 1.5 -gapsize 0.8 -gaps tb
cncjob cutout -z_cut -1.2 -z_move 2 -feedrate 60 -tooldia 1.5 -spindlespeed 20000 -outname cutout.tap
delete cutout
write_gcode cutout.tap d:/Mill/eagle/FTD/FT2232_db/Dimensions_mr.tap

isolate Bottom_metal_mr.gbr -dia 0.23 -passes 1 -overlap 0.5 -combine 1 -outname bottom
cncjob bottom -z_cut -0.15 -z_move 2 -feedrate 100 -tooldia 0.2 -spindlespeed 20000 -outname bottom.tap
delete bottom
write_gcode bottom.tap d:/Mill/eagle/FTD/FT2232_db/Bottom_mr.tap

drillcncjob drill_mr.txt -drillz -1.6 -travelz 3 -feedrate 100 -spindlespeed 300 -toolchange True -outname drill.tap
write_gcode drill.tap d:/Mill/eagle/FTD/FT2232_db/Drill_mr.tap

Скармливаем через параметр командной строки FlatCam’у:

«c:\Program Files (x86)\FlatCAM\FlatCAM.exe» —shellfile=cmd.tcl

И у нас автоматом подгружаются нужные файлы из проекта (уже отзеркаленные заранее герберы и сверловки), тут же закидываются нужные обработки и автоматом все экспортируется в GCODE. И на выходе получаем готовые комплект планов резки-сверловки для односторонней платы. Автоматически!

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

Продвинутые юзеры могут написать скрипт на cmd или bash, сделать на плате сразу какие-нибудь хитрые отверстия, скажем с диаметром 1.2345678мм , сгрепать их по характерным диаметрам из drill файла вместе с координатами и на их основе забацать координатные заморочки с зеркалированием строк.

Благо все команды хорошо документированы и расписаны в одном месте на сайте программы

Я пока так не упарывался. Но на батничках немного поразвлекался. Поскольку двусторонки я делаю редко, а обычно справляюсь односторонками, то в первую очередь сделал себе батник для быстрой генерации фрезеровки под односторонку. Гербер файлы надо выдать в отзеркаленном виде. То же касается и сверловки. В Eagle это делается просто. В CAM процессоре задаем следующие параметры:

После чего сохраняем этот набор как Job и если нам надо фрезануть плату, то запускаем это задание и получаем пачку нужных файлов:

  • bottom_metal_mr.gbr — рисунок дорожек
  • Dimensions_mr.gbr — контур платы
  • Drill_mr.txt — сверловка.

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

Дальше запускаем следующий батник:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
:: Умолчания 
@SET DIA=2
@SET GAP=0.8
@SET GAPS=tb
@SET DPT=1.6
@SET FR=60
@SET GRV=0.1
@SET PAS=2
@SET GRVW=0.3

::Имена файлов и пути
@SET DIMEN=Dimensions_mr.gbr
@SET ISOL=Bottom_metal_mr.gbr
@SET DRI=drill_mr.txt
@SET FP="c:\Program Files (x86)\FlatCAM\FlatCAM.exe"
 
@ECHO Обрезка платы по контуру dimension_mr.gbr. Cверловка drill_mr.txt Гравировка bottom_metal_mr.gbr
@ECHO.
@ECHO По умолчанию:
@ECHO Диаметр фрезы	= %DIA% мм
@ECHO Подача фрезы	= %FR% мм/мин
@ECHO Ширина язычка	= %GAP% мм
@ECHO Расп. язычка	= %GAPS%
@ECHO Глубина сверл.	= %DPT% мм
@ECHO Глубина грав.	= %GRV% мм
@ECHO Ширина штихеля    = %GRVW% мм
@ECHO Проходов грав.	= %PAS%
 
@ECHO.
 
@SET /P DIA=Введите диаметр отрезной фрезы:
@SET /P FR=Введите скорость подачи обрезки контура:
@SET /P GAP=Введите ширину крепежного язычка:
@SET /P GAPS=Введите параметры расположения язычка (8,4,tb,lr,2tb,2lr):
@SET /P DPT=Введите глубину сверления отверстий (обычно это толщина текстолита+0.2):
@SET /P GRV=Введите глубину гравировки (0.05...0.2):
@SET /P GRVW=Введите ширину лезвия штихеля гравера:
@SET /P PAS=Введите количество проходов гравера:

 
 
:: Берем текущий каталог
set dp=%CD%

:: Меняем в нем слеши на обратные (это надо флаткаму)
set dp=%dp:\=/%

:: Вбиваем программу.
echo new > cmd.tcl
echo set_sys excellon_zeros T >> cmd.tcl

:: Грузим файлы из корня
echo open_gerber %dp%/%DIMEN% >> cmd.tcl
echo open_gerber %dp%/%ISOL% >> cmd.tcl
echo open_excellon %dp%/%DRI% >> cmd.tcl

::Первым под обрезку идет контур.
echo isolate %DIMEN% -dia %DIA% -passes 1 -outname cut >> cmd.tcl
echo exteriors cut -outname cutout >> cmd.tcl
echo delete cut >> cmd.tcl
echo geocutout cutout -dia %DIA% -gapsize %GAP% -gaps %GAPS% >> cmd.tcl
echo cncjob cutout -z_cut -%DPT% -z_move 2 -feedrate %FR% -tooldia %DIA% -spindlespeed 20000 -outname cutout.tap >> cmd.tcl
echo delete cutout >> cmd.tcl
echo write_gcode cutout.tap %dp%/Dimensions_mr.tap >> cmd.tcl

:: Гравировка поверхности
echo isolate %ISOL% -dia %GRVW% -passes %PAS% -overlap 0.5 -combine 1 -outname bottom >> cmd.tcl
echo cncjob bottom -z_cut -%GRV% -z_move 2 -feedrate 100 -tooldia 0.2 -spindlespeed 20000 -outname bottom.tap >> cmd.tcl
echo delete bottom >> cmd.tcl
echo write_gcode bottom.tap %dp%/Bottom_mr.tap >> cmd.tcl

:: Затем идет сверловка
echo drillcncjob %DRI% -drillz -%DPT% -travelz 3 -feedrate 100 -spindlespeed 300 -toolchange True -outname drill.tap >> cmd.tcl
echo write_gcode drill.tap %dp%/Drill_mr.tap >> cmd.tcl

 
:: Последним шагом запускаем флаткам и скармливаем ему этот скрипт.
%FP% --shellfile=%dp%/cmd.tcl

Отвечаем на вопросы в диалоговом режиме, если жать Enter, то будут подставлены умолчания. А под конец запустится флаткам и сделает все сам :)

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

27 thoughts on “Гравировка печатных плат на ЧПУ фрезерном станке. Часть первая. FlatCam”

  1. Вот бы и мне про кривизну узнать )
    Или хотя бы как сделать правильное крепление на станинку, чтобы её минимизировать. Если плата под 100мм выходит, то как её не креплю — есть изгиб. Да такой, что на глаз виден (больше 0.1 мм по Z). Один раз даже не вовремя это заменил, пришлось пол часа пальцем под фрезой плату прижимать.

    Если что, станочек такой https://www.youtube.com/watch?v=MXoDJy2MCaU

    И видео хочется посмотреть, особенно со сверловкой!

    1. Классический способ выравнивания поверхности текстолита: Крепим на столик кусок пластика и фрезеруем на нем плоскость. Лучше с угловым выступом, чтобы к нему прижимать угол текстолита. Потом клеим текстолит на тонкий двухсторонний скотч.

      По поводу фрезеровки плат есть пара хороших обсуждений на cnc-club. Изучал вопрос по ним:
      http://www.cnc-club.ru/forum/viewtopic.php?f=28&t=9921
      http://www.cnc-club.ru/forum/viewtopic.php?f=28&t=13402

      1. Проблема в том, что если жесткость станка плохая, то эта плоскость уплывет даже после снятия-установки текстолита.

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

        https://www.dropbox.com/s/u15vsm6lt8bh8vj/cnc.jpg?dl=0

        Сначала о посадке на штифты думал, но для моей задачи скотча просто за глаза хватает.

          1. Кусок текстолита установили, ноль машинный выставили, насверлили отверстий по программе, сдернули текстолит для дальнейшей накатки фоторезиста и прочих манипуляций, а станок конечно вернули в 0 (и то, если он выключаться будет). Ладно, плату вытравили, нужно бы обрезать. Шпиндель стоит в нуле, а как теперь плату установить точно так же, как она стояла при сверловке? При пластиковом кондукторе таких проблем нет. А так что еще, на штифты можно посадить. Но это муторнее, как по мне.

          2. В первой, кажется, ссылке автор дает способ снятия профиля и коррекции координат. Никакой «локальный ноль» не помог бы моему китайцу, у которого уход по z на 20 см столе составлял 1.5 мм. Конечно, это уже клиника, но расчитывать на идеальную юстировку станка, IMHO, в общем случае нельзя.

            Сочетание фрезерованного угла и «макроса» коррекции кривизны текстолита дает дорожки 0.1-0.2 мм. Сам не пробовал, но люди фотки приводят.

            1. Не, это про то, как ловить координаты ХУ при снятии платы для разных манипуляций. Разумеется его еще надо под ноль фрезернуть.

  2. Да интересная статейка, спасибо за труд!
    Я пользуюсь связкой layout60 + StepCam, мне кажется как то попроще.
    Но тем не менее с удовольствием почитаю продолжение.

      1. Да, но как вы писали выше
        (Для простых плат, пожалуй, этот способ даже предпочтительней )
        Именно для простых, так как сложные делаю фото способом. А спринт хорошо подходит если нужно быстренько сваять платку для тестов, и StepCam здесь идеален, быстренько сделать фрезеровку и сверловку.
        Спринт довольно популярная сейчас программа среди радиолюбителей, Фрезой 0,1 нормально делаются платки под корпус STM32F103C8, жалко фото нельзя прицепить. Если бы в этой связке еще была корректировка учитывающая кривизну текстолита, было бы просто супер.

  3. Отличная статйка, спасибо!
    А не в курсе есть ли возможность во флеткаме скомбинировать оработку несколькими инструментами. Имею ввиду, чтобы сначала пройтись бОльшим инструментом, а потому уже мелким гравером по оставшимся.
    Уж больно долго и жалко гонять гравер 0,1мм по дорожкам, которые можно было бы и фрезой 0,5мм сделать

    1. Да, например, сначала сделать обход толстой фрезой по исходному герберу. Он пройдет где сможет. Потом пустить по тому же трейсу 0.1, он прочистит остальное. Правда пройдет там где уже прошел 0.5. Будет не так жалко, но по прежнему долго. Еще можно попробовать покурить на тему есть ли там логические операции и подумать как можно вычесть одно из другого. Может получится.

      1. вот как раз тема в том, чтоб вычитать, то что можно прогнать дважды разными инструментами — дело ясное.
        думал может кто уже это дело прорюхал, просто я не в курсе)

  4. Большое спасибо за статью! Как раз начал осваивать данную
    технологию. Хотелось бы узнать, есть ли возможность делать
    вырезы внутри контура платы?

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

    1. Отстой конечно. Поэтому я там пощу всякую лажу, огрызки постов и перепосты готовых с главной.

  5. Братишки, чтоб гравировалось отлично независимо от кривизны текстолита — ищите в сети волшебный костыль pcbzcorrect.jar — он модифицирует вашу УП, добавляя туда сканирование поверхности по 25 точкам (складывая данные во временные ячейки, а затем по ним рассчитывает мгновенную высоту прохода инструмента).

    Конечно же надо допилить станок — добавив датчик касания. Благодаря тому, что у меня в шпинделе подшипники стоят в пластиковых уплотнителях — центральный вал не звонится на корпус. Поэтому сверху поставил кронштейн со щёточным узлом от генератора отечественного рыдвана — который одной щёткой прижимается в торец вала (износа щётки за пол-года не замечено). Сам датчик состоит из dc-dc преобразователя, полевика и оптопары, сигнал с оптопары заводится на вход PROBE.
    Можно так не извращаться — pcbzcorrect генерит код, который заботливо останавливается после сканирования и напоминает снять крокодил с рабочего инструмента. Но один фиг, привязка к корпусу станка намекает на необходимость гальванической развязки — а то будете ловить ложные срабатывания, например, из-за паразитной ёмкости «обмотки шаговика — корпус».

    Такая связка отлично себя показала, существенно экономит время, нервы и кривой текстолит.

    Ну и подводные камни:
    1. у pcbzcorrect — глюкавый интерфейс, чтоб добраться до нужного каталога, нужно выбрать отображение «ВСЕХ» файлов.
    2. FlatCAM генерит УП без пробелов перед символом «Y» — перед тем как скормить эти УП pcbzcorrect нужно в блокноте заменить «Y» на » Y».
    3. Чтоб сканирование проходило быстрее и на нормальной подаче — я правлю настройки сканирования в готовом УП (в начале — уменьшаю подачу и безопасные высоты).
    4. 25 точек иногда не хватает — особенно на старом кривом текстолите — бывают локальные провалы и коробления.
    5. Если во время сканирования инструмент попадёт в отверстие или участок без меди- беда. Поэтому нужно следить чтоб реперные точки для отзеркаливания двусторонних плат были заведомо за контуром платы, чтоб в ней сходу не было отверстий (сверловка выполняется в последнюю очередь, FlatCAM умеет зеркалить этот слой тоже) и подтравов или мех. повреждений.
    6. Текстолит по краям притягиваю винтами М6. Если сильно их затянуть — после снятия части меди, по центру текстолит выгнется вверх — не критично, но заметно увеличение глубины.

    P.S. гравирую почти всё V- образным гравером 30 градусов с пяткой 0,3мм. Заглубление -0,1 мм, подача 250 мм/мин (можно и больше, если правильно настроены ускорения шаговиков в MACH3). Посадочное под TQFP-44 получается отлично. Раньше делал и под TSSOP20 гравером 15 градусов/0,1мм.

    P.P.S. При изготовлении тестовых образцов теперь предпочитаю гравировку, а не фоторезист — на плату уходит столько же времени, но не нужна плёнка и химия — оставил станок на час, потом приполз перевернул плату и опять ушёл пинать половой орган. Плюс сверловка всегда получается идеально, так же как и переходные отверстия (при отзеркаливании использую 4 реперные точки и канцелярские кнопки с пластиковой головой).

    1. Зачем использовать глюкавый pcbzcorrect.jar когда есть отличный и не глючный Gcode Riper который делает то же самое и кое что еще. Попробуйте. Очень хорошая штука и не надо никаких автозамен после флаткама делать. Там и точек можно сколько угодно задавать и параметры сканирования. В остальном со всем согласен.

  6. Добавлю свои 50 копеек в копилку софта:
    1) CopperCAM
    Просто, и доступен выбор инструмента, на моем кривом станке
    лучше чем в FlatCAM в итоге получилось

    2) Eagle-ArtCAM( полностью AutoDesk решение)
    или
    Gerber-Cam350(dxf)
    Тоже есть выбор инструмента

    3) LazyCAM, интегрируется с Mach3, но у меня не получилось
    http://www.machsupport.com/software/mach-3-add-ons-for-mill/

    4) StepCAM

    5) D2NC

    6) MeshCam

    1. Коппер кам же тормозной как незнаю что. У меня в нем сплошные маты по поводу его работы. Потому снес не сожалея.

Добавить комментарий

Ваш e-mail не будет опубликован.

Перед отправкой формы:
Human test by Not Captcha