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:
- Wykonywanie obliczeń przyspieszenia dośrodkowego dla krzywych w wielu segmentach gcode
- 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.