This forum uses cookies
This forum makes use of cookies to store your login information if you are registered, and your last visit if you are not. Cookies are small text documents stored on your computer; the cookies set by this forum can only be used on this website and pose no security risk. Cookies on this forum also track the specific topics you have read and when you last read them. Please confirm whether you accept or reject these cookies being set.

A cookie will be stored in your browser regardless of choice to prevent you being asked this question again. You will be able to change your cookie settings at any time using the link in the footer.

  • 0 voto(s) - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
Problema al ejecutar el comando G34
#1
Empezadas las pruebas dinamicas de la impresora me encuentro un problema a la hora de ejecutar el codigo G34, y realmente no se si es un problema mecanico o de configuracion, no se.
Drivers TMC2209 , sensorless en X e Y regulados a 100,y Z funciona con tres motores
 #define Z_STEPPER_ALIGN_STEPPER_XY { { 35, 15 }, { 310, 15 }, { 160, 310 } }
#define Z_STEPPERS_ORIENTATION 0

Pues bien hago un home G28 y todo perfecto, pero cuando hago un G34 el primer y segundo punto lo hace perfecto, pero cuando se dirige al tercero avanza unos diez milimetros hacia Y310  se para en seco, el sensorless de "Y" actua de nuevo y lo que en teoria es la posicion 25 de y se convierte en el maximo de nuevo y en el segundo intento al intentar acercarse a la posicion {35,15} choca con la perfileria de la maquina.

He intentado subir la sensibilidad de "Y" hasta 200 con el mismo resultado. A pesar de la parada en seco el carro X mantiene el paralelismo no es que se tuerza
Si yo muevo los ejes a traves de comandos de la pantalla no me hace ningun extraño

No se si me he explicado bien, pero en caso afirmativo , ¿alguna sugerencia?

Inserto tambien el codigo correspondiente a G34

Código:
**
* Z Steppers Auto-Alignment
* Add the G34 command to align multiple Z steppers using a bed probe.
*/
#define Z_STEPPER_AUTO_ALIGN
#if ENABLED(Z_STEPPER_AUTO_ALIGN)
  // Define probe X and Y positions for Z1, Z2 [, Z3 [, Z4]]
  // If not defined, probe limits will be used.
  // Override with 'M422 S<index> X<pos> Y<pos>'
  //#define Z_STEPPER_ALIGN_XY { {  10, 190 }, { 100,  10 }, { 190, 190 } }

  /**
  * Orientation for the automatically-calculated probe positions.
  * Override Z stepper align points with 'M422 S<index> X<pos> Y<pos>'
  *
  * 2 Steppers:  (0)    (1)
  *              |      |  2  |
  *              | 1  2 |      |
  *              |      |  1  |
  *
  * 3 Steppers:  (0)    (1)    (2)    (3)
  *              |  3  | 1    | 2  1 |    2 |
  *              |      |    3 |      | 3    |
  *              | 1  2 | 2    |  3  |    1 |
  *
  * 4 Steppers:  (0)    (1)    (2)    (3)
  *              | 4  3 | 1  4 | 2  1 | 3  2 |
  *              |      |      |      |      |
  *              | 1  2 | 2  3 | 3  4 | 4  1 |
  */
  #ifndef Z_STEPPER_ALIGN_XY
    #define Z_STEPPERS_ORIENTATION 0
  #endif

  // Provide Z stepper positions for more rapid convergence in bed alignment.
  // Requires triple stepper drivers (i.e., set NUM_Z_STEPPER_DRIVERS to 3)
  #define Z_STEPPER_ALIGN_KNOWN_STEPPER_POSITIONS
  #if ENABLED(Z_STEPPER_ALIGN_KNOWN_STEPPER_POSITIONS)
    // Define Stepper XY positions for Z1, Z2, Z3 corresponding to
    // the Z screw positions in the bed carriage.
    // Define one position per Z stepper in stepper driver order.
    #define Z_STEPPER_ALIGN_STEPPER_XY { { 35, 15 }, { 310, 15 }, { 160, 310 } }
  #else
    // Amplification factor. Used to scale the correction step up or down in case
    // the stepper (spindle) position is farther out than the test point.
    #define Z_STEPPER_ALIGN_AMP 1.0      // Use a value > 1.0 NOTE: This may cause instability!
  #endif

  // On a 300mm bed a 5% grade would give a misalignment of ~1.5cm
  #define G34_MAX_GRADE              5    // (%) Maximum incline that G34 will handle
  #define Z_STEPPER_ALIGN_ITERATIONS 5    // Number of iterations to apply during alignment
  #define Z_STEPPER_ALIGN_ACC        0.02 // Stop iterating early if the accuracy is better than this
  #define RESTORE_LEVELING_AFTER_G34      // Restore leveling after G34 is done?
  // After G34, re-home Z (G28 Z) or just calculate it from the last probe heights?
  // Re-homing might be more precise in reproducing the actual 'G28 Z' homing height, especially on an uneven bed.
  #define HOME_AFTER_G34
#endif

Saludos
  Responder
#2
Para mas informacion, he probado los siguientes gcodes y parece moverse bien
G1 x30 y30 f40000
g1 x280 y30 f40000
G1 x280 y 280 f40000
G1 x30 y280 f40000

No se me ocurre que puede ser
  Responder
#3
Hola, solo un par de apuntes:
- la sensibilidad del StallGuard4 que llevan los TMC2209, que es la funcionalidad que les permite realizar el sensorless, se configura en un rango de 0 a 255, pero estás interpretando mal su significado, pues indica la facilidad con que se dispara la fución, lo que implica que, a mayor número, una menor fuerza de resistencia al movimiento será necesaria para activarlo. Así que, si con un valor de 100 se dispara el sensorless, tendrás que ir disminuyendo y no aumentando dicho valor poco a poco hasta dar con el valor correcto.
- Los finales de carrera fucionan todos con el mismo principio, tanto si son "normales" como si son sensorless y de forma predeterminada no tienen ningún efecto fuera del homing de cada eje: si no has configurado específicamente lo contrario, el movimiento de los ejes solo se interrumpe al pulsar los finales de carrera durante el homing.
Por todo lo anterior, no creo que el problema que estás teniendo se deba al sensorless y tampoco veo mal la configuración que indicas, por lo que quizá sea algo mecánico en el movimiento de los ejes.
  Responder
#4
(24-05-2022, 08:01 PM)Simemart escribió: Hola, solo un par de apuntes:
- la sensibilidad del StallGuard4 que llevan los TMC2209, que es la funcionalidad que les permite realizar el sensorless, se configura en un rango de 0 a 255, pero estás interpretando mal su significado, pues indica la facilidad con que se dispara la fución, lo que implica que, a mayor número, una menor fuerza de resistencia al movimiento será necesaria para activarlo. Así que, si con un valor de 100 se dispara el sensorless, tendrás que ir disminuyendo y no aumentando dicho valor poco a poco hasta dar con el valor correcto.
- Los finales de carrera fucionan todos con el mismo principio, tanto si son "normales" como si son sensorless y de forma predeterminada no tienen ningún efecto fuera del homing de cada eje: si no has configurado específicamente lo contrario, el movimiento de los ejes solo se interrumpe al pulsar los finales de carrera durante el homing.
Por todo lo anterior, no creo que el problema que estás teniendo se deba al sensorless y tampoco veo mal la configuración que indicas, por lo que quizá sea algo mecánico en el movimiento de los ejes.

Lo de la sensibilidad del StallGuard, si lo habia entendido al reves

La parte mecanica no se por donde cogerlo.
Si yo hago movimientos rapidos que a traves del pronterface no me da problemas.
En el momento que se para miro el paralelismo del carro de X y esta bien.

Ahora mismo estoy probando un nivelar cama y me esta haciendo el recorrido por los 81 puntos sin pararse.

Seguiré probando cosas
  Responder
#5
Bien, finalmente he encontrado el problema que simplemente consistia en la configuracion de las aceleraciones.
Tenia los valores por defecto de Marlin (3000,3000,100,10000) , y de momento probando aceleraciones de (1100,1100,500,10000) me hace todo el proceso del g34
No se cuales serian unos valores adecuados para una coreXY, pero si se tienen que acercar a 3000, posiblemente si que tenga algun problema mecanico que me impide utilizar esas aceleracciones tan altas.

Entonces mi pregunta ahora es , ¿que valores deberia poder utilizar aproximadamente si mecanicamente fuese bien fina?. Tan solo es para hacerme una idea de cual tiene que ser mi "objetivo"
  Responder
#6
No es necesario utilizar valores altos de aceleración, pues lo único que hacen es someter a mucho más esfuerzo a la mecánica, sin que eso influya de forma significativa en los tiempos de impresión.
Para poder estimar un valor apropiado para tu impresora, primero habría que saber que tipo de guiado tienen sus ejes (su cinemática no es relevante) y el tipo de extrusor que lleva (si es directo admite menos aceleración, al tener mucho más peso el cabezal de impresión), aunque un valor como esos 1100 mm/s² puede ser una cifra razonable: yo en mi CoreXY con sistema tipo "Bowden" utilizo 1000 mm/s².
Pero te recomiendo que no configures la aceleración con las máximas, sino en el parámetro correspondiente a las de trabajo, dejando aquellas con un valor mayor por si quieres aumentarlas en algún momento concreto, por ejemplo:

#define DEFAULT_MAX_ACCELERATION      { 2000, 2000, 100, 5000 }

y configurar así las aceleraciones de trabajo:

#define DEFAULT_ACCELERATION          1000    // X, Y, Z and E acceleration for printing moves
#define DEFAULT_RETRACT_ACCELERATION  1500    // E acceleration for retracts
#define DEFAULT_TRAVEL_ACCELERATION  1000    // X, Y, Z acceleration for travel (non printing) moves


La aceleración de Z no es necesario que sea muy elevada y con la que viene por defecto es más que suficiente (yo utilizo 50 mm/s²).
Por último, ten en cuenta que el valor que se configura para la aceleración de trabajo, influye en el valor a configurar en el parámetro JUNCTION_DEVIATION_MM.
La relación entre el antiguo Jerk para XY y el Junction Deviation (JD) es: JD = 0,4 * JerkXY² / da, donde da es el valor configurado en el parámetro DEFAULT_ACCELERATION.
Un Jerk para X e Y adecuado puede ser 10 y con la aceleración en 1000 mm/s², el valor del parámetro JUNCTION_DEVIATION_MM sería 0,04.
  Responder
#7
Muchas gracias, al final algo aprenderé 

Las aceleraciones de trabajo también las había bajado
El Jerk está a 10 y revisare el junction_deviation
Realmente es que hay muchos parámetros que se escapan a mis conocimientos. 
El extrusor lo tengo directo, pero me estoy planteando probar el sistema bowden y por el guiado, tengo guías lineales de 12
  Responder
#8
Aunque por defecto Marlin trae configurado el Jerk de X e Y a 10, también trae deshabilitado su uso y en ese caso, lo que se utiliza es el Junction Deviation, cosa que sucede si se tiene comentada la línea //#define CLASSIC_JERK.
  Responder