Jakie są zalety korzystania z elektroniki opartej na ARM?


22

Większość elektroniki używa mikrokontrolerów jak AVR, ale widzę układy ARM w nowej elektronice. Mówi się, że układy ARM mają większą moc, ale w jakich obszarach związanych z drukowaniem 3D mogłoby to pomóc? Z jakimi funkcjami walczy AVR i gdzie ARM mógłby być lepszy?

Szybki ruch? Drukarki Delta? Wyświetlacz graficzny?

A czy AVR jest naprawdę ograniczeniem?

Odpowiedzi:


23

Kontrolery drukarek 3D muszą robić bardzo dużo rzeczy bardzo, bardzo szybko. Wykonywanie obliczeń kinematyki i dynamiki przy wysyłaniu wielu tysięcy precyzyjnie zsynchronizowanych impulsów krokowych na sekundę jest naprawdę bardzo trudne . 8-bitowa linia mikrokontrolerów AVR stosowana w starszych kontrolerach drukarek 3D jest w zasadzie procesorem Mr Coffee z końca lat 90. Są one całkowicie, maksymalnie ograniczone w czasie procesora, po prostu wykonując podstawowe funkcje drukowania w prostych drukarkach (np. Kartezjańskich), a dodanie dodatkowego obciążenia obliczeniowego spowoduje ich spowolnienie i spowoduje spowolnienie, zacinanie się, pauzę i tak dalej.

„Ale moja 8-bitowa drukarka działa dobrze”, mówisz. Nie, nie ma. Wydajność drukowania jest przez to ograniczona, niezależnie od tego, czy zdajesz sobie z tego sprawę, czy nie. Krajalnice automatycznie teraz ukrywają przed tobą wiele wad wydajności oprogramowania. Na przykład standardowa praktyka znacznego spowolnienia prędkości drukowania na obwodach jest w dużej mierze wynikiem tego, że 8-bitowe procesory mają niewystarczające zasoby na dwie rzeczy:

  1. Wykonywanie obliczeń przyspieszenia dośrodkowego dla krzywych w wielu segmentach gcode
  2. Nadążanie za transmisją / przetwarzaniem gcode i planowaniem ruchu dla gcode z dużą ilością bardzo małych segmentów, takich jak modele organiczne lub gładkie łuki

Gdy zostanie zaprezentowany szereg bardzo małych segmentów o gładkim łuku lub złożonej krzywej, 8-bitowe oprogramowanie układowe prawdopodobnie zadławi się wymaganą szybkością przetwarzania poleceń i wprowadzi jąkanie na wydruku. Te niewiarygodnie krótkie przerwy pozwalają ciśnieniu szczątkowemu w wytłaczarce wypchnąć trochę plastiku, tworząc zit na wydruku. Dlatego większość fragmentatorów automatycznie dziesiątkuje krzywe i generuje gcode ze zmniejszoną rozdzielczością, aby zmniejszyć obciążenie oprogramowania. Problem rozwiązany, prawda?

Ale jest jeszcze jeden problem - algorytmy sterowania ruchem GRBL leżące u podstaw wszystkich głównych kontrolerów drukarek 3D typu open source zostały zaprojektowane z dużą ilością skrótów i hacków, aby procesory 8-bitowe działały wystarczająco szybko. Na przykład podstawowy algorytm patrzy tylko na zmianę prędkości lub prędkości w rogu między dwoma segmentami i używa go do decydowania, kiedy zwalniać / przyspieszać wzdłuż kierunku ruchu. Nie oblicza ani nie bierze pod uwagę przyspieszenia dośrodkowego / promieniowego. Jest to naprawdę skuteczny hack podczas drukowania pudełkowych modeli o niskiej rozdzielczości, ale zawodzi niestety na gładkich łukach z dużą ilością małych segmentów. Oprogramowanie układowe nie wykrywa żadnej znaczącej zmiany prędkości w narożniku dwóch prawie liniowych segmentów w obrębie krzywej fasetowanej, a zatem nie zwalnia dla krzywej.

Drukowanie skomplikowanych obwodów bez przyspieszania oznacza, że ​​zadana prędkość posuwu musi być bardzo niska, aby uzyskać dobrą jakość. Większość drukarek jest ograniczona do około 40 mm / s lub mniej na skomplikowanych obwodach, mimo że jest w stanie pracować z prędkością 80-120 mm / s na wypełnieniu o niskiej złożoności przed osiągnięciem innych ograniczeń prędkości.

Pomiędzy limitami szybkości przetwarzania poleceń a niedociągnięciami planowania ruchu wymaganymi przez procesory małej mocy, prędkości drukowania muszą być w praktyce znacznie niższe niż jest to ściśle wymagane przez fizykę i sprzęt drukarki. Wszystko to pochodzi z procesorów 8-bitowych. Obejścia i najlepsze praktyki radzenia sobie z tym problemem są tak głęboko osadzone w łańcuchach narzędzi i ekosystemie, że bardzo niewiele osób zdaje sobie sprawę, że istnieje nawet problem. Jest to jednak prawdziwy limit, który można pokonać: szybki procesor z bardziej rygorystycznym narzędziem do planowania ruchu może generować wyższe średnie prędkości drukowania przy lepszej jakości wydruku.

To powiedziawszy, oprogramowanie układowe oparte na ARM powoli zmierza w kierunku bardziej zaawansowanych planistów ruchu. Jest to obecnie duży obszar programistyczny, który w rzeczywistości zbliża się do przejścia od niskiej klasy ARM, takich jak Cortex M3, w kierunku jeszcze szybszych procesorów. W rzeczywistości nie jest wcale tak trudno zmaksymalizować Arduino Due o częstotliwości 84 MHz, wykorzystując szereg funkcji oprogramowania układowego.

Zastosowanie procesorów 8-bitowych powoduje również, że drukarki są LOUDER. Największym odbiorcą czasu procesora w typowej drukarce 8-bitowej jest przerwanie krokowe, które wyzwala impulsy krokowe, aby napędzać silniki. Jest dość typowe dla> 60% wszystkich cykli zegara w Atmega AVR, aby przejść do impulsów kroku strzelania. Ponieważ występuje to jako przerwanie, inne zadania przetwarzania, które musi wykonać drukarka - takie jak obliczenia przyspieszenia i sterowanie nagrzewnicą - zostają ściśnięte w krótkich odstępach między zdarzeniami przerwania krokowego.

Bez starannego zaprojektowania oprogramowania impulsy skokowe całkowicie wypierają inne funkcje, takie jak aktualizacje wyświetlacza LCD i obliczenia przyspieszenia. W celu umożliwienia wyższych prędkości ruchu bez wykorzystywania wszystkich zasobów procesora, oprogramowanie układowe 8-bitowe ma tryb zwany „podwojeniem stopnia”, który wyzwala dwa (lub cztery lub osiem) impulsów krokowych na przerwanie tak, że połowa (lub ćwierć lub ósma) ), ponieważ można użyć wielu przerwań krokowych w celu uzyskania tej samej prędkości ruchu. Ta praktyka eliminuje wąskie gardła procesora, ale powoduje ostrzejszy i głośniejszy ruch silnika, ponieważ impulsy krokowe są wyzwalane impulsami, a nie stałą częstotliwością. W efekcie poziom mikrostopu silnika jest funkcjonalnie obniżany do bardziej zgrubnego trybu, gdy przerwanie stepera wyzwala dwa lub cztery stopnie. Silniki stają się głośniejsze, mniej precyzyjne,

Ciekawym efektem ubocznym jest to, że jeśli zmienisz drukarkę Marlin z 1/16 mikrostepowania na 1/32 mikrostepowania i utrzymasz tę samą prędkość drukowania, oprogramowanie zacznie po prostu zwiększać liczbę kroków, obniżając efektywny poziom mikrostepowania z powrotem do 1/16.

Oprogramowanie wewnętrzne oparte na architekturze ARM również wykorzystuje podwojenie kroku, ale dopuszczalne prędkości kroków są zwykle ~ 8 razy wyższe przed zastosowaniem kroku krokowego podwójnego / poczwórnego. Może to oznaczać wyższe prędkości i / lub płynniejszy ruch.

Kolejnym problemem związanym z 8-bitowymi AVR jest brak sprzętowej liczby zmiennoprzecinkowej i konieczność spędzenia wielu cykli zegara na precyzyjnych obliczeniach lub obsłudze bardzo dużych liczb. Kinematyka Delta, funkcje automatycznego poziomowania, obliczanie ruchów z bardzo dużą liczbą kroków dla dużych drukarek oraz inne zaawansowane funkcje wymagają wielu cykli zegara na 8-bitowym procesorze. Słaba konstrukcja oprogramowania układowego lub niedbałe dodanie funkcji wymagającej kilku dodatkowych pierwiastków kwadratowych i funkcji wyzwalania może całkowicie zapaść procesor. Tego rodzaju pełzanie funkcji i wzdęcie kodu poważnie wpłynęły na wydajność Marlina w miarę upływu czasu, gdy ludzie coraz częściej pytają o stary AVR.

Dla porównania, 32-bitowy procesor ma nie tylko szybszy zegar i więcej cykli zegara, ale jest również w stanie wykonać znacznie bardziej złożoną matematykę w mniejszej liczbie cykli zegara, ponieważ ma dedykowaną funkcjonalność sprzętową, która zajmuje się wieloma krokami i 8-bitowymi procesor musi zrobić w oprogramowaniu.

Czy procesory 8bit działają? Jasne, działają zaskakująco dobrze na to, czym są i czego od nich oczekujemy. Ale bez wątpienia ograniczają wydajność i funkcje nowoczesnych drukarek 3D. Nawet dzisiejsza generacja 32-bitowych procesorów jest obecnie wykorzystywana przez drukarki o dużej prędkości i funkcje wymagające matematyki. 8-bitowy procesor ma już dwie generacje za tym, co można by zakwalifikować jako „nowoczesny” kontroler drukarki 3D.


Jeśli matematyka i obliczenia w czasie rzeczywistym stanowią problem, to dlaczego nie podejmuje się wielu wysiłków we w pełni programowalnej logice, takiej jak FPGA, do sterowania krokowym i tym podobnych?
Przywróć Monikę - ζ--

Czy FPGA nie są drogie?
Leo Ervin

Dodatkowy koszt i złożoność. Po co koordynować dwa żetony, skoro można użyć jednego szybszego? W rzeczywistości istnieje wiele projektów opartych na FPGA, ale żaden z nich nie osiągnął masy krytycznej do przyjęcia przez użytkowników.
Ryan Carlyle

1
@RyanCarlyle Pojęcie, że dwa żetony wymagają koordynacji, jest nieprawidłowe. FPGA może obsłużyć szeregowe, parsowanie, planowanie i wkraczanie w jednym pakiecie (z możliwym mikrokontrolerem MCU). Koszt jest jednak istotny.
Przywróć Monikę - ζ--


11

Ogólnie rzecz biorąc, AVR jest w rzeczywistości mniej wydajny niż wiele obecnie używanych rdzeni ARM. Większość drukarek z AVR nie ma koprocesorów zmiennoprzecinkowych, chociaż wiele kroków i kontroli ruchu można wykonać w matematyce tylko liczb całkowitych (z wyjątkiem G2 / G3). Marlin może przerywać obsługę kroków do 10000 razy na sekundę w AVR, co przekłada się na 40000 kroków na sekundę. Nie jest to szczególnie przydatne bez elementów mechanicznych, które mogą poruszać się z tymi prędkościami i nadal drukować znaczące wyniki (lub są znacznie bardziej precyzyjne i mają znacznie wyższą liczbę kroków na mm przy podobnej prędkości).

Wyświetlanie graficzne nie jest szczególnie obciążające przy niskich prędkościach - wysokie prędkości lub dziwne interfejsy mogą wymagać nieco więcej mocy lub dedykowanego przerwania.

Czasy, w których ARM może być ważny, dotyczą bardziej skomplikowanych obliczeń matematycznych, a zwłaszcza ustawień zmiennoprzecinkowych, takich jak delta, gdzie każdy ruch wymaga wielu operacji zmiennoprzecinkowych i wyzwalaczy oraz opisano nawigację w menu AVR 16 MHz (atmega2560) jako „boleśnie powolne”, ale Marlinowi udaje się drukować znaczące wyniki na drukarkach w stylu delta.

Oczywiście rdzeń ARM, który jest albo szybszy w wykonywaniu miękkiego zmiennoprzecinkowego, albo obsługuje hardfloat (sprzęt, który wykonuje operacje zmiennoprzecinkowe bardzo wydajnie), zauważy korzyści dla takich procesów.


3

Ogólnie rzecz biorąc, mikrokontrolery, takie jak AVR, są jedno-rdzeniowe / jednowątkowe - więc podczas pracy w pętli while do sterowania sterownikiem silnika możesz nie mieć zasobów, aby zrobić cokolwiek innego, na przykład sprawnie poruszać się po menu.

Wiele procesorów ARM jest teraz wielordzeniowych / wielowątkowych, co oznacza, że ​​jeden wątek może pracować na wydruku, a drugi jest darmowy na wszystko, co użytkownik może chcieć zrobić.

tzn. każdy procesor AVR działający na lokalnym serwerze internetowym w celu umożliwienia zdalnego dostępu do drukarki byłby boleśnie prosty, przy czym ARM ogólnie pozwalałby na znacznie większą elastyczność.


Należy zauważyć, że jeśli oprogramowanie układowe nie wykorzystuje dobrego kodu wielowątkowego, narzut związany z komunikacją między wątkami i między procesami może być bardzo wysoki.
Przywróć Monikę - ζ--

Nie należy mylić wielordzeniowych procesorów aplikacji o wysokiej wydajności ze zoptymalizowanymi w czasie rzeczywistym procesorami klasy M. Tak, są dwurdzeniowe Cortex-M o imponującej wydajności, ale nie są wielowątkowe.
Sean Houlihane,

2

Procesor AVR ma wystarczającą wydajność do standardowego drukowania. Ale brakuje mu wydajności

  • drukarki delta (patrz odpowiedź szesnastkowa )
  • menu wyświetlania (jest strasznie wolne na mojej drukarce RepRap, która korzysta z ATmega2560)
  • interfejs sieciowy (ethernet)

Porównanie specyfikacji technicznych powinno być oczywiste. Ten konkretny procesor ARM jest co najmniej 10 razy szybszy niż ATmega2560:

Procesor ARM-Cortex M3 LPC1769 (stosowany w Smoothieboard )

  • Procesor: Cortex-M3 , 1 rdzeń
  • architektura: ARMv7-M (32-bit)
  • częstotliwość: 96-120 MHz
  • pamięć
    • Flash: 512 kB
    • RAM: 64 kB

Mikrokontroler ATmega2560

  • architektura: 8-bit
  • częstotliwość: 16 MHz
  • pamięć
    • pamięć flash 256 KB, z czego 8 KB używane przez bootloader
    • SRAM: 8 KB
    • EEPROM: 4 KB

1

Procesory AVR są 8-bitowe - dlatego mogą pobierać dane z pamięci tylko 8 bitów jednocześnie - podczas gdy ARM ma 32 bity i może pobierać dane 32 bity naraz. Rozdzielczość pozycji wymaga minimum 24-bitowej wartości - oznacza to, że AVR pobiera 3 dane dla pozycji - podczas gdy ARM pobiera 1 dane.

Co gorsza, procesory AVR dzielą wewnętrznie zegar przez 3, tak że AVR 40 MHz działa zwykle z częstotliwością 13,3 MHz, podczas gdy ARM ma 1 cykl zegara na transakcję magistrali i przetwarzanie instrukcji - obejmuje to 32-bit na 32-krotną wielokrotność w 1 cykl zegara.

Mapa pamięci na procesorach ARM ma 32-bitową szerokość lub 4 GB, podczas gdy 8-bitowe procesory mają tylko magistralę adresową 16 bitów lub 64 KB - co oznacza, że ​​przełączanie banków wchodzi w grę w dowolnym programie powyżej 64 KB - zajmuje to instrukcje i czas być zrobione - podczas korzystania z ARM nie stanowi to problemu.

Aspekty kosztowe są mniej więcej takie same jak AVR - wymaga tylko przeprojektowanego oprogramowania.

Jeśli chodzi o układy FPGA:

  • Kosztują tyle samo lub więcej niż procesor
  • Są to szybkie, wyspecjalizowane urządzenia, które można skonfigurować do specjalistycznych zadań
  • Mają dodatkowe czynniki kosztowe:
    • potrzeba dużo więcej czapek odsprzęgających ze względu na szybkość obwodów w FPGA.
    • Wymagaj dodatkowych zasilaczy, płaszczyzn uziemienia i planów zasilania - co zwykle oznacza (i wymaga) co najmniej 4-warstwowej płyty lub ewentualnie 6 warstw, co zwiększa koszt elektroniki

Wynik dodania FPGA do AVR będzie kosztował o wiele więcej niż przejście na mocniejszy procesor ARM.


1
Witaj w SE.3DPrinting! Twoja odpowiedź może wiele zyskać na poprawnej wielkości liter, poprawie układu i prawidłowym wykorzystaniu wielkości pamięci. Zaktualizuj odpowiedź.
0scar

Cześć James i wielkie dzięki za bardzo interesującą i pouczającą odpowiedź. Zgadzam się jednak z 0scar ... poprawne pisanie dużymi literami, konsekwentne stosowanie prawidłowych jednostek SI (tj. MHz, GB, KB itd.) Drastycznie poprawiłoby czytelność twojej odpowiedzi, podobnie jak ograniczenie użycia wielu myślników ( - -i - - - -) które raczej rozpraszają, tbh.
Greenonline
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.