Calificación:
  • 0 voto(s) - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
posicion home y puntos auto nivelacion
#1
Hola:

He vuelto a instalar el sensor capacitivo en mi anet 8 y paso a paso he configurado todo para que la impresora me funcione con el skynet. Todo va bien excepto que el home me lo hace en la parte derecha superior de la cama y me gustaría  que lo hiciera en el centro. Entiendo que X e Y estarían en 110.
En cuanto a la toma de puntos (9) los dos últimos me los hace en el extremo superior de la cama casi al borde. ¿ como y donde defino la zona de la cama donde debe tomar los puntos?  En la configuracion h ?

saludos
Citar
#2
(14-05-2017, 05:10 PM)Nestor escribió: Hola:

He vuelto a instalar el sensor capacitivo en mi anet 8 y paso a paso he configurado todo para que la impresora me funcione con el skynet. Todo va bien excepto que el home me lo hace en la parte derecha superior de la cama y me gustaría  que lo hiciera en el centro. Entiendo que X e Y estarían en 110.
En cuanto a la toma de puntos (9) los dos últimos me los hace en el extremo superior de la cama casi al borde. ¿ como y donde defino la zona de la cama donde debe tomar los puntos?  En la configuracion h ?

saludos

Que tal Nestor,

Yo tengo instalado el sensor con el firmware marlin, supongo que en skynet tendrás que tener en cuenta las mismas variables.

Lo primero es tener bien ajustado el offset del sensor respeto a la punta del nozzle, yo lo tengo instalado al lado izquierdo por lo tanto tengo que indicar el offset del eje X con un valor negativo (-left):

#define X_PROBE_OFFSET_FROM_EXTRUDER -61 // 10  // X offset: -left  +right  [of the nozzle]
#define Y_PROBE_OFFSET_FROM_EXTRUDER 2 // 10  // Y offset: -front +behind [the nozzle]



Ahora indicamos las cuatro coordenadas que forman el cuadrado por donde se desplazará el sensor, pero aplicando el offset que tenemos asignado a cada eje.
En mi caso queda de la siguiente manera:

  #define LEFT_PROBE_BED_POSITION  14 // POSICION DESEADA + X_PROBE_OFFSET_FROM_EXTRUDER
  #define RIGHT_PROBE_BED_POSITION 159
  #define FRONT_PROBE_BED_POSITION 20
  #define BACK_PROBE_BED_POSITION  192//  sumar 2 en eje Y

Yo lo que hago es usar el pronterface para situar el sensor en los cuatro puntos de las esquinas, anotar los valores máximo y mínimo de cada eje y después aplicarle el offset del sensor para indicar los valores. A veces no queda más remedio que realizar alguna prueba y corregir los valores hasta tenerlos mejor afinados. Mola
Citar
#3
Para realizar la configuración de los 4 puntos de prueba la explicación de Jasobrino es correcta, sin embargo le ha faltado el "#define Z_PROBE_OFFSET_FROM_EXTRUDER", que también se debe definir para indicarle la distancia entre la detección del sensor y la boquilla en el eje Z. En mi caso, por ejemplo he pasado de poner los offsets de los ejes X e Y directamente y estan en 0, no son necesarios ya que se va a generar una ecuación del plano y tanto dan esos datos, lo que se busca es la variación en Z por cada mm avanzado en X o Y.
Especificar los offset en X e Y te vale para decirle a la impresora "Pon el sensor en las coordenadas X,Y,Z", si no lo especificas básicamente estas diciendo "Pon la boquilla en las coordenadas X,Y,Z", a efectos prácticos es lo mismo.

En mi caso yo los tengo así, pero uso un final de carrera mecanico + servo, el principio viene a ser el mismo:
Código:
  #define X_PROBE_OFFSET_FROM_EXTRUDER 0 
  #define Y_PROBE_OFFSET_FROM_EXTRUDER 0 
  #define Z_PROBE_OFFSET_FROM_EXTRUDER -14.7

La parte más importante de la configuración del autonivelado, aparte de la toma de los 4 puntos que te ha comentado Jasobrino es que especifiques el offset en el eje Z, ya que una vez medido el plano, tu boquilla deberá de bajar esta cantidad de mm para pegarse a la cama, es decir, para ponerse en el Z0 de la cama caliente.
Este parametro es importante dejarlo muy bien calculado, pues va a determinar lo bien que se pegue tu primera capa a la cama caliente... si la boquilla queda demasiado alejada, no pegará bien, si la boquilla queda demasiado cerca, o bien atascará o bien pegará demasiado y luego despegarla del cristal es un suplicio. Hay que ajustarlo a ojo mediante prueba y error, y no vale de nada que regules los tornillos de la cama, debes hacerlo editando este parametro en código.

Por ultimo, es importante que, pese a tener autonivelado, niveles tu cama caliente de la forma tradicional, con un folio, el autolevel no es milagroso, y aunque ayuda mucho y corrige los posibles desniveles, si la base está demasiado inclinada imprimirá de culo, asi que una vez puesto, calibra la cama mas o menos y dejala asi.

--------------------------------------------------------------


Por otro lado, y en referencia a tu otra duda, si quieres que al hacer home el home del eje Z lo haga en el medio de la cama debes localizar este código y habilitarlo:

Código:
//If you have enabled the Bed Auto Leveling and are using the same Z Probe for Z Homing,
//it is highly recommended you let this Z_SAFE_HOMING enabled!!!

 #define Z_SAFE_HOMING   // This feature is meant to avoid Z homing with probe outside the bed area.
                         // When defined, it will:
                         // - Allow Z homing only after X and Y homing AND stepper drivers still enabled
                         // - If stepper drivers timeout, it will need X and Y homing again before Z homing
                         // - Position the probe in a defined XY point before Z Homing when homing all axis (G28)
                         // - Block Z homing only when the probe is outside bed area.

 #ifdef Z_SAFE_HOMING

   #define Z_SAFE_HOMING_X_POINT (X_MAX_LENGTH/2)    // X point for Z homing when homing all axis (G28)
   #define Z_SAFE_HOMING_Y_POINT (Y_MAX_LENGTH/2)    // Y point for Z homing when homing all axis (G28)

 #endif

Este código esta ubicado en el fichero Configuration.h, búscalo con Ctrl+F, ya que en cada versión de Marlin este código esta situado en una linea diferente...
Citar
#4
Pues muchas gracias a ambos. Ahora buscare un rato para ponerv en practica vuestras enseñanzas. Muy agradecido. Ya contaré que tal me sale todo..... SALUDOS Y GRACIAS..
Citar
#5
@Shellmer estoy de acuerdo contigo en que el parámetro más importante es el Z-offset a la hora de configurar bien el auto-level.
Pero lo que dices sobre los probe-offsets solo es cierto si la cama es perfectamente plana. Entonces sí, es irrelevante la posición del sensor respecto de la boquilla. Pero si la cama esta alaveada o retorcida, no funcionará correctamente el auto-level, ya que estarás engañando al firmware sobre donde se encuentran las irregularidades.
O eso es lo que entiendo yo sobre el proceso del auto-level, corrijeme si me equivoco.
Citar
#6
Por lo que yo tengo entendido, lo que realiza la impresora al tomar las mediciones es realizar una ecuación del plano para asi determinar la inclinación de la cama... por muchas mediciones que uno haga, la impresora no va a adivinar mágicamente que tu cama esta abombada y corregirlo.... puede que realizar más mediciones de más precisión a la hora de determinar las alturas, pues los sensores tienen error y ninguno, nisiquiera los mecánicos estan exentos de el.

Para realizar un plano hacen falta únicamente 3 puntos, de las 4 mediciones que se realizan (Aunque se pueden hacer muchisimas mas mediciones, pero se eterniza), por lo que he visto o al menos interpreto, asi funciona, al menos la forma más basica del autonivelado:


Código:
static void set_bed_level_equation_3pts(float z_at_pt_1, float z_at_pt_2, float z_at_pt_3) {

    plan_bed_level_matrix.set_to_identity();

    vector_3 pt1 = vector_3(ABL_PROBE_PT_1_X, ABL_PROBE_PT_1_Y, z_at_pt_1);
    vector_3 pt2 = vector_3(ABL_PROBE_PT_2_X, ABL_PROBE_PT_2_Y, z_at_pt_2);
    vector_3 pt3 = vector_3(ABL_PROBE_PT_3_X, ABL_PROBE_PT_3_Y, z_at_pt_3);

    vector_3 from_2_to_1 = (pt1 - pt2).get_normal();
    vector_3 from_2_to_3 = (pt3 - pt2).get_normal();
    vector_3 planeNormal = vector_3::cross(from_2_to_1, from_2_to_3).get_normal();
    planeNormal = vector_3(planeNormal.x, planeNormal.y, abs(planeNormal.z));

    plan_bed_level_matrix = matrix_3x3::create_look_at(planeNormal);

    vector_3 corrected_position = plan_get_position();
    current_position[X_AXIS] = corrected_position.x;
    current_position[Y_AXIS] = corrected_position.y;
    current_position[Z_AXIS] = corrected_position.z;

    // put the bed at 0 so we don't go below it.
    current_position[Z_AXIS] = zprobe_zoffset;

    plan_set_position(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS]);

}


Si te digo la verdad, ahora mismo me haces dudar de si influye o no el falsear los offsets y no poner los reales, pero a mi modo de ver, un plano es un plano... no se va a girar ni nada parecido, dicho plano va a tener la misma inclinación estemos en X0 o en X1000 y no va a cambiar nunca, por tanto yo considero que da igual especificar los offsets en X e Y, ya que una vez tengamos medido el plano lo unico que nos importa es saber cuanto varia en Z por unidad avanzada en X o Y, independientemente de donde estemos. Evidentemente no digo que no sea necesario especificarle los offset a la impresora, pues como minimo es util para situar el sensor en la posición indicada, pero yo la verdad, nunca he tenido problemas con mi autonivelado, y desde que lo puse hace más de un año, jamás he tenido problema alguno.

Si alguien esta mas fresco en matematicas que yo, estaría bien que diese su opinión o nos aclarase este tema, porque yo el tema de vectores, planos y matrices bastante oxidado.
Citar
#7
Seguramente en la práctica da igual ponerlos o no ya que la posible desviación de la cama de un plano perfecto es igual o menor que el error del sensor.
Yo hablaba de forma teórica sobre el funcionamiento del auto-level.
Por lo que he podido ver, no me parece que actue calculando un solo plano teórico. Si fuese así, solo serían necesarios tres puntos de medición como dices.
El hecho de que se puedan configurar mas puntos parece indicar que, como mínimo, calcula varios planos teóricos (con esa rutina en código que indicas, por cierto) en las zonas que se miden y adapta la altura del extrusor en cada zona.
Cosa que tambien parece indicar el hecho de que solo se configuren matrices de puntos de medición, con igual número de filas y columnas: 2x2, 3x3, etc.
Lo que parece corroborar el hecho de que el extrusor suba y baje, durante la impresión de la capa, dependiendo del lugar por el que pasa.
Pero bueno, solo es una disquisición teórica sin mucha trascendencia práctica, intuyo.
Citar


Temas similares...
Tema Autor Respuestas Vistas Último mensaje
  Anet e10 auto home Dacoba 2 308 27-06-2018, 10:43 PM
Último mensaje: Dacoba
  CONSULTA auto level Xoin21 3 359 18-06-2018, 06:30 PM
Último mensaje: Xoin21
  ayuda con sensor de nivelación cundo 2 297 23-05-2018, 08:45 PM
Último mensaje: cundo
  CONSULTA Sensores de Posición maximux 3 374 26-01-2018, 10:38 AM
Último mensaje: maximux
  Auto Level fuera de la cama caliente prozent 8 861 22-10-2017, 06:51 PM
Último mensaje: prozent