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

Я не люблю травить печатные платы. Ну не нравится мне сам процесс возни с хлорным железом. Там напечатай, тут проутюжь, здесь фоторезист проэкспонируй - целая история каждый раз. А потом еще думай, куда бы слить хлорное железо. Я не спорю, это доступный и простой метод, но лично я его стараюсь избегать. А тут случилось у меня счастье: достроил я фрезер с ЧПУ. Тут же появилась мысль: а не попробовать ли фрезеровать печатные платы. Сказано - сделано. Рисую простенький переходник 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 мм/мин.

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

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



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



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

Я не люблю травить печатные платы. Ну не нравится мне сам процесс возни с хлорным железом. Там напечатай, тут проутюжь, здесь фоторезист проэкспонируй - целая история каждый раз. А потом еще думай, куда бы слить хлорное железо. Я не спорю, это доступный и простой метод, но лично я его стараюсь избегать. А тут случилось у меня счастье: достроил я фрезер с ЧПУ. Тут же появилась мысль: а не попробовать ли фрезеровать печатные платы. Сказано - сделано. Рисую простенький переходник 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 мм/мин.

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

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



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



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

Настольные станки с ЧПУ

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

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

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

Станки серии BIGSTOL часто используют

Станки с ЧПУ для резьбы по дереву: мы предлагает на реализацию отечественным потребителям настольные станки с ЧПУ для художественной резьбы по дереву это 3D обработка, 2D обработка, иконы, картины, и многое другое.

Станки с ЧПУ для изготовления фасадов: современные станки для изготовления фасадов позволяют массово выпускать фасадные детали из различных материалов (древесины, МДФ и прочих) любой степени сложности практически с нулевым показателем брака. С помощью настольных станков с ЧПУ «Стиплайн», предназначенных для высокоточного фрезерования и гравирования фасадных деталей по плоскости, можно изготавливать вещи уникальной красоты путем нанесения на поверхность фасадов сложной художественной резьбы и т.п.

Станки с ЧПУ для раскроя листовых материалов: Компания Стиплайн производит ЧПУ станки для раскроя ДСП, МДФ и пр. Весьма качественное деревообрабатывающее оборудование, задействуется для раскроя цельной древесины и плитных материалов. Технологическая операция выполняется с большой производительностью и необходимой точностью.

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

Кто мы такие?

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

Сегодня на российском рынке представлен широкий выбор подобного оборудования. Если вы остановитесь на нашей продукции, то получаете следующие преимущества:
Доступные цены.
Оборудование производится на Каменском заводе в России, что обеспечивает доступную цену по сравнению с аналогичным оборудованием европейского производства за счет отсутствия таможенных пошлин.

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

Простота в эксплуатации.
Настольные фрезерные станки с ЧПУ от Стиплайн серии BIGSTOL легко интегрируются с программным обеспечением типа DSP0501, что позволяет автоматизировать работу оборудования, повысив скорость обработки без потери точности.

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

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

Как купить настольный станок с ЧПУ?
Если вы хотите получить дополнительную информацию относительно оборудования, выпускаемого компанией SteepLine, коммерческое предложение, учитывающее особенности вашей организации, то просим связаться с нами по бесплатному телефону 8-800-707-95-92 или оставить заявку на сайте. Мы будем рады сделать вклад в ваш успех и повышение качества выпускаемой продукции.

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

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

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