Фрезеровка печатной платы на чпу. Сверлильный станок чпу для плат из палок и саморезов Cnc для печатных плат

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

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

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

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

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

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

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

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

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

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

ВАЖНО! Изготовление печатных плат на станках серии HIGH-Z — весьма точный и быстрый процесс. CNC станки HIGH-Z — это лучшее на сегодня оборудование для производства печатных плат . Наши станки могут одновременно фрезеровать проводящую полосу и сверлить отверстия! Технология изготовления печатных плат на cnc станках HIGH-Z позволяет добиваться весьма высокой точности фрезерования — 0,02 миллиметра. Оснащение для производства печатных плат имеет небольшие размеры.

Производство печатных плат на станках HIGH-Z

ООО «Си-Эн-Си Машин» поставляет лучшее немецкое оборудование для производства печатных плат — станки с ЧПУ серии HIGH-Z и Raptor. Мы — официальный дистрибьтор этих станков в России.

Технология изготовления печатных плат на cnc станке HIGH-Z

Вы проектируете свою печатную плату, например, в PCAD, сохраняете файл как.plt-файл (HPGL) . Далее нужно запустить программу PCNC (поставляется в комплекте).

Для опытных образцов или маленьких серий очень существенно иметь возможность фрезеровки печатных плат. Гравировально-фрезерные cnc станки HIGH-Z имеют возможность фрезеровать проводящую полосу с точностью приблизительно 0,1 — 0,15 мм.

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

Оборудование для прототипирования печатных плат

На фрезерных станках с ЧПУ серии HIGH-Z можно изготавливать прототипы печатных плат для мелкосерийных производств из таких материалов как алюминий, текстолит, стеклотекстолит, лавсан и др. волокнистых материалов.

Возможность изготавливать двусторонние печатные платы. Это видео пермской компании ООО «Уралинтелком» демонстрирует процесс производства двусторонней печатной платы со всеми необходимыми операциями: фрезеровка дорожек, сверловка отверстий, обрезка печатной платы на станке HIGH-ZS-400. Также возможно, при необходимости, наносить на плату клеевые составы.

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

Преимущество cnc станка HIGH-Z:

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

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

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



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



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

Как сейчас помню, 23го февраля наткнулся на пост на тудее, где человек хотел гравировать печатные платы на 3д принтере. В комментариях посоветовали не мучать животинку принтер и обратить внимание на проект Cyclone PCB Factory.

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

О собственном ЧПУ фрезере для печатных плат я мечтал очень давно, это была вторая хотелка после 3д принтера. Решил повторить проект, тем более что кое-что у меня в закромах уже было.

Скачал файлы проекта и не долго думая принялся печатать детальки. Управился примерно за неделю. Распечатал все, кроме оси Z.

Подробных фотографий всех деталей не осталось. Кому-то делал скриншот настроек печати и результата. Сопло 0,4, высота слоя 0,24. Печатал и слоем 0,28 - вполне нормально печатает.

Станок захотелось сделать цветным, поэтому разные детали печатал пластиком разного цвета. Пластик использовал ABS Prostoplast. Цвета космос, травяной зеленый, алеющий закат.

Лучше бы напечатал все серым космосом. Красный и зеленый оказались достаточно хрупкими и часть деталей дали трещины при сборке. Что-то вылечилось ацетоном, что-то заново перепечатал.

Комплектующие:

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

Направляющие 8мм добыл из струйных принтеров, раздербанив несколько принтеров на органы. Шерстил местные комиссионки, авито. Донорами стали струйные принтеры HP по 100-200 рублей за штуку. Длинная направляющая пилилась на две части, на оси X и Z.

Прижим бумаги с которого я снял резиновые ролики пошел на ось Y. Длины как раз хватило чтоб обрезать по накатку.

Линейные подшипники оставались с 3д принтера, принтер я перевел на бронзовые втулки в горошек.

В качестве электроники решил использовать одну из своих Arduino Uno на atmega328p. Докупил на Али плату cnc shield 3.0 для Arduino за 200 с копейками рублей.

Блок питания 12В из Леруа Мерлен. Покупал чтоб запитать три 12В галогенки, но он их не потянул. Пришлось отремонтировать трансформатор для галогенок Tachibra, а этот блок питания прижился на станочке.

На 3д принтер я поставил драйвера 8825, с принтера у меня остались a4988. Их и поставил на станок.

Подшипники 608ZZ заказал на Али, десяток за 200 с копейками рублей..

В качестве шпинделя планировал использовать свой китайский гравер GoldTool.

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

Пока печатался проект и ехали детали с Али, попросил знакомого мебельщика вырезать из МДФ основание и столик. Он не поленился и не пожалел обрезков, выпилил 2 основания и 2 столика. На фото один из комплектов.

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

Начал собирать станок. Все бы ничего, но стандартные гайки на 13 проваливались и болтались внутри шестерни, гайки на 14 не лезли в шестерни. Пришлось 14е гайки вплавить в шестерни паяльником.

Шестерни или болтались на осях шагового двигателя, или не лезли.

Гайки винтов м3 прокручивались в посадочных гнездах.

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

Как-то собрал. Позже читая темы про Cyclone, наткнулся на переработанные детальки станка под метрический крепеж. Из этого набора заново распечатал шестерни и крепление концевика по оси Z. Жаль мне не попался этот набор запчастей раньше. Печатал бы эти запчасти.

В надежде применить свой китайский гравер распечатал сначала одно крепление под дремель из комплекта, потом второе. Не подошло, мой гравер ни в одно не лез. Оригинальный же дремель, самый простой, стоил три с небольшим тысячи рублей. За что???

Лишние запчасти.

И еще, линейные подшипники в своих гнездах болтались как что-то в проруби.

Пришлось за тысячу с небольшим заказать на али 200Вт шпиндель с цанговым зажимом ER11. Удачно попал на скидки и использовал купон.

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

В итоге нашел и распечатал вот это крепление под 52мм шпиндель После небольшой доработки крепление встало на станок, в него хорошо вошел шпиндель.

А вот подшипники на втулках Cargo пришлось из них убрать. Поставил китайские LM8UU

Отдельно хочется сказать про китайские подшипники 608zz. Подшипники с новья с люфтом. Ужасные. Одно что стоят сравнительно не дорого. У нас подшипники не искал.

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

Китайские lm8uu и lm8luu от 3д принтера так же оказались хламом. В итоге на ось Y сделал подшипники скольжения на втулках Cargo 141091. Распечатал пластиковую обойму и в нее вставил по паре втулок. Получившиеся подшипники вставил в крепления.

На ось Z выбрал более менее живые lm8uu. На ось X верхний подшипник поставил lm8uu, а вместо двух нижних распечатал пластиковую обойму по размеру lm8luu и в нее вставил пару втулок Cargo.

Удачно я ими в свое время закупился. Пригодились.

Во время сборки станка я и пожалел, что взялся. Но, деваться было некуда, надо было проект завершать. Собрал. Запустил!

Еще немного фотографий процесса сборки.

Самое начало сборки...