Меню

G-код генератор резьбы

Выточил переходник QSI <-> M48. Площадочка небольшая, аналог этой:

Оказалось, так как QSI – камера американская (?), то дырки в этом переходнике лежат на квадрате 1.6 дюйма. Понял это только с третьей пробы.

Попробовал центральное отверстие сделать 48мм – резьба корректора провалилась. Попробовал 47… не айс. А вот 47.5мм почти что накрутилась (без резьбы по ламинату). С перекосом, заметным перекосом. Но … куплю циркулярочку и нарежу ей резьбу:

Нагуглил, чуть модифицировал под задачу, программу генерации G-кода спирали. Программа была на известном мне Javascript, но перевести её на любой другой язык – дело пяти минут. Оставил на js, он запускается у меня в консоли из-под node.js.

var ORIGIN = [0, 0, 0]; // центр круга (верх)
var METRIC = 48; // M48
var STEP = 0.75; // M48x0.75
var HEIGHT = 9; // высота резьбы

var CUT = 0.5; // нужно врезаться вглубь на 0.5мм
var CUT_STEP = 0.1; // шагом 0.1мм
var CUTTER = 22; // диаметр носа фрезы

 

var POINTS_PER_LOOP = 100;
var SPEED = 10000;
var SAFE_Z = 5;

 

var i, cut, theta, h;

 

//console.log(“G4 P5000”);
//console.log(“G28”);
//console.log(“G1 F”+ SPEED);

 

var LOOPS = Math.floor(HEIGHT / STEP);

console.log(‘G1 X’+ ORIGIN[0] +’ Y’+ ORIGIN[1] +’ Z’+ (ORIGIN[2] + SAFE_Z) );

 

for (cut = 0; cut <= CUT; cut += CUT_STEP) {
console.log(‘G1 Z’+ (ORIGIN[2]) );

for (i = 0; i < LOOPS; i += (1 / POINTS_PER_LOOP) ) {
theta = 2*i*Math.PI;
h = ORIGIN[2] – (Math.abs(HEIGHT – ORIGIN[2]) / LOOPS) * i;

console.log(“G1 X”+ ((ORIGIN[0] + Math.cos(theta) * ((METRIC – CUTTER) / 2 + cut)).toFixed(4) )
+” Y”+ ((ORIGIN[1] + Math.sin(theta) * ((METRIC – CUTTER) / 2 + cut)).toFixed(4) )
+” Z”+ h.toFixed(4));
}

console.log(‘G1 X’+ ORIGIN[0] +’ Y’+ ORIGIN[1]);
}

//console.log(“G28”);

Программа простенькая. В начале файла задаются параметры:

  • ORIGIN: центр круга в 3D координатах. Это верх спирали;
  • METRIC: диаметр резьбы.
    Тут я, кажется, косякнул – у меня фрезеровка начинается от этого диаметра. Надо ДО него;
  • STEP: шаг резьбы. Например, 0.75мм. То есть расстояние между витками в одной точке круга;
  • HEIGHT:  высота детали, в которой нужно нарезать резьбу. Например, я резал бы в 8 мм ламинате, укажу 9 что б уж наверняка. Само собой, крепить заготовку нужно так, чтобы фреза внизу помещалась;
  • CUT: глубина врезания для формирования канавок резьбы;
  • CUT_STEP: можно лишь раз врезаться. Но если фрезер хилый, как у меня, то можно хоть в десяток итераций по десятке заходить;
  • CUTTER: диаметр фрезы на конце её режущей части;
  • POINTS_PER_LOOP: насколько чётко отрисовывать круг. Думаю, это лишнее, надо считать от радиуса;
  • SAFE_Z: безопасная высота.

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

На этой картинке резьба в три захода (специально заходы по миллиметру сделал, чтобы картинка лучше получилась). Нарезав первый проход, фреза возвращается в центр, поднимается до ORIGIN и начинает второй.

… вот только на практике пока не опробовал – ещё не пришла моя “циркулярочка” 🙂

Циркулярка эта (22мм диаметр), кстати, стоит 120 рублей в розницу за 3 диска и палку с болтом. А настоящая резьбовая фреза стоит от полутора тыщ рублей на али. Купить её, конечно, рано или поздно придётся… но пока потренируюсь на кошечках. Тем более, что мне кажется при подаче в 0.1мм и смене циркулярки каждую резьбу, я смогу и мягкий люминь нарезать ей или мелким алмазным диском.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *