Derek Schulte : Planification de parcours pour les imprimantes 3D
Jun 21, 2023Genmitsu 3020
Dec 30, 2023Count's Kustoms se lance dans l'ébavurage automatisé
Sep 14, 2023Guide du coupage plasma mécanisé
Mar 28, 2023Un ancien plongeur de l'armée américaine plonge dans l'art des sculptures en métal
Jun 01, 2023Derek Schulte : Planification de parcours pour les imprimantes 3D
[Derek Schulte] a conçu et vend une imprimante 3D grand public, ce qui lui donne une bonne idée de ce qui les motive. Son imprimante, la New Matter MOD-t, est différente de l'imprimante 3D que vous utilisez actuellement de plusieurs manières. Plus intéressant encore, il utilise une rétroaction en boucle fermée et des moteurs à courant continu au lieu de moteurs pas à pas, et il utilise un processeur ARM 32 bits assez puissant au lieu de l'Arduino Uno glorifié qui exécute de nombreuses imprimantes.
Le premier de ces choix signifiait que [Derek] devait écrire son propre logiciel de contrôle moteur et de planification de trajectoire, et le second signifie qu'il avait le traitement pour le sauvegarder. Dans son discours, il explique en détail comment ils se sont retrouvés avec le système de planification de chemin qu'ils ont fait, et exactement comment cela fonctionne. Si vous avez déjà réfléchi à la façon dont une tête d'impression physique, avec un élan, crée les angles infiniment pointus qui lui sont indiqués dans le code G, cette conférence est pour vous. (Spoiler : cela n'enfreint pas les lois de la physique, et naviguer dans la courbe implique des mathématiques.)
La planification des trajectoires s'effectue à l'intérieur de l'imprimante 3D elle-même. C'est ce que fait le micrologiciel de l'imprimante 3D avec le code G reçu qui le transforme en mouvement physique des moteurs le long des axes X, Y et Z ainsi que de l'extrudeuse. Bien que le G-code soit universel, il est également irréaliste : il spécifie une série de points dans l'espace 4D (l'extrudeuse, vous vous souvenez ?) et les vitesses nécessaires pour y arriver. La planification du chemin associe la connaissance des capacités de contrôle de mouvement de l'imprimante physique et tente de faire en sorte que le résultat final corresponde au code G autant que raisonnablement possible, sans prendre une éternité. En tant qu'interface entre le code G idéalisé et une imprimante réelle, le micrologiciel de planification doit prendre en compte la conception de l'imprimante elle-même, avec toutes ses limitations physiques.
Vous pouvez créer votre propre imprimante 3D unique à partir d'unobtainium, d'écailles de dragon et de la main-d'œuvre non facturée d'un an de week-ends. Mais si vous voulez fabriquer un produit à vendre au grand public à un prix raisonnable, il doit être construit à l'aide de pièces de base et fonctionner de manière robuste. C'est ce qui a poussé [Derek] à utiliser un moteur à courant continu avec un encodeur au lieu des moteurs pas à pas omniprésents, lourds et relativement coûteux que la plupart des autres imprimantes 3D utilisent. Piloter des moteurs à courant continu en boucle ouverte signifiait qu'aucun des micrologiciels d'imprimante "standard" n'allait fonctionner - il devait lancer le sien. Et c'est ainsi que nous avons cette discussion, sur le fait d'aller de A à C, au coin de B, aussi rapidement et précisément que possible.
Il existe plusieurs façons de transformer un morceau de code G qui dit "allez vers le nord à 50 mm/s puis allez vers l'ouest à 50 mm/s" en mouvement de la machine. La première consiste à aller vers le nord à toute vitesse, à s'arrêter brusquement, puis à se branler vers l'ouest à toute vitesse. C'est ce que faisaient les premières versions du micrologiciel de l'imprimante 3D DIY - et le résultat était du bruit, des vibrations de la tête d'impression et une dégradation de la qualité d'impression. C'était une époque affreuse.
[Derek], et le planificateur de chemin de grbl, ont choisi la solution suivante la plus compliquée : se déplacer à une accélération constante pour chaque segment du chemin, ce qui entraîne des profils de vitesse trapézoïdaux. Cela s'avère décemment bien fonctionner dans la pratique et être facile à calculer. [Derek] a ajouté l'arrondi des coins à la routine : là où le code G disait de faire un coin pointu, le micrologiciel prendrait un coin incurvé suffisamment proche pour qu'il n'ait pas l'air mauvais, mais ne nécessite pas non plus que la buse ralentisse à un arrêt. Combiner les deux est fondamentalement la solution la plus simple qui peut bien fonctionner.
L'étape suivante consiste à connecter quelques segments ensemble, mais cela permet à l'imprimante de s'arrêter, que ce soit à la fin du chemin ou parce qu'un utilisateur a appuyé sur le bouton de pause.
La plupart des imprimantes 3D pas à pas fonctionnent en mode de contrôle en boucle ouverte. Le micrologiciel indique au pilote du moteur pas à pas de faire dix pas en avant et espère le meilleur. Lorsqu'une imprimante perd des étapes, les couches se désalignent les unes des autres, et si cela s'est produit de manière catastrophique au milieu d'une impression, vous savez pourquoi cela peut être nul.
L'imprimante de [Derek] fonctionne en mode boucle fermée, ce qui signifie que si la tête d'impression est trop au sud de l'endroit où elle devrait être, le micrologiciel peut dire que c'est le cas et appliquer plus de puissance à un moteur pour le remettre correctement. Encore une fois, [Derek] a choisi l'une des méthodes les plus simples pouvant fonctionner : le contrôle PID avec anticipation. Bien sûr, cela signifie calibrer l'algorithme sur la machine, mais un algorithme PID bien réglé est un plaisir à regarder.
Et la boucle de régulation fermée offre des avantages supplémentaires. Là où les moteurs pas à pas doivent être bien surspécifiés pour éviter les étapes manquées redoutées, les moteurs à courant continu en boucle fermée peuvent se débrouiller avec des couples plus faibles. L'astuce la plus cool que [Derek] joue avec le retour, cependant, consiste à utiliser la capacité de détecter le calage du moteur pour ramener l'imprimante à la maison. Il n'y a pas de fin de course sur les trois axes physiques. Au lieu de cela, lorsque le moteur atteint la fin de sa capacité de déplacement, le micrologiciel détecte le décrochage et l'utilise pour mettre à zéro les axes de coordonnées. Cela réduit les pièces et simplifie le dispositif. Nous sommes tous pour ça.
[Derek] a conçu ses routines de planification de mouvement sur les mêmes outils que nous utilisons tous, et a utilisé essentiellement les algorithmes les plus simples possibles qui fonctionneraient bien, évitant les complications "académiques" pour leur propre bien. En fin de compte, cela lui a permis d'optimiser la vitesse, d'anticiper quinze étapes, d'inclure quelques ajustements spéciaux nécessaires comme la logique pour traiter des segments très courts et de sortir le produit à un prix raisonnable. La planification et le contrôle des mouvements dans un système en boucle fermée n'est jamais simple, mais "appliquer le principe KISS autant que possible, puis ajuster les performances plus tard" est quelque chose que nous tous, les pirates, pourrions supporter de nous faire tatouer sur une partie suffisamment longue de notre corps. Mieux encore, remercions simplement [Derek] pour le rappel et l'exemple !