Меню

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 не будет опубликован. Обязательные поля помечены *