▌Станок
Для гравировки платы нужен фрезерный станок ЧПУ. Кудаж без него. У меня тут какой то китаец без роду и племени. С рабочим столом 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.81мм для обычных TH компонентов и 3мм для крепежных отверстий под всякие потенциометры, энкодеры, крепежные отверстия в плату и так далее. Чтобы было удобней, я держу инструмент сразу в цанге-гайке. Так как правило не всегда удается подобрать все под одну цангу. А достать цангу из гайки, особенно если это цанга маленького размера, бывает сложно. Поэтому проще иметь штук пять гаек и цанг под все случаи жизни. И держать их такими вот наборами.
Для обрезки платы используется фреза кукуруза диаметром 23мм, лучше 2. Не так много опилок и нагрузка на станок меньше.
Плата просто приклеивается к жертвенному столу скотчем. Кстати, стол можно сфрезеровать под ноль, тогда все огрехи геометрии станка по крайней мере будут повторять форму подложки, что позволит повысить точность. Но я этого делать не стал, хотя у меня расхождение между углами составляет около миллиметра. Просто к гладкой ламинированной МДФ панели лучше клеится текстолит и при удалении скотч отрывается сразу полностью, не размазываясь по волокнистой структуре МДФ. Разница как отрывать скотч от лакированного стола или от картонной коробки. Коробка срывается с мясом. Тут так же почти. Потому не фрезерую.
▌Сканирующий софт
Чтобы компенсировать кривизну стола, а у меня она особо кривая, я провожу сканирование поверхности, строя карту высот. Сначала надо подготовить карту высот:
Вообще в Mach3 есть свой визард для этой цели. Искать в меню Wizard-Pick Wizard-Digitize Wizard, откроется вот такая хреновина:
Где можно указать размер общупываемой поверхности (Width и Height of area), безопасную высоту перемещения щупа (Z travel), глубину до которой щуп будет искать поверхность (Z Axis Probe Depth). Stepover это шаг по осям, а FeedRate скорость с которой щуп пойдет до поверхности. Чем быстрей тем быстрей сканирование, но по инерции он может попасть чуть глубже чем надо. Поэтому тут надо ловить баланс. Потом жмете Create and Load Gcode и у вас в мач сразу же будет загружен готовый код сканирования. Я не пользуюсь этим визардом потому, что он не очень удобный. Куда проще сгенерировать код в той же проге которая будет править код плана резки. Это G-code Ripper.
Брать его с официального сайта Не забыв передать привет мудилам из Роскомнадзора, которые его заблокировали как экстремистский. Так что применяйте прокси-плагины (Opera Turbo вполне подойдет или FriGate плагин для Chrome, только там надо будет вручную вписать адрес этого сайта).
Итак, запускаете G-code Ripper. Эта штука, как и flatcam тоже написана на питоне и тоже имеет консольный интерфейс (впрочем я в нем пока сам не разбирался, а так, думаю, можно вписать ее в наш злой батник). А пока же втыкайте в его GUI.
И что же мы видим:
Вот такое главное окно программы. Нам надо выбрать в левом нижнем углу Auto Probе и через меню File загрузить гкод нашей гравировки. Сначала давайте сторону которую будем резать.
Получили наш план резки и белые крестики поверх. Крестики это точки ощупывания. Обратите внимание на расположение осей координат, туда вы должны будете потом пригнать щуп. А пока займемся пересчетом и вводом параметров программы:
Probe Offset это смещение щупа относительно инструмента. У меня щупом является сам инструмент, поэтому тут нули. Probe Z Safe безопасная высота сканирования. Зависит от кривизны вашей системы. У меня разброс под миллиметр и потому я поставил 2. А вообще при ровном столе достаточно и 0.8 мм. Чем ниже тем быстрей сканирование. Опускаться то меньше! Probe Depth предельная глубина на которую пойдет щуп. У меня 0, т.к. в данном случае начало координат стоит в самом низком углу моего стола. А вообще можно и в минус немного загнать, скажем на -0.5. Хуже не будет. Probe Feed скорость опускания. Меньше точнее, но дольше скан и шуму больше. У меня 100мм/мин. Х/У Points это сколько точек по вертикали и горизонтали снять. Вон те самые белые крестики. Габариты платы он сам выберет. Pre и Post коды я оставляю пустыми, т.к. никаких дополнительных кодов перед и после программы мне не надо. А вот счастливые обладатели ченейджера могут, например, автоматом специальный щупательный инструмент вытащить, а потом убрать обратно. Controller у меня MACH3 и, собственно, все.
Жмем Save G-code File Probe Only, получаем файл с гкодом, шлем его в станок и идем щупать плату.
Как же станок будет сканировать поверхность? Для этого у станка есть щуп. Когда щупа касается масса, то станок это чувствует. За массу у меня принят шпиндель. Вот та пластиковая приблуда, что окружает его крыльчатку это держатель щетки. Которая сделана из старой фрезы и втыкается в центр вала, на подпружиненном крепеже. Почему я просто не подал массу на корпус шпинделя? А потому, что через его подшипники довольно хреновый контакт. Он может пропадать в зависимости от угла поворота. А так он прям по валу дойдет до цанги, а внутри цанги еще маленькая пружинка подведет контакт прямо к инструменту. А сам щуп представляет собой пластину известной толщины (где то 0.5мм) на проводке. Если мне надо выставить инструмент точно на 0 я кладу в нужное место пластину, прижимаю ее пальцем к поверхности и даю команду на поиск нуля. Станок тычется в пластину инструментом, потом учитывает толщину и осознает текущую высоту кончика инструмента. Подняв при этом инструмент на 2.5мм.
В случае же с текстолитом мне нужно просто положить контакт щупа на медь, закрепить изолентой, чтобы не убежал и сделать поиск поверхности. Координата, конечно, выставится не верно. Т.к. в этом случае нет толщины самого щупа. Но это не важно. Главное теперь можно вручную, вводя команду G1 Z-2 (почему -2? А потому, что по моему скрипту после нахождения у меня инструмент подпрыгнет на 2.5мм, а 0.5 толщина пластины щупа, т.е. фактически его координата станет 2мм), опустить инструмент почти до уровня текстолита. Почему почти? А для больше точности не помешает поймать самый нежный контакт, а автопоиск довольно груб, т.к. у станка есть некоторая инерция и он немного промахивается. А вот если завести инструмент почти на ноль, а потом вручную, командами G1 Z## сдвигая на сотку-другую вверх или вниз добиться того, что кнопка индикатора начнет мерцать (а она у меня меняет цвет когда происходит касание щупа) от малейшей вибрации в помещении. Скажем когда кто-то мимо прошелся. Да, само собой при этом мы выставляем координаты Х и У в будущий ноль координат исходя из нашей платы. Не путать с нулем станка (машинные координаты).
Дальше, когда ноль найден, то надо обнулить координаты по XYZ и запустить программу сканирования, указать в какой файл записать данные и получить текстовый файл примерно вот такого вида:
0.00000,0.00000,0.00500
7.05500,0.00000,0.03000
14.11500,0.00000,0.03000
21.17000,0.00000,0.06500
28.22500,0.00000,0.07000
35.28500,0.00000,0.11500
42.34000,0.00000,0.12000
49.39500,0.00000,0.16000
56.45500,0.00000,0.14000
63.51000,0.00000,0.14000
0.00000,8.65500,0.00000
7.05500,8.65500,0.00000
Тут все и так ясно это просто координаты по осям где инструмент коснулся поверхности. Что нам, собственно, и нужно.
Возвращаемся в наш Gcode-Ripper и делаем там Read Probe Data File и наши крестики становятся черными:
Готово. Осталось теперь нажать для верности кнопочку Recalculate и сохранить скорректированный файл. Save G-code File Adjusted. Если теперь их сравнить в каком-нибудь NC-Correctore то на виде сбоку будет видно, что у нового файла появился рельеф дна 🙂
старый:
новый:
Таким же макаром правим и обрезку по контуру, иначе вы рискуете не дорезать до конца или наоборот задрать стол. Он, конечно, жертвенный, но лучше обходиться без жертв.
Ободрали изоляцию. Получилось хреново, потому что фреза 0.2 да еще и тупая. А тут бы 0.1 и поострей. Лохмы образуются потому, что контур надо бы обходить в двух направлениях, т.к. фреза когда идет по фольге с одной стороны пропила режет чисто, с другой махратит. И надо обратный проход сделать, снять заусенки. А флаткам не делает его или я не научился еще. Поэтому я их обычно сношу мелкой шкурочкой в пару движений. Еще можно снизить подачу реза, будет намного чище. Или, если шпиндель позволяет, обороты повысить. Вон LPKF Protomat жарит на 100 000 оборотах и там гладенько все.
А это вот уже практически готовая плата. Четыре огромные дырки на месте кнопки это я хорошо факапнулся на эпизоде смены инструмента при сверлении. Когда выложу видео там увидите сами. Надо было поставить после 0.8мм сверла 1мм сверло (или просто нажать далее, чтобы тем же 0.8мм просверлить), а я не прочитал что мне предложил поставить станок, забыл, что там еще миллиметровые отверстия есть и воткнул сразу 3мм и он мне их весело засверлил 🙂 ЧПУ не прощает ошибок.
Вот как то так. Да, на двусторонке, после переворота текстолита, надо еще раз его простучать щупом.
Кроме обещанной видяшки которую я хз еще когда смонтирую (ненавижу это дело) будет еще одна две статейки по флаткаму и мне тут товарищ набросил альтернативный метод. Я его сверстаю и скоро выложу. На этом тему наверное закрою. Т.к. ну чего там еще рассусоливать то? ,)
Оцените статью!