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

▌Станок
Для гравировки платы нужен фрезерный станок ЧПУ. Кудаж без него. У меня тут какой то китаец без роду и племени. С рабочим столом 200 на 200мм и 12мм валами.


Стоит на нем такой же безродный коллекторный шпиндель на 350Вт, дающий около 15000 оборотов. Довольно мало, надо сказать. Хорошо бы от 30 000, а лучше 50-100 тысяч.

Управляется все простейшей платкой опторазвязок на LPT порт.

Через MACH3, на который натянут скринсет от Михаила Юрова. Нагугливается на каждом углу.

Без него интерфейс MACH3 ничего кроме рвотных позывов не вызывает обычно. Вырвиглазная дичь. Особенно с непривычки.

Про сам станок, его конструкцию, настройку и работу если кому то будет интересно я расскажу в другой раз. Там нет ничего сложного, все делается интуитивно и дубово.

▌фрезы


Основной инструмент который нам нужен — это гравировальный штихель. Вот такая вот коническая фреза. Чем острей тем лучше. Ходовые размеры острия в 0.1мм (если хотите забацать что то уровня LQFP и с дорогами в 0.3мм) и 0.2мм для более крупных корпусов вроде SOIC и широких, под 0.5мм, дорожек. Также не помешат такого же плана фреза, но с режущей кромкой 1 или даже 1.5мм — пригодится если придется не просто гравировать изоляцию контуров, а нужно будет сносить целые полигоны.


Также нужны будут сверла. У меня три размера используется. 0.4..0.6мм для переходных отверстий. 0.8…1мм для обычных TH компонентов и 3мм для крепежных отверстий под всякие потенциометры, энкодеры, крепежные отверстия в плату и так далее. Чтобы было удобней, я держу инструмент сразу в цанге-гайке. Так как правило не всегда удается подобрать все под одну цангу. А достать цангу из гайки, особенно если это цанга маленького размера, бывает сложно. Поэтому проще иметь штук пять гаек и цанг под все случаи жизни. И держать их такими вот наборами.


Для обрезки платы используется фреза «кукуруза» диаметром 2…3мм, лучше 2. Не так много опилок и нагрузка на станок меньше.

Плата просто приклеивается к жертвенному столу скотчем. Кстати, стол можно сфрезеровать под ноль, тогда все огрехи геометрии станка по крайней мере будут повторять форму подложки, что позволит повысить точность. Но я этого делать не стал, хотя у меня расхождение между углами составляет около миллиметра. Просто к гладкой ламинированной МДФ панели лучше клеится текстолит и при удалении скотч отрывается сразу полностью, не размазываясь по волокнистой структуре МДФ. Разница как… отрывать скотч от лакированного стола или от картонной коробки. Коробка срывается с мясом. Тут так же почти. Потому не фрезерую.

▌Сканирующий софт
Чтобы компенсировать кривизну стола, а у меня она особо кривая, я провожу сканирование поверхности, строя карту высот. Сначала надо подготовить карту высот:

Вообще в Mach3 есть свой визард для этой цели. Искать в меню Wizard-Pick Wizard…-Digitize Wizard, откроется вот такая хреновина:

Где можно указать размер общупываемой поверхности (Width и Height of area), безопасную высоту перемещения щупа (Z travel), глубину до которой щуп будет искать поверхность (Z Axis Probe Depth). Stepover это шаг по осям, а FeedRate скорость с которой щуп пойдет до поверхности. Чем быстрей тем быстрей сканирование, но по инерции он может попасть чуть глубже чем надо. Поэтому тут надо ловить баланс. Потом жмете Create and Load Gcode и у вас в мач сразу же будет загружен готовый код сканирования. Я не пользуюсь этим визардом потому, что он не очень удобный. Куда проще сгенерировать код в той же проге которая будет править код плана резки. Это G-code Ripper.

Брать его с официального сайта Не забыв передать привет мудилам из Роскомнадзора, которые его заблокировали как экстремистский. Так что применяйте прокси-плагины (Opera Turbo вполне подойдет или FriGate плагин для Chrome, только там надо будет вручную вписать адрес этого сайта).

Итак, запускаете G-code Ripper. Эта штука, как и flatcam тоже написана на питоне и тоже имеет консольный интерфейс (впрочем я в нем пока сам не разбирался, а так, думаю, можно вписать ее в наш злой батник). А пока же втыкайте в его GUI.

И что же мы видим:

Вот такое главное окно программы. Нам надо выбрать в левом нижнем углу Auto Probе и через меню File загрузить гкод нашей гравировки. Сначала давайте сторону которую будем резать.

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

Probe Offset — это смещение щупа относительно инструмента. У меня щупом является сам инструмент, поэтому тут нули. Probe Z Safe — безопасная высота сканирования. Зависит от кривизны вашей системы. У меня разброс под миллиметр и потому я поставил 2. А вообще при ровном столе достаточно и 0.8 мм. Чем ниже тем быстрей сканирование. Опускаться то меньше! Probe Depth — предельная глубина на которую пойдет щуп. У меня 0, т.к. в данном случае начало координат стоит в самом низком углу моего стола. А вообще можно и в минус немного загнать, скажем на -0.5. Хуже не будет. Probe Feed — скорость опускания. Меньше — точнее, но дольше скан и шуму больше. У меня 100мм/мин. Х/У Points это сколько точек по вертикали и горизонтали снять. Вон те самые белые крестики. Габариты платы он сам выберет. Pre и Post коды я оставляю пустыми, т.к. никаких дополнительных кодов перед и после программы мне не надо. А вот счастливые обладатели ченейджера могут, например, автоматом специальный щупательный инструмент вытащить, а потом убрать обратно. Controller у меня MACH3 и, собственно, все.

Жмем Save G-code File Probe Only, получаем файл с гкодом, шлем его в станок и идем щупать плату.

Как же станок будет сканировать поверхность? Для этого у станка есть щуп. Когда щупа касается масса, то станок это чувствует. За массу у меня принят шпиндель. Вот та пластиковая приблуда, что окружает его крыльчатку это держатель щетки. Которая сделана из старой фрезы и втыкается в центр вала, на подпружиненном крепеже. Почему я просто не подал массу на корпус шпинделя? А потому, что через его подшипники довольно хреновый контакт. Он может пропадать в зависимости от угла поворота. А так он прям по валу дойдет до цанги, а внутри цанги еще маленькая пружинка подведет контакт прямо к инструменту. А сам щуп представляет собой пластину известной толщины (где то 0.5мм) на проводке. Если мне надо выставить инструмент точно на 0 я кладу в нужное место пластину, прижимаю ее пальцем к поверхности и даю команду на поиск нуля. Станок тычется в пластину инструментом, потом учитывает толщину и осознает текущую высоту кончика инструмента. Подняв при этом инструмент на 2.5мм.

В случае же с текстолитом мне нужно просто положить контакт щупа на медь, закрепить изолентой, чтобы не убежал и сделать поиск поверхности. Координата, конечно, выставится не верно. Т.к. в этом случае нет толщины самого щупа. Но это не важно. Главное теперь можно вручную, вводя команду G1 Z-2 (почему -2? А потому, что по моему скрипту после нахождения у меня инструмент подпрыгнет на 2.5мм, а 0.5 толщина пластины щупа, т.е. фактически его координата станет 2мм), опустить инструмент почти до уровня текстолита. Почему почти? А для больше точности не помешает поймать самый нежный контакт, а автопоиск довольно груб, т.к. у станка есть некоторая инерция и он немного промахивается. А вот если завести инструмент почти на ноль, а потом вручную, командами G1 Z## сдвигая на сотку-другую вверх или вниз добиться того, что кнопка индикатора начнет мерцать (а она у меня меняет цвет когда происходит касание щупа) от малейшей вибрации в помещении. Скажем когда кто-то мимо прошелся. Да, само собой при этом мы выставляем координаты Х и У в будущий ноль координат исходя из нашей платы. Не путать с нулем станка (машинные координаты).

Дальше, когда ноль найден, то надо обнулить координаты по XYZ и запустить программу сканирования, указать в какой файл записать данные и получить текстовый файл примерно вот такого вида:

0.00000,0.00000,0.00500
7.05500,0.00000,0.03000
14.11500,0.00000,0.03000
21.17000,0.00000,0.06500
28.22500,0.00000,0.07000
35.28500,0.00000,0.11500
42.34000,0.00000,0.12000
49.39500,0.00000,0.16000
56.45500,0.00000,0.14000
63.51000,0.00000,0.14000
0.00000,8.65500,0.00000
7.05500,8.65500,0.00000

Тут все и так ясно — это просто координаты по осям где инструмент коснулся поверхности. Что нам, собственно, и нужно.

Возвращаемся в наш Gcode-Ripper и делаем там Read Probe Data File и наши крестики становятся черными:

Готово. Осталось теперь нажать для верности кнопочку Recalculate и сохранить скорректированный файл. Save G-code File Adjusted. Если теперь их сравнить в каком-нибудь NC-Corrector’e то на виде сбоку будет видно, что у нового файла появился рельеф дна :)

старый:

новый:

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


Ободрали изоляцию. Получилось хреново, потому что фреза 0.2 да еще и тупая. А тут бы 0.1 и поострей. Лохмы образуются потому, что контур надо бы обходить в двух направлениях, т.к. фреза когда идет по фольге с одной стороны пропила режет чисто, с другой махратит. И надо обратный проход сделать, снять заусенки. А флаткам не делает его или я не научился еще. Поэтому я их обычно сношу мелкой шкурочкой в пару движений. Еще можно снизить подачу реза, будет намного чище. Или, если шпиндель позволяет, обороты повысить. Вон LPKF Protomat жарит на 100 000 оборотах и там гладенько все.


А это вот уже практически готовая плата. Четыре огромные дырки на месте кнопки это я хорошо факапнулся на эпизоде смены инструмента при сверлении. Когда выложу видео там увидите сами. Надо было поставить после 0.8мм сверла 1мм сверло (или просто нажать «далее», чтобы тем же 0.8мм просверлить), а я не прочитал что мне предложил поставить станок, забыл, что там еще миллиметровые отверстия есть и воткнул сразу 3мм и он мне их весело засверлил :) ЧПУ не прощает ошибок.

Вот как то так. Да, на двусторонке, после переворота текстолита, надо еще раз его простучать щупом.

Кроме обещанной видяшки которую я хз еще когда смонтирую (ненавижу это дело) будет еще одна две статейки по флаткаму и мне тут товарищ набросил альтернативный метод. Я его сверстаю и скоро выложу. На этом тему наверное закрою. Т.к. ну чего там еще рассусоливать то? ;)

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

  1. Здравствуйте.

    За упор на консоль FlatCAM отдельная благодарность, штука действительно мощная, нужно будет поковырять. На данный момент кругло-непрямоугольные платы режу таким методом https://bitbucket.org/jpcgt/flatcam/wiki/Cutting_the_edges_of_rectangular,_polygonal_or_round_shaped_boards.

    Было бы здорово, если бы было уделено время вырезам в плате, что-то с наскока не вышло. И еще один непонятный момент, почему-то из DipTrace сверловка в метрической системе неадекватно в FlatCAM выгоняется, хотя в настройках мм, и в сверловке — METRIC,0000.00. Или это та же история как в Eagle… Но если в DipTrace выбрать в сверловке систему измерения — дюймы, то все на своих местах. При этом во FlatCAM — мм, и все герберы тоже в мм.

    1. У меня, кстати, такая же проблема с DipTrace. При экспорте сверления приходится ставить дюймы, чтоб во FlatCAM отверстия встали на свои места. Не удобно, но я уже свыкся.
      Вот мне интересно, Вы не в курсе как можно сделать длинные отверстия-прорези (на плате в статье есть место для крепления разъема питания). Я не могу разобраться что и как экспортировать из DipTrace, чтоб потом во FlatCAM можно было сделать гравировку этих пазов

      1. Чтобы пазы гравирнуть надо их нарисовать на каком-либо отдельном слое который можно в гербер выгрузить. Да хоть на втором слое меди. Флаткаму то пофиг же.

      2. Ага, если выбрать дюймы, то он пишет «Converting units to MM.» и все хорошо. Тоже смирился с этим, в остальном-то все отлично. Прорези тоже не выходят. Стоит галка «фрезеровка (овальные отверстия)» а во FlatCAM они попадают как обычные отверстия. Если первое это мелочи, то второе огорчает конечно. Нужно разбираться.

  2. >>Про сам станок, его конструкцию, настройку и работу если кому то будет интересно я расскажу в другой раз.
    Конечно интересно! Я ожидал, что инструментальная часть как раз об этом и будет, а тут опять в основном про софт.

  3. Кстати, я наткнулся на программку Autoleveller, которая делает корректировку плоскости вообще в один клик. всего лишь вгоняешь готовый Г-код в нее, запускаешь получившийся код в мач3. А дальше она сканирует и сразу же режет.

  4. Здорово. В выходные попробую описанным методом. Пользовался только корректировкой » на лету». Качественно, но на простых платах задалбывает ждать. Собиралсы уже сам писать корректор, но «… всё написано до нас» :). Спасибо.

  5. Не пойму, при начале сканирования mach3 как положено спрашивает о сохранении в текстовый файл, даю имя стартую, сканирование проходит как положено! открываю текстовый файл, он пуст! никто не в курсе в чем загвоздка?
    Пробовал и Digitize Wizard в mach3, и g-code_ripper-013 по любому текстовик пуст!

    1. А вообще мач может создавать файлы? Там если поковыряться, то вроде можно править гкод и тут же его сохранять. Что то было такое. Режим обучения тоже был, в оригинальном интерфейсе, когда вводишь вручную код, а потом сохраняешь. Попробуй им создать файл, любой гкод и сохранить. Может у тебя сам мач кривой и у него не работает запись в файл.

      А еще может у тебя криво работает сам дигитайзер. Ловля нуля работает нормально?

  6. Посмотрел видео, делал один в один, но координат в текстовом файле нема! подозреваю что косячит mach3.
    G коды он открывает, правит и сохраняет нормально. Ноль ловится нормально и сканирование проходит как на видео.
    Какая у вас система на компе установлена?

    1. Кривой (по понятным причинам) MACH3 — та еще забава. У меня на одной из версий рандомно опускалась фреза, и все это весело шагало домой, перерезая всю заготовку. :-)

  7. Лиценз в принципе абсолютно ничем не отличается, только тем что фигурируют ваши инициалы!
    Я на али покупал плату с USB интерфейсом, и продавец вместе с драйверами любезно записал mach3 с файлом лицензии. Думаю глюки больше вылазят от конфигурации железа компа.

    1. Ну вот у меня от продавца станка так и вел себя софт. Мог отшагать всю программу как положено, а мог запороть все в один жест. При этом операционка (XP) специально выделена под станок, все рекомендации и оптимизации выполнены, никто не мешает… Только сменив софт решил проблему, в остальном все осталось как прежде. Что сие было — неведомо.

  8. В понедельник тоже буду пробовать что то переставлять, вообще никогда проблем не возникало! а тут вроде все работает как надо создается файл, а координаты как корова слизала.

  9. Попробовал на другом компе другой релиз mach3, та же картина текстовик с координатами пуст!
    DI HALT а можно глянуть G код который сканирует координаты, может проблема в нем. Голова уже дымится не знаю в какую сторону копать! :(

  10. Попробовал ваш код, то же самое! а какая у вас операционная система на компе?
    Возможно что то с правами доступа, у меня дома win10 на работе win7. Посмотрел свойства блокнота, безопасность, все пакеты приложений могут, галки стоят только чтение и чтение и выполнение. А галка записи не выбрана. Пока разбираюсь, изменить пока не получилось.

  11. Под ХР тоже не заработало! подозреваю проблема в контроллере, ваш работает через LPT а мой через USB
    Поделитесь опытом кто по какому интерфейсу работает по оцифровке координат?

  12. Ну да, щуп отрабатывает на 100% хоть при обнулении хоть при сканировании! я так думаю что запись координат в текстовик это дело mach3, может галочку какую поставить, хотя все перерыл ничего похожего не нашел. Может в самом G коде как то принудительно это можно прописать? В общем пока одни вопросы, куда двигать пока не знаю.

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

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