Calcular el tiempo estimado de impresión de un archivo ya cortado


10

Empecé a escribir una aplicación que calcula el tiempo de impresión total estimado del archivo de código G para un modelo ya cortado.

El programa funciona y es bastante preciso.

Funciona de la siguiente manera:

  1. Escanea todo el archivo de código G para identificar todos los movimientos
  2. Calcula el tiempo de cada movimiento dividiendo la distancia del segmento por la velocidad en mm / s.

Asumamos que este es el código G:

G28 ; home all axes
G1 Z0.200 F5400.000
G1 X158.878 Y27.769 E6.65594 F900.000

Este es el cálculo que hace:

totalTime = 0

# G28 ; home all axes
currentX = 0 mm
currentY = 0 mm
currentZ = 0 mm

# G1 Z0.200 F5400.000
newZ = 0.2 mm
mmPerSecond = 5400 / 60 = 90 mm/s
deltaZ = newZ - currentZ = 0.2 - 0 = 0.2 mm
segmentLength = deltaZ  = 0.2 mm
moveTime = segmentLength / mmPerSecond = 0.2 / 90 = 0.002 s
totalTime = totalTime + moveTime = 0 + 0.002 = 0.002 s

# G1 X158.878 Y27.769 E6.65594 F900.000
newX = 158.878 mm
newY = 27.769 mm
mmPerSecond = 900 / 60 = 15 mm/s
deltaX = newX - currentX = 158.878 - 0 = 158.878 mm
deltaY = newY - currentY = 27.769 - 0  = 27.769 mm
segmentLength = square_root(deltaX² + deltaY²) = 161.287 mm
moveTime = deltaZ / mmPerSecond = 161.287 / 15 = 10.755 s
totalTime = totalTime + moveTime = 0.002 + 10.755 = 10.757 s

En este ejemplo, la impresión tardará aproximadamente 10.7 segundos.

Más generalmente, la fórmula utilizada es, para cada movimiento:

moveTime = segmentLength / mmPerSecond

Al resumir todos los tiempos de movimiento, tenemos el tiempo de impresión total estimado.

He visto que algunos foros afirman que el tiempo de impresión en 3D también depende de algunas configuraciones en la impresora 3D, especialmente Acceleration X, Acceleration Y, Acceleration Z, Jerk y Z-Jerk.

Me gustaría hacer posible el uso de esos valores para calcular con mayor precisión el tiempo de impresión; Sin embargo, no entiendo cómo esos valores afectan el tiempo de movimiento:

  1. ¿Cómo deben considerarse la aceleración y el tirón? y, ¿cómo aceleran o ralentizan el tiempo de impresión?
  2. ¿Cómo debo editar mi fórmula para incluir Aceleración y Jerk en el cálculo del tiempo de impresión?

¿Qué tan exacto necesitas ser? Sí, puede conectar las aceleraciones y compensar las carreras cortas en las que los motores nunca alcanzan la velocidad máxima antes de desacelerar, y así sucesivamente, pero si el resultado neto solo está apagado, digamos, 2%, ¿le importa? Intente imprimir algo simple como una pirámide cuadrada y compare su predicción con la realidad.
Carl Witthoft

Me gustaría ser lo más preciso posible ... En este momento, en una impresión de 9 horas, la diferencia entre la predicción y la realidad es de 10-15 minutos, que es mucho.
Veré el

Tal vez podría verificar slic3r y ver cómo calcula esos parámetros. Recuerdo que obtuve una estimación del tiempo al cortar.
FarO

@FarO Uso Slic3r y nunca vi una estimación de tiempo. Tal vez no estoy buscando el lugar correcto, pero hay muchos usuarios que solicitan esa función en la web, así que me temo que no hay forma de saber el tiempo de impresión en Slic3r.
BackSlash

@BackSlash Normalmente lo veo en Repetier al final del corte en el registro de salida. ¡Supongo que es del propio Repetier!
FarO

Respuestas:


5

He intentado buscar en el firmware de la impresora para ver cómo la configuración de Aceleración afecta el movimiento de la máquina. Por lo que pude ver, la aceleración parecía implementarse de manera diferente dependiendo del firmware que miré y también se vio afectada por las configuraciones utilizadas en la impresora. No busqué más porque escribir reglas diferentes para cada firmware diferente parecía demasiado problema. Quizás alguien que sepa más sobre esto sabría si la mayoría del firmware usa los mismos cálculos.

Sospecho que la configuración de aceleración no hará una gran diferencia en el tiempo que toma la impresión. Parece que no han marcado la diferencia en las impresiones pequeñas que he hecho imprimiendo a baja velocidad. Si estaba imprimiendo impresiones más grandes a velocidades más rápidas que tenían largos caminos donde la boquilla tenía tiempo para acelerar y desacelerar, entonces sospecho que notará una diferencia mayor con el tiempo.

Descubrí que el mayor error entre el tiempo predicho y el tiempo real ha sido el tiempo que la máquina pasa procesando las instrucciones. Cuando imprimo un modelo que tiene muchos movimientos cortos que deben enviarse a la impresora y deben ser procesados ​​y calculados por la impresora, he notado que la impresora se detendrá por una fracción de segundo. No es lo suficientemente largo como para ver una diferencia en los movimientos de las impresoras, pero es lo suficientemente notable como para escuchar. Sospecho que en impresoras más baratas esto causaría un error mayor que la aceleración.

Si alguien puede averiguar cómo la impresora calcula la configuración de aceleración y qué comando de código G se puede usar para obtener la configuración de aceleración de la impresora, realmente me interesaría saber más sobre esto.


Gracias por tu respuesta, seguiré buscando. Gracias por señalarme en la dirección correcta: puedo leer el código fuente de Marlin y buscar las partes de aceleración y control de tirones, seguramente ayudará, ¡no lo pensé! ¡Gracias!
BackSlash

3
"Sospecho que la configuración de aceleración no hará una gran diferencia en el tiempo que toma la impresión". <- esto no podría estar más equivocado. La aceleración es el factor dominante en el tiempo de impresión cuando la relación entre la velocidad de impresión y el tamaño del detalle es alta (es decir, configuración de velocidad rápida o pequeños detalles o ambos). Tanto que aumentar la configuración de velocidad [máx.] En un factor de 2x es poco probable que reduzca incluso un 5% el tiempo de impresión.
R .. GitHub DEJA DE AYUDAR AL HIELO

5

En primer lugar, hay algunos buenos analizadores de código abierto escritos en JavaScript que puede usar en línea o leer la fuente en https://www.gcodeanalyser.com/ y http://gcode.ws/ . Sus predicciones no coinciden completamente con el firmware real de la impresora, pero hacen un trabajo razonablemente cercano, y leerlas sería informativo.

Básicamente, la historia detrás de la aceleración y el tirón es que no se puede cambiar la velocidad (velocidad o dirección) del cabezal de impresión instantáneamente. Se necesita tiempo para acelerar y reducir la velocidad. La aceleración es la velocidad máxima a la que puede cambiar la velocidad del cabezal de impresión. Jerk es una especie de nombre inapropiado / pirateo, y es el cambio instantáneo máximo falso en la velocidad permitida en la unión de dos segmentos / curvas. El punto de tirón es evitar el movimiento entrecortado cuando se mueve a lo largo de una curva compuesta por muchos segmentos acelerando / desacelerando en cada esquina pequeña. Tenga en cuenta que hay dos conjuntos de configuraciones para la aceleración y el tirón:

  • un valor absoluto máximo (longitud del vector 3D) que frecuentemente cambiaba como parte del código g para usar diferentes perfiles de aceleración para movimientos de impresión frente a movimientos de desplazamiento, paredes frente a relleno, etc.

  • valores absolutos por eje (valor absoluto estándar 1D) para las limitaciones de la máquina, que generalmente se establecen en la configuración de la impresora o en el perfil de inicio de gcode para su impresora y nunca cambian.

El movimiento está obligado a respetar siempre ambos conjuntos de configuraciones.

El firmware de la impresora utiliza ajustes de aceleración y tirones junto con anticipación a los próximos comandos de movimiento para decidir cómo operar los motores. Cuando comienza un movimiento, tiene que acelerar hasta la velocidad máxima configurada dentro de las restricciones de aceleración. También debe comenzar a reducir la velocidad a mitad de camino a menos que sepa que el próximo movimiento continuará exactamente en la misma dirección; cuánto tiene que reducir la velocidad depende de la diferencia en los vectores de movimiento. Si el próximo movimiento va a ser aproximadamente en la misma dirección, puede evitar reducir la velocidad utilizando el margen de sacudidas para hacer un cambio de velocidad "instantáneo" en la esquina. Solo si tiene movimientos lineales largos (relativos a la velocidad) o aproximadamente lineales, alcanzará la velocidad solicitada.

Entonces, para estimar el tiempo de impresión, debe modelar esto. Mantenga un registro de la velocidad del cabezal de impresión mientras procesa / simula el código g, y para cada comando de movimiento, calcule la velocidad en función del tiempo utilizando los límites de aceleración (acelerando a la velocidad máxima que permiten). También debe determinar la velocidad final con la que desea finalizar el movimiento para poder iniciar el siguiente comando de movimiento, y un punto para comenzar a desacelerar si es necesario para alcanzar eso.


Jerk es el derivado de la aceleración.
Trish

1
@trish: excepto cuando no lo es. Vea mi pregunta 3dprinting.stackexchange.com/questions/10369/… .
R .. GitHub DEJA DE AYUDAR AL HIELO
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.