Fehlerbehebung bei CNC-Plasma
Mar 06, 2023Roboter-Plasmaschneiden in einer 3D-Welt
Mar 08, 2023Aus einem MIG-Schweißgerät einen Metall-3D-Drucker machen
Mar 10, 2023Rauchen Sie etwas Unkraut: Laser könnten Herbizide überflüssig machen
Mar 12, 2023Die tragbare ESP32-RGB-Lasershow hat alles, was dazu gehört
Mar 14, 2023Derek Schulte: Pfadplanung für 3D-Drucker
[Derek Schulte] hat einen 3D-Drucker für Verbraucher entwickelt und verkauft, und das gibt ihm viele Einblicke in die Funktionsweise dieses Druckers. Sein Drucker, der New Matter MOD-t, unterscheidet sich in einigen Punkten von dem 3D-Drucker, den Sie jetzt verwenden. Am interessantesten ist, dass es Closed-Loop-Feedback und Gleichstrommotoren anstelle von Schrittmotoren verwendet und einen ziemlich leistungsstarken 32-Bit-ARM-Prozessor anstelle des verherrlichten Arduino Uno verwendet, mit dem viele Drucker auf dem Markt laufen.
Die erste dieser Entscheidungen bedeutete, dass [Derek] seine eigene Motorsteuerungs- und Wegplanungssoftware schreiben musste, und die zweite bedeutet, dass er über die entsprechende Verarbeitungsleistung verfügt. In seinem Vortrag geht er ausführlich darauf ein, wie sie zu ihrem Wegplanungssystem kamen und wie es genau funktioniert. Wenn Sie jemals gründlich darüber nachgedacht haben, wie ein physischer Druckkopf mit Schwung die unendlich scharfen Ecken schafft, die ihm im G-Code vorgegeben werden, dann ist dieser Vortrag genau das Richtige für Sie. (Spoiler: Es verstößt nicht gegen die Gesetze der Physik und das Navigieren durch die Kurve erfordert Mathematik.)
Die Pfadplanung findet im 3D-Drucker selbst statt. Das ist es, was die Firmware des 3D-Druckers mit dem empfangenen G-Code macht, der ihn in die physische Bewegung von Motoren entlang der X-, Y- und Z-Achse sowie des Extruders umwandelt. Obwohl G-Code universell ist, ist er auch unrealistisch: Er spezifiziert eine Reihe von Punkten im 4D-Raum (der Extruder, erinnern Sie sich?) und die Geschwindigkeiten, die erforderlich sind, um dorthin zu gelangen. Die Pfadplanung vereint das Wissen über die Bewegungssteuerungsfähigkeiten des physischen Druckers und versucht, das Endergebnis so weit wie möglich mit dem G-Code übereinzustimmen, ohne ewig zu dauern. Als Schnittstelle zwischen idealisiertem G-Code und einem realen Drucker muss die Planungs-Firmware das Design des Druckers selbst mit all seinen physikalischen Einschränkungen berücksichtigen.
Sie können Ihren eigenen, einmaligen 3D-Drucker aus Unobtainium, Drachenschuppen und der unbezahlten Arbeit eines Jahres an Wochenenden herstellen. Wenn Sie jedoch ein Produkt herstellen möchten, das zu einem vernünftigen Preis an die breite Öffentlichkeit verkauft werden soll, muss es aus handelsüblichen Teilen gebaut sein und robust funktionieren. Dies hat [Derek] dazu bewogen, einen Gleichstrommotor mit Encoder anstelle der allgegenwärtigen, schweren und relativ teuren Schrittmotoren zu verwenden, die die meisten anderen 3D-Drucker verwenden. Der Antrieb von Gleichstrommotoren im offenen Regelkreis bedeutete, dass keine der „Standard“-Drucker-Firmwares funktionieren würde – er musste seine eigene entwickeln. Und so reden wir darüber, so schnell und genau wie möglich von A nach C, um die Ecke in B zu kommen.
Es gibt mehrere Möglichkeiten, einen G-Code mit der Aufschrift „Fahren Sie mit 50 mm/Sek. nach Norden und dann mit 50 mm/Sek. nach Westen“ in eine Maschinenbewegung umzuwandeln. Eine davon besteht darin, mit voller Geschwindigkeit nach Norden zu fahren, dann mit Vollbremsung zum Stehen zu kommen und dann mit voller Geschwindigkeit nach Westen zu düsen. Genau das taten die ersten Versionen der DIY-3D-Drucker-Firmware – und das Ergebnis waren Geräusche, Vibrationen des Druckkopfs und eine Verschlechterung der Druckqualität. Es waren hässliche Zeiten.
[Derek] und der Pfadplaner in grbl wählten die nächstkompliziertere Lösung – die Bewegung mit konstanter Beschleunigung für jedes Segment des Pfades, was zu trapezförmigen Geschwindigkeitsprofilen führte. Es stellt sich heraus, dass dies in der Praxis recht gut funktioniert und leicht zu berechnen ist. [Derek] hat der Routine das Runden von Ecken hinzugefügt: Wo im G-Code angegeben war, dass eine scharfe Ecke erstellt werden soll, würde die Firmware eine gekrümmte Ecke nehmen, die nahe genug ist, dass sie nicht schlecht aussieht, aber auch keine Verlangsamung der Düse erfordert zum Stillstand. Die Kombination beider ist im Grunde die einfachste Lösung, die gut funktionieren kann.
Der nächste Schritt besteht darin, einige Segmente miteinander zu verbinden, aber dadurch kommt der Drucker irgendwann zum Stillstand, sei es am Ende des Pfads oder weil ein Benutzer die Pause-Taste gedrückt hat.
Die meisten 3D-Drucker mit Schrittantrieb arbeiten im Open-Loop-Steuerungsmodus. Die Firmware weist den Schrittmotortreiber an, zehn Schritte vorwärts zu machen und hofft auf das Beste. Wenn ein Drucker Schritte verliert, kommt es zu einer Verschiebung der Ebenen zueinander, und wenn Ihnen dies mitten im Druck katastrophal passiert ist, wissen Sie, warum das scheiße sein kann.
Der Drucker von [Derek] läuft im Closed-Loop-Modus. Wenn sich der Druckkopf also zu weit südlich von der Stelle befindet, an der er sein sollte, kann die Firmware erkennen, dass dies der Fall ist, und einen Motor mit mehr Leistung versorgen, um ihn wieder in Ordnung zu bringen. Auch hier wählte [Derek] eine der einfachsten Methoden, die funktionieren könnten: PID-Regelung mit Feedforward. Das bedeutet natürlich, dass der Algorithmus an die Maschine angepasst werden muss, aber ein gut abgestimmter PID-Algorithmus ist eine Freude anzusehen.
Und der geschlossene Regelkreis bietet weitere Vorteile. Während Schrittmotoren deutlich überdimensioniert sein müssen, um die gefürchteten Fehlschritte zu vermeiden, kommen DC-Motoren mit geschlossenem Regelkreis mit geringeren Drehmomenten aus. Der coolste Trick, den [Derek] mit dem Feedback spielt, besteht jedoch darin, die Fähigkeit zu nutzen, einen Motorstillstand zu erkennen, um den Drucker in die Ausgangsposition zu bringen. An den drei physikalischen Achsen gibt es keine Endschalter. Wenn der Motor stattdessen das Ende seiner Bewegungsfähigkeit erreicht, erkennt die Firmware den Stillstand und nutzt dies, um die Koordinatenachsen auf Null zu setzen. Dadurch werden Teile reduziert und die Vorrichtung vereinfacht. Wir sind alle dafür.
[Derek] entwarf seine Bewegungsplanungsroutinen mit den gleichen Werkzeugen, die wir alle verwenden, und nutzte im Grunde die einfachsten Algorithmen, die gut funktionieren würden, und um „akademische“ Komplikationen um ihrer selbst willen zu vermeiden. Dies ermöglichte es ihm letztendlich, die Geschwindigkeit zu optimieren, fünfzehn Schritte vorauszuschauen, einige notwendige Spezialanpassungen vorzunehmen, wie z. B. die Logik für den Umgang mit sehr kurzen Segmenten, und das Produkt zu einem vernünftigen Preis auf den Markt zu bringen. Bewegungsplanung und -steuerung in einem System mit geschlossenem Regelkreis ist nie einfach, aber „das KISS-Prinzip so weit wie möglich anzuwenden und später die Leistung zu optimieren“ ist etwas, das wir Hacker alle ertragen könnten, wenn wir uns auf einen entsprechend langen Teil unseres Körpers tätowieren lassen Körper. Besser noch: Danken wir einfach [Derek] für die Erinnerung und die Erläuterung!