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".
Généralement, l'AVR est en fait moins puissant que de nombreux cœurs ARM utilisés aujourd'hui. La plupart des imprimantes avec AVR ne disposent pas de coprocesseurs à virgule flottante, bien qu'une grande partie du contrôle des étapes et des mouvements puisse être effectuée en mathématiques entières uniquement (à l'exception de G2 / G3). Marlin peut interrompre la gestion des étapes jusqu'à 10000 fois par seconde sur l'AVR, ce qui se traduit par 40000 étapes par seconde. Ce n'est pas particulièrement utile sans composants mécaniques qui peuvent se déplacer à ces vitesses et toujours imprimer des résultats significatifs (ou sont beaucoup plus précis et ont un nombre de pas par mm beaucoup plus élevé à une vitesse similaire).
L'affichage graphique n'est pas une chose particulièrement éprouvante à faire à basse vitesse - des vitesses élevées ou des interfaces étranges peuvent nécessiter un peu plus de puissance ou une interruption dédiée.
Les moments où ARM peut être important concernent des configurations plus lourdes en mathématiques et en particulier en virgule flottante telles que delta, où chaque mouvement nécessite de nombreuses opérations en virgule flottante et trig, et la navigation dans les menus sur un AVR à 16 MHz (atmega2560) est décrite comme "douloureusement lent", mais Marlin réussit à imprimer des résultats significatifs sur des imprimantes de style delta.
De toute évidence, un cœur ARM qui est soit plus rapide pour effectuer des virgules flottantes douces, soit qui prend en charge le flottement dur (matériel qui effectue très efficacement les opérations en virgule flottante) bénéficiera de tels processus.
la source
En règle générale, les microcontrôleurs tels que l'AVR sont à cœur unique / à filetage unique - donc, tout en travaillant dans une boucle while pour exécuter le contrôleur de moteur, vous pourriez manquer de ressources pour faire autre chose, comme naviguer efficacement dans un menu.
De nos jours, de nombreux processeurs ARM sont multi-core / multi-threadés, ce qui signifie que vous pouvez avoir un thread pour votre impression, tandis qu'un autre est gratuit pour tout ce que l'utilisateur voudra faire.
C'est-à-dire que tout processeur AVR exécutant un serveur Web local pour permettre l'accès à distance à l'imprimante serait douloureusement basique, où ARM permettrait généralement beaucoup plus de flexibilité.
la source
Le processeur AVR a des performances suffisantes pour l'impression standard. Mais il manque de performances pour
La comparaison des spécifications techniques devrait s'expliquer d'elle-même. Ce processeur ARM particulier est au moins 10 fois plus rapide que l'ATmega2560:
CPU ARM-Cortex M3 LPC1769 (utilisé dans Smoothieboard )
Microcontrôleur ATmega2560
la source
Les processeurs AVR sont de 8 bits - ils ne peuvent donc extraire des données de la mémoire que 8 bits à la fois - tandis qu'un ARM est de 32 bits et peut extraire des données de 32 bits à la fois. La résolution de position nécessite une valeur minimale de 24 bits - cela signifie que l'AVR prend 3 récupérations de données pour la position - tandis que l'ARM prend 1 récupération de données.
Pire encore, les processeurs AVR divisent l'horloge en interne par 3, de sorte qu'un AVR à 40 MHz fonctionne généralement à 13,3 MHz, tandis qu'un ARM correspond à 1 cycle d'horloge par transaction de bus et au traitement des instructions - cela comprend un multiple de 32 bits par 32 bits en 1 cycle d'horloge.
La carte mémoire sur les processeurs ARM a une largeur de 32 bits ou 4 Go tandis que les processeurs 8 bits n'ont qu'un bus d'adresse de 16 bits ou 64 Ko - ce qui signifie que le changement de banque entre en jeu sur tout programme de plus de 64 Ko - cela prend des instructions et du temps pour être fait - alors qu'avec l'ARM, ce n'est pas un problème.
Les aspects de coût sont à peu près les mêmes que les AVR - cela nécessite simplement un firmware repensé.
Quant aux FPGA:
Le résultat de l'ajout d'un FPGA à un AVR coûtera beaucoup plus cher que d'aller à un processeur ARM plus puissant.
la source
- -
et- - - -
) qui sont plutôt distrayants, tbh.