roboforum.ru

Технический форум по робототехнике.

Софт для калибровки принтера

Обсуждение технологии печати на 3D принтерах. Самостоятельное изготовление и приобретение. RepRap и его последователи.

Re: Софт для калибровки принтера

Сообщение Michael_K » 18 мар 2013, 11:43

Нет, конечно. Даже не представляю, где его берут. Я ж как белый человек пошел на сайт, нажал "даунлоад". Как-то вот совсем не ожидал, что чтобы модельку повернуть, надо по форумам шариться в поисках ссылок на кандидатов... :)
Аватара пользователя
Michael_K
 
Сообщения: 6028
Зарегистрирован: 07 окт 2009, 00:29
Откуда: СПб

Re: Софт для калибровки принтера

Сообщение karabas2011 » 18 мар 2013, 12:03

Гы, рекомендую относиться к жизни как к чуду, а не как к гарсону #2
karabas2011
 
Сообщения: 1607
Зарегистрирован: 04 мар 2012, 01:06
Откуда: Севастополь-Москва

Re: Софт для калибровки принтера

Сообщение setar » 18 мар 2013, 16:45

калибровка температуры
Вложения
2013-03-18 16.37.47.jpg
Аватара пользователя
setar
Site Admin
 
Сообщения: 10989
Зарегистрирован: 04 окт 2004, 12:58
Откуда: St.Petersburg
Skype: taranenko.sergey
ФИО: Сергей Тараненко

Re: Софт для калибровки принтера

Сообщение SkyStorm » 18 мар 2013, 16:52

Ты сначала печатешь основную решетку а потом тестовые полоски?
Никто кроме нас!!!
4Robots.ru - Все для роботов!
Аватара пользователя
SkyStorm
 
Сообщения: 2687
Зарегистрирован: 05 фев 2008, 15:33
Откуда: St. Petersburg - Moscow
Skype: SkyStorm77
ФИО: Костюк Константин Вячеславович

Re: Софт для калибровки принтера

Сообщение setar » 18 мар 2013, 16:56

да, чтобы та тест не влияла калибровка стола - печатаю сначала рафт
Аватара пользователя
setar
Site Admin
 
Сообщения: 10989
Зарегистрирован: 04 окт 2004, 12:58
Откуда: St.Petersburg
Skype: taranenko.sergey
ФИО: Сергей Тараненко

Re: Софт для калибровки принтера

Сообщение mvb » 18 мар 2013, 21:21

setar писал(а):калибровка температуры

А как эти полоски построены и как позволяют узнать нужную температуру?
Аватара пользователя
mvb
 
Сообщения: 33
Зарегистрирован: 28 фев 2013, 21:47
Откуда: Россия, г. Москва
ФИО: Михаил

Re: Софт для калибровки принтера

Сообщение setar » 18 мар 2013, 22:03

просто полоски которые при нормальной температуре должны слиться в ровную поверхность.
как видно при заниженной температуре такого не происходит и слой отделяется от рафта
Аватара пользователя
setar
Site Admin
 
Сообщения: 10989
Зарегистрирован: 04 окт 2004, 12:58
Откуда: St.Petersburg
Skype: taranenko.sergey
ФИО: Сергей Тараненко

Re: Софт для калибровки принтера

Сообщение karabas2011 » 18 мар 2013, 22:09

То есть по этому тесту у тебя нижняя рабочаа 244C ?
karabas2011
 
Сообщения: 1607
Зарегистрирован: 04 мар 2012, 01:06
Откуда: Севастополь-Москва

Re: Софт для калибровки принтера

Сообщение mvb » 18 мар 2013, 22:14

setar писал(а):просто полоски которые при нормальной температуре должны слиться в ровную поверхность.
как видно при заниженной температуре такого не происходит и слой отделяется от рафта

То есть на этой фотке нормальная темперетура 244+ ? (Это ABS?)
А как понять что температура слишком высокая?

P.S. Видимо, я ухожу от темы топика. В какую тему лучше перейти? Есть ещё вопрос про "сопли"...
Аватара пользователя
mvb
 
Сообщения: 33
Зарегистрирован: 28 фев 2013, 21:47
Откуда: Россия, г. Москва
ФИО: Михаил

Re: Софт для калибровки принтера

Сообщение setar » 18 мар 2013, 22:58

karabas2011 писал(а):То есть по этому тесту у тебя нижняя рабочаа 244C ?

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

Про сопли тут же можно, это тоже калибровка.

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

Добавлено спустя 14 минут 35 секунд:
помогите разобраться в последовательности тестов.
а то они друг за друга по кольцу цепляются...
сейчас я могу подбирать поток , ширину экструзии, величину отката, скорость отката, температуру печати.
По идее вначале нужно подобрать температуру, а поток лучше вообще не трогать, в идеале при правильной калибровке экструдера от равен 1 (что и видно в одном из моих тестов)
Аватара пользователя
setar
Site Admin
 
Сообщения: 10989
Зарегистрирован: 04 окт 2004, 12:58
Откуда: St.Petersburg
Skype: taranenko.sergey
ФИО: Сергей Тараненко

Re: Софт для калибровки принтера

Сообщение mvb » 18 мар 2013, 23:20

setar писал(а):помогите разобраться в последовательности тестов.
а то они друг за друга по кольцу цепляются...
сейчас я могу подбирать поток , ширину экструзии, величину отката, скорость отката, температуру печати.
По идее вначале нужно подобрать температуру, а поток лучше вообще не трогать, в идеале при правильной калибровке экструдера от равен 1 (что и видно в одном из моих тестов)


IMHO. Нужны два вида калибровок:
- Начальная калибровка принтера. (много параметров)
- Калибровка принтера под новое волокно. (диаметр и температуры)

При калибровке под новое волокно, я так понимаю, рулить можно только диаметром волокна и температурами?
Аватара пользователя
mvb
 
Сообщения: 33
Зарегистрирован: 28 фев 2013, 21:47
Откуда: Россия, г. Москва
ФИО: Михаил

Re: Софт для калибровки принтера

Сообщение karabas2011 » 19 мар 2013, 00:06

setar писал(а):
karabas2011 писал(а):То есть по этому тесту у тебя нижняя рабочаа 244C ?

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

Про сопли тут же можно, это тоже калибровка.

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

Добавлено спустя 14 минут 35 секунд:
помогите разобраться в последовательности тестов.
а то они друг за друга по кольцу цепляются...
сейчас я могу подбирать поток , ширину экструзии, величину отката, скорость отката, температуру печати.
По идее вначале нужно подобрать температуру, а поток лучше вообще не трогать, в идеале при правильной калибровке экструдера от равен 1 (что и видно в одном из моих тестов)


По мне так температуру подобрать сложнее всего.
Поэтому её в твой тест надо уже на завершающем этапе.
а в начале...
Обычно я смотрю как пропечатывается инфил скажем 30% И в зависиости насколько красиво растут ячейки решаю оставить или дальше крутить. Проблема тут ещё в том что можно завысить и усилить обдув и опять будет зашибись
karabas2011
 
Сообщения: 1607
Зарегистрирован: 04 мар 2012, 01:06
Откуда: Севастополь-Москва

Re: Софт для калибровки принтера

Сообщение karabas2011 » 20 мар 2013, 13:26

Что-то я нифига не пойму.Скомпилил тест вставив:
;Filament Dia = 3.000 mm
;Path heigth = 0.250 mm
;Path width = 0.310 mm
;Path filling = 0.875
;Temp = 250C
;Bed temp = 106C
;Fill speed = 30 mm/s
;Move speed = 100 mm/s

напечаталась что-то непонятное, Тест чего печатается по умолчанию? (в середине был сбой по Х - разъём барахлил)
Плохо что нельзя задать смещение теста на кровати - слишком близко к краю. Полез в код а там всё раскидано в явном виде.
Вложения
IMG245.jpg
Последний раз редактировалось karabas2011 20 мар 2013, 13:47, всего редактировалось 1 раз.
karabas2011
 
Сообщения: 1607
Зарегистрирован: 04 мар 2012, 01:06
Откуда: Севастополь-Москва

Re: Софт для калибровки принтера

Сообщение setar » 20 мар 2013, 13:45

выбором теста пока является ремарка ненужных методов.
сейчас там методы :

path_flow_adjust ();
path_width_adjust ();
suck_adjust ();
suck_speed_adjust();

и разремирован (активен) последний метод.
тоесть ты тестил скорость дестринга (не выставив поток и ширину экструзии)
кстати начинай сразу со второго метода если экструдер откалиброван

Добавлено спустя 5 минут 59 секунд:
обновил код, добавил тест температуры, область тестирования вынес в центр кровати
Код: Выделить всёРазвернуть
#include <stdio.h>
#include <math.h>

  float fil_dia, fil_s, k_s;
  float path_h, path_k, path_s, path_w;
  float pos_e, pos_x, pos_y, pos_z;
  float temp, bed_temp;
  float fill_speed, move_speed;
  float max_x, max_y;

// инициализация
init ()
{
  fil_s = (M_PI*fil_dia*fil_dia)/4; // площадь сечения прутка
  path_s = path_k*path_w*path_h; // площадь слоя укладки
  k_s = path_s/fil_s; // отношение площадей прутка и экструзии
  pos_x = 0;
  pos_y = 0;
  pos_z = 0;
  pos_e = 0;
}

// расход прутка для заданной длинны экструзии
float filament_length (float path_l)
{
  float fil_l = k_s*path_l;
  return fil_l;
}

label ()
{
  printf(";3Dprinter calibrator v0.0.2 setar@roboforum.ru LGPL 2013\n",fil_s);
  printf(";Filament Dia = %.3f mm\n",fil_dia);
  printf(";Path heigth = %.3f mm\n",path_h);
  printf(";Path width = %.3f mm\n",path_w);
  printf(";Path filling = %.3f\n",path_k);
  printf(";Temp = %.fC\n",temp);
  printf(";Bed temp = %.fC\n",bed_temp);
  printf(";Fill speed = %.f mm/s\n",fill_speed);
  printf(";Move speed = %.f mm/s\n",move_speed);
  printf(";Max X = %.f mm\n",max_x);
  printf(";Max Y = %.f mm\n",max_y);
  printf(";--- calculated ---\n");
  printf(";Filament S = %.4f mm^2\n",fil_s);
  printf(";Path S = %.4f mm^2\n",path_s);
  printf(";Path S/Filament S = %.4f mm^2\n",k_s);
}

start_g ()
{
  printf(";--- start gcode ---\n");
  printf("G28 ; home\n");
  printf("G21 ; unit in mm\n");
  printf("G92 E0 ; set extruder to zero\n");
  printf("M82 ; use absolute distances\n");
  printf("M107 ; fan off\n");
  printf("M104 S%.f; set temp\n",temp);
  printf("M190 S%.f; wait bed temp\n",bed_temp);
  printf(";--- head clean ---\n");
  printf("G1 X0 Y0 Z15 F15000;go start positions\n");
  printf("M109 S%.f; wait heat\n",temp);
  printf("G1 X0 Y10 Z0.5;go near bed level \n");
  printf("G1 E5 F100; extruse a bubble\n");
  printf("G4 S5 ; wait 5 sec\n");
  printf("G1 Z5\n");
  printf("G4 S3 ; wait 3 sec\n");
  printf("G1 F15000\n");
  printf("G1 X0 Y20 Z%.2f\n",path_h);
  printf("G1 X0 Y35\n");
  printf(";--- end start gcode ---\n");
}

stop_g ()
{
  printf(";--- stop gcode ---\n");
  printf("M400 ; wait for buffer to clear\n");
  printf("M104 S0 ; turn off temperature\n");
  printf("M140 S0 ; turn off bed\n");
  printf("G0 Y150 Z%.2f F15000 ; Present Part\n",pos_z+5);
  printf("M84 ; disable motors\n");
  printf("\n");
}

// линия из текущей позиции в x,y на высоте z со скоростью s (mm/c) и потоком flow (относительно 1)
fill_line (float x,float y, float z, float s, float flow)
{
  float len = sqrt ((pos_x-x)*(pos_x-x)+(pos_y-y)*(pos_y-y));
  float dest_e = pos_e+flow*filament_length(len);
  float f = s * 60;
  printf("G1 X%.2f Y%.2f Z%.2f E%.2f F%.f\n",x,y,z,dest_e,f);
  pos_e = dest_e;
  pos_x = x;
  pos_y = y;
  pos_z = z;
}

// перемещение в точку x,y,z со скоростью s (mm/c)
move_to (float x,float y, float z, float s)
{
  float f = s * 60;
  printf("G1 X%.2f Y%.2f Z%.2f F%.f\n",x,y,z,f);
  pos_x = x;
  pos_y = y;
  pos_z = z;
}

zerro_pos_e ()
{
  printf("G92 E0\n");
  pos_e = 0;
}

path_width_adjust()
{
  float flow = 1;
  int n = 0;
  float wk = 0.8;
  float x;
  float mid_x=max_x/2;
  float mid_y=max_y/2;
  pos_z = 3*path_h;
  for ( wk = 0.8; wk <= 2; wk = wk + 0.1)
  {
    n=n+1;
    path_w = path_h * wk;
    printf(";--- path_w %.3f start ---\n",path_w);
    for ( x = n*7+(mid_x-50)+5; x < n*7+(mid_x-50)+10; x = x + 2*path_w)
    {
      move_to (x,(mid_y-50),pos_z,move_speed);
      fill_line (x,(mid_y+50),pos_z,fill_speed,flow);
      move_to (x+path_w,(mid_y+50),pos_z,move_speed);
      fill_line (x+path_w,(mid_y-50),pos_z,fill_speed,flow);
    }
    printf(";--- path_w %.3f stop ---\n",path_w);
    zerro_pos_e();
  }
}

temp_adjust ()
{
  float flow;
  int n = 0;
  float x;
  pos_z = 3*path_h;
  float mid_x = max_x/2;
  float mid_y = max_y/2;
  float min_temp = 180;
  float max_temp = 260;
  for ( temp = min_temp; temp <= max_temp; temp = temp + (max_temp-min_temp)/10)
  {
    n=n+1;
    printf(";--- temp %.2f start ---\n",temp);
      printf("G1 Z%.f\n",pos_z+5);
      printf("M109 S%.f; wait heat\n",temp);
    for ( x = n*7+(mid_x-50)+5; x < n*7+(mid_x-50)+10; x = x + 2*path_w)
    {
      move_to (x,mid_y-50,pos_z,move_speed);
      fill_line (x,mid_y+50,pos_z,fill_speed,1);
      move_to (x+path_w,mid_y+50,pos_z,move_speed);
      fill_line (x+path_w,mid_y-50,pos_z,fill_speed,1);
    }
    printf(";--- temp %.2f stop ---\n",temp);
    zerro_pos_e();
  }
}

path_flow_adjust ()
{
  float flow;
  int n = 0;
  float x;
  pos_z = 3*path_h;
  float mid_x = max_x/2;
  float mid_y = max_y/2;
  for ( flow = 0.2; flow < 2.2; flow = flow + 0.2)
  {
    n=n+1;
    printf(";--- fill %.2f start ---\n",flow);
    for ( x = n*7+(mid_x-50)+5; x < n*7+(mid_x-50)+10; x = x + 2*path_w)
    {
      move_to (x,mid_y-50,pos_z,move_speed);
      fill_line (x,mid_y+50,pos_z,fill_speed,flow);
      move_to (x+path_w,mid_y+50,pos_z,move_speed);
      fill_line (x+path_w,mid_y-50,pos_z,fill_speed,flow);
    }
    printf(";--- fill %.2f stop ---\n",flow);
    zerro_pos_e();
  }
}

do_suck (float suck,float s)
{
  float dest_e = pos_e - suck;
  float f = s * 60;
  printf("G1 E%.2f F%.2f\n",dest_e,f);
  pos_e = dest_e;
}

do_prime (float prime,float s)
{
  float dest_e = pos_e + prime;
  float f = s * 60;
  printf("G1 E%.2f F%.2f\n",dest_e,f);
  pos_e = dest_e;
}


suck_adjust ()
{
  float suck,suck_speed;
  int n = 0;
  float x;
  float mid_x = max_x/2;
  float mid_y = max_y/2;
  pos_z = 3*path_h;
  suck_speed = 10;
  for ( suck= 0.4; suck <= 2; suck = suck + 0.2)
  {
    n=n+1;
    printf(";--- suck %.2f start ---\n",suck);
    for ( x = n*10+(mid_x-50)+5; x < n*10+(mid_x-50)+10; x = x + 2*path_w)
    {
      // прямое направление
      move_to (x,(mid_y-50),pos_z,move_speed);
      fill_line (x,(mid_y-30),pos_z,fill_speed,1);
      do_suck(suck,suck_speed);
      move_to (x,(mid_y+30),pos_z,move_speed);
      do_prime(suck,suck_speed);
      fill_line (x,(mid_y+50),pos_z,fill_speed,1);
      // обратное направление
      move_to (x+path_w,(mid_y+50),pos_z,move_speed);
      fill_line (x+path_w,(mid_y+30),pos_z,fill_speed,1);
      do_suck(suck,suck_speed);
      move_to (x+path_w,(mid_y-30),pos_z,move_speed);
      do_prime(suck,suck_speed);
      fill_line (x+path_w,(mid_y-50),pos_z,fill_speed,1);
    }
    printf(";--- suck %.2f stop ---\n",suck);
    zerro_pos_e();
  }
}

suck_speed_adjust (float suck)
{
  float suck_speed;
  int n = 0;
  float x;
  float mid_x = max_x/2;
  float mid_y = max_y/2;
  pos_z = 3*path_h;
  for ( suck_speed= 2; suck_speed <= 50; suck_speed = suck_speed + 4)
  {
    n=n+1;
    printf(";--- suck speed %.2f start ---\n",suck_speed);
    for ( x = n*7+(mid_x-50); x < n*7+(mid_x-50)+5; x = x + 2*path_w)
    {
      // прямое направление
      move_to (x,(mid_y-50),pos_z,move_speed);
      fill_line (x,(mid_y-30),pos_z,fill_speed,1);
      do_suck(suck,suck_speed);
      move_to (x,(mid_y+30),pos_z,move_speed);
      do_prime(suck,suck_speed);
      fill_line (x,(mid_y+50),pos_z,fill_speed,1);
      // обратное направление
      move_to (x+path_w,(mid_y+50),pos_z,move_speed);
      fill_line (x+path_w,(mid_y+30),pos_z,fill_speed,1);
      do_suck(suck,suck_speed);
      move_to (x+path_w,(mid_y-30),pos_z,move_speed);
      do_prime(suck,suck_speed);
      fill_line (x+path_w,(mid_y-50),pos_z,fill_speed,1);
    }
    printf(";--- suck speed %.2f stop ---\n",suck_speed);
    zerro_pos_e();
  }
}



main ()
{

  fil_dia = 1.7; // диаметр прутка
  path_h = 0.25; // высота слоя
  path_w = 0.32; // ширина слоя
  path_k = 0.875; // коэфициент заполнения прямоугольника при экструзии, KisSlicer =1
  temp = 245; // температура
  bed_temp = 130; // температура стола
  fill_speed = 30; // скорость экструзии
  move_speed = 100; // скорость перемещения
  max_x = 180; // размер стола
  max_y = 180; // размер стола

  init (); // инициализация
  label (); // печать заголовка
  start_g (); // стартовый код
  zerro_pos_e(); // занулим положение прутка

  float x,y;

  printf(";--- raft ---\n");
  pos_z= 2*path_h;
  float mid_x = max_x/2;
  float mid_y = max_y/2;
  move_to ((mid_x-50)-path_w/2,(mid_y-50)-path_w/2,pos_z,move_speed);
  do_prime (1,1);//якорь
  printf("G4 S3 ; wait 3 sec\n");
  fill_line ((mid_x+50)+path_w/2,(mid_y-50)-path_w/2,pos_z,fill_speed,3);
  fill_line ((mid_x+50)+path_w/2,(mid_y+50)+path_w/2,pos_z,fill_speed,3);
  fill_line ((mid_x-50)-path_w/2,(mid_y+50)+path_w/2,pos_z,fill_speed,3);
  fill_line ((mid_x-50)-path_w/2,(mid_y-50)+path_w/2,pos_z,fill_speed,3);
  move_to ((mid_x-50),(mid_y-50),pos_z,move_speed);
  for ( y = (mid_y-50); y < (mid_y+50); y = y + 2*1)
  {
    fill_line ((mid_x+50),y,pos_z,fill_speed,3);
    fill_line ((mid_x+50),y+1,pos_z,fill_speed,3);
    fill_line ((mid_x-50),y+1,pos_z,fill_speed,3);
    fill_line ((mid_x-50),y+2*1,pos_z,fill_speed,3);
  }
  printf(";--- end raft ---\n");
// из нижеследующих тестов нужно выбрать один сняв ремарку
//  path_flow_adjust (); // подбираем поток (при нормально калиброванном экструдере не требуется)
  path_width_adjust (); // подбираем ширину экструзии
//  temp_adjust (); // подбираем температуру печати
//  suck_adjust (); // подбираем величину отката
//  suck_speed_adjust(1); // подбираем скорость отката
  stop_g (); // код окончания

}


Добавлено спустя 2 минуты 22 секунды:
внимание !
тест температуры пока зашит в функции temp_adjust ()
сейчас он от 180 до 260С
Аватара пользователя
setar
Site Admin
 
Сообщения: 10989
Зарегистрирован: 04 окт 2004, 12:58
Откуда: St.Petersburg
Skype: taranenko.sergey
ФИО: Сергей Тараненко

Re: Софт для калибровки принтера

Сообщение karabas2011 » 20 мар 2013, 14:00

Что можно считать откалиброванным экструдером? У меня давит 50мм плюс минус 2 мм в зависимости от скорости и температуры

Вот что получилось твоей последней версией.
ща попробую по температуре а то нифига непонятно

Блин забыл ширину слоя выставить нормальную 0.3 слишком мало для сопла 0.5
Вложения
IMG247.jpg
Последний раз редактировалось karabas2011 20 мар 2013, 15:39, всего редактировалось 1 раз.
karabas2011
 
Сообщения: 1607
Зарегистрирован: 04 мар 2012, 01:06
Откуда: Севастополь-Москва

Пред.След.

Вернуться в 3D печать

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 11