Skocz do zawartości
Szukaj w
  • Więcej opcji...
Znajdź wyniki, które zawierają...
Szukaj wyników w...
rusty95

[PORADNIK] Marlin 2.0 - konfiguracja podstawowa + mini-podstawy programowania

Rekomendowane odpowiedzi

Cześć!

Mam dla Was poradnik dotyczący konfiguracji Marlina (dokładnie to Marlina 2.0, ale większość rzeczy tutaj opisanych będzie się pokrywać też z Marlinem 1.1), ten konkretny poradnik dotyczył będzie konfiguracji podstawowej, czyli wszystkiego co jest zawarte w pliku Configuration.h (no, prawie wszystkiego, bo pominąłem rzeczy dotyczące drukarek wielogłowicowych oraz informacje odnośnie automatycznego poziomowania stołu). Starałem się wszystko opisać w miarę zwięźle, ale i tak wyszło tego sporo ze względu na ilość rzeczy do omówienia. Poradnik podzieliłem na rozdziały i podrozdziały i wrzuciłem jako osobne komentarze pod postem, na końcu tego posta jest spis treści z odnośnikami.

 

W planach mam jeszcze:

-dodanie kilku grafik i zdjęć do tego poradnika

-dodanie całego poradnika w formie PDF (tutaj poczekam jakiś czas, może ktoś zauważy jakieś błędy lub rzeczy o których zapomniałem napisać)

-stworzenie poradnika odnośnie autopoziomowania

-stworzenie poradnika (lub kilku poradników) dotyczących konfiguracji zaawansowanej

 

Mile widziane wszelkie komentarze i sugestie odnośnie formy i treści poradnika, jeśli coś pominąłem to nie krępować się i dawać znać w komentarzach.

 

Poniżej spisu treści będę dodawał notatki odnośnie istotnych zmian w treści (czyli np. dodanie zdjęć lub zmiana/dodanie treści, nie będę tam uwzględniał np. poprawiania literówek).

 

 

Spis treści:

1    Mini-podstawy programowania
2    Konfiguracja podstawowa
   2.1    Korzystanie z przykładowych plików konfiguracyjnych
   2.2    Płyta główna, transmisja danych
   2.3    Ustawienia termiczne

       2.3.1    Termistory

       2.3.2    Zabezpieczenia termiczne

       2.3.3    PID hotendu/stołu
   2.4    Ustawienia mechaniczne

       2.4.1    Krańcówki

       2.4.2    Sterowniki silników krokowych

       2.4.3    Ustawienia kinematyki

       2.4.4    Kierunek obrotu osi, kierunek bazowania
   2.5    Kontroler LCD
3    Opcje dodatkowe - konfiguracja podstawowa

   3.1    Dodatkowe opcje menu ekranowego
   3.2    Dodatkowe funkcje firmware

       3.2.1    Ekran startowy, logo ekranu informacyjnego, własna nazwa i identyfikator drukarki

       3.2.2    Stabilizacja temperatury

       3.2.3    Minimalna temperatura ekstruzji, maksymalna długość pojedynczej ekstruzji

       3.2.4    Wygładzanie przyspieszeń - S-Curve acceleration

       3.2.5    Wymiary przestrzeni roboczej, przesunięcie przestrzeni roboczej względem punktu bazowego

       3.2.6    Krańcówki programowe, czujnik końca filamentu

       3.2.7    Prędkość bazowania

       3.2.8    Pamięć EEPROM, opcje komunikacji z hostem

       3.2.9    Parkowanie głowicy

       3.2.10    Język menu ekranowego, styl ekranu informacyjnego (ekrany 2004)

       3.2.11    Obsługa czytnika kart pamięci

       3.2.12    Opcje enkodera, buzzer

       3.2.13    Programowy PWM wentylatorów sterowanych
4    Pierwsze uruchomienie

 

=====================================================================================

 

Historia edycji:

<brak>

  • Lubię to! 1
  • Kocham To! 2
  • Dzięki! 1

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

1          Mini-podstawy programowania

 

Żeby móc sprawnie pracować z plikami konfiguracyjnymi Marlina należy wiedzieć 2 podstawowe rzeczy o języku C (bo w tym języku właśnie są napisane pliki konfiguracyjne Marlina):

Zakomentowanie/odkomentowanie

Zakomentowanie bądź odkomentowanie ma na celu włączenie/wyłączenie wiersza (lub jego części) z procesu kompilacji, czyli po ludzku mówiąc – to co jest zakomentowane nie będzie brane pod uwagę. Zakomentowanie wiersza polega na wpisaniu „//” na jego początku, dla przykładu:

Wiersz zakomentowany:

//#define SHOW_BOOTSCREEN

Wiersz odkomentowany:

#define SHOW_BOOTSCREEN

W plikach konfiguracyjnych Marlina znak komentarza często występuje również przed tekstowym komentarzem na końcu wiersza, i w tym miejscu nie należy nigdy go usuwać (ewentualnie usunąć razem z całym komentarzem tekstowym), ponieważ będzie to powodowało błędy w kompilacji.

Przykładowy wiersz z komentarzem tekstowym:

#define LIMITED_MAX_FR_EDITING        // Limit edit via M203 or LCD to DEFAULT_MAX_FEEDRATE * 2

Definicja stałej

Definicja stałej składa się z dwóch lub trzech części oddzielonych spacją i wygląda w następujący sposób:

#define NAZWA_STALEJ WARTOSC_STALEJ

#define – dyrektywa umożliwiająca deklarację nazwy i wartości, tej części wiersza się nigdy nie zmienia podczas konfiguracji Marlina

NAZWA_STALEJ – nazwa stałej której wartość jest podana jako WARTOSC_STALEJ, bądź też odniesienie do nazwy opcji w Marlinie (w takim przypadku nie deklaruje się wartości stałej, a samo zdefiniowanie nazwy odnosi się do włączenia odpowiednich funkcji w kodzie programu). Tej części wiersza nigdy się nie zmienia podczas konfiguracji Marlina. Przykłady:

Włączanie funkcji pokazującej logo Marlina na ekranie podczas uruchamiania drukarki:

#define SHOW_BOOTSCREEN

Definicja wielkości stołu 200mm w osi X:

#define X_BED_SIZE 200

WARTOSC_STALEJ – wartość stałej, tak jak wspomniałem wcześniej nie zawsze się ją podaje. Wartość stałej może być definiowana przez wielkość liczbową, kilka wielkości liczbowych, ale też przez wartość tekstową. Wielkości liczbowe mogą być podane bezpośrednio (jak w przykładzie wyżej), ale też przy użyciu działań matematycznych, bądź z odniesieniem do wartości innej zdefiniowanej stałej. W przypadku wprowadzania działań matematycznych powinno się podawać całe działanie w nawiasie (). Przy stałych wymagających wprowadzenia kilku wartości, wartości wprowadza się w nawiasie {}, a pojedyncze wartości oddziela się przecinkiem. Wartości stałych podczas konfiguracji Marlina zmienia się w celu dostosowania kodu do swoich potrzeb. Przykłady:

Wprowadzenie kilku wartości dla jednej stałej – wprowadzenie kroków/mm dla wszystkich osi (80 X, 80 Y, 4000 Z, 500 E):

#define DEFAULT_AXIS_STEPS_PER_UNIT   { 80, 80, 4000, 500 }

Definicja prędkości bazowania XY jako 50mm/s w mm/min (50mm/s*60s/min=3000mm/min):

#define HOMING_FEEDRATE_XY (50*60)

Ogólnie rzecz biorąc, konfiguracja Marlina polega na komentowaniu/odkomentowywaniu opcji i zmianie wartości na odpowiadające danej konfiguracji i danym potrzebom, ważne jest stosowanie odpowiedniej składni przy wprowadzaniu własnych wartości (w szczególności chodzi mi tu o wprowadzanie działań matematycznych w polu wartości) oraz uważanie na to, żeby przypadkowo nie zmieniać nazw stałych, niestosowanie się do tych dwóch zasad będzie prowadziło do błędów kompilacji firmware.

  • Kocham To! 2
  • Dzięki! 1

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

2          Konfiguracja podstawowa

Opisana poniżej krok po kroku konfiguracja podstawowa dotyczy drukarki w układzie prostym kartezjańskim z pojedynczym ekstruderem i głowicą

2.1        Korzystanie z przykładowych plików konfiguracyjnych

Wraz z Marlinem udostępniane są przykładowe pliki konfiguracyjne dla większości amatorskich drukarek dostępnych na rynku. Konfiguracje te są przygotowywane pod standardowe wyposażenie danej drukarki i są dobrym punktem początkowym do stworzenia własnej konfiguracji firmware odpowiadającej indywidualnym potrzebom użytkownika. Pliki przykładowe zwykle zawierają poprawną konfigurację mechaniki i osprzętu elektronicznego drukarki, ale w większości przypadków są okrojone o dodatkową funkcjonalność możliwą do włączenia podczas konfiguracji firmware. Sprawy omówione w rozdziale 2. tego poradnika dotyczą ustawień które powinny być zdefiniowane w przykładowych plikach konfiguracyjnych.

Przykładowe pliki konfiguracyjne można pobrać z osobnego repozytorium: https://github.com/MarlinFirmware/Configurations

Uwaga do osób, które miały do czynienia z Marlinem przed wydaniem wersji 2.0.3: od wersji 2.0.3 wszystkie przykładowe pliki konfiguracyjne zostały całkowicie przeniesione do wspomnianego repozytorium, nie są już częścią repozytorium Marlina.

  • Kocham To! 1
  • Dzięki! 1

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

2.2        Płyta główna, transmisja danych

Pierwszą i podstawową informacją na temat drukarki jaką należy zdefiniować jest rodzaj płyty głównej, prędkość przesyłu danych oraz ustawienia portów szeregowych. Pozwoli to na poprawną kompilację firmware z odpowiednio przypisanymi pinami i rodzajem procesora, a informacja na temat prędkości przesyłu danych przyda się później przy łączeniu drukarki z komputerem.

Prędkość transmisji

#define BAUDRATE 250000

Prędkość transmisji oznacza ilość zmian sygnału w ciągu 1 sekundy, ustawiana tutaj prędkość transmisji ma zastosowanie przy komunikacji płyty głównej drukarki z urządzeniami zewnętrznymi, np. komputerem, Raspberry Pi z OctoPrintem, ESP, bądź też wyświetlaczem TFT komunikującym się z drukarką poprzez interfejs UART. Prędkość 250000 nie powinna stanowić problemu dla współczesnych płyt głównych, ale w przypadku występowania nagłych błędów połączenia z zewnętrznym urządzeniem może być konieczne obniżenie prędkości (dopuszczalne wartości to: 2400, 9600, 19200, 38400, 57600, 115200, 250000, 500000, 1000000)

Płyta główna

#define MOTHERBOARD BOARD_RAMPS_14_EFB

Pełna lista obsługiwanych płyt głównych wraz z ich nazwami zrozumiałymi dla Marlina znajduje się w pliku src/core/boards.h

UWAGA: Poza zdefiniowaniem rodzaju płyty głównej w pliku konfiguracyjnym, konieczne jest też ustawienie rodzaju procesora w ustawieniach kompilatora.

  • Kocham To! 1
  • Dzięki! 1

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

2.3        Ustawienia termiczne

2.3.1          Termistory

#define TEMP_SENSOR_0 1

W tym miejscu definiuje się rodzaj termistora według tabeli, informacje na temat rodzaju termistora zazwyczaj można pozyskać u sprzedawcy, u którego dany termistor się zakupiło. Pozycje TEMP_SENSOR_0...7 dotyczą termistorów głowicy (głowic - w przypadku drukarki wielogłowicowej), TEMP_SENSOR_BED dotyczy termistora stołu, a TEMP_SENSOR_CHAMBER dotyczy termistora komory drukarki. Ustawienie wartości 0 oznacza całkowite wyłączenie sterowania danym zespołem (czyli np. TEMP_SENSOR_BED 0 oznacza wyłączenie możliwości sterowania grzanym stołem).

2.3.2          Zabezpieczenia termiczne

Temperatura minimalna i maksymalna

#define HEATER_0_MINTEMP   5
#define HEATER_0_MAXTEMP 275

Jak sama nazwa wskazuje - ustawia się tutaj minimalne i maksymalne temperatury dopuszczalne przez firmware. Temperatury te zależą zwykle od zakresu pomiarowego termistora i od ograniczeń sprzętowych drukarki. Co do wartości granicznych termistora, należy zwracać uwagę na informacje dostarczane przez producenta/sprzedawcę danego termistora, natomiast co do ograniczeń sprzętowych - trzeba zwrócić uwagę jakie temperatury mogą prowadzić do uszkodzeń sprzętu, dla przykładu:

- niektóre tanie stoły magnetyczne mogą tracić właściwości magnetyczne w temperaturach powyżej 80 stopni Celsjusza, w takim wypadku dobrym pomysłem jest ustawienie BED_MAXTEMP na 80 stopni

- głowice, w których rurka teflonowa znajduje się w części gorącej hotendu, nie powinny być poddawane długotrwałej pracy w temperaturach powyżej 250 stopni Celsjusza, należy więc ustawić HEATER_0_MAXTEMP na 250 stopni.

UWAGA: Maksymalna temperatura danej grzałki jaką można zadać z poziomu kontrolera LCD/gcode itp. jest zawsze o 15 stopni mniejsza od HEATER_xx_MAXTEMP (ustawienia odpowiadającego danej grzałce)

Kontrola zmian temperatury

#define THERMAL_PROTECTION_HOTENDS
#define THERMAL_PROTECTION_BED

Zadaniem zabezpieczenia jest sprawdzanie, czy występuje wzrost temperatury gdy do grzałek podawane jest zasilanie. Wyłączanie tej funkcji jest mocno niezalecane, wystąpienie błędów wykrywanych przez tą funkcję może nawet doprowadzić do pożaru.

2.3.3          PID hotendu/stołu

#define PIDTEMP
#define PIDTEMPBED

PID - metoda regulacji, której zadaniem jest zapewnienie (w tym konkretnym przypadku) stabilnej temperatury. Włączenie tej funkcji jest opcjonalne, ale moim zdaniem jest to konieczność w przypadku hotendu, bo ze względu na stosunkowo dużą moc grzewczą hotendów temperatury w tym miejscu zmieniają się bardzo dynamicznie i utrzymanie odpowiedniej temperatury klasyczną metodą "włącz/wyłącz" jest praktycznie niemożliwe. Problem zwykle nie występuje lub nie jest tak bardzo istotny w przypadku stołów grzewczych. Procedura doboru parametrów regulacji jest opisana w rozdziale "Uruchomienie testowe".

  • Kocham To! 2
  • Dzięki! 1

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

2.4        Ustawienia mechaniczne

2.4.1          Krańcówki

W pierwszej kolejności definiuje się czy zostało użyte złącze min czy max dla krańcówki:

#define USE_XMIN_PLUG
#define USE_XMAX_PLUG

UWAGA 1: Przy klasycznym układzie z pojedynczą głowicą może być wybrane tylko jedno złącze dla każdej z osi!

UWAGA 2: Zmianę kierunku bazowania należy uwzględnić w tym miejscu, a dodatkowo w pozycji opisanej w podrozdziale "Kierunek bazowania"

Opcje programowych rezystorów podciągających

#define ENDSTOPPULLUPS
#define ENDSTOPPULLDOWNS

Rezystory podciągające służą zapobieganiu występowania fałszywych sygnałów na krańcówkach, rodzaj użytego rezystora zależy od układu elektronicznego płyty głównej - PULLUP stosuje się, gdy pin sygnałowy jest zwierany przez krańcówkę do masy, a PULLDOWN gdy pin sygnałowy jest zwierany do napięcia zasilającego. Opcje te nie są obsługiwane przez wszystkie płyty, większość nowoczesnych płyt posiada fizyczne rezystory, co eliminuję potrzebę programowego włączania dodatkowej rezystancji do układu.

Definicja logiki przełącznika

#define X_MIN_ENDSTOP_INVERTING false

false - przełącznik typu NC (Normally Closed) to taki, którego naciśnięcie powoduje przerwanie obwodu.

true - przełącznik typu NO (Normally Open) to taki, którego naciśnięcie powoduje zamknięcie obwodu.

Większość klasycznych krańcówek mechanicznych stosowanych w drukarkach 3D jest zbudowana w taki sposób, że mogą one działać jako przełącznik NC i NO, w takim wypadku zaleca się używanie konfiguracji NC ze względu na to, że awaria połączenia pomiędzy krańcówką a obwodem najczęściej skutkuje przerwaniem połączenia, a w takiej sytuacji płyta główna będzie "myślała" że krańcówka jest ciągle wciśnięta, dzięki czemu podczas bazowania oś z uszkodzoną krancówką będzie stała w miejscu, podczas gdy przy takiej samej awarii z przełącznikiem w konfiguracji NO oś ruszyłaby i nie zostałaby zatrzymana w miejscu występowania krańcówki, co mogłoby doprowadzić do uszkodzeń drukarki.

2.4.2          Sterowniki silników krokowych

#define X_DRIVER_TYPE  A4988

W tym miejscu należy zdefiniować rodzaj sterownika silnika krokowego występującego na danej osi (sterowniki nie muszą być takie same dla wszystkich osi). Domyślnym sterownikiem jest A4988, przy korzystaniu z innego sterownika należy odkomentować wiersz odpowiadający danej osi i zdefiniować poprawny sterownik.

UWAGA: Sterowniki TMC w trybie innym niż standalone wymagają dodatkowej konfiguracji, proces został opisany w poradniku dotyczącym konfiguracji zaawansowanej.

2.4.3          Ustawienia kinematyki

Trochę teorii na wstęp:

Przyspieszenie - oznacza przyrost prędkości w czasie, przykładowo przyspieszenie 3000mm/s^2 oznacza że prędkość będzie wzrastać od 0mm/s o 3000mm/s w czasie każdej sekundy aż do osiągnięcia prędkości docelowej (np. osiągnięcie prędkości docelowej 6000mm/s od zera zajmie 2 sekundy)

Zryw (Jerk) - oznacza początkowy wzrost prędkości - podczas przyspieszania od prędkości 0mm/s prędkość zrywu będzie osiągana z maksymalnym możliwym przyspieszeniem, dalsze przyspieszanie będzie się już odbywać z normalną wartością przyspieszenia.

Junction Deviation - alternatywne ustawienie dla przyspieszenia. Zasada działania tej funkcji jest taka, że podczas zmiany kierunku głowica zamiast zmieniać gwałtownie tor ruchu będzie wykonywać ruch po delikatnym łuku, wartość Junction Deviation oznacza odległość pomiędzy łukiem a teoretycznym punktem występowania zmiany kierunku (!!!rysunek)

Występowanie zrywu (lub Junction Deviation) ma na celu ograniczenie spowalniania głowicy przy zmianie kierunku ruchu, ponieważ bezwładność układu ekstruzji powodowałaby pojawianie się nadmiaru materiału w tych miejscach. Główna różnica pomiędzy tymi dwiema opcjami jest taka, że przy klasycznym zrywie mogą występować nagłe zmiany kierunku ruchu, co prowadzi do pojawiania się efektów związanych z bezwładnością części ruchomych (tzw. ghosting), w teorii opcja Junction Deviation powinna w pewnym stopniu zapobiegać temu zjawisku, ponieważ zapobiega ona występowaniu nagłych gwałtownych zmian kierunku ruchu.

Domyślne ustawienie kroków/mm poszczególnych osi

#define DEFAULT_AXIS_STEPS_PER_UNIT   { 80, 80, 4000, 500 }

Wartości w nawiasie {} oddzielone przecinkami oznaczają wartości przypisywane kolejno osiom X, Y, Z, E. Wartości te zależą od: ilości mikrokroków danej osi, rodzaju silnika (silniki Nema 17 występują zwykle w wersji 0.9 lub 1.8 stopnia/obrót), a także ilości zębów koła zębatego i modułu (odległości między zębami) paska, lub skoku śruby. Do obliczeń przydatny jest kalkulator https://blog.prusaprinters.org/calculator/

Domyślne ograniczenia kinematyczne

#define DEFAULT_MAX_FEEDRATE          { 300, 300, 5, 25 }
#define DEFAULT_MAX_ACCELERATION      { 3000, 3000, 100, 10000 }

Kolejno - maksymalna prędkość, maksymalne przyspieszenie. Wartości w nawiasach {} oddzielone przecinkami oznaczają wartości przypisywane kolejno osiom X, Y, Z, E.

Domyślne wartości przyspieszenia

#define DEFAULT_ACCELERATION          3000
#define DEFAULT_RETRACT_ACCELERATION  3000
#define DEFAULT_TRAVEL_ACCELERATION   3000

Domyślne wartości przyspieszenia dla (po kolei) - ruchów normalnych (podczas nakładania ścieżki), retrakcji (podczas ruchów samego ekstrudera), ruchów jałowych (takich, podczas których nie występuje ekstruzja). Ustawienia te są używane tylko w przypadku, gdy informacje na temat przyspieszeń nie są zawarte w gcode.

Włączanie opcji klasycznego zrywu

#define CLASSIC_JERK

Gdy ta opcja nie jest włączona, to używana jest funkcja Junction Deviation.

UWAGA: Ze względu na zasadę działania funkcji Junction Deviation, dla osi E ZAWSZE jest stosowany klasyczny zryw, bez względu na ustawienia dla pozostałych osi.

Domyślne wartości zrywu dla poszczególnych osi

#define DEFAULT_XJERK 10.0

Domyślna wartość współczynnika Junction Deviation (jedna dla wszystkich osi poza osią E)

#define JUNCTION_DEVIATION_MM 0.013

2.4.4          Kierunek obrotu osi, kierunek bazowania

#define INVERT_X_DIR false

Definiuje kierunek obrotu osi, zmiana z false na true lub na odwrót powoduje zmianę kierunku obrotu silnika danej osi

#define X_HOME_DIR -1

Definiuje kierunek bazowania poszczególnych osi, wartość -1 oznacza bazowanie w pozycji minimalnej, a 1 - w pozycji maksymalnej.

UWAGA: Zmianę kierunku bazowania należy uwzględnić w tym miejscu, a dodatkowo w pozycji opisanej w podrozdziale "Krańcówki"

  • Kocham To! 2
  • Dzięki! 1

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

2.5        Kontroler LCD

Sekcja dotycząca kontrolera LCD jest rozbudowana i zaczyna się od nagłówka "LCD / Controller Selection". Użycie kontrolera jest opcjonalne, należy wybrać opcję odpowiadającą posiadanemu kontrolerowi.

 

UWAGA: Należy wybrać tylko jedną opcję dotyczącą wyboru ekranu, odkomentowanie kilku opcji może skutkować błędnym działaniem firmware.

 

Najpopularniejsze kontrolery:

RepRapDiscount Smart Controller - kontroler z wyświetlaczem znakowym 2004, enkoderem, buzzerem i czytnikiem kart !!!link

#define REPRAP_DISCOUNT_SMART_CONTROLLER

RepRapDiscount FULL GRAPHIC Smart Controller - kontroler z wyświetlaczem graficznym 128x64, enkoderem, buzzerem i czytnikiem kart !!!link

#define REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER

Kontroler Creality (używany m. in. w CR10, Ender 3 i 5) - kontroler z wyświetlaczem graficznym 128x64, enkoderem i buzzerem (bez czytnika kart).

#define CR10_STOCKDISPLAY
  • Kocham To! 1
  • Dzięki! 1

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

3          Opcje dodatkowe - konfiguracja podstawowa

3.1        Dodatkowe opcje menu ekranowego

UWAGA: Włączanie poniżej opisanych funkcji jest niezalecane przy kompilacji firmware dla płyt z małą pamięcią.

Ustawienia PID

#define PID_EDIT_MENU
#define PID_AUTOTUNE_MENU

Pierwsza opcja dodaje do menu opcje umożliwiające zmianę parametrów PID, druga opcja pozwala dodatkowo na uruchomienie procedury automatycznego strojenia parametrów regulatora PID.

Ograniczenie możliwości edycji ograniczeń kinematycznych

#define LIMITED_MAX_FR_EDITING
#define LIMITED_MAX_ACCEL_EDITING
#define LIMITED_JERK_EDITING
#define MAX_FEEDRATE_EDIT_VALUES    { 600, 600, 10, 50 }
#define MAX_ACCEL_EDIT_VALUES       { 6000, 6000, 200, 20000 }
#define MAX_JERK_EDIT_VALUES { 20, 20, 0.6, 10 }

Włączanie ograniczeń edycji ograniczeń kinematycznych i wartości maksymalne tych ograniczeń, kolejno: włączanie limitu edycji prędkości, przyspieszenia, zrywu, wartości graniczne edycji prędkości, przyspieszenia, zrywu (wartości w nawiasach {} oddzielone przecinkami oznaczają wartości przypisywane kolejno osiom X, Y, Z, E). Ograniczenia są stosowane do edycji wartości z poziomu menu ekranowego, ale także z poziomu gcode.

Przełączanie krańcówek programowych

#define SOFT_ENDSTOPS_MENU_ITEM

Opcja dodaje pozycję w menu umożliwiającą włączenie/wyłączenie krańcówek programowych (patrz - podrozdział "Krańcówki programowe")

Asystent ręcznego poziomowania stołu

#define LEVEL_BED_CORNERS

Opcja dodaje pozycję w menu wspomagającą ręczne poziomowanie stołu poprzez automatyczne dojeżdżanie do kolejnych rogów stołu drukarki, dodatkowe ustawienia tej opcji:

#define LEVEL_CORNERS_INSET  30
#define LEVEL_CORNERS_Z_HOP  4.0
#define LEVEL_CORNERS_HEIGHT 0.0
#define LEVEL_CENTER_TOO

Pierwsza pozycja definiuje odległość od krawędzi stołu, najrozsądniej jest ustawić tą wartość tak, aby dysza dojeżdżała bezpośrednio nad śruby stołu bądź jak najbliżej śrub. Druga pozycja dotyczy wysokości, na którą podnosi się głowica podczas przejazdu pomiędzy kolejnymi punktami. Trzecia pozycja oznacza dodatkową wysokość, na którą podnosi się głowica podczas wykonywania ręcznego poziomowania stołu, tutaj można np. ustawić grubość kartki papieru lub szczelinomierza używanego do poziomowania stołu. Ostatnia pozycja oznacza, że po wykonaniu sekwencji dojazdu do 4 rogów stołu, głowica będzie dodatkowo przejeżdżać nad środek stołu.

Podgrzewanie

Opcje dotyczące podgrzewania są włączone domyślnie, nie da się ich wyłączyć bez głębszej ingerencji w kod Marlina

#define PREHEAT_1_LABEL       "PLA"

Etykieta (nazwa materiału) danej opcji podgrzewania.

#define PREHEAT_1_TEMP_HOTEND 180
#define PREHEAT_1_TEMP_BED     70
#define PREHEAT_1_FAN_SPEED     0

Kolejno – wartości temperatury głowicy i stołu, oraz prędkość wentylatora (prędkość wentylatora podaje się w skali PWM 0-255). Temperatury są sprawą oczywistą, natomiast mniej oczywiste jest włączanie wentylatora podczas podgrzewania – można to wykorzystać np. w celu zapobiegania wyciekaniu materiału z gorącej głowicy podczas podgrzewania, ale należy pamiętać o tym, żeby do gcode startowego w programie tnącym dodać komendę M107 (wyłączanie wentylatora), ponieważ wentylator nie wyłączy się „automatycznie” przy rozpoczynaniu druku, a nie wszystkie slicery dodają z automatu na początku komendę wyłączającą wentylator.

Statystyki wydruku

#define PRINTCOUNTER

Dodaje do menu opcję wyświetlającą statystyki dotyczące wykonanych wydruków: ilość wydruków (w tym osobno ilość wydruków ukończonych i przerwanych), ilość zużytego filamentu, całkowity czas pracy.

UWAGA: Wgranie firmware na nowo bądź przywrócenie wartości pamięci EEPROM w poziomu ekranu/gcode NIE MA WPŁYWU na zapisane statystyki.

Indywidualne bazowanie osi

#define INDIVIDUAL_AXIS_HOMING_MENU

Dodaje do menu pozycje odpowiadające za bazowanie pojedynczych osi (domyślnie w menu znajduje się tylko pozycja umożliwiająca bazowanie wszystkich osi).

  • Kocham To! 1
  • Dzięki! 1

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

 

3.2        Dodatkowe funkcje firmware

3.2.1          Ekran startowy, logo ekranu informacyjnego, własna nazwa i identyfikator drukarki

Ekran startowy

#define SHOW_BOOTSCREEN

Pokazuje logo Marlina podczas uruchamiania drukarki.

 

#define SHOW_CUSTOM_BOOTSCREEN

(Tylko dla ekranów graficznych 128x64) Pokazuje nasze własne logo/obraz przed pokazaniem logo Marlina podczas uruchamiania drukarki. Plik z logo powinien znajdować się w folderze z plikami konfiguracyjnymi i mieć nazwę _Bootscreen.h, własny plik można stworzyć z dowolnego czarno-białego obrazu o rozmiarze nie większym niż 128x64 piksele przy pomocy narzędzia dostępnego na stronie https://marlinfw.org/tools/u8glib/converter.html (należy wybrać opcję „Boot”)

UWAGA: Włączenie własnego ekranu startowego wymaga również włączenia domyślnego Marlinowego ekranu startowego

Logo ekranu informacyjnego

#define CUSTOM_STATUS_SCREEN_IMAGE

(Tylko dla ekranów graficznych 128x64) Pokazuje nasze własne logo/obraz na ekranie informacyjnym drukarki (w lewym górnym rogu). Plik z logo powinien znajdować się w folderze z plikami konfiguracyjnymi i mieć nazwę _Statusscreen.h, własny plik można stworzyć z dowolnego czarno-białego obrazu (nie jestem pewien co do maksymalnego rozmiaru obrazu, u mnie działa poprawnie logo o wymiarze 24x26px, mogło by być trochę szersze, ale na wysokość to jest maksimum, bo logo już „dotyka” innych elementów ekranu informacyjnego) przy pomocy narzędzia dostępnego na stronie https://marlinfw.org/tools/u8glib/converter.html (należy wybrać opcję „Status”)

Własna nazwa i identyfikator drukarki

#define CUSTOM_MACHINE_NAME "3D Printer"

Indywidualna nazwa drukarki, która pokazuje się na menu ekranowym podczas bezczynności drukarki.

 

#define MACHINE_UUID "00000000-0000-0000-0000-000000000000"

Indywidualny identyfikator drukarki, jest on wysyłany przez drukarkę podczas podłączenia jej do innego urządzenia, z założenia może on służyć np. do rozpoznawania konkretnej drukarki przez hosta (choć jeszcze nie spotkałem się z programem, który by wykorzystywał tą możliwość). Losowy identyfikator można wygenerować na stronie http://www.uuidgenerator.net/version4

 

3.2.2          Stabilizacja temperatury

#define TEMP_RESIDENCY_TIME     10
#define TEMP_WINDOW              1
#define TEMP_HYSTERESIS          3

 

Opcje definiujące wykrywanie stabilizacji temperatury podczas rozgrzewania głowicy (lub stołu – tego dotyczy taki sam zestaw opcji z dopiskiem BED w nazwie). Sposób działania w skrócie – po zadaniu temperatury komendą która nakazuje oczekiwanie na osiągnięcie zadanej temperatury (M109 dla hotendu, M190 dla stołu) firmware zaczeka aż zostanie osiągnięta zadana temperatura, timer załączy się gdy odchyłka temperatury będzie mniejsza niż TEMP_WINDOW, ale będzie się resetował za każdym razem, gdy odchyłka temperatury będzie większa niż TEMP_HYSTERESIS. Po osiągnięciu czasu timera TEMP_RESIDENCY_TIME firmware przejdzie do wykonywania następnej komendy gcode. Aby przyspieszyć proces nagrzewania przed drukiem można zmniejszyć czas RESIDENCY_TIME bądź zwiększyć dopuszczalne odchyłki temperatur, ale należy pamiętać że ustawienie zbyt małych(czas)/dużych(odchyłki temperatury) wartości może skutkować rozpoczynaniem druku przed ustabilizowaniem się temperatury.

 

3.2.3          Minimalna temperatura ekstruzji, maksymalna długość pojedynczej ekstruzji

Minimalna temperatura ekstruzji

#define PREVENT_COLD_EXTRUSION
#define EXTRUDE_MINTEMP 170

 

Pierwsza pozycja dotyczy włączenia funkcji uniemożliwiającej ekstruzję przy niskich temperaturach, w drugiej pozycji definiuje się minimalną temperaturę ekstruzji. Zmiana tej wartości może być przydatna przy częstym drukowaniu z materiałów niskotemperaturowych, np. filamentów woskopodobnych. Kontrola minimalnej temperatury może zostać tymczasowo wyłączona przy pomocy gcode M302 P1

Maksymalna długość pojedynczej ekstruzji

#define PREVENT_LENGTHY_EXTRUDE
#define EXTRUDE_MAXLENGTH 200

Pierwsza pozycja dotyczy włączenia funkcji uniemożliwiającej wykonanie długiej pojedynczej ekstruzji, w drugiej pozycji definiuje się maksymalną długość pojedynczej ekstruzji. Funkcja ma na calu uniemożliwienie przypadkowego marnowania materiału poprzez np. wysłanie błędnej komendy gcode. Długość maksymalna powinna być dobrana tak, aby umożliwiać wymianę filamentu (np. dla układów bowden, nie powinna być mniejsza niż odległość od ekstrudera do głowicy).

 

3.2.4          Wygładzanie przyspieszeń - S-Curve acceleration

#define S_CURVE_ACCELERATION

Funkcja ma za zadanie łagodzenie wibracji podczas przyspieszeń poprzez wprowadzenie nieliniowych przyspieszeń (czyli przyspieszenie w teorii nie ma być stałe, tylko lekko narastać w miarę zmiany prędkości). Osobiście nie odczułem żadnych specjalnych różnic po włączeniu tej funkcji u siebie (płyta 32 bit - SKR V1.3 ze stepstickami TMC2209).

 

3.2.5          Wymiary przestrzeni roboczej, przesunięcie przestrzeni roboczej względem punktu bazowego

Na wstępie zaznacza, że celowo pominąłem ten temat w podstawowej konfiguracji kinematyki ze względu na to, że w przykładowych plikach konfiguracyjnych poprawność tych ustawień jest bardzo różna, warto poświęcić trochę czasu na dobranie tych wartości do swojej konkretnej maszyny.

Wymiar przestrzeni roboczej dla poszczególnych osi:

#define X_BED_SIZE 200

 

Minimum i maksimum poszczególnych osi:

#define X_MIN_POS 0
#define X_MAX_POS X_BED_SIZE

 

W tym miejscu należy uwzględnić odsunięcie obszaru roboczego od pozycji bazowej, dla przykładu: gdy głowica w pozycji bazowej jest przesunięta względem pozycji, którą chcielibyśmy, żeby drukarka uznała za pozycję 0,0 (np. róg stołu, lub miejsce na stole roboczym z uwzględnieniem marginesu, na którym nie chcemy drukować żeby nie zbliżać się za bardzo do krawędzi) o 4mm w osi X i 5mm w osi Y, należy wprowadzić następujące ustawienia (podając wartości przesunięcia NA MINUSIE):

#define X_MIN_POS -4
#define Y_MIN_POS -5

UWAGA 1: Wartości minimalne (..._MIN_POS) nie mogą być większe od 0

UWAGA 2: Wartości maksymalne nie mogą być mniejsze od rozmiaru przestrzeni roboczej, natomiast nie ma problemu z tym aby były większe. Wartości wprowadzane powinny być dobrane w taki sposób, aby drukarka miała fizyczną możliwość poruszania się w zadanych zakresach.

 

3.2.6          Krańcówki programowe, czujnik końca filamentu

Krańcówki programowe

#define MIN_SOFTWARE_ENDSTOPS
#define MAX_SOFTWARE_ENDSTOPS

W kolejności - włączanie minimalnych, maksymalnych krańcówek programowych. Zadaniem krańcówek programowych jest zapobieganie przekroczeniu teoretycznych limitów drukarki zdefiniowanych w firmware.

Czujnik końca filamentu

#define FILAMENT_RUNOUT_SENSOR

Umożliwia włączenie funkcji wykrywającej koniec filamentu

 

#define FILAMENT_RUNOUT_SCRIPT "M600"

Definiuje sekwencję gcode wykonywaną po wykryciu końca filamentu. Domyślny gcode M600 oznacza komendę na zmianę filamentu, jej użycie wymaga włączenia funkcji Zaawansowanej Pauzy (Advanced Pause Feature), którą opisano w poradniku dotyczącym konfiguracji zaawansowanej.

3.2.7          Prędkość bazowania

#define HOMING_FEEDRATE_XY (50*60)
#define HOMING_FEEDRATE_Z  (4*60)

Prędkość, z jaką wykonywana jest procedura bazowania poszczególnych osi.

UWAGA: Ustawienie zbyt dużych prędkości może skutkować uszkodzeniem krańcówek.

3.2.8          Pamięć EEPROM, opcje komunikacji z hostem

EEPROM

#define EEPROM_SETTINGS

Włącza obsługę pamięci EEPROM (możliwość zapisywania zmiany domyślnych parametrów dotyczących np. limitów kinematycznych, kroków/mm itp.)

 

#define DISABLE_M503

Włączenie tej opcji powoduje wyłączenie obsługi komendy M503, która jest używana do raportowania wartości w EEPROM do hosta.

 

#define EEPROM_CHITCHAT

Włączenie tej opcji spowoduje, że każda zmiana wartości w EEPROM dokonana za pośrednictwem hosta będzie powodowała wysłanie raportu z aktualnie ustawionymi wartościami.

 

#define EEPROM_AUTO_INIT

Włączenie tej opcji spowoduje, że przy każdorazowym wykryciu błędu w wartościach pamięci EEPROM będą przywracane ustawienia domyślne.

Opcje komunikacji z hostem

Opcje te definiują zachowanie drukarki podczas komunikacji z hostem

#define HOST_KEEPALIVE_FEATURE

Powoduje, że do hosta będą wysyłane informacje o tym, że drukarka jest “zajęta”, (np. podczas wykonywania długich pojedynczych komend gcode), dzięki czemu host nie będzie uznawał braku reakcji na komendy jako błędu komunikacji.

 

#define DEFAULT_KEEPALIVE_INTERVAL 2

Odstęp czasu, w jakim będą wysyłane wiadomości o zajętości.

 

#define BUSY_WHILE_HEATING

Powoduje, że wiadomości o zajętości są wysyłane także podczas nagrzewania z użyciem komendy nakazującej oczekiwanie na osiągnięcie zadanej temperatury.

3.2.9          Parkowanie głowicy

#define NOZZLE_PARK_FEATURE

Funkcja mająca na celu, jak sama nazwa wskazuje, parkowanie głowicy. Używa się jej głównie w połączeniu z funkcją Zaawansowanej Pauzy (Advanced Pause Feature) której konfigurację opisałem w poradniku dotyczącym konfiguracji zaawansowanej.

Ustawienia dodatkowe

#define NOZZLE_PARK_POINT { (X_MIN_POS + 10), (Y_MAX_POS - 10), 20 }

Pozycja, w której będzie parkowana głowica, w nawiasie {} podaje się kolejno: pozycję w X, pozycję w Y i przesunięcie w osi Z (względem wysokości, na której była głowica podczas wydania komendy pauzy).

 

#define NOZZLE_PARK_XY_FEEDRATE 100
#define NOZZLE_PARK_Z_FEEDRATE 5

Prędkość parkowania (jedna wartość dla XY, osobna wartość dla Z)

3.2.10      Język menu ekranowego, styl ekranu informacyjnego (ekrany 2004)

Język menu ekranowego

#define LCD_LANGUAGE en

Definiuje język używany w menu ekranowym drukarki, dla zmiany na język polski trzeba rzecz jasna zmienić wartość en na pl.

UWAGA: Obsługa języka polskiego wymaga więcej pamięci niż obsługa języka angielskiego, przy kompilacjach dla płyt z małą pamięcią zalecane jest pozostanie przy języku angielskim.

Styl ekranu informacyjnego

#define LCD_INFO_SCREEN_STYLE 0

Definiuje styl ekranu informacyjnego dla ekranów 2004, wartość "1" włącza ekran w stylu Prusy

>>Zdjęcia<<

3.2.11      Obsługa czytnika kart pamięci

#define SDSUPPORT

Włącza obsługę czytnika kart pamięci, dzięki czemu możliwy jest druk bez użycia dodatkowego urządzenia (wymaga to rzecz jasna podłączenia czytnika kart do płyty drukarki). Opcja ta nie jest potrzebna gdy drukuje się tylko z użyciem komputera, OctoPrinta, ESP, bądź też ekranu TFT posiadającego własny czytnik kart pamięci lub pamięci USB.

3.2.12      Opcje enkodera, buzzer

Opcje enkodera

#define ENCODER_PULSES_PER_STEP 4

Definiuje ilość impulsów enkodera na przesunięcie o 1 krok. Domyślnie 1 impuls powoduje przesunięcie o 1 krok, ale przy czułych enkoderach konieczne może być włączenie tej funkcji i odpowiednie dobranie wartości: gdy menu przesuwa się za szybko, należy zwiększyć wartość.

 

#define ENCODER_STEPS_PER_MENU_ITEM 1

Definiuje ilość kroków na przesunięcie wskaźnika menu o 1. Ustawienie tej wartości na większą od 1 spowoduje wolniejsze poruszanie się po menu, a edycja wartości w ustawieniach (np. maksymalnego przyspieszenia) będzie się odbywać z taką samą prędkością jak dla wartości 1, niezależnie od ustawionej wartości

 

#define REVERSE_ENCODER_DIRECTION
#define REVERSE_MENU_DIRECTION
#define REVERSE_SELECT_DIRECTION

Odwracanie kierunku pracy enkodera. Pierwsza pozycja odpowiada za całkowite odwrócenie pracy enkodera, druga powoduje odwrócenie tylko dla nawigacji przez elementy menu, a trzecia - tylko dla edycji wartości.

 

Buzzer - głośnik/brzęczyk wielotonowy

#define SPEAKER

Włączenie tej opcji pozwala na wydawanie przy pomocy buzzera dźwięków o różnych tonach. Domyślnie, jeśli ta opcja jest wyłączona, buzzer działa tylko na jednej częstotliwości (czyli może wydawać tylko jeden dźwięk, nie da się wtedy odgrywać melodii).

UWAGA: Włączenie tej funkcji wymaga użycia dodatkowej pamięci, więc jest niezalecane przy kompilacjach dla płyt z małą pamięcią.

3.2.13      Programowy PWM wentylatorów sterowanych

#define FAN_SOFT_PWM
#define SOFT_PWM_SCALE 0

Pierwsza opcja pozwala na włączenie programowego sterowania PWM wentylatorów, co pozwala na obniżenie częstotliwości PWM przy regulacji obrotów. Druga opcja pozwala na zwiększenie częstotliwości PWM (dozwolone wartości: 0,1,2,3,4,5,6,7 w efekcie dają mnożnik częstotliwości kolejno 1,2,4,8,16,32,64,128). Zastosowanie tej funkcji pozwala na zredukowanie "piszczenia" wentylatora chłodzącego wydruk gdy nie działa on na pełnych obrotach, problem ten dość często występuje przy tanich chińskich turbinkach.

  • Kocham To! 1
  • Dzięki! 1

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

4          Uruchomienie testowe

Po dostosowaniu pliku konfiguracji podstawowej i przed przejściem do konfiguracji zaawansowanej dobrym pomysłem jest wstępne skompilowanie i wgranie firmware w celu weryfikacji poprawności wprowadzonych ustawień. Zalecam sprawdzanie wszystkiego po kolei, w takiej kolejności w jakiej zostały opisane kolejne kroki. Podstawową weryfikację można przeprowadzić bez podłączania drukarki do komputera (zakładając, że drukarka jest wyposażona w kontroler LCD), jedynym krokiem do którego należy podłączyć drukarkę do komputera (lub innego hosta) jest dobór parametrów regulatora PID.

Termistory i grzałki

Weryfikacja poprawności działania termistorów jest bardzo prosta – po włączeniu drukarki temperatury wskazywane na wszystkich termistorach powinny być zbliżone do temperatury otoczenia, jeżeli tak nie jest, to prawdopodobnie typ danego termistora jest źle zdefiniowany w firmware. Jeżeli z kolei odchyłki temperatur są bardzo duże, np. pokazywana jest temperatura rzędu -14 lub 300 stopni, to najczęściej oznacza to, że termistor jest źle podpięty (przerwany przewód lub zwarcie), w takim wypadku zwykle wyskakuje na ekranie błąd ERR: MINTEMP lub ERR: MAXTEMP. (UWAGA: ta procedura nie ma na celu sprawdzenia precyzji wskazywanej temperatury, ma jedynie pomóc w ocenie zgrubnej poprawności wskazań temperatury)

Problem
Odchyłki temperatury rzędu kilku - kilkunastu stopni względem temperatury otoczenia lub temperatury wskazywanej przez inny termistor
Możliwe rozwiązanie
Poprawne zdefiniowanie typu termistora (2.3.1)
Problem
Bardzo duże odchyłki temperatur
Możliwe rozwiązanie
Sprawdzenie połączenia termistora z płytą główną pod kątem uszkodzeń.

Następnie warto sprawdzić działanie grzałek poprzez ich włączenie i sprawdzenie, czy wskazanie temperatury danej grzałki wzrasta.

Problem
Po włączeniu danej grzałki wzrasta wskazanie temperatury innej grzałki
Możliwe rozwiązanie
Zamiana miejsc podłączenia grzałek lub termistorów (w zależności czy błędny jest tylko odczyt, czy rzeczywiście nagrzewa się inna grzałka niż powinna)
Problem
Grzałka rozgrzewa się natychmiast po podłączeniu zasilania
Możliwe rozwiązanie
Główną przyczyną takiego zachowania jest zwykle uszkodzenie MOSFETu sterującego prądem podawanym na daną grzałkę, w takim wypadku rozwiązaniem jest serwis płyty głównej (wymiana MOSFETu na płycie głównej)

Krańcówki, kierunki ruchu osi, kroki/mm

Sprawdzenie powyższych najlepiej jest zacząć od ręcznego ustawienia osi X i Y na samym środku, a osi Z na takiej wysokości, żeby mieć czas na reakcję w razie wystąpienia ewentualnych problemów. Sprawdzanie polecam zacząć od sprawdzenia kierunku obrotu silników poprzez poruszenie każdym silnikiem z osobna przez menu Motion>Move axis (UWAGA: Ekstruderem można poruszyć dopiero po jego rozgrzaniu).

Problem
Zły kierunek ruchu osi
Możliwe rozwiązanie
Zmiana kierunku ruchu danej osi (2.4.4)

Następnie, warto sprawdzić poprawność ustawienia kroków/mm – przy pomocy zwykłej linijki sprawdzić, czy osie poruszają się mniej więcej o zadaną odległość (UWAGA: ta procedura nie ma na celu dokładnej kalibracji osi, a jedynie zgrubną weryfikację poprawności ustawień).

Problem
Występuje znaczna różnica pomiędzy odległością zadaną a odległością rzeczywiście przebytą przez daną oś.
Możliwe rozwiązanie
-Ponowna kalkulacja kroków/mm z upewnieniem się czy uwzględnione zostały poprawne informacje na temat podziałki mikrokroków, modułu zębów i ilości zębów koła zębatego paska/skoku śruby, oraz rozdzielczości silnika (2.4.3)
-Weryfikacja poprawności konfiguracji mikrokroków silnika (w tym wypadku odległość przebyta będzie 2,4,8,… razy mniejsza lub większa od odległości zadanej)

Kolejnym etapem Jest weryfikacja krańcówek oraz kierunku bazowania. Podczas wykonywania tych czynności powinno się mieć możliwość natychmiastowego wyłączenia drukarki (czyt. trzymać cały czas palec na wyłączniku). Jeżeli jest włączona opcja pozwalająca na bazowanie pojedynczych osi przez menu ekranowe, dobrym pomysłem jest skorzystanie z niej. Test polega na kolejnym wykonaniu bazowania każdej z osi, pierwszą rzeczą na którą należy zwrócić uwagę jest kierunek – jeśli nie jest poprawny, należy jak najszybciej wyłączyć drukarkę aby zapobiec ewentualnym uszkodzeniom. Jeżeli kierunek bazowania jest poprawny, dobrym pomysłem jest próba ręcznego uruchomienia krańcówki zanim wózek danej osi do niej dojedzie – jeżeli oś przestanie się poruszać w momencie naciśnięcia krańcówki to wszystko jest w porządku, natomiast jeśli tak się nie stanie – należy jak najszybciej wyłączyć zasilanie.

Problem
Oś się nie porusza po rozpoczęciu bazowania, lub porusza się tylko na niewielką odległość.
Możliwe rozwiązanie
-Poprawne zdefiniowanie logiki krańcówki (2.4.1), przed dokonaniem zmian w firmware można spróbować wykonać procedurę bazowania z ręcznie wciśnięta krańcówką – jeżeli oś zacznie poruszać się normalnie, to właśnie w logice krańcówek leży problem.
-Sprawdzenie połączenia krańcówki z płytą główną, w przypadku krańcówek typu NC niepoprawne połączenie zwykle skutkuje odczytem stanu krańcówki takim, jakby tam była ciągle wciśnięta.
-W płytach ze zintegrowanym obwodem do Sensorless Homing (na przykład SKR V1.3, SKR V1.4) obwód służący do podpięcia wyjścia z wyjścia DIAG ze stepsticka do złącza krańcówki powinien być rozłączony (np. poprzez wyjęcie zworki – SKR V1.3, lub poprzez odcięcie odpowiedniej nóżki od stepsticka – SKR PRO V1.1)
Problem
Całkowity brak reakcji  na wciskanie krańcówki.
Możliwe rozwiązanie
-Sprawdzenie połączenia krańcówki z płytą główną
-Rozłączenie obwodu Sensorless Homing
-Poprawne podpięcie krańcówek (sytuacja może wystąpić gdy np. krańcówka X będzie zamieniona z Y)

Strojenie parametrów regulatora PID

Przed przejściem do dalszych etapów konfiguracji dobrym pomysłem jest przeprowadzenie procedury automatycznego doboru parametrów regulatora PID (nie jest to konieczne w przypadku korzystania z przykładowych plików konfiguracyjnych przy drukarce z niezmodyfikowaną głowicą/stołem grzewczym). W celu przeprowadzenia procedury należy podłączyć drukarkę do komputera (lub innego hosta, np. RPi z OctoPrintem), wysłać odpowiedni gcode i zaczekać na otrzymanie wyników. Strojenie parametrów PID należy wykonywać dla temperatur, z jakimi zamierzamy drukować najczęściej (wyniki będą się różniły w zależności od zadanej temperatury). Dodatkowo, strojenie parametrów PID głowicy należy przeprowadzać z filamentem załadowanym do głowicy.

Gcode uruchamiający procedurę doboru parametrów PID (xx to odpowiednie wartości):
M303 Cxx Exx Sxx
C - ilość powtórzeń (zwykle im więcej tym lepiej, dobrze jest ustawić co najmniej 8 )
E - numer grzałki (-1 dla stołu, 0 dla pierwszej głowicy)
S - temperatura zadana

Przykładowe gcode do doboru parametrów dla temperatur druku typowych dla PLA (205 stopni dla głowicy, 60 stopni dla stołu):
Głowica:
M303 C10 E0 S205
Stół:
M303 C8 E-1 S60

Po zakończeniu procedury w terminalu pojawią się dobrane wartości PID, należy je wprowadzić do pliku konfiguracyjnego (2.3.3 PID hotendu/stołu)

  • Kocham To! 1
  • Dzięki! 1

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Witam Serdecznie

Poszukuję informacji jak zapisać tak zmienionego Marlina 2.0 , w plik który mogę wgrać na płytę.

Korzystam z Visual Studio Code (dla mnie nowość) moje  próby zapisu jako plik .bin  nie przynoszą efektu.

Dopiero zaczynam moją przygodę w Marlinie.

Do tej pory korzystałem z gotowca do drukarek 3D:

- replicatorg-0040r34-Sailfish do którego ingerencję przeprowadzałem  z poziomu Simplify3D -głównie kroki silników-wartości wymiarów XYZ- itp. drobnicy.

Ale spaliłem  płytę. 

Program konfigurowałem pod płytę MKS_GEN_L v1.0, sterowniki TCM2208 oraz panel RepRapDiscount Full Graphic Smart Controller

Pozdrawiam 

Borsuk

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Cześć,
Ogólnie to sprawa wygląda tak: w pierwszej kolejności musisz sobie zainstalować dodatek PlatformIO IDE do VSCode (w miejscu koła zębatego pokaże się zielona ikona "Install" i trzeba ją kliknąć, ja mam już zainstalowany)
obraz.png
Następnie, jak już wszystko się zainstaluje, na pasku po lewej będziesz miał ikonę z ufoludkiem, wchodzisz w nią, a następnie w PIO Home>Open
obraz.png

 

Pokaże ci się strona startowa Platformio, klikasz "Open project"


obraz.png

 

wyszukujesz folder z Marlinem i klikasz "Open" będąc w folderze, w którym znajduje się plik platformio.ini

obraz.png

Potem przechodzisz do przeglądarki plików ("Explorer" na pasku po lewej), będziesz tam widział otwartego Marlina i wszystkie pliki, na początku otwierasz plik platformio.ini i ustawiasz w nim poprawny kontroler pod pozycją default_envs (wszystkie kontrolery są wymienione w pliku, dla MKS GEN L to będzie mega2560)

obraz.png

Jak będziesz już miał poprawnie ustawiony kontroler w platformio.ini i skonfigurowane pliki firmware, to w dolnej lewej części okna na niebieskim pasku jest zestaw ikon, "fajka" służy do samej kompilacji firmware, natomiast "strzałka" do kompilacji i wgrywania, jeśli masz na komputerze poprawnie zainstalowane sterowniki do swojej płyty, to program po podłączeniu płyty do komputera powinien sobie ją sam znaleźć (UWAGA: to dotyczy tylko kontrolerów 8-bitowych, jak na przykład właśnie w MKS GEN L, przy kontrolerach 32 bit polecam używać tylko opcji kompilacji, a skompilowany plik firmware.bin przenosić ręcznie z folderu .pio/build/[nazwa kontrolera] na kartę pamięci)

obraz.png

 

  • Kocham To! 1

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Wielkie dzięki za pomoc 

Mój problem, jak podejrzewam polega na innej wersji Visual Studio, ponieważ wygląda tak:

image.thumb.png.46df4f07176f226d98d6087dad641b60.png

 

Chodzi mi o to że nie ma w dolnym prawym rogu symbolów które wskazujesz. 

Borsuk

 

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
8 godzin temu, Borsuk napisał:

Wielkie dzięki za pomoc 

Mój problem, jak podejrzewam polega na innej wersji Visual Studio, ponieważ wygląda tak:

image.thumb.png.46df4f07176f226d98d6087dad641b60.png

 

Chodzi mi o to że nie ma w dolnym prawym rogu symbolów które wskazujesz. 

Borsuk

 

 

Twój problem polega na niezainstalowaniu dodatku do visual studio. 

 

image.png

 

Kliknij tutaj i postępuj ze screenami wyżej. 😉

  • Dzięki! 1

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.

Gość
Dodaj odpowiedź do tematu...

×   Wklejono zawartość z formatowaniem.   Usuń formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.


  • Podobna zawartość

    • Przez Ave666
      Witajcie,
       
      Udało mi się stworzyć czujnik autopoziomowania do drukarki Ender3. Sam czujnik był wzorowany na istniejącym już czujniku do Anet A8 również mojego autorstwa.
      Następujący film prezentuje jak czujnik zamontować oraz jak wgrać oprogramowanie do odblokowanej płyty Ender3 wspierające czujnik.
      W opisie filmu jest również link do pobrania oprogramowania oraz do zakupienia czujnika.
      Zapraszam do oglądania 🙂
       
       
    • Przez Ave666
      Witajcie, w tym filmie pokażę jak skonfigurować Marlin 2.0 dla płyty SKR 1.3
       
       
      Zapraszam do oglądania, subskrybowania i komentowania 🙂
    • Przez areckifx
      Jako że Marlin w wersji 2.0 (i nowsze) w wersji Stable, różni się od wersji bugfix, to wielu użytkowników ma problem w jego skompilowaniu pod płytę SKR PRO.
      Mimo poprawnego skonfigurowania (poradników jest mnóstwo w internecie) tuż na początku Visual Studio wyrzuca błąd i nie da się skompilować:
      Błąd tkwi w pliku platformio ini

       
      W oryginale z wersji 2.0.1 wygląda to tak:
       
      # # Bigtreetech SKR Pro (STM32F407ZGT6 ARM Cortex-M4) # [env:BIGTREE_SKR_PRO] platform          = [email protected]>=5.7.0 framework         = arduino platform_packages = [email protected]>=3.10700.191028 board             = BigTree_SKR_Pro extra_scripts     = pre:buildroot/share/PlatformIO/scripts/generic_create_variant.py build_flags       = ${common.build_flags}   -DUSBCON -DUSBD_USE_CDC -DUSBD_VID=0x0483 -DUSB_PRODUCT=\"STM32F407ZG\"   -DTARGET_STM32F4 -DSTM32F407_5ZX -DVECT_TAB_OFFSET=0x8000   -DHAVE_HWSERIAL6   -IMarlin/src/HAL/HAL_STM32 lib_deps          =   U8glib-HAL=https://github.com/MarlinFirmware/U8glib-HAL/archive/bugfix.zip   LiquidCrystal   [email protected]>=0.5.2,<1.0.0   Adafruit NeoPixel   LiquidTWI2=https://github.com/lincomatic/LiquidTWI2/archive/master.zip   Arduino-L6470=https://github.com/ameyer/Arduino-L6470/archive/dev.zip lib_ignore        = SoftwareSerial, SoftwareSerialM src_filter        = ${common.default_src_filter} +<src/HAL/HAL_STM32> monitor_speed     = 250000  
      W wierszu:
      platform_packages = [email protected]>=3.10700.191028 usuwamy dwa znaki
      >= czyli ma być:
      platform_packages = [email protected]  
      Po tym zabiegu marlin normalnie się kompiluje.
  • Ostatnio przeglądający   0 użytkowników

    Brak zarejestrowanych użytkowników przeglądających tę stronę.

×
×
  • Dodaj nową pozycję...