terça-feira, 21 de julho de 2015

CORREÇÃO DO DELTA DIAGONAL RODS POR EIXO E CORREÇÃO DA INCLINAÇÃO

   Caso ocorra um erro dimensional no eixo x e y o mais provável é que os braços estão com tamanhos diferentes pra correção você deve refazer os braços pra que eles tenha o mesmo tamanho, pesquisando sobre o problema achei soluções na qual você pode alterar o tamanho dos braços individualmente, segue abaixo a explicação 

Primeiro você deve imprimir uma peça pra saber qual eixo esta mais incorreto e imprima o arquivo em pdf para também corrigir a inclinação.

Marlin usado: https://github.com/MagoKimbra/MarlinKimbra

http://www.thingiverse.com/thing:745523, segue a foto do abaixo mostrando, caso você não consiga imprimir uma peça grande reduza pela metade e imprima. Primeiro você deve corrigir a inclinação já que essa solução esta implantada conforme a foto





envie o comando m666l e você vai ver os valores, a correção da inclinação são os valores A, B e C
 torres x, y e z respectivamente.

se vc encontrar o valor do eixo menor que 120graus, por exemplo 118graus no eixo y coloque o valor de -2 no B enviando esse comando: m666l B-2, normalmente você vai ter que corrigir apenas dois eixos o outro vai ser de referencia, sugiro o Z como referencia. Você pode também alterar diretamente no código.

MARLIN/KIMBRA - marlin_main.cpp linha 1614

delta_tower1_x = (delta_radius + tower_adj[3]) * cos((210 + tower_adj[0]) * M_PI/180); // front left tower
delta_tower1_y = (delta_radius + tower_adj[3]) * sin((210 + tower_adj[0]) * M_PI/180);
delta_tower2_x = (delta_radius + tower_adj[4]) * cos((330 + tower_adj[1]) * M_PI/180); // front right tower
delta_tower2_y = (delta_radius + tower_adj[4]) * sin((330 + tower_adj[1]) * M_PI/180);
delta_tower3_x = (delta_radius + tower_adj[5]) * cos((90 + tower_adj[2]) * M_PI/180); // back middle tower
delta_tower3_y = (delta_radius + tower_adj[5]) * sin((90 + tower_adj[2]) * M_PI/180);

torre 1 eixo x, torre 2 eixo y, torre 3 eixo z. Diminua ou aumente o valor do angulo no cosseno e seno

SEGUNDA PARTE

Agora você vai corrigir o tamanho dos eixos, as vezes os eixos nao sai do tamanho correto e os valores são diferentes para cada eixo com esse desenho vc pode medir as distancias de cada eixo e comparar com o valor real. você deve medir a distancia dos raios de cada eixo e comparar o que estiver mais próximo você considera como referencia vou usar o exemplo do site mesmo

  • x size: 60.67mm
  • y size: 60.73mm
  • z size: 60.42mm
valor real: 60,00mm

Primeiro passo é corrigir o DELTA_DIAGONAL_ROD para o eixo que ficou mais proximo, nesse caso o eixo Z

novo_DELTA_DIAGONAL_ROD = (60,42/60)*velho_DELTA_DIAGONAL_ROD

recalcular considerando o novo DELTA_DIAGONAL_ROD:

  • x size: 60.67 - 0.42 = 60.25 mm
  • y size: 60.73 - 0.42 = 60.31 mm
  • z size: 60.42 - 0.42 = 60.00 mm
Segundo passo é implementar o codigo para correção de cada braço

em configuration_delta.h acrescente esse novo codigo

#define E_MIN_POS 0
#define DELTA_DIAGONAL_X_CORRECTION 1.0 // front left tower
#define DELTA_DIAGONAL_Y_CORRECTION 1.0 // front right tower
#define DELTA_DIAGONAL_Z_CORRECTION 1.0 // back middle tower
// MOVEMENT SETTINGS
#define HOMING_FEEDRATE {100*60, 100*60, 100*60, 0} // set the homing speeds (mm/min)

Terceiro passo, você precisa alterar o marlin_main.cpp linha 355


#ifdef DELTA
float delta[3] = { 0.0 };
float tower_adj[6] = { 0, 0, 0, 0, 0, 0 };
float delta_radius; // = DEFAULT_delta_radius;
float delta_diagonal_rod; // = DEFAULT_DELTA_DIAGONAL_ROD;
float DELTA_DIAGONAL_ROD_2_X;
float DELTA_DIAGONAL_ROD_2_Y;
float DELTA_DIAGONAL_ROD_2_Z;



 linha 1614

base_home_pos[Z_AXIS] = max_pos[Z_AXIS];
DELTA_DIAGONAL_ROD_2_X= pow((delta_diagonal_rod*DELTA_DIAGONAL_X_CORRECTION),2);
DELTA_DIAGONAL_ROD_2_Y= pow((delta_diagonal_rod*DELTA_DIAGONAL_Y_CORRECTION),2);
DELTA_DIAGONAL_ROD_2_Z= pow((delta_diagonal_rod*DELTA_DIAGONAL_Z_CORRECTION),2);

linha 2020


void calculate_delta(float cartesian[3]) {
delta[X_AXIS] = sqrt(DELTA_DIAGONAL_ROD_2_X
- sq(delta_tower1_x-cartesian[X_AXIS])
- sq(delta_tower1_y-cartesian[Y_AXIS])
) + cartesian[Z_AXIS];
delta[Y_AXIS] = sqrt(DELTA_DIAGONAL_ROD_2_Y
- sq(delta_tower2_x-cartesian[X_AXIS])
- sq(delta_tower2_y-cartesian[Y_AXIS])
) + cartesian[Z_AXIS];
delta[Z_AXIS] = sqrt(DELTA_DIAGONAL_ROD_2_Z
- sq(delta_tower3_x-cartesian[X_AXIS])
- sq(delta_tower3_y-cartesian[Y_AXIS])
) + cartesian[Z_AXIS];



FEITO ISSO AGORA VOCÊ DEVE ENCONTRAR OS VALORES PARA A CORREÇÃO 


  • x size: 60.67 - 0.42 = 60.25 mm
  • y size: 60.73 - 0.42 = 60.31 mm
  • z size: 60.42 - 0.42 = 60.00 mm
DELTA_DIAGONAL_X_CORRECTION = 60,25/60 = 1,004166
DELTA_DIAGONAL_y_CORRECTION = 60,31/60 = 1,005166
DELTA_DIAGONAL_z_CORRECTION = 60/60 = 1,00



Depois imprima a peça novamente e deve dar o valor proximo do real caso nao goste da precisão faça uma nova correção ate chegar no valor desejado.

PRESICANDO DE AJUDA DEIXA UM COMENTARIO