Os controladores de impressoras 3D precisam fazer muitas coisas muito, muito rapidamente. Realizar cálculos cinemáticos e dinâmicos enquanto envia milhares de pulsos de passo sincronizados com precisão por segundo é muito, muito difícil . A linha de microcontroladores AVR de 8 bits usada em controladores de impressora 3D mais antigos é basicamente um processador Mr Coffee da era do final dos anos 90. Eles estão completamente esgotados no tempo do processador, apenas executando funções básicas de impressão em impressoras simples (por exemplo, cartesianas), e a adição de carga de cálculo adicional irá atolá-los e causar lentidão, gagueira, pausa e assim por diante.
"Mas minha impressora de 8 bits funciona bem", você diz. Não, não faz. Seu desempenho de impressão é limitado por isso, você percebe ou não. Agora, os cortadores ocultam automaticamente muitas deficiências de desempenho do firmware. Por exemplo, a prática padrão de diminuir bastante a velocidade de impressão nos perímetros é em grande parte o resultado dos processadores de 8 bits terem recursos inadequados para duas coisas:
- Executando cálculos de aceleração centrípeta para curvas em vários segmentos gcode
- Acompanhamento da transmissão / processamento gcode e planejamento de movimento para gcode com muitos segmentos muito pequenos, como em modelos orgânicos ou arcos suaves
Quando apresentado com uma série de segmentos muito pequenos em um arco suave ou uma curva complexa, o firmware de 8 bits provavelmente engasgará com a taxa de processamento de comando necessária e introduzirá uma gagueira na impressão. Essas pausas incrivelmente breves permitem que a pressão residual na extrusora empurre um pouco mais de plástico, provocando uma pequena espinha na impressão. Portanto, a maioria das ferramentas de corte dizima automaticamente as curvas e gera o código g com resolução reduzida para diminuir a carga no firmware. Problema resolvido, certo?
Mas há outro problema - os algoritmos de controle de movimento GRBL subjacentes a todos os principais controladores de impressoras 3D de código aberto foram projetados com muitos atalhos e hacks para permitir que os processadores de 8 bits sejam executados com rapidez suficiente. Por exemplo, o algoritmo básico apenas analisa a velocidade ou mudança de velocidade na esquina entre dois segmentos e usa isso para decidir quando desacelerar / acelerar ao longo da direção do movimento. Ele não calcula ou considera a aceleração centrípeta / radial de qualquer forma. Este é um truque realmente eficaz na impressão de modelos quadrados e de baixa resolução, mas falha miseravelmente em curvas suaves com muitos pequenos segmentos. O firmware não detecta nenhuma mudança apreciável de velocidade no canto de dois segmentos quase lineares dentro da curva facetada e, portanto, não diminui a velocidade da curva.
Imprimir perímetros complexos sem aceleração significa que a velocidade de avanço comandada deve ser muito baixa para obter boa qualidade. A maioria das impressoras é limitada a cerca de 40 mm / s ou menos em perímetros complexos, apesar de poder executar talvez 80-120 mm / s em preenchimentos de baixa complexidade antes de atingir outros limites de velocidade.
Entre os limites da taxa de processamento de comandos e as deficiências do planejador de movimento exigidas pelos processadores de baixa potência, as velocidades de impressão devem ser muito mais baixas na prática do que o estritamente exigido pelo hardware físico e da impressora. Tudo isso vem de processadores de 8 bits. As soluções alternativas e as práticas recomendadas para lidar com esse problema estão tão profundamente arraigadas nas cadeias de ferramentas e no ecossistema que poucas pessoas percebem que existe um problema. Mas é um limite real que pode ser superado: um processador de alta velocidade executando um planejador de movimento mais rigoroso poderia gerar maiores velocidades médias de impressão com melhor qualidade de impressão.
Dito isto, os firmwares baseados em ARM estão lentamente avançando para planejadores de movimento mais avançados. Esta é uma grande área de desenvolvimento no momento que está realmente afastando os próximos ARMs de baixo custo, como o Cortex M3, em direção a processadores ainda mais rápidos. Na verdade, não é tão difícil maximizar um Arduino Due de 84 MHz, acumulando vários recursos de firmware.
O uso de processadores de 8 bits também torna as impressoras MAIS ALTAS. O maior consumidor de tempo do processador em uma impressora típica de 8 bits é a interrupção de passo que dispara os pulsos de passo para fazer os motores se moverem. É bastante típico que> 60% de todos os ciclos de clock em um Atmega AVR atinjam pulsos de passo de disparo. Como isso ocorre como uma interrupção, outras tarefas de processamento que a impressora deve executar - como cálculos de aceleração e controle do aquecedor - são espremidas nos breves espaços entre os eventos de interrupção de etapas.
Sem um design cuidadoso do firmware, os pulsos de passo "eliminam" outras funcionalidades, como atualizações do visor LCD e cálculos de aceleração. Para permitir taxas de movimento mais altas sem usar todos os recursos do processador, os firmwares de 8 bits têm um modo chamado "duplicação de etapas" que dispara dois (ou quatro, ou oito) pulsos de etapa por etapa de interrupção, de modo que metade (ou um quarto ou oitavo) ), quantas interrupções de passo podem ser usadas para produzir a mesma velocidade de movimento. Essa prática remove os gargalos do processador, mas causa um movimento mais alto e mais alto do motor, porque os pulsos de passo são disparados em rajadas, em vez de uma frequência constante. Com efeito, o nível de micro degraus do motor cai funcionalmente para um modo mais grosso quando a interrupção do stepper dispara etapas duplas ou quádruplas. Então os motores ficam mais altos, menos precisos,
Um efeito colateral interessante é que, se você alternar uma impressora baseada em Marlin de 1/16 a 1/32 e mantiver as mesmas velocidades de impressão, o firmware simplesmente começará a duplicar, reduzindo seu nível efetivo de volta para 1/16.
Os firmwares baseados em ARM também usam duplicação de etapas, mas as taxas de etapas permitidas são tipicamente ~ 8 vezes maiores antes que a etapa dupla / quad seja usada. Isso pode significar velocidades mais altas e / ou movimento mais suave.
Outro problema com os AVRs de 8 bits é a falta de ponto flutuante de hardware e precisa gastar muitos ciclos de clock em cálculos de alta precisão ou lidar com números muito grandes. A cinemática Delta, as funções de nivelamento automático, o cálculo de movimentos com contagens de etapas extremamente altas para impressoras grandes e outras funcionalidades avançadas exigem muitos ciclos de clock em um processador de 8 bits. Um design de firmware ruim ou a adição descuidada de um recurso que requer algumas raízes quadradas extras e funções trigonométricas podem atolar completamente o processador. Esse tipo de fluência de recursos e inchaço no código afetou seriamente o desempenho de Marlin ao longo do tempo, à medida que as pessoas perguntam cada vez mais sobre o antigo AVR.
Em comparação, um processador de 32 bits não possui apenas um relógio mais rápido e mais ciclos de clock, mas também é capaz de fazer matemática muito mais complexa em menos ciclos de clock, porque possui uma funcionalidade de hardware dedicada que cuida de muitas das etapas de um 8bit. processador deve fazer no software.
Os processadores de 8 bits funcionam? Claro, eles funcionam surpreendentemente bem pelo que são e pelo que pedimos a eles. Mas eles inquestionavelmente limitam o desempenho e os recursos das modernas impressoras 3D. Até a atual geração atual de processadores de 32 bits já está sendo maximizada por impressoras de alta velocidade e recursos pesados em matemática. O processador de 8 bits já está duas gerações atrás do que se qualificaria como um controlador de impressora 3D "moderno".