Marlin Ajuste de avance

9

Estoy usando el firmware Marlin (1.1.0-RC7 - 31 de julio de 2016) para una impresora 3D. Actualmente, la impresión no es perfecta debido a pequeñas inexactitudes en los movimientos a lo largo de los ejes xey. Estoy tratando de cambiar la velocidad de avance a lo largo del eje xy mientras la impresora está en funcionamiento para asegurarme de que la impresora se detiene a tiempo e imprime con precisión.

Tengo un código para controlar el avance, pero el problema es que no estoy seguro de dónde debo hacer estos ajustes. En el archivo configuration.h veo este código: (líneas 742 y 753)

/*line 742*/ #define HOMING_FEEDRATE_XY (50*60) 
/*line 753*/ #define DEFAULT_MAX_FEEDRATE {300, 300, 5, 25}  // (mm/sec)

Probablemente estoy malinterpretando algo, pero parece que esto establece el avance a un valor predeterminado que es el mismo que el máximo.

Si la velocidad de avance cambia durante la impresión, supongo que se haría en Marlin_main.cpp, pero no estoy seguro de qué parte cambia realmente. ¿Alguien puede señalarme en la dirección correcta aquí?

Haz que suceda
fuente
La velocidad de alimentación se establece mediante el código g que proporciona, ¿por qué no simplemente establecer la velocidad de alimentación de impresión más baja? Lo único que va a cambiar en el firmware sin modificarlo son las velocidades de alimentación máxima y de referencia.
tjb1

Respuestas:

3

Puede cambiar el avance máximo permitido en Configuration.h, pero el avance real que se utiliza no está determinado por su firmware. La velocidad de avance se especifica en el archivo G-Code. Un comando como

G0 X10.0 Y15.0 Z3.0 F9000

indica un movimiento a (10,15,3) a una velocidad de avance de 9000 mm / min. Si no se especifica F, se utiliza la última velocidad de avance utilizada.

Solo tiene que proporcionar los comandos de código G apropiados con el avance que desea en ellos. No hay razón para modificar el firmware para obtener un avance diferente.

Tom van der Zanden
fuente
Entonces, ¿la velocidad de avance debería ser la misma para todos los ejes x, y y z? ¿También está familiarizado con qué parte de Marlin_main.cpp es responsable de leer los comandos del archivo G-Code?
haz que suceda
No, la velocidad de avance para los ejes individuales se calcula de modo que la velocidad de avance total sea de 9000 mm / s (por ejemplo, la distancia euclidiana entre puntos divididos por el tiempo para el movimiento es igual a la velocidad de avance). Si pasa de 0,0 a 2,1, la velocidad de avance para X será dos veces mayor que la velocidad de avance para Y. No estoy seguro de lo que está tratando de lograr, pero cambiar el firmware probablemente no sea la opción correcta . Si insiste, probablemente debería estar mirando la prepare_movefunción.
Tom van der Zanden
No puede establecer la velocidad de avance para los ejes de forma independiente porque un eje podría alcanzar su destino antes que otro. Desea pasar de X, Y a X ', Y' para obtener una línea recta. Por lo tanto, los avances dependen unos de otros.
Tom van der Zanden
2

Parece que es posible que desee ver los pasos por línea de mm.

#define DEFAULT_AXIS_STEPS_PER_UNIT

Esta línea es donde calibras el número de pasos por mm. Para calibrar, marque un punto a lo largo de un eje, luego mueva ese eje algo así como 100 mm. Si no se movió 100 mm exactamente, realice un cambio

(how far it moved)       (how far it should have moved)
------------------   =   ------------------------------
(current steps/mm)         (new steps/mm) --> find this
Curt Hayes
fuente
1

Tienes las líneas para ajustar la velocidad de avance. La primera (línea 742) es relevante para la velocidad de alimentación máxima XY durante el recorrido de referencia (no durante la impresión). Creo que esto no es un problema en su caso particular y puede dejarlo como está.

La segunda (línea 753) es la velocidad de alimentación mientras se imprime para XY. En particular, los números entre paréntesis se refieren a (X, Y, Z, E). Si su impresora se está moviendo, puede afectar XY más que Z y E. Por lo tanto, puede intentar ajustar los dos primeros números.

Debido a la situación muy específica, es imposible darle una tasa de alimentación basada en el cálculo porque se trata de aceleraciones externas causadas por la situación móvil. Deberá intentar ajustarlo hasta que esté bien.

Otra configuración que también puede ayudarlo a compensar la aceleración externa, si la hay, es la aceleración de esos dos ejes. Debería encontrar dos líneas como estas:

#define DEFAULT_MAX_ACCELERATION {1500,1500,50,250}    
#define DEFAULT_ACCELERATION 1500 // Aceleración máxima X, Y, Z y E en mm / s ^ 2 para imprimir movimientos

Sin embargo, la aceleración de los ejes puede afectar la calidad de la impresión.

FeliceM
fuente