J'ai commencé à écrire une application qui calcule le temps d'impression total estimé à partir du fichier G-code pour un modèle déjà découpé en tranches.
Le programme fonctionne et il est assez précis.
Cela fonctionne comme suit:
- Il scanne l'intégralité du fichier G-code pour identifier tous les mouvements
- Il calcule le temps pour chaque mouvement en divisant la distance du segment par la vitesse en mm / s.
Supposons que c'est le code G:
G28 ; home all axes
G1 Z0.200 F5400.000
G1 X158.878 Y27.769 E6.65594 F900.000
Voici le calcul qu'il fait:
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
Dans cet exemple, l'impression prendra environ 10,7 secondes.
Plus généralement, la formule utilisée est, pour chaque mouvement:
moveTime = segmentLength / mmPerSecond
En additionnant tous les temps de déplacement, nous avons le temps d'impression total estimé.
J'ai vu que certains forums déclarent que le temps d'impression 3D dépend également de certains paramètres de l'imprimante 3D, en particulier Acceleration X, Acceleration Y, Acceleration Z, Jerk et Z-Jerk.
J'aimerais pouvoir utiliser ces valeurs pour calculer plus précisément le temps d'impression; cependant, je ne comprends pas comment ces valeurs affectent le temps de déplacement:
- Comment considérer l'accélération et la secousse; et comment accélèrent-ils ou ralentissent-ils le temps d'impression?
- Comment dois-je modifier ma formule afin d'inclure l'accélération et la secousse dans le calcul du temps d'impression?