Comecei a escrever um aplicativo que calcula o tempo total estimado de impressão do arquivo de código G para um modelo já fatiado.
O programa funciona e é bastante preciso.
Funciona da seguinte maneira:
- Ele verifica todo o arquivo de código G para identificar todos os movimentos
- Ele calcula o tempo de cada movimento dividindo a distância do segmento pela velocidade em mm / s.
Vamos assumir que este é o código G:
G28 ; home all axes
G1 Z0.200 F5400.000
G1 X158.878 Y27.769 E6.65594 F900.000
Este é o cálculo que faz:
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
Neste exemplo, a impressão levará aproximadamente 10,7 segundos.
De maneira mais geral, a fórmula usada é, para cada movimento:
moveTime = segmentLength / mmPerSecond
Ao resumir todos os tempos de movimentação, temos o tempo total estimado de impressão.
Vi que alguns fóruns afirmam que o tempo de impressão 3D também depende de algumas configurações da impressora 3D, especialmente Aceleração X, Aceleração Y, Aceleração Z, Jerk e Z-Jerk.
Gostaria de possibilitar o uso desses valores para calcular com mais precisão o tempo de impressão; no entanto, não entendo como esses valores afetam o tempo de movimentação:
- Como devem ser consideradas a aceleração e o Jerk; e como eles aceleram ou diminuem o tempo de impressão?
- Como devo editar minha fórmula para incluir Aceleração e Jerk no cálculo do tempo de impressão?
fonte
Respostas:
Tentei examinar o firmware da impressora para ver como a configuração de aceleração afeta o movimento da máquina. Pelo que pude perceber, a aceleração parecia ser implementada de maneira diferente, dependendo do firmware que eu analisei e também foi afetada pelas configurações usadas na impressora. Não procurei mais porque escrever regras diferentes para cada firmware diferente parecia demais. Talvez alguém que saiba mais sobre isso saiba se a maioria dos firmware usa os mesmos cálculos.
Eu suspeito que a configuração de aceleração não fará muita diferença no tempo que a impressão demora. Eles não parecem fazer diferença nas pequenas impressões que eu imprimi em baixa velocidade. Se você estava imprimindo impressões maiores em velocidades mais rápidas, com longos caminhos onde o bico tinha tempo para acelerar e desacelerar, suspeito que você notaria uma diferença maior com o tempo.
Descobri que o maior erro entre o tempo previsto e o tempo real foi o tempo que a máquina gasta processando as instruções. Ao imprimir um modelo que possui muitos movimentos curtos que precisam ser enviados à impressora e precisam ser processados e calculados pela impressora, notei que a impressora pausa por uma fração de segundo. Não é longo o suficiente para ver uma diferença nos movimentos da impressora, mas é perceptível o suficiente para ouvir. Eu suspeito que em impressoras mais baratas isso causaria um erro maior do que a aceleração.
Se alguém descobrir como as configurações de aceleração são calculadas pela impressora e qual comando de código G pode ser usado para obter as configurações de aceleração da impressora, eu estaria realmente interessado em saber mais sobre isso.
fonte
Primeiro de tudo, existem alguns analisadores de código aberto escritos em JavaScript que você pode usar on-line ou ler a fonte em https://www.gcodeanalyser.com/ e http://gcode.ws/ . Suas previsões não correspondem totalmente ao firmware real da impressora, mas fazem um trabalho razoavelmente próximo e a leitura delas seria informativa.
Basicamente, a história por trás da aceleração e do empurrão é que você não pode alterar a velocidade (velocidade ou direção) da cabeça de impressão instantaneamente. Leva tempo para acelerar e diminuir a velocidade. Aceleração é a taxa máxima na qual a velocidade da cabeça de impressão pode mudar. Jerk é uma espécie de equívoco / hack, e é a máxima alteração instantânea de velocidade instantânea permitida na junção de dois segmentos / curvas. O objetivo do empurrão é evitar movimentos irregulares ao se mover ao longo de uma curva composta de muitos segmentos, acelerando / desacelerando em cada canto minúsculo. Observe que existem dois conjuntos de configurações para aceleração e empurrão:
um valor absoluto máximo (comprimento do vetor 3D) que frequentemente muda como parte do gcode para usar diferentes perfis de aceleração para movimentos de impressão versus movimentos de deslocamento, paredes versus preenchimento, etc.
valores absolutos por eixo (valor absoluto 1D padrão) para as limitações da máquina, que geralmente são definidas nas configurações da impressora ou no perfil gcode inicial da sua impressora e nunca são alteradas.
O movimento é restrito a respeitar sempre os dois conjuntos de configurações.
O firmware da impressora usa as configurações de aceleração e jerk, juntamente com o lookahead nos próximos comandos de movimento para decidir como realmente operar os motores. Quando ele inicia um movimento, ele precisa acelerar até a velocidade máxima configurada dentro das restrições de aceleração. Ele também precisa começar a desacelerar no meio do caminho, a menos que saiba que o próximo movimento continuará exatamente na mesma direção; quanto isso tem que desacelerar depende da diferença nos vetores de movimento. Se o próximo movimento for aproximadamente na mesma direção, é possível evitar a desaceleração usando a permissão de empurrão para fazer uma mudança "instantânea" de velocidade na esquina. Somente se você tiver movimentos lineares (aproximadamente em relação à velocidade) lineares ou aproximadamente lineares, você alcançará a velocidade solicitada.
Portanto, para estimar o tempo de impressão, você precisa modelar isso. Acompanhe a velocidade da cabeça de impressão enquanto processa / simula o código g e, para cada comando de movimento, calcule a velocidade em função do tempo usando os limites de aceleração (acelerando na taxa máxima permitida). Você também precisa descobrir a velocidade final com a qual deseja finalizar o movimento para poder iniciar o próximo comando de movimento e um ponto para começar a desacelerar, se necessário, para alcançá-lo.
fonte