Найти тему
SerG's Hobby

Как делают резьбу с помощью фрезерного станка с ЧПУ

Добрый день!

Сразу сделаю необходимую оговорку, данная статья не нова, я ее уже публиковал летом 2019 года на ресурсе MySKU.ru (https://mysku.ru/blog/diy/73346.html), а сейчас решил ее немного переработать и выложить здесь, аудитории разные, возможно кому-то это покажется интересным и даже познавательным.

Картинка для заставки
Картинка для заставки

Материал предназначен прежде всего для энтузиастов, "самодельщиков" и просто людей увлекающихся.

Все мы с вам знаем, что обычно вручную резьба нарезается с помощью метчиков. Технология проста и понятна - сверлим отверстие, выбирая диаметр сверла в зависимости от нужного диаметра резьбы, а затем с помощью "воротка" прогоняем сначала черновой метчик, а затем чистовой. Ничего сложного!

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

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

-2

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

Если в двух словах, то чтобы воспользоваться этой фрезой необходима специальная управляющая программа. И фреза будет не только вращаться в шпинделе вокруг своей оси и перемещаться по вертикали, но и по винтовой траектории. Сейчас существует множество программ (PowerMill, Fusion360), способных решить эту задачу, но мне было интересно самому разобраться "изнутри" как это происходит.

Фрезерный станок с ЧПУ управляется программ, написанных в G-коде. Если кто-то далек от этого, приведу пример:

Чтобы из текущего местоположения шпиндель переместился в точку с координатами X=10 мм, Y=14 мм с заданной скоростью 1000 мм/мин, достаточно исполнить G-код "G1 X10 Y14 F1000", чтобы поднять шпиндель со скоростью холостого хода на высоту 15 мм - "G0 Z15".

Итак, какие исходные данные у нас есть:

-3

D — диаметр режущей части фрезы
P — шаг резьбы
m — диаметр подготовленного отверстия
M — диаметр резьбы (наружный диаметр внутренней резьбы для гайки)

Суть процесса такова:

  1. Для начала необходимо подготовить отверстие для будущей резьбы. Например, для М6, нужно 4.9 – 5 мм. При нарезании резьбы метчиком я обычно придерживался такого правила — диаметр отверстия равен диаметру резьбы минус шаг резьбы. Не совсем правильно, но для бытовых нужд более чем достаточно.
  2. После этого, нужно рассчитать траекторию, по которой будет двигаться резьбофреза. Траектория будет винтовой.
  3. А далее, собственно, само нарезание. Резьбофреза опускается в подготовленное отверстие до дна и, совершая винтовое движение вверх, нарезает резьбу.

При подготовке алгоритма написания G-кода для станка с ЧПУ я сначала хотел представить винтовую траекторию в кусочно-линейчатом виде, то есть миниатюрными линейными отрезками по которым будет двигаться фреза. Для тех, кто не знает всех возможностей G-кода (таких, как я, например), это наверное самый очевидный способ.
Но, нашелся другой способ, более простой в реализации. Состоит он в использовании кодов G2 или G3 для круговой интерполяции. Как оказалось, с их помощью можно очень просто описать круговую (или дуговую) траекторию в плоскости, либо винтовую траекторию в трёх координатах.
Чуть-чуть покажу, как это происходит — сначала круг, а затем один виток винтовой траектории. Для данного случая применения команда выглядит вот таким образом.
G2/G3 X*.* Y*.* Z*.* I*.* J*.* F*
G2/G3 – круговое движение по часовой либо против часовой стрелки
X, Y, Z – координаты конечной точки (куда придет фреза из текущего положения)
I, J – относительные координаты центра окружности от начальной точки (текущего положения)
F – скорость подачи.

Например, необходимо создать траекторию движения по окружности на плоскости XY с центром в точке (0;0) и радиусом 2 (единицы измерения не ставлю, это абстракция). Движение начнем из точки (0;-2) лежащей на окружности. Необходимо лишь рассчитать параметры I и J.
I = (координата X начальной точки) – (координата X центра окружности) = 0 – 0 = 0
J = (координата Y начальной точки) – (координата Y центра окружности) = 0 – (-2) = 2
Учитывая, что движение по окружности будет осуществляться от точки (0;-2) с возвратом в эту же точку, G код будет выглядеть следующим образом

G0 X0 Y0 Z0 (перемещаемся в центр окружности)
G0 X0 Y0 Z0 (перемещаемся в центр окружности)
G1 X0 Y-2 F200 (перемещаемся в точку, лежащую на окружности, откуда начнется движение)
G1 X0 Y-2 F200 (перемещаемся в точку, лежащую на окружности, откуда начнется движение)
G3 X0 Y-2 Z0 I0 J2 F200 (перемещаемся по окружности в ту же самую точку). На самом деле можно упростить вид последней команды, учитывая, что точка начала и окончания траектории совпадают, а значение I = 0 G3 J2 F200 ( так значительно проще)
G3 X0 Y-2 Z0 I0 J2 F200 (перемещаемся по окружности в ту же самую точку). На самом деле можно упростить вид последней команды, учитывая, что точка начала и окончания траектории совпадают, а значение I = 0 G3 J2 F200 ( так значительно проще)

А теперь создадим один виток винтовой траектории. Код будет выглядеть точно так же, только в последнюю команду добавим координату Z = 1. Соответственно, при движении по окружности постепенно изменится координата Z с начального значения 0 до 1.

G0 X0 Y0 Z0 
G1 X0 Y-2 F200
G3 Z1 J2 F200
G0 X0 Y0 Z0 G1 X0 Y-2 F200 G3 Z1 J2 F200

Думаю, что этой информации вполне достаточно, чтобы понять, как необходимо «вручную» готовить G-код для движения по винтовой траектории при нарезании резьбы.
Кстати для визуализации процесса я использовал бесплатную программу
NC Corrector . Большое спасибо ее авторам!

Конечно же, каждый раз считать и писать код «вручную» очень трудоемко, поэтому данный алгоритм был оживлен в самодельном он-лайн калькуляторе (для внутренней резьбы и для внешней).

Выглядит он вот так:

-8

В калькуляторе вы можете увидеть расчет для внутренней и внешней резьбы. Сформированный код достаточно скопировать в текстовый файл и отдать на растерзание вашему станку. Код проверен под управлением из Mach3 и LinuxCNC. Полёт нормальный.
Еще забыл маленький нюанс. При нарезании резьбы я режу не сразу на всю глубину (имею ввиду заглубление в стенки отверстия), а постепенно. Соответственно и траектория получается в результате расчета не одна, а несколько, с постепенно увеличивающимся диаметром. Вот так.

-9

А теперь разбавлю сухое повествование коротким видео, в полной мере демонстрирующим вышеописанный процесс:

И конечно же макро-фото результата:

Специально выкрасил боковую часть заготовки маркером, чтобы лучше было видно геометрию полученной резьбы.
Специально выкрасил боковую часть заготовки маркером, чтобы лучше было видно геометрию полученной резьбы.
Закрученный винт с резьбой М6
Закрученный винт с резьбой М6

А теперь самое главное — зачем так заморачиваться с этими резьбофрезами, есть же обычные дешевые метчики.
Да, я согласен, что способ несколько замороченный и недешевый (резьбофрезы весьма дорогие), особенно учитывая, что я не режу резьбу в промышленных масштабах.
НО!

  1. Приятно, когда твой самодельный станок с ЧПУ работает за тебя.
  2. Очень удобно нарезать резьбу в глухих отверстиях, витки начинаются всего на пол шага выше дна отверстия. А при использовании обычного набора из двух метчиков приходится добавлять третий метчик, специально слегка сточенный, чтоб резьба доставала до дна как можно больше.
  3. Я не знаю ни одного человека, кто бы резал резьбу идеально вертикально перпендикулярно поверхности ))) а иногда это очень важно.
    Доводы, конечно, так себе, но меня они убедили ))

В заключении, для тех кому интересно, оставлю ссылку на полную видео-версию, того, о чем я Вам поведал.

Спасибо Вам за внимание!