Was ist der Vorteil einer ARM-basierten Elektronik?


22

Die meisten elektronischen Geräte verwenden Mikrocontroller wie einen AVR, aber ich sehe ARM-Chips in neuen elektronischen Geräten. ARM-Chips sollen leistungsstärker sein, aber in welchen Bereichen des 3D-Drucks könnte dies Abhilfe schaffen? Mit welchen Funktionen hat der AVR zu kämpfen und wo könnte ein ARM besser sein?

High Speed ​​Bewegung? Delta-Drucker? Grafische Anzeige?

Und ist der AVR dort wirklich die Einschränkung?

Antworten:


23

3D-Drucker-Controller müssen eine Menge Dinge sehr, sehr schnell erledigen. Kinematik- und Dynamikberechnungen durchzuführen und dabei viele tausend präzise synchronisierte Schrittimpulse pro Sekunde zu senden, ist wirklich sehr, sehr schwierig . Die 8-Bit-AVR-Mikrocontrollerreihe, die in älteren 3D-Drucker-Controllern verwendet wird, ist im Grunde ein Mr. Coffee-Prozessor aus den späten 1990er-Jahren. Sie sind vollständig ausgelastet, wenn nur grundlegende Druckfunktionen in einfachen (z. B. kartesischen) Druckern ausgeführt werden. Durch Hinzufügen zusätzlicher Rechenlast werden sie blockiert und verursachen Verlangsamungen, Stottern, Pausen usw.

"Aber mein 8-Bit-Drucker funktioniert einwandfrei", sagen Sie. Nein, das tut es nicht. Ihre Druckleistung wird dadurch eingeschränkt, unabhängig davon, ob Sie dies bemerken oder nicht. Slicer verbergen jetzt automatisch viele der Leistungsmängel der Firmware vor Ihnen. Zum Beispiel ist die übliche Praxis, die Druckgeschwindigkeit auf dem Perimeter stark zu verlangsamen, größtenteils darauf zurückzuführen, dass 8-Bit-Prozessoren nicht über ausreichende Ressourcen für zwei Dinge verfügen:

  1. Durchführen von Berechnungen der zentripetalen Beschleunigung für Kurven über mehrere G-Code-Segmente
  2. Bleiben Sie mit der Übertragung / Verarbeitung von Gcode und der Bewegungsplanung für Gcode mit vielen sehr kleinen Segmenten auf dem Laufenden, z. B. in organischen Modellen oder glatten Bögen

Wenn eine Reihe von sehr kleinen Segmenten in einem glatten Bogen oder einer komplexen Kurve dargestellt wird, wird die 8-Bit-Firmware wahrscheinlich die erforderliche Befehlsverarbeitungsrate drosseln und den Druck ins Stottern bringen. Diese unglaublich kurzen Pausen lassen den Restdruck im Extruder etwas Plastik herausdrücken, wodurch sich ein wenig Zitrone auf dem Ausdruck bildet. Daher dezimieren die meisten Slicer automatisch Kurven und geben den Gcode mit reduzierter Auflösung aus, um die Firmware zu entlasten. Problem gelöst, richtig?

Es gibt aber noch ein anderes Problem: Die GRBL-Bewegungssteuerungsalgorithmen, die allen wichtigen Open-Source-3D-Drucker-Controllern zugrunde liegen, wurden mit zahlreichen Verknüpfungen und Hacks entwickelt, damit 8-Bit-Prozessoren schnell genug ausgeführt werden können. Beispielsweise betrachtet der grundlegende Algorithmus nur die Geschwindigkeits- oder Geschwindigkeitsänderung an der Ecke zwischen zwei Segmenten und entscheidet anhand dieser, wann in Bewegungsrichtung gebremst / beschleunigt wird. Die zentripetale / radiale Beschleunigung wird nicht berechnet oder berücksichtigt. Dies ist ein wirklich effektiver Hack, wenn Sie kastenförmige Modelle mit niedriger Auflösung drucken, aber er schlägt bei glatten Kurven mit vielen kleinen Segmenten kläglich fehl. Die Firmware erkennt keine nennenswerte Geschwindigkeitsänderung an der Ecke von zwei nahezu linearen Segmenten innerhalb der facettierten Kurve und verlangsamt sich daher nicht für die Kurve.

Unbeschleunigtes Drucken komplexer Perimeter bedeutet, dass der befohlene Vorschub sehr niedrig sein muss, um eine gute Qualität zu erzielen. Die meisten Drucker sind auf komplexen Perimetern auf 40 mm / s oder weniger beschränkt, obwohl sie bei geringer Komplexität möglicherweise 80 bis 120 mm / s verarbeiten können, bevor sie andere Geschwindigkeitsbegrenzungen erreichen.

Zwischen den Grenzwerten für die Befehlsverarbeitungsrate und den Bewegungsplanermängeln, die für Prozessoren mit geringer Leistung erforderlich sind, müssen die Druckgeschwindigkeiten in der Praxis viel niedriger sein, als dies für die Physik und die Druckerhardware unbedingt erforderlich ist. Dies alles kommt von 8-Bit-Prozessoren. Die Problemumgehungen und Best Practices zur Behebung dieses Problems sind so tief in die Toolchains und das Ökosystem eingebettet, dass nur sehr wenige Menschen erkennen, dass es überhaupt ein Problem gibt. Es ist jedoch eine echte Grenze, die überwunden werden kann: Ein Hochgeschwindigkeitsprozessor, auf dem ein strengerer Bewegungsplaner ausgeführt wird, kann höhere durchschnittliche Druckgeschwindigkeiten bei besserer Druckqualität erzeugen .

Allerdings bewegen sich die auf ARM basierenden Firmwares nur langsam in Richtung fortgeschrittener Bewegungsplaner. Dies ist derzeit ein großer Entwicklungsbereich, der eine bevorstehende Abkehr von Low-End-ARMs wie dem Cortex M3 hin zu noch schnelleren Prozessoren vorantreibt. Es ist eigentlich gar nicht so schwer, einen 84-MHz-Arduino Due zu maximieren, indem man sich auf eine Reihe von Firmware-Funktionen stapelt.

Die Verwendung von 8-Bit-Prozessoren macht Drucker auch LOUDER. Der größte Verbrauch an Prozessorzeit in einem typischen 8-Bit-Drucker ist der Schrittinterrupt, der die Schrittimpulse auslöst, um die Motoren in Bewegung zu versetzen. Es ist ziemlich typisch, dass> 60% aller Taktzyklen eines Atmega AVR zum Auslösen von Schrittimpulsen führen. Da dies als Unterbrechung auftritt, werden andere Verarbeitungsaufgaben, die der Drucker ausführen muss, wie z. B. Beschleunigungsberechnungen und Heizungssteuerung, in die kurzen Zwischenräume zwischen den Ereignissen der Schrittinterrupts gedrückt.

Ohne sorgfältiges Firmware-Design "verdrängen" die Schrittimpulse andere Funktionen wie LCD-Display-Updates und Beschleunigungsberechnungen vollständig. Um höhere Bewegungsraten zu ermöglichen, ohne alle Prozessorressourcen zu verwenden, haben 8-Bit-Firmwares einen Modus, der "Step Doubling" genannt wird und zwei (oder vier oder acht) Schrittimpulse pro Schrittinterrupt auslöst, so dass die Hälfte (oder ein Viertel oder ein Achtel) ausgelöst wird ) Es können beliebig viele Schrittinterrupts verwendet werden, um die gleiche Bewegungsgeschwindigkeit zu erzeugen. Diese Praxis verringert den Engpass des Prozessors, führt jedoch zu einer raueren und lauteren Motorbewegung, da die Schrittimpulse nicht mit konstanter Frequenz, sondern in Bursts ausgelöst werden. In der Tat wird der Mikroschrittpegel des Motors funktionell in einen gröberen Modus abgesenkt, wenn der Schrittinterrupt Doppel- oder Vierfachschritte auslöst. So werden die Motoren lauter, ungenauer,

Ein interessanter Nebeneffekt ist, dass, wenn Sie einen Marlin-basierten Drucker von 1/16 Mikroschritt auf 1/32 Mikroschritt umstellen und die gleiche Druckgeschwindigkeit beibehalten, die Firmware einfach eine schrittweise Verdoppelung startet und die effektive Mikroschrittstufe wieder auf zurückfällt 1/16.

ARM-basierte Firmwares verwenden ebenfalls Step-Doubling, aber die zulässigen Step-Raten sind in der Regel ~ 8-mal höher, bevor Double / Quad-Stepping verwendet wird. Das kann höhere Geschwindigkeiten und / oder ruhigere Bewegungen bedeuten.

Ein weiteres Problem bei 8-Bit-AVRs ist das Fehlen von Hardware-Gleitkommazahlen und die Notwendigkeit, viele Taktzyklen für hochpräzise Berechnungen oder die Verarbeitung sehr großer Zahlen aufzuwenden. Delta-Kinematik, Auto-Leveling-Funktionen, Berechnen von Bewegungen mit extrem hohen Schrittzahlen für große Drucker und andere erweiterte Funktionen erfordern viele Taktzyklen auf einem 8-Bit-Prozessor. Ein schlechtes Firmware-Design oder das unachtsame Hinzufügen einer Funktion, die ein paar zusätzliche Quadratwurzeln und Triggerfunktionen erfordert, kann den Prozessor völlig aus dem Gleichgewicht bringen. Diese Art von Kriechen und Aufblähen von Funktionen hat die Leistung von Marlin im Laufe der Zeit erheblich beeinträchtigt, da immer mehr Leute den alten AVR fragen.

Im Vergleich dazu hat ein 32-Bit-Prozessor nicht nur einen schnelleren Takt und mehr Taktzyklen, sondern kann auch viel komplexere Berechnungen in weniger Taktzyklen durchführen, da er über eine dedizierte Hardwarefunktionalität verfügt, die viele der Schritte eines 8-Bit-Prozessors erledigt Prozessor muss in Software tun.

Funktionieren 8-Bit-Prozessoren? Sicher, sie funktionieren überraschend gut für das, was sie sind und was wir von ihnen verlangen. Sie schränken jedoch zweifellos die Leistung und die Funktionen moderner 3D-Drucker ein. Selbst die heutige Generation von 32-Bit-Prozessoren wird bereits durch Hochgeschwindigkeitsdrucker und mathematisch anspruchsvolle Funktionen voll ausgeschöpft. Der 8-Bit-Prozessor liegt bereits zwei Generationen hinter dem zurück, was als "moderner" 3D-Drucker-Controller gelten würde.


Wenn Echtzeit-Mathematik und -Rechnung ein Problem sind, warum werden dann nicht viele Anstrengungen unternommen, um voll programmierbare Logik wie FPGA zur Steuerung von Schrittmotoren und dergleichen zu verwenden?
Wiedereinsetzung von Monica - ζ--

Sind FPGAs nicht teuer?
Leo Ervin

Zusätzliche Kosten und Komplexität. Warum zwei Chips koordinieren, wenn Sie einen schnelleren Chip verwenden können? Es gibt tatsächlich eine Reihe von FPGA-basierten Projekten, aber keines davon hat die kritische Masse für die Benutzerakzeptanz erreicht.
Ryan Carlyle

1
@ RyanCarlyle Die Vorstellung, dass zwei Chips koordiniert werden müssen, ist nicht korrekt. Ein FPGA kann in einem Paket seriell eingehen, analysieren, planen und schrittweise vorgehen (mit Soft-Core-MCU möglich). Die Kosten sind jedoch ein Faktor.
Wiedereinsetzung von Monica - ζ--


11

Im Allgemeinen ist AVR in der Tat weniger leistungsfähig als viele heute verwendete ARM-Kerne. Die meisten Drucker mit AVRs verfügen nicht über Gleitkomma-Coprozessoren, obwohl ein Großteil der Schritt- und Bewegungssteuerung nur in Ganzzahlberechnung ausgeführt werden kann (mit Ausnahme von G2 / G3). Marlin kann die Verarbeitung von Schritten bis zu 10000 Mal pro Sekunde bei AVR unterbrechen , was 40000 Schritten pro Sekunde entspricht. Dies ist ohne mechanische Komponenten, die sich mit diesen Geschwindigkeiten bewegen und dennoch aussagekräftige Ergebnisse liefern können (oder weitaus präziser sind und eine weitaus höhere Schrittzahl pro mm bei ähnlicher Geschwindigkeit aufweisen), nicht besonders nützlich.

Grafikdisplay ist bei niedrigen Geschwindigkeiten nicht besonders anstrengend - hohe Geschwindigkeiten oder seltsame Schnittstellen erfordern möglicherweise etwas mehr Leistung oder einen dedizierten Interrupt.

Die Zeiten, in denen ARM wichtig sein kann, sind für rechnerintensivere und besonders fließkommaintensive Konfigurationen wie Delta, bei denen jede Bewegung viele Fließkomma- und Triggeroperationen erfordert, und die Navigation in Menüs auf einem 16-MHz-AVR (atmega2560) wird beschrieben Als "schmerzhaft langsam", aber Marlin schafft es, aussagekräftige Ergebnisse auf Druckern im Delta-Stil zu drucken.

Offensichtlich wird ein ARM-Kern, der entweder eine schnellere Ausführung von weichen Gleitkommazahlen bietet oder Hardfloat unterstützt (Hardware, die Gleitkommazahlen sehr effizient ausführt), einen Vorteil für solche Prozesse sehen.


3

Im Allgemeinen sind Mikrocontroller wie der AVR Single-Core- / Single-Threaded-Controller. Wenn Sie also in einer while-Schleife arbeiten, um den Motorcontroller auszuführen, fehlen Ihnen möglicherweise die Ressourcen, um etwas anderes zu tun, beispielsweise ein Menü effizient zu navigieren.

Viele ARM-Prozessoren sind heutzutage Multicore- / Multithread-Prozessoren, was bedeutet, dass Sie einen Thread für Ihren Druck verwenden können, während der andere frei ist, was auch immer der Benutzer tun möchte.

Das heißt, jeder AVR-Prozessor, auf dem ein lokaler Webserver ausgeführt wird, um den Remotezugriff auf den Drucker zu ermöglichen, ist schmerzhaft einfach, wobei ARM im Allgemeinen eine viel größere Flexibilität zulässt.


Beachten Sie, dass der Overhead durch die Kommunikation zwischen Threads und Prozessen extrem hoch sein kann, wenn eine Firmware keinen guten Multithread-Code verwendet.
Wiedereinsetzung von Monica - ζ--

Verwechseln Sie die Multi-Core-Prozessoren für Hochleistungsanwendungen nicht mit den echtzeitoptimierten Prozessoren der M-Klasse. Ja, es gibt Dual-Core-Cortex-M mit beeindruckender Leistung, aber sie sind keine Multithread-Systeme.
Sean Houlihane

2

Der AVR-Prozessor bietet ausreichende Leistung für den Standarddruck. Aber es fehlt die Leistung für

  • Delta-Drucker (siehe Hexafraktionsantwort )
  • Anzeigemenü (auf meinem RepRap-Drucker, der ATmega2560 verwendet, ist es furchtbar langsam)
  • Webinterface (Ethernet)

Der Vergleich der technischen Daten sollte selbsterklärend sein. Diese bestimmte ARM-CPU ist gegenüber ATmega2560 mindestens 10x schneller:

CPU ARM-Cortex M3 LPC1769 (verwendet in Smoothieboard )

  • CPU: Cortex-M3 , 1 Kern
  • Architektur: ARMv7-M (32-Bit)
  • Frequenz: 96-120 MHz
  • Erinnerung
    • Flash: 512 kB
    • RAM: 64 kB

Mikrocontroller ATmega2560

  • Architektur: 8-Bit
  • Frequenz: 16 MHz
  • Erinnerung
    • Flash-Speicher 256 KB, wovon 8 KB vom Bootloader verwendet werden
    • SRAM: 8 KB
    • EEPROM: 4 KB

1

AVR-Prozessoren sind 8-Bit-Prozessoren - sie können also nur 8-Bit-Daten gleichzeitig aus dem Speicher abrufen, während ein ARM 32-Bit-Prozessoren und 32-Bit-Daten gleichzeitig abrufen können. Die Positionsauflösung erfordert ein Minimum von 24 Bit - dies bedeutet, dass der AVR 3 Datenabrufe für die Position vornimmt, während der ARM 1 Datenabruf vornimmt.

Schlimmer noch, AVR-Prozessoren teilen den Takt intern durch 3, so dass ein 40-MHz-AVR typischerweise mit 13,3 MHz läuft, während ein ARM 1 Taktzyklus pro Bustransaktion und Befehlsverarbeitung ist - dies umfasst ein 32-Bit-mal-32-Bit-Vielfaches in 1 Taktzyklus.

Die Speicherzuordnung auf ARM-Prozessoren ist 32 Bit breit oder 4 GB, während 8-Bit-Prozessoren nur einen Adressbus von 16 Bit oder 64 KB haben - was bedeutet, dass die Bankumschaltung bei jedem Programm über 64 KB ins Spiel kommt - dies erfordert Anweisungen und Zeit getan werden - während mit dem ARM ist dies kein Problem.

Die Kostenaspekte sind ungefähr die gleichen wie bei AVRs - es ist lediglich eine überarbeitete Firmware erforderlich.

Wie bei FPGAs:

  • Sie kosten das gleiche oder mehr als der Prozessor
  • Sie sind schnell, spezialisiert, Geräte und können für spezielle Aufgaben konfiguriert werden
  • Sie haben zusätzliche Kostenfaktoren:
    • Aufgrund der Geschwindigkeit der Schaltkreise im FPGA sind viel mehr Entkopplungskappen erforderlich.
    • Benötigen Sie zusätzliche Netzteile sowie Erdungs- und Stromversorgungspläne. Dies bedeutet (und erfordert) in der Regel mindestens eine 4-lagige Platine oder möglicherweise 6-lagige Platinen, was die Kosten für die Elektronik erhöht

Das Ergebnis des Hinzufügens eines FPGA zu einem AVR kostet viel mehr als die Anschaffung eines leistungsstärkeren ARM-Prozessors.


1
Hallo und herzlich willkommen bei SE.3DPrinting! Ihre Antwort kann von der korrekten Groß- und Kleinschreibung, der Verbesserung des Layouts und der korrekten Verwendung der Speichergröße erheblich profitieren. Bitte aktualisieren Sie die Antwort.
0scar

Hallo James und vielen Dank für deine sehr interessante und informative Antwort. Ich würde jedoch 0scar ... zustimmen. Eine korrekte Groß- und Kleinschreibung, die konsequente Verwendung der korrekten SI-Einheiten (dh MHz, GB, KB usw.) würde die Lesbarkeit Ihrer Antwort drastisch verbessern, ebenso wie eine Reduzierung der Verwendung von Mehrfachstrichen ( - -und - - - -) die eher ablenken, tbh.
Greenonline
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.