Les contrôleurs d'imprimante 3D doivent faire beaucoup de choses très, très rapidement. Effectuer des calculs cinématiques et dynamiques tout en envoyant plusieurs milliers d'impulsions de pas synchronisées avec précision par seconde est vraiment très difficile . La gamme de microcontrôleurs AVR 8 bits utilisée dans les anciens contrôleurs d'imprimante 3D est essentiellement un processeur Mr Coffee de la fin des années 1990. Ils sont complètement, complètement au maximum sur le temps du processeur, exécutant simplement des fonctions d'impression de base dans des imprimantes simples (par exemple cartésiennes), et l'ajout d'une charge de calcul supplémentaire les enlèvera et provoquera des ralentissements, des bégaiements, des pauses, etc.
"Mais mon imprimante 8 bits fonctionne bien", dites-vous. Non, non. Vos performances d'impression en sont limitées, que vous le réalisiez ou non. Les trancheuses vous cachent désormais automatiquement une grande partie des lacunes de performances du micrologiciel. Par exemple, la pratique standard consistant à ralentir considérablement les vitesses d'impression sur les périmètres est largement due au fait que les processeurs 8 bits n'ont pas les ressources suffisantes pour deux choses:
- Effectuer des calculs d'accélération centripète pour les courbes sur plusieurs segments de gcode
- Suivre la transmission / le traitement de gcode et la planification de mouvement pour gcode avec de nombreux très petits segments, comme dans les modèles organiques ou les arcs lisses
Lorsqu'il est présenté avec une série de très petits segments dans un arc lisse ou une courbe complexe, le micrologiciel 8 bits s'étouffera probablement sur la vitesse de traitement des commandes requise et introduira le bégaiement à l'impression. Ces pauses incroyablement brèves permettent à la pression résiduelle dans l'extrudeuse de pousser un peu de plastique supplémentaire, faisant un peu de zit sur l'impression. Ainsi, la plupart des trancheuses déciment automatiquement les courbes et génèrent du gcode avec une résolution réduite pour alléger la charge du firmware. Problème résolu, non?
Mais il y a un autre problème - les algorithmes de contrôle de mouvement GRBL qui sous-tendent tous les principaux contrôleurs d'imprimante 3D open source ont été conçus avec de nombreux raccourcis et hacks pour permettre aux processeurs 8 bits de s'exécuter assez rapidement. Par exemple, l'algorithme de base ne regarde que le changement de vitesse ou de vitesse au coin entre deux segments, et l'utilise pour décider quand décélérer / accélérer le long de la direction du mouvement. Il ne calcule ni ne considère aucune accélération centripète / radiale. C'est un hack vraiment efficace lors de l'impression de modèles carrés et basse résolution, mais il échoue lamentablement sur des courbes lisses avec beaucoup de petits segments. Le micrologiciel ne détecte aucun changement de vitesse appréciable au coin de deux segments presque linéaires dans la courbe à facettes et ne ralentit donc pas la courbe.
L'impression de périmètres complexes non accélérés signifie que l'avance commandée doit être très faible pour obtenir une bonne qualité. La plupart des imprimantes sont limitées à environ 40 mm / s ou moins sur des périmètres complexes, bien qu'elles puissent fonctionner peut-être de 80 à 120 mm / s sur un remplissage de faible complexité avant d'atteindre d'autres limites de vitesse.
Entre les limites de vitesse de traitement des commandes et les défauts du planificateur de mouvement requis par les processeurs de faible puissance, les vitesses d'impression doivent être beaucoup plus faibles en pratique que ce qui est strictement requis par la physique et le matériel de l'imprimante. Tout cela provient de processeurs 8 bits. Les solutions de contournement et les meilleures pratiques pour résoudre ce problème sont si profondément ancrées dans les chaînes d'outils et l'écosystème que très peu de gens réalisent qu'il y a même un problème. Mais c'est une véritable limite qui peut être surmontée: un processeur haute vitesse exécutant un planificateur de mouvement plus rigoureux pourrait générer des vitesses d'impression moyennes plus élevées avec une meilleure qualité d'impression.
Cela dit, les firmwares basés sur ARM ne progressent que lentement vers des planificateurs de mouvement plus avancés. Il s'agit en ce moment d'un grand domaine de développement qui entraîne en fait une transition prochaine des ARM bas de gamme comme le Cortex M3 vers des processeurs encore plus rapides. En fait, il n'est pas si difficile de maximiser un Arduino Due à 84 MHz en empilant un tas de fonctionnalités de firmware.
L'utilisation de processeurs 8 bits rend également les imprimantes PLUS FORTES. Le plus gros consommateur de temps processeur dans une imprimante 8 bits typique est l'interruption pas à pas qui déclenche les impulsions de pas pour faire bouger les moteurs. Il est assez typique que plus de 60% de tous les cycles d'horloge d'un AVR Atmega passent à des impulsions de pas de tir. Parce que cela se produit comme une interruption, d'autres tâches de traitement que l'imprimante doit effectuer - comme les calculs d'accélération et le contrôle du chauffage - se retrouvent coincées dans les espaces courts entre les événements d'interruption pas à pas.
Sans une conception soigneuse du micrologiciel, les impulsions de pas "supplanteront" complètement les autres fonctionnalités comme les mises à jour de l'écran LCD et les calculs d'accélération. Afin de permettre des taux de mouvement plus élevés sans utiliser toutes les ressources du processeur, les firmwares 8 bits ont un mode appelé "doublage de pas" qui déclenche deux (ou quatre, ou huit) impulsions de pas par interruption pas à pas de sorte que la moitié (ou un quart, ou un huitième) ) car de nombreuses interruptions pas à pas peuvent être utilisées pour produire la même vitesse de déplacement. Cette pratique supprime les goulots d'étranglement du processeur, mais elle provoque un mouvement du moteur plus brutal et plus fort car les impulsions de pas sont déclenchées en rafales plutôt qu'en fréquence constante. En effet, le niveau de micropas du moteur est fonctionnellement abaissé à un mode plus grossier lorsque l'interruption pas à pas déclenche des pas doubles ou quadruples. Donc les moteurs deviennent plus forts, moins précis,
Un effet secondaire intéressant est que si vous passez d'une imprimante basée sur Marlin de 1/16 micropas à 1/32 micropas et que vous conservez les mêmes vitesses d'impression, le microprogramme commencera simplement à doubler, en baissant votre niveau de micropas effectif de nouveau à 1/16.
Les firmwares basés sur ARM utilisent également le doublement de pas, mais les taux de pas autorisés sont généralement ~ 8 fois plus élevés avant que le pas double / quadruple ne soit utilisé. Cela peut signifier des vitesses plus élevées et / ou un mouvement plus fluide.
Un autre problème avec les AVR 8 bits est le manque de virgule flottante matérielle et la nécessité de consacrer de nombreux cycles d'horloge à des calculs de haute précision ou à la manipulation de très grands nombres. La cinématique Delta, les fonctions de mise à niveau automatique, le calcul des mouvements avec un nombre de pas extrêmement élevé pour les grandes imprimantes et d'autres fonctionnalités avancées prennent tous beaucoup de cycles d'horloge sur un processeur 8 bits. Une mauvaise conception du micrologiciel ou l'ajout imprudent d'une fonctionnalité qui nécessite quelques racines carrées et fonctions trigonométriques supplémentaires peut complètement enliser le processeur. Ce type de dérive des fonctionnalités et de ballonnement de code a sérieusement affecté les performances de Marlin au fil du temps, car les gens demandent de plus en plus à l'ancien AVR.
En comparaison, un processeur 32 bits n'a pas seulement une horloge plus rapide et plus de cycles d'horloge, il est également capable de faire des calculs beaucoup plus complexes en moins de cycles d'horloge, car il dispose d'une fonctionnalité matérielle dédiée qui prend en charge la plupart des étapes d'un 8 bits. processeur doit faire dans le logiciel.
Les processeurs 8 bits fonctionnent-ils? Bien sûr, ils fonctionnent étonnamment bien pour ce qu'ils sont et ce que nous leur demandons. Mais ils limitent incontestablement les performances et les fonctionnalités des imprimantes 3D modernes. Même la génération actuelle de processeurs 32 bits est déjà optimisée par des imprimantes à grande vitesse et des fonctionnalités mathématiques. Le processeur 8 bits a déjà deux générations de retard sur ce qui pourrait être qualifié de contrôleur d'imprimante 3D "moderne".