Repetier Firmware – konfiguracja dla opornych

Pisałem już kiedyś tekst, jak się przesiąść na Repetiera, i dlaczego – link. Jednak dostałem od paru osób informację, że ten formularz, dla osoby początkującej, nie jest aż tak przejrzysty, jak mi się zdawało. Opiszę więc konfigurację, krok po kroku, na przykładzie konstrukcji Anet A8, zgodnie z prośbą mojego kolegi Szymona.

Zaczynamy

Na początek, trzeba się udać na stronę autorów. Żeby nie klikać miliona odnośników, tutaj jest formularz konfiguracyjny – link. Pojawia się jakaś strona, z jakimiś zakładkami, guziczkami i ramkami z tekstem. Jest to właśnie kreator firmware. Na górze mamy pasek zakładek z poszczególnymi parametrami, niżej wprowadzenie, informujące nas, że korzystamy z najnowszej, testowej wersji firmware i przycisk przekierowujący nas do starszej wersji. Jest też pole, które pozwala wprowadzić starszy plik z konfiguracją, aby nie pracować od zera, jeśli już kiedyś konfigurowaliśmy firmware i chcemy go jedynie zmodyfikować. Zakładam, że nie, i że zaczynamy na czysto. Naciskamy więc „next step” nie wprowadzając nic, i widzimy kolejną zakładkę, z domyślnymi wartościami.

Ustawienia ogólne

W tym miejscu wybieramy najpierw z listy  „Configuration level”, czy chcemy się bawić ze wszystkimi możliwymi parametrami (Expert), czy chcemy pominąć te, które są zwykle zbędne (Normal), czy chcemy mieć dostęp tylko do najistotniejszych (Minimum).

Następnie, ustalamy jaki mamy sterownik – począwszy od mikrokontrolera (w większości przypadków jest to Atmel 8-bit based, czyli wszystkie Atmegi, jak np Atmega2560). Wreszcie, wybierając z listy właściwy układ (w moim przypadku RAMPS 1.4). Jeśli Twojego sterownika nie ma na liście, poczytaj w jego dokumentacji, z jakimi sterownikami jest kompatybilny.

Jesteśmy też pytani o typ konstrukcji – mamy do wyboru układ kartezjański (osobne silniki do każdej osi), układ typu delta, oraz układy związane z konstrukcjami typu h-bot i core-xy.

W kolejnym kroku wybieramy konfigurację EEPROM. EEPROM, jest to Electrically-Erasable, Programmable Read-Only Memory. Czyli pamięć, którą możemy zaprogramować i wykasować podczas serwisu, ale w zwykłej pracy urządzenia służy tylko do odczytu. Jest ona stosowana do zapisu parametrów konfiguracyjnych urządzenia, takich jak maksymalne prędkości, długości osi, przyspieszenia i graniczne wartości temperatur oraz parametry PID. Gdy wyłączymy EEPROM, jedynym sposobem na zmianę parametrów, będzie ponowne wgranie całego firmware. Jeśli nie wiesz, co robisz, zostaw tu domyślną wartość.

Później, wybieramy port, przez który do drukarki dołączane jest zewnętrzne sterowanie (zwykle komputer), oraz baudrate. Złącze USB w sterowniku zwykle nie jest podłączone bezpośrednio do mikrokontrolera – znajduje się na płytce konwerter zmieniający magistralę USB na magistralę UART (kompatybilną ze złączem COM w starszych komputerach, stąd w menedżerze urządzeń drukarki widnieją jako porty COM1, COM2 itp). Baudrate, to prędkość transmisji danych – im wyższa, tym szybciej dane są przesyłane, jednak zwiększa to ryzyko błędów transmisji. Jeśli nie wiesz, co robisz, zostaw tu domyślną wartość.

Mamy też możliwość konfiguracji bluetooth. Jak to działa? Kupujemy tani moduł bluetooth kompatybilny z UART (zupełnie jak połączenie mikrokontrolera z USB), a następnie podłączamy go do złącz odpowiedzialnych za magistralę UART w naszym sterowniku. Dobieramy odpowiedni baudrate (oba urządzenia muszą mieć ustawiony taki sam), a następnie parujemy się przez bluetooth między komputerem a modułem. Działa to jak bezprzewodowy kabel USB. Jest to bardzo rzadko stosowane rozwiązanie, jednak w firmware mamy przygotowaną furtkę do jego wykorzystania.

Następnie mamy funkcje związane z wykrywaniem „zawiechy” sterowania i automatycznym resetem. Jeśli nie wiesz, co robisz, zostaw tu domyślną wartość.

Przydatne jest natomiast pole „Startup gcode”. Jeśli np ustawimy w nim „G28 X Y”, to drukarka automatycznie przejedzie głowicą do pozycji X0 Y0 Z? („Z?” oznacza, że pozycja w osi Z jest nieokreślona). Kiedy to się przyda? Jeśli np mamy spadek napięcia w sieci i drukarka się zresetuje, głowica przemieści się na róg pola roboczego, dzięki czemu nie stopi wydruku wokół, nie sklei się z wydrukiem, nie podpali go i nie spali nam domu. Możemy też wklejać tam bardziej wyrafinowane skrypty, jak np „M140 S60”, co spowoduje automatyczny start rozgrzewania stołu wraz z włączeniem zasilania – grzanie stołu trwa zwykle dość długo, więc nie ma co z tym zwlekać nastawiając wydruk. Więcej komend znajdziecie tutaj – link.

Kolejnym krokiem jest wprowadzenie wymiarów osi. Wartości „X MIN”, „Y MIN”, „Z MIN”, to informacja, jak daleko od początku osi jest płaszczyzna robocza. Oznacza to, że jeśli dojedziemy wózkiem osi X maksymalnie w lewo, i stół zaczyna się 1,1cm na prawo od głowicy, musimy wprowadzić wartość „X MIN” wynoszącą 11mm. Wartości X, Y, Z length opisują długość poszczególnych osi. W przypadku, gdy możemy przesuwać fizycznie endstopy w drukarce, najwygodniejszym rozwiązaniem jest ustawienie XYZ min na 0, ustawienie endstopów w taki sposób, żeby głowica była w samym rogu pola roboczego po ich osiągnięciu, a jako XYZ length wprowadzenie wymiarów pola roboczego.

Poniżej znajduje się zestaw ustawień do korekcji odkształcenia pola roboczego (jak sami autorzy podali, jest dedykowany do drukarek typu delta). Jeśli nie wiesz, co robisz, zostaw tu domyślną wartość.

Czas na kolejną zakładkę. Klikamy „Next step”.

Konfiguracja mechaniki drukarki

Zaczyna się od opcji „Backlash compensation”, czyli kompensacji luzów. Jeśli np przenosimy napęd za pomocą śruby, na której występuje luz 0.5mm, to po wprowadzeniu kompensacji, sterownik będzie brał na to poprawkę. Jeśli nie wiesz, co robisz, zostaw tu domyślną wartość.

Później jest opcja quad stepping – wykonywanie poczwórnych kroków. Możliwe przy niektórych szybkich sterownikach, uzależnione od wielu parametrów maszyny. Jeśli nie wiesz, co robisz, zostaw tu domyślną wartość.

Kolejne pola, to parametry odpowiadające za czas, po jakim na cewki silnika przestaje być podawane napięcie (jest wyłączany po określonym czasie nieaktywności), oraz parametry związane z redukowaniem szarpnięć związanych z gwałtowną zmianą kierunku. Jeśli nie wiesz, co robisz, zostaw tu domyślną wartość.

Następnie konfigurujemy poszczególne silniki, a dokładniej ich kontrolery.

Definiujemy, do którego slotu jest podpięty silnik (możemy przeportować silnik osi X na silnik osi Z, silnik osi Z na silnik drugiego ekstrudera itp itd). Po co? Gdy jedno z gniazd nam padnie, możemy wpiąć się do innego bez wyrzucania całego sterownika. Ewentualnie, gdy mamy kilka silników na jednej osi, możemy sportować je do różnych gniazd.

Podajemy ilość kroków na milimetr (ile kroków musi wykonać silnik krokowy, aby na osi doszło do przesunięcia o 1mm) pomocny się okaże w tym przypadku kalkulator Jozefa Prusy – link – wprowadzamy do niego parametry naszego silnika, zębatki oraz paska/śruby i dostajemy gotowy wynik do wklejenia do firmware.

Ustawiamy maksymalną prędkość stosowaną podczas druku, oraz maksymalną prędkość podczas zerowania osi, a także przyspieszenia. Zwykle te wartości są na początek dobre, możemy je później „dokręcić” z podczas użytkowania drukarki, zmieniając wartości EEPROM.

Możemy też wybrać opcję, aby drukarka nie pozwalała sterować osią przed jej wyzerowaniem, odwrócić kierunek sterowania silnikiem, aktywować funkcję „standby” (uwaga, silnik po wyłączeniu prądu przestaje „trzymać” i oś może się swobodnie przemieszczać!), skonfigurować podwójną oś X, bądź podwójny silnik jednej osi (w przypadku osi Z nawet potrójny i poczwórny). Jeśli nie wiesz, co robisz, zostaw tu domyślną wartość.

Ustawiamy też endstopy – informujemy, czy zerowanie ma się odbywać w kierunku początku, czy końca osi, oraz w jakiej kolejności osi mają być zerowane. Ustawiamy, które endstopy mamy zamontowane, oraz gdzie są podłączone, i czy po wciśnięciu endstopu się pojawia stan niski (0V) czy wysoki (5V). Jest też opcja zamontowania czujnika otwartych drzwiczek, gdy mamy drukarkę z komorą.

Parametr „Endstop distance after homing” powoduje, że drukarka, po wyzerowaniu, odsuwa głowicę/stół od endstopu o małą odległość, dzięki czemu nie jest stale wciśnięty. Jeśli nie wiesz, co robisz, zostaw tu domyślną wartość.

Niżej znajduje się zestaw parametrów związanych z pauzowaniem wydruku. Ustawiamy na jaką odległość ma zostać wykonana retrakcja podczas pauzy (retrakcja to szybkie cofnięcie filamentu w górę głowicy, aby nie kapał z dyszy). Możemy też wprowadzić komendy g-code które zostaną wykonane po zapauzowaniu oraz odpauzowaniu wydruku (np odjechanie głowicą o 30mm w lewo, a następnie powrót na miejsce – pamiętajmy, aby przełączyć się między absolutnym/relatywnym układem współrzędnych). Jeśli nie wiesz, co robisz, zostaw tu domyślną wartość.

Na samym dole zakładki znajdują się parametry „Jam detection”, związane z wykrywaniem, że filament zaciął się w ekstruderze. Możemy podłączyć do drukarki enkoder, który będzie obracany przez przesuwający się filament. Jeśli sterownik nie dostanie sygnału z enkodera mimo podawania sygnału na sterownik silnika, zatrzyma wydruk i wyrzuci błąd. Jeśli nie wiesz, co robisz, zostaw tu domyślną wartość.

Konfiguracja narzędzi

Gwóźdź programu. To tutaj konfigurujemy osprzęt drukarki. Możemy zaznaczyć, że posiadamy poza głowicą laser, bądź wrzeciono CNC, co pozwoli nam na ich konfigurację i obsłużenie. Możemy wybrać, jakie narzędzie jest domyślne.

W kolejnym kroku mamy do dyspozycji szereg parametrów związanych ze stabilizacją temperaturową głowicy oraz zabezpieczeniami, a także mechanizmem przełączania pomiędzy głowicami. Jeśli nie wiesz, co robisz, zostaw tu domyślną wartość.

Niżej jest kilka funkcji dotyczących konfiguracji multiekstrudera, PWM oraz PID, czyli kontroli płynnego nagrzewania i oscylacji wokół zadanej temperatury. Jeśli nie wiesz, co robisz, zostaw tu domyślną wartość.

Jednak wśród tych opcji jest jedna, którą łatwo przeoczyć, a jest ważna, i sam jej długo szukałem – enable heated bed support, czyli jeden ptaszek, odkrywający cały szereg ustawień związanych ze stołem grzejnym.

Poniżej znajdują się opcje dla każdego ekstrudera (jeśli ustawiliśmy ich kilka), oraz  dla heatbedu. Wybieramy ilość kroków na milimetr filamentu, rodzaj czujnika temperatury, typ sterowania, oraz parametry temperaturowe i parę innych opcji. Zwykle interesuje nas tylko rodzaj termistora i ilość kroków ekstrudera. Pamiętaj, że ustawiany tutaj wentylator nie jest wentylatorem chłodzącym wydruk, tylko tym, który chłodzi głowicę (np E3D V6, bądź MK8). Odnośnie pozostałych opcji – Jeśli nie wiesz, co robisz, zostaw tu domyślną wartość.

Po wprowadzeniu parametrów, przechodzimy do kolejnej zakładki.

Konfiguracja bajerów

W tej zakładce konfigurujemy przede wszystkim funkcje związane z autopoziomowaniem (Enable Z-probing), oraz kompensacją nierówności (Enable axis compensation), a także wentylatory chłodzenia wydruku (Enable fan control).

Wybieramy, gdzie jest podłączony wentylator (w RAMPS 1.4 z jedną głowicą, wentylator podpinany jest w miejsce drugiej głowicy), oraz ustawiamy kickstart time (wentylator na początku dostaje pełną moc, aby się rozkręcić, a następnie jest ona zmniejszana do zadanego poziomu). Możemy też skonfigurować chłodzenie płyty głównej drukarki (board fan).

Bed coating, to funkcja, która pozwala automatycznie zmieniać wysokość Z min bez ruszania endstopu, zależnie od nałożonego podłoża (gdy używamy szyb o różnych grubościach, bądź podkładek typu Coropad, czy Buildtak). Jeśli nie wiesz, co robisz, zostaw tu domyślną wartość.

Jeśli zaznaczyliśmy „enable z-probing”, mamy też szereg funkcji związanych z próbkowaniem autopoziomowania – wybieramy rozmieszczenie macierzy punktów testowych, ich ilość, informację, gdzie podłączyliśmy czujnik, czy też skrypty g-code wykonywane podczas próbkowania.

Poniżej mamy też parametry związane z retrakcją. Jeśli nie wiesz, co robisz, zostaw tu domyślną wartość.

Na samym dole zakładki znajduje się możliwość dodania dodatkowych silników krokowych, z różnych przyczyn. Jeśli nie wiesz, co robisz, zostaw tu domyślną wartość.

Konfiguracja interfejsu

W tej zakładce konfigurujemy parametry naszego interfejsu. Na początek wybieramy go z listy. Najpopularniejszy dostępny na rynku to SmartController i taki właśnie wybieram.

Pod listą mamy drugą listę – wybieramy, gdzie jest podpięty przycisk analogowy interfejsu (w większości interfejsów nie występuje, więc domyślna wartość jest ok).

Wybieramy języki, które mają być wspierane (ja zawsze wywalam wszystkie poza angielskim, jakoś nie przekonuje mnie polskie menu).

„Encoder speed” to czułość enkodera (czyli pokrętła, które służy do przewijania menu) – ile skoków enkodera odpowiada za przesunięcie się menu o 1 pozycję. Ja preferuję „slowest”, bo nie muszę się denerować, ze „menu skacze”.

Możemy też aktywować buzzer, odwrócić kierunek działania enkodera, aktywować dynamiczną prędkość enkodera, a także automatyczny powrót do strony głównej po określonym czasie nieaktywności użytkownika.

Dodatkowym smaczkiem jest ekran startowy – przez określony czas (np 3 sekundy) po uruchomieniu drukarki, wyświetla powitanie, z informacją o modelu drukarki oraz producencie.

Jest też kilka parametrów, które konfigurowaliśmy wcześniej, gdyż mogą być inne dla drukarki pracującej z zewnętrznym sterowaniem, a inne dla drukarki pracującej autonomicznie. Jeśli nie wiesz, co robisz, zostaw tu domyślną wartość.

Możemy również ustawić pin w drukarce, do którego jest podpięte oświetlenie – doda nam to w menu możliwość jego załączania oraz wyłączania.

Ręczne wstawki kodu

Jeśli jesteś domorosłym hakerem i chcesz dopisać własne fragmenty firmware, to tutaj jest na to miejsce. Jeśli nie wiesz, co robisz, zostaw tu domyślną wartość.

Pobieranie i instalacja

Jeśli zakończyłeś konfigurację i dotarłeś po długich bojach do ostatniej zakładki, tutaj masz opcję pobrania pełnego firmware w paczce .zip, bądź samych plików konfiguracyjnych.

Firmware w paczce, to tak naprawdę projekt ze środowiska Arduino. Aby go wgrać na sterownik, najlepiej skorzystać z Arduino IDE – link. Po zainstalowaniu środowiska i rozpakowaniu naszego .zip z firmware do luźnego folderu, otwieramy dwuklikiem plik Repetier.ino, co powoduje start całego środowiska i wczytanie wszystkich plików projektu (jeśli otworzymy plik wciąż w paczce .zip, to pozostałe pliki projektu się nie załadują).

W Arduino IDE, na górze, w zakładce „Tools” musimy wybrać odpowiednią płytkę, procesor, oraz port, do którego są podłączone (wirtualny port COM, można sprawdzić w menedżerze urządzeń). Następnie klikamy guzik „Upload”, czekamy chwilę i nasz firmware jest już na płytce.

Fine tuning

Repetier-Firmware, EEPROM, oraz Repetier-Host, to zestaw, który pozwala nam na zgrubne ustawienie parametrów, zamiast żmudnych obliczeń. Potem wystarczy dokonać fizycznej kalibracji i skorygować parametry już z poziomu EEPROM.

Jak tego dokonać? Najpierw potrzebujemy program Repetier-Host – link. Po jego zainstalowaniu, podłączeniu drukarki, skonfigurowaniu drukarki w Hoście (CTRL+P), mamy możliwość zmiany ustawień EEPROM. Wystarczy jeden skrót klawiaturowy (ALT+E) i mamy dostęp do parametrów drukarki, które możemy zmieniać nawet w trakcie druku.

Polecam rozpocząć od kalibracji PID. W Hoście, w zakładce „Manual control” wysyłamy do drukarki komendę „M303 E0 S200 C8”, co oznacza, że ekstruder zostanie nagrzany do 200 stopni, a następnie wychłodzony. I tak ośmiokrotnie, w celu dobrania optymalnych parametrów. Drukarka zwróci nam finalne parametry, a my zapisujemy je komendą „M500”. Dla strojenia heatbedu użyj polecenia „Bed: M303 E-1 S60 C8”. Więcej o autotuningu PID tutaj – link

Następnie można przejść do wydrukowania kostki testowej. Np jakiejkolwiek z thingiverse – link. Zmierz ją suwmiarką i sprawdź, czy faktycznie w każdą stronę ma 20mm. Jeśli nie, to należy zmienić ilość kroków na milimetr w danej osi. Ja zaprojektowałem własną kostkę, o wymiarach 40x40x30mm, z wyciętą wewnątrz kostką 20x20x30mm, oraz otworem fi 4mm w jednym rogu, co pozwala sprawdzić zarówno zewnętrzne, jak i wewnętrzne wymiary (czasem, to nie ilość kroków jest problemem, lecz np średnica dyszy, bądź ilość podawanego filamentu). Moją kostkę pobierzecie stąd – link.

Jeśli macie już dość walki, możecie też obejrzeć wideoporadnik – link

W razie jakichś problemów, pytań, nieścisłości, piszcie na kontakt@maciejdrukuje.pl
Jeśli uważacie, że Was to przerasta i wolicie mi to zlecić, też się nie krępujcie.