Los controladores de impresoras 3D tienen que hacer muchas cosas muy, muy rápido. Realizar cálculos cinemáticos y dinámicos mientras se envían miles de pulsos de paso sincronizados con precisión por segundo es muy, muy difícil . La línea de microcontroladores AVR de 8 bits utilizada en controladores de impresoras 3D más antiguas es básicamente un procesador Mr Coffee de finales de la década de 1990. Su tiempo de procesador se ha agotado por completo, simplemente ejecutando funciones básicas de impresión en impresoras simples (por ejemplo, cartesianas), y al agregar una carga de cálculo adicional los empantanarán y causarán ralentizaciones, tartamudeos, pausas, etc.
"Pero mi impresora de 8 bits funciona bien", dices. No lo hace Su rendimiento de impresión está limitado por eso, ya sea que se dé cuenta o no. Slicers ahora oculta automáticamente muchas de las deficiencias de rendimiento del firmware. Por ejemplo, la práctica estándar de reducir considerablemente la velocidad de impresión en perímetros es en gran parte el resultado de que los procesadores de 8 bits tengan recursos inadecuados para dos cosas:
- Realización de cálculos de aceleración centrípeta para curvas en múltiples segmentos de gcode
- Mantenerse al día con la transmisión / procesamiento de gcode y la planificación de movimiento para gcode con muchos segmentos muy pequeños, como en modelos orgánicos o arcos suaves
Cuando se presenta una serie de segmentos muy pequeños en un arco suave o una curva compleja, el firmware de 8 bits probablemente se atragantará con la velocidad de procesamiento de comandos requerida e introducirá la tartamudez en la impresión. Estas pausas increíblemente breves permiten que la presión residual en el extrusor expulse un poco de plástico adicional, haciendo un pequeño grano en la impresión. Por lo tanto, la mayoría de las cortadoras diezman automáticamente curvas y generan gcode con resolución reducida para aligerar la carga en el firmware. Problema resuelto, ¿verdad?
Pero hay otro problema: los algoritmos de control de movimiento GRBL subyacentes a todos los principales controladores de impresoras 3D de código abierto fueron diseñados con muchos accesos directos y hacks para permitir que los procesadores de 8 bits se ejecuten lo suficientemente rápido. Por ejemplo, el algoritmo básico solo analiza la velocidad o el cambio de velocidad en la esquina entre dos segmentos, y lo usa para decidir cuándo desacelerar / acelerar a lo largo de la dirección del movimiento. No calcula ni considera la aceleración centrípeta / radial en absoluto. Este es un truco realmente efectivo cuando se imprimen modelos cuadrados de baja resolución, pero falla miserablemente en curvas suaves con muchos segmentos pequeños. El firmware no detecta ningún cambio de velocidad apreciable en la esquina de cualquiera de los dos segmentos casi lineales dentro de la curva facetada, y por lo tanto no disminuye la velocidad de la curva.
La impresión de perímetros complejos sin acelerar significa que la velocidad de avance ordenada debe ser muy baja para obtener una buena calidad. La mayoría de las impresoras están limitadas a aproximadamente 40 mm / s o menos en perímetros complejos, a pesar de poder ejecutar quizás 80-120 mm / s en un relleno de baja complejidad antes de alcanzar otros límites de velocidad.
Entre los límites de velocidad de procesamiento de comandos y las deficiencias del planificador de movimiento requeridas por los procesadores de baja potencia, las velocidades de impresión deben ser mucho más bajas en la práctica de lo estrictamente requerido por la física y el hardware de la impresora. Todo esto proviene de procesadores de 8 bits. Las soluciones alternativas y las mejores prácticas para abordar este problema están tan profundamente arraigadas en las cadenas de herramientas y el ecosistema que muy pocas personas se dan cuenta de que incluso hay un problema. Pero es un límite real que se puede superar: un procesador de alta velocidad que ejecute un planificador de movimiento más riguroso podría generar velocidades de impresión promedio más altas con una mejor calidad de impresión.
Dicho esto, los firmwares basados en ARM solo avanzan lentamente hacia planificadores de movimiento más avanzados. Esta es una gran área de desarrollo en este momento que en realidad está alejando un cambio próximo de los ARM de gama baja como el Cortex M3 hacia procesadores aún más rápidos. En realidad, no es tan difícil maximizar un Arduino Due de 84 MHz al acumular un montón de características de firmware.
El uso de procesadores de 8 bits también hace que las impresoras sean MÁS ALTAS. El mayor consumidor de tiempo de procesador en una impresora típica de 8 bits es la interrupción paso a paso que dispara los pulsos de paso para hacer que los motores se muevan. Es bastante típico que> 60% de todos los ciclos de reloj en un Atmega AVR vaya a disparar pulsos de paso. Debido a que esto ocurre como una interrupción, otras tareas de procesamiento que debe realizar la impresora, como los cálculos de aceleración y el control del calentador, quedan atrapadas en los breves espacios entre los eventos de interrupción gradual.
Sin un diseño de firmware cuidadoso, los pulsos de paso "desplazarán" por completo a otras funciones, como las actualizaciones de la pantalla LCD y los cálculos de aceleración. Para permitir velocidades de movimiento más altas sin utilizar todos los recursos del procesador, los firmwares de 8 bits tienen un modo llamado "duplicación por pasos" que dispara dos (o cuatro u ocho) pulsos de paso por interrupción paso a paso de modo que la mitad (o un cuarto, o un octavo) ) se pueden usar tantas interrupciones de pasos para producir la misma velocidad de movimiento. Esta práctica elimina el cuello de botella del procesador, pero provoca un movimiento del motor más fuerte y ruidoso porque los pulsos de paso se disparan en ráfagas en lugar de una frecuencia constante. En efecto, el nivel de micropasos del motor se reduce funcionalmente a un modo más grueso cuando la interrupción paso a paso dispara pasos dobles o cuádruples. Entonces los motores se vuelven más fuertes, menos precisos,
Un efecto secundario interesante es que si cambia una impresora basada en Marlin de 1/16 microstepping a 1/32 microstepping, y mantiene las mismas velocidades de impresión, el firmware simplemente comenzará a duplicar, bajando su nivel efectivo de microstepping nuevamente a 1/16.
Los firmwares basados en ARM también usan duplicación de pasos, pero las tasas de pasos permitidas son típicamente ~ 8 veces más altas antes de usar pasos dobles / cuádruples. Eso puede significar velocidades más altas y / o movimiento más suave.
Otro problema con los AVR de 8 bits es la falta de punto flotante de hardware y la necesidad de gastar muchos ciclos de reloj en cálculos de alta precisión o manejo de números muy grandes. La cinemática Delta, las funciones de nivelación automática, el cálculo de movimientos con conteos de pasos extremadamente altos para impresoras grandes y otras funcionalidades avanzadas requieren muchos ciclos de reloj en un procesador de 8 bits. El diseño deficiente del firmware o la adición descuidada de una función que requiere algunas raíces cuadradas adicionales y funciones trigonométricas pueden atascar por completo el procesador. Este tipo de característica de arrastre y aumento de código ha impactado seriamente el rendimiento de Marlin con el tiempo a medida que la gente pregunta más y más sobre el viejo AVR.
En comparación, un procesador de 32 bits no solo tiene un reloj más rápido y más ciclos de reloj, sino que también puede hacer cálculos matemáticos mucho más complejos en menos ciclos de reloj, porque tiene una funcionalidad de hardware dedicada que se encarga de muchos de los pasos de 8 bits procesador debe hacer en el software.
¿Funcionan los procesadores de 8 bits? Claro, funcionan sorprendentemente bien por lo que son y por lo que les pedimos. Pero sin duda limitan el rendimiento y las características de las impresoras 3D modernas. Incluso la actual generación actual de procesadores de 32 bits ya está siendo maximizada por las impresoras de alta velocidad y las características pesadas en matemáticas. El procesador de 8 bits ya está dos generaciones atrás de lo que calificaría como un controlador de impresora 3D "moderno".