Станки cnc для печатных плат. Фрезеровка печатных плат в домашних условиях. Этот непростой процесс монтажа

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

Станки СК «Роутер» для изготовления печатных плат

В каталоге продукции СК «Роутер» оборудование для производства печатных плат представлено сверлильными станками с ЧПУ. Модели для печатных плат сконструированы на базе наших фрезерно-гравировальных станков и комплектуются специальными высокоскоростными шпинделями. Наличие такого шпинделя позволяет сверлить и фрезеровать печатные платы с высокой скоростью и точностью.

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

Область применения

Мини станки для печатных плат СК «Роутер» применяются на предприятиях различных отраслей: от общепроизводственных до авиационной и космической. Кроме сверления печатных плат на таких станках можно успешно осуществлять и фрезеровку корпусов радиоэлектронной аппаратуры. Таким образом, возможно реализовать законченное производство электронных приборов.

Комплектация сверлильных станков

В состав базовой поставки станков для печатных плат входит набор оснастки, достаточный для начала изготовления плат в серийном режиме. Вместе с тем, для повышения производительности и удобства работы на станке оборудование может быть доукомплектовано дополнительными опциями: системой ЧПУ, автоматической сменой инструмента, СОЖ и другой технологичной оснасткой.

Видео сверления печатной платы

Посмотрите процесс изготовления печатной платы на одном из наших сверлильных станков:

Я не люблю травить печатные платы. Ну не нравится мне сам процесс возни с хлорным железом. Там напечатай, тут проутюжь, здесь фоторезист проэкспонируй - целая история каждый раз. А потом еще думай, куда бы слить хлорное железо. Я не спорю, это доступный и простой метод, но лично я его стараюсь избегать. А тут случилось у меня счастье: достроил я фрезер с ЧПУ. Тут же появилась мысль: а не попробовать ли фрезеровать печатные платы. Сказано - сделано. Рисую простенький переходник c завалявшегося esp-wroom-02 и начинаю свой экскурс во фрезеровку печатных плат. Дорожки специально сделал мелкими - 0,5 мм. Ибо если такие не выйдут - то и ну нафиг эту технологию.



Так как лично я делаю печатные платы раз в пять лет по большим праздникам - мне для проектирования вполне хватает KiCAD. Для него специализированных удобных решений я не нашел, но есть более универсальный путь - с использованием gerber-файлов. В этом случае все относительно просто: берем pcb, экспортируем нужный слой в gerber (никаких зеркалирований и прочей магии!), запускаем pcb2gcode - и получаем готовый nc-файл, который можно отдать фрезеру. Как всегда, реальность - злая зараза и все оказывается несколько сложнее.

Получение gcode из gerber-файлов

Итак, как получить gerber-файл, я особенно описывать не планирую, я думаю, это все умеют. Дальше нужно запустить pcb2gcode. Оказывается, он требует примерно миллион параметров командной строки, чтобы выдать что-то приемлемое. В принципе, документация у него неплохая, я ее осилил и понял, как получить какой-то gcode даже так, но все же хотелось казуальности. Потому был найден pcb2gcode GUI . Это, как подсказывает название, GUI для настройки основных параметров pcb2gcode галочками, да еще и с предпросмотром.



Собственно, на этом этапе получен какой-то гкод и можно пробовать фрезеровать. Но пока я тыкал в галочки, выяснилось, что дефолтное значение заглубления, которое предлагает этот софт, - 0,05 мм. Соответственно, плата должна быть установлена во фрезере как минимум с точностью выше этой. Я не знаю, у кого как, но у меня рабочий стол у фрезера заметно более кривой. Самое простое решение, что пришло в голову, - поставить на стол жертвенную фанерку, отфрезеровать в ней карман под размеры плат - и она окажется идеально в плоскости фрезера.


Для тех, кто уже хорошо владеет фрезером, эта часть неинтересна. После пары экспериментов я выяснил, что фрезеровать карман обязательно нужно в одном направлении (например, подачей на зуб) и с захлестом хотя бы процентов на тридцать. Fusion 360 мне предложил сначала слишком маленький захлест и ездил туда-сюда. В моем случае результат получился неудовлетворительный.

Учет кривости текстолита

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



Как видно, с одного края платы фреза практически не задевает медь, с другого - слишком углубилась в плату, при фрезеровке пошли крошки текстолита. Посмотрев внимательно на саму плату, я заметил, что она изначально неровная: слегка выгнутая, и, как ты с ней ни мучайся, какие-то отклонения по высоте будут. Потом, кстати, я посмотрел и выяснил, что для печатных плат толщиной более 0,8 мм допуск ±8 % считается нормальным.


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


Мой станок управляется grbl’ом на дешевом китайском шилде. У grbl есть поддержка щупа на пине A5, но вот специального разъема на моей плате почему-то не выведено. Внимательно рассмотрев ее, я все же обнаружил, что пин A5 выведен на разъем SPI порта (подписанный как SCL), земля там тоже рядом есть. С этим «датчиком» одна хитрость - провода нужно переплести между собой. Во фрезере крайне до фига наводок, и без этого датчик будет постоянно давать ложные срабатывания. Даже после переплетения продолжит, но сильно-сильно реже.




Команда говорит: начинай спускаться вниз вплоть до –10 по Z (абсолютная это или относительная высота - зависит от режима, в котором сейчас прошивка). Спускаться будет очень медленно - со скоростью 5 мм/мин. Это вызвано тем, что сами разработчики не гарантируют, что спуск остановится ровно в момент срабатывания датчика, а не чуть позже. Поэтому лучше спускаться медленно, чтобы все остановилось вовремя и не успело уйти в плату по самое не балуйся. Лучше всего первый тест проводить, подняв голову на высоту сильно больше 10 мм и сбросив систему координат. В таком случае, даже если все не сработает и вы не успеете дотянуться до кнопки E-Stop’а, фреза не будет запорота. Можно провести два теста: первый - ничего не делать (и по достижении –10 grbl выдаст «Alarm: Probe Fail»), второй - пока оно едет вниз, чем-нибудь замкнуть цепь и убедиться, что все остановилось.


Дальше надо найти метод, как, собственно, промерить матрицу и исказить gcode как нужно. На первый взгляд, у pcb2gcode’а есть какая-то поддержка autoleveling’а, но поддержки именно grbl’а нет. Там есть возможность задать команды запуска пробы руками, но с этим надо разбираться, а мне, честно говоря, было лень. Пытливый ум мог бы заметить, что у LinuxCNC команда запуска пробы совпадает с командой grbl. Но дальше идет непоправимое различие: все «взрослые» интерпретаторы gcode’а сохраняют результат выполненной пробы в машинную переменную, а grbl просто выводит в порт значение.


Легкое гугление подсказало, что есть еще довольно много разных вариантов, но мне на глаза попался проект chillpeppr :


Это система из двух компонентов, предназначенная для игры с железом из вебни. Первый компонент - Serial JSON Server, написанный на go, запускается на машине, подключенной непосредственно к железке, и умеет отдавать управление последовательным портом по вебсокетам. Второй - работает у вас в браузере. У них есть целый фреймворк для построения виджетов с каким-то функционалом, которые потом можно засовывать на страничку. В частности, у них уже есть готовый workspace (набор виджетов) для grbl и tinyg.


И у chillpeppr’а есть поддержка autoleveling’а. Да еще и с виду он сильно удобнее UniversalGcodeSender’а, которым я пользовался до этого. Ставлю сервер, запускаю браузерную часть, трачу полчаса на то, чтобы разобраться с интерфейсом, загружаю туда gcode своей платы и вижу какую-то фигню:



Посмотрев в сам gcode, который генерирует pcb2gcode, вижу, что он использует нотацию, когда на последующих строках не повторяется команда (G1), а даются только новые координаты:


G00 X1.84843 Y34.97110 (rapid move to begin.) F100.00000 G01 Z-0.12000 G04 P0 (dwell for no time -- G64 should not smooth over this point) F200.00000 X1.84843 Y34.97110 X2.64622 Y34.17332 X2.69481 Y34.11185 X2.73962 Y34.00364 X2.74876 Y31.85178 X3.01828 Y31.84988 X3.06946 Y31.82249 X3.09684 Y31.77131

Судя по тому, что chilipeppr показывает только вертикальные движения, он видит строку G01 Z-0.12 здесь, но не понимает все, что идет после F200. Нужно переделывать на explict нотацию. Конечно, можно руками поработать или напилить какой-нибудь post-processing скрипт. Но никто еще не отменил G-Code Ripper , который среди прочего умеет бить сложные команды gcode’а (типа тех же дуг) на более простые. Он же, кстати, тоже умеет по матрице autoprobe’а искривлять gcode, но встроенной поддержки grbl’а опять нет. Зато можно сделать тот самый split. Мне вполне подошли стандартные настройки (разве что в конфиге пришлось заранее поменять единицы измерения на mm). Результирующий файл начал нормально отображаться в chilipeppr:



Дальше запускаем autoprobe, не забыв указать расстояние, с которого опускать пробу, и ее глубину. В моем случае я указывал, что надо опускать с 1 до –2 мм. Нижняя граница не так важна, ее можно поставить хоть –10, но я бы не советовал: пару раз неудачно выставил начальную точку, с который надо запускать пробу, и крайние точки оказывались за пределами платы. Если заглубление больше - можно и гравер сломать. А так просто ошибка. От уровня верхней границы напрямую зависит то, как долго он будет промерять поверхность. В моем случае реально плата почти никогда не уходила за пределы 0,25 мм вверх или вниз, но 1 мм как-то надежнее. Жмем заветную run и бежим к фрезеру медитировать:



А в интерфейсе chilipeppr появляется потихоньку промеренная поверхность:



Здесь надо обратить внимание, что все значения по Z умножены на 50, дабы лучше визуализировать получившуюся поверхность. Это настраиваемый параметр, но 10 и 50 хорошо работают, на мой взгляд. Я достаточно часто сталкиваюсь с тем, что какая-то одна точка оказывается сильно выше, чем можно от нее ожидать. Лично я связываю это с тем, что датчик ловит-таки наводки и дает ложное срабатывание. Благо chilipeppr позволяет выгрузить карту высот в виде json’ки, ее можно руками после этого поправить, а потом руками же загрузить. Дальше жмем кнопку «Send Auto-Leveled GCode to Workspace» - и в перце уже загружен поправленный гкод:


N40 G1 X 2.6948 Y 34.1118 Z0.1047 (al new z) N41 G1 X 2.7396 Y 34.0036 Z0.1057 (al new z) N42 G1 X 2.7488 Y 31.8518 Z0.1077 (al new z) N43 G1 X 3.0183 Y 31.8499 Z0.1127 (al new z) N44 G1 X 3.0695 Y 31.8225 Z0.1137 (al new z) N45 G1 X 3.0968 Y 31.7713 Z0.1142 (al new z)

В код добавлены перемещения по Z, которые должны компенсировать неровность поверхности.

Выбор параметров фрезеровки

Запускаю фрезеровку, получаю вот такой результат:



Тут видно сразу три момента:

  1. Проблема с неровностью поверхности ушла: прорезано (точнее, процарапано) все практически на одну глубину, нигде нет пропусков, нигде не заглубился слишком сильно.
  2. Заглубление недостаточное: 0,05 мм явно не хватает для этой фольги. Платы, кстати, какой-то неизвестный зверь с AliExpress, толщину меди там не указали. Слой меди бывает разный, наиболее распространенные - от 18 до 140 мкм (0,018-0,14 мм).
  3. Явно видны биения гравера.

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



Формула расчета ширины реза при заданном заглублении выглядит так (нескромно взята с reprap.org и исправлена):


2 * penetration depth * tangens (tool tip angle) + tip width

Считаем по ней: для гравера с углом 10 градусов и точкой контакта 0,1 мм при заглублении 0,1 мм мы получаем ширину реза почти 0,15 мм. Исходя из этого, кстати, можно прикинуть, какое минимальное расстояние между дорожками сделает выбранный гравер на фольге выбранной толщины. Ну и еще, даже если вам не надо очень маленьких расстояний между дорожками, слишком глубоко фрезу опускать все равно не стоит, так как стеклотекстолит очень сильно тупит фрезы даже из твердых сплавов.


Ну и тут есть еще смешной момент. Допустим, у нас есть две дорожки, отстоящие друг от друга на 0,5 мм. Когда мы прогоним pcb2gcode, он посмотрит на значение параметра Toolpath offset (насколько отступать от дорожки при фрезеровке) и фактически сделает между дорожками два прохода, отстоящие друг от друга на (0,5 – 2 * toolpath_offset) мм, между ними останется (а скорее всего, сорвется) какой-то кусочек меди, и будет это некрасиво. Если же сделать toolpath_offset большим, чем расстояние между дорожками, то pcb2gcode выдаст warning, но сгенерирует только одну линию между дорожками. В общем случае для моих применений это поведение более предпочтительно, так как дорожки получаются шире, фреза режет меньше - красота. Правда, может возникнуть проблема с smd-компонентами, но маловероятно.


Есть выраженный случай такого поведения: если задать очень большой toolpath_offset, то мы получим печатную плату в виду диаграммы Вороного. Как минимум - это красиво;) На эффект можно посмотреть на первом скриншоте из pcb2gcode, что я давал. Там показано, как она будет выглядеть.


Теперь про биения гравера. Это я их зря так называю. Шпиндель у меня неплохой вроде и так сильно, конечно, не бьет. Тут скорее кончик гравера при перемещении изгибается и прыгает между точками, давая вот ту странную картину с точечками. Первая и основная мысль - фреза не успевает прорезать и потому перепрыгивает. Легкое гугление показало, что народ фрезерует печатные платы шпинделем на 50к оборотов со скоростью примерно в 1000 мм/мин. У меня шпиндель дает 10к без нагрузки, и можно предположить, что резать надо со скоростью 200 мм/мин.

Результаты и вывод

Учтя все это, промеряю новый кусок текстолита, запускаю фрезеровку и получаю вот такой результат:



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



В общем, перспективы у этого всего есть. Когда процесс отработан, построение матрицы высот занимает минут пять-семь, потом непосредственно фрезеровка - пару минут. Вроде можно экспериментировать дальше. Зато можно потом сверловку делать на том же станке. Еще прикупить заклепок, и будет счастье! Если тема интересна, то могу написать еще одну статью про сверловку, двусторонние платы и пр.

ЧПУ станок очень удобно использовать в домашней радиолюбительской мастерской для изготовления печатных плат как макетов изделий, так и малых партий изделий. Наличие гравировально - фрезерного ЧПУ в домашней мастерской или малом предприятии позволяет как сократить время необходимое на изготовление печатной платы при изготовлении макетов, прототипов малых партий продукции, так и повысить качество изготавливаемых печатных плат по сравнению с другими способами изготовления. Использование станка с числовым программным управлением позволяет выполнять полный спектр операций по изготовлению печатной платы - фрезеровку проводящего рисунка (дорожек), сверление отверстий как для установки компонентов так и для межслойных переходов, обрезки и платы по контуру.

Для начала необходимо создать проект печатной платы. Для этого очень удобно использовать очень популярную в среде радиолюбителей программу Sprint Layout 6. При разработке нужно учитывать технологические особенности обработки фольгированного текстолита на станке с чпу, то есть производить трассировку достаточно широкими дорожками, оставляя необходимые зазоры для прохождения гравера/фрезы и т.д. Точкой начала отсчета координат необходимо выбрать ЛЕВЫЙ НИЖНИЙ УГОЛ, рисунок 1.

На слое О рисуем контур (границы) печатной платы по которым будет производиться обрезка готовой платы. Толщину линий указываем в зависимости от диаметра используемой для обрезки платы фрезы. Контролируем, зазор между краем платы и дорожками, чтобы контур не пересекалися с дорожками. Для того, чтобы плата после вырезки по не была выброшена из заготовки и не повредилась фрезой, оставляем перемычки, на которых плата будет держаться в заготовке. Их легко можно будет потом перекусить бокорезами при извлечении готовой платы. Выключаем лишние слои и предварительно осматриваем плату, рисунок 2.

рисунок 2

Открываем окно настройки «стратегий» фрезеровки, рисуноки 3 и 4.

рисунок 3

рисунок 4

В оконе «ширина дорожки» (рисунок 4) указываем толщину нашего режущего инструмента. Например гравер с режущим кончиком 0,6мм. Для удобства дальнейшей обработки ставим галочку «наметить отверстия». Нажимаем «Ок». Сохраняем в удобном для нас месте рисунок 5.

рисунок 5

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

рисунок 6

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

рисунок 7

На данном этапе необходимо внимательно отследить траекторию движения фрезы - проконтролировать отсутствие замыкания между проводящими дорожеками не принадлежащими к одоимённой цепи. При выявлении ошибки - исправить и пересохранить файл.
Далее необходимо подготовить управляющую программу, для станка. С помощью утилиты Step Cam 1.79 (скачать можно в интернете) открываем наш файл фрезеровки, производим настройку рабочей подачи и глубины резания (зависит от использумого станка, инструмента и материала) и конвертируем в G-code, нажав клавишу Make G-code. Программа на основе файла фрезеровки сгенерирует G-код обработки. Увидеть результат генерации G-кода можно с помощью вкладки Action -> Draw G-code. Если ничего не отобразится - нужно кликнуть мышью в окошке, рисунок 8.
Опытным путем подбиаем глубину фрезеровки, стараясь настроить станок так, чтобы фреза/гравер снимал только слой меди, с небольшим перерезанием. Данный параметр зависит от толщины медной фольги фольги используемого текстолита.

рисунок 8

Нажимаем Save G-code. Файл готов.
Загружаем файл в Mach3,проводим визуальный контроль загруженного файла. Выставляем нули на станке, запускаем обработку.
Для сверлнения отверстий в плате и вырезания по контуру настройка и подготовка файлов аналогична. Примерные настройки указаны на рисунках 9 и 10.
Сверление рисунок 9:

рисунок 9

Фрезеровка платы по контуру, рисунок 10:

рисунок 10

Сохраняем настройки для сверления и фрезеровки контура отдельно. Загружаем в Step Cam. Указываем глубину обработки, в зависимости от толщины используемого текстолита, с небольшим перерезанием. К примеру при толщине текстолита 1,5 мм выставляем для сверления 1,6-1,7 мм. Фрезеровку по контуру желательно выполнять в 2 - 4 прохода, в зависимоти от характеристик режущего инструмента. Для этого задаем в Step Cam глубину погружения при фрезеровке 0,5 мм, а затем после каждого прохода на станке вручную опускаем по оси «Z» инструмент и обнуляем.

Некоторые нюансы работы на станке при изготовлении печатной платы:
1. Поверхность рабочего стола должна быть максимально плоской и ровной. Один из вариантов добиться этого - сделать «жертвенный стол» из фанеры и отторцевать его. Для этого к основному рабочему столу станка крепится лист фанеры, а затем с помощью крупной фрезы фрезеруется «ложе» под плату на небольшую глубину (1-2мм).
2. Стеклотекстолит не всегда идеально ровный материал, и толщина его тоже может варьироваться. Поэтому резать необходимо с небольшим перерезанием. Некоторые опытные люди специально составляют карты высот, для более точной обработки. Степень перерезания определяется опытным путем.
3. Для фрезеровки можно использовать гравер типа «пирамидка» с кончиком от 0,4 до 1мм. Для сверления существуют сверла на 0,8-1,5мм с хвостовиком под стандартную цангу 3,175мм. Вырезать по контуру лучше всего фрезой «кукуруза» 2-3мм.
4. Инструмент каждый раз меняется вручную. Для этого после выполнения, например фрезеровки дорожек, останавливаем шпиндель, станок оставляем в режиме удержания. Поднимаем режущий инструмент на удобную для замены высоту, меняем. После этого производим выставление нуля по оси «Z». И так при каждой смене инструмента. Координаты X и Y не обнуляем.
5. Не забываем, что стеклотекстолит не самый полезный материал для организма. Особенно вредна пыль текстолита для дыхательных путей. Поэтому желательно организовать вытяжку или иным другим способом удалять лишнюю пыль из области резки. Можно например периодически смачивать печатную плату водой или друой подходящей жидкостью, с помощью медицинского шприца. Неплохо с задачей защиты дыхательных путей справится влажная повязка на нос/рот или респиратор.

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

▌Станок
Для гравировки платы нужен фрезерный станок ЧПУ. Кудаж без него. У меня тут какой то китаец без роду и племени. С рабочим столом 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## сдвигая на сотку-другую вверх или вниз добиться того, что кнопка индикатора начнет мерцать (а она у меня меняет цвет когда происходит касание щупа) от малейшей вибрации в помещении. Скажем когда кто-то мимо прошелся. Да, само собой при этом мы выставляем координаты Х и У в будущий ноль координат исходя из нашей платы. Не путать с нулем станка (машинные координаты).

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мм и он мне их весело засверлил:) ЧПУ не прощает ошибок.

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

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

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

Вот первая версия моего платосверлила:

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

Пока ждал железо, замутил могучую подсветку для этого станка



прибор говорит что ОЧЕНЬ ЯРКО. Но работать комфортно, регулировку подсветки решил не делать

вот фото в работе

Начал пилить привод оси У. Решил просто добавить немного деревяшек к существующей конструкции

Обратите внимание на нанотехнологичное соединение вала с ходовым винтом

Для этого был куплен датчик стопсигнала от ваза какого то, и безжалостно раздолбан, чтобы осталась только латунная трубка

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


В качестве мозгов станка выступит ардуино нано, ибо кодить для чего-то более серьезного я не могу. Управление при помощи потенциометра и энкодера с кнопкой.
Сам драйвер называется в интернете EASY DRIVER, что как бы говорит о простоте работы с ним. Это верно. Ему нужно два сигнала - STEP и DIR. Первым мы шагаем движком, вторым говорим, в какую сторону шагать. После пробы топорной библиотеки для него я решил написать всё сам, получилось в итоге неплохо.
Питается это всё от ноутбучного блока питания на 19 вольт. Драйвер может пропустить через себя до 30 вольт, а мотор с патроном рассчитан на 24, если не ошибаюсь, оборотов у него все таки маловато.

Видео первого теста:

Энкодером можно двигать шпиндель вверх-вниз по оси У, переменный резистор задает расстояние, на которое шпиндель сдвинется за один щелчок энкодера, а так же задает скорость подачи при нажатии кнопки «СВЕРЛИТЬ!» Очень удобно оказалось использовать заранее подготовленный алгоритм проделывания отверстия. Так же для понта приделал валявшийся дисплей. Подключил его с помощью вот такого ? чтобы сэкономить ноги ардуины

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

посмотреть








Помучившись с кодом заставил все это работать как мне нужно, и вот готовое устройство.

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

Планирую купить +25 Добавить в избранное Обзор понравился +63 +109