Konfiguracja Firmware Marlin pt.2

Konfiguracja Drukarki 3D – Marlin Firmware – część 2.

Poniżej druga część konfiguracji Marlin Firmware. Są to najważniejsze ustawienia które pozwolą uruchomić drukarkę 3D. Po otworzeniu w środowisku Arduino pliku configuration.h naszym oczom ukazuje się spora ilość opcji pozwalających dostosować oprogramowanie do własnych potrzeb.

 

#define DISABLE_X false
#define DISABLE_Y false
#define DISABLE_Z true
#define DISABLE_E false // For all extruders

To ustawienie pozwala na wyłączenie prądu silników gdy są nieaktywne. Opcja przydatna dla osi Z pod warunkiem że nie jest ona wykonana z zastosowaniem śrub kulowych. Pręty gwintowane i śruby trapezowe utrzymają oś na wysokości poprzez większe tarcie. Śruby kulowe jednak mają tak mały opór że cała oś Z może opaść grawitacyjnie jeśli silniki zostaną wyłączone.

 

const bool X_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop.

Większość krańcówek pozwala na podłączenie ich w schemacie NO (Normal Open) lub NC (Normal Closed). Powyższym parametrem możemy sterować logiką krańcówek bez konieczności zmiany połączeń.

 

#define INVERT_X_DIR false

Myślę, że jasna sprawa, parametr do zmiany kierunku obrotów silnika.

 

#define X_HOME_DIR -1

Tym ustawieniem możemy decydować o tym czy bazowanie ma być w kierunku minimalnego czy maksymalnego wysunięcia karetki/stołu.

 

#define min_software_endstops true
#define max_software_endstops true

Jeżeli nie posiadamy dwóch krańcówek na każdą oś, to ustawienie należy pozostawić włączone. Oprogramowanie nie pozwoli na ruch przekraczający zakres osi wskazany w firmware.

 

#define X_MAX_POS 220
#define X_MIN_POS 0
#define Y_MAX_POS 260
#define Y_MIN_POS 0
#define Z_MAX_POS 190
#define Z_MIN_POS 0

A zakres ten dla każdej z osi ustawiamy powyższymi parametrami.

 

#define NUM_AXIS 4 // The axis order in all axis related arrays is X, Y, Z, E
#define HOMING_FEEDRATE {50*60, 50*60, 4*60, 0} // set the homing speeds (mm/min)

Teraz przechodzimy dalej do ustawień ruchu urządzenia. Pierwszy parametr to oczywiście ilość osi. Drugi to ustawienie prędkości bazowania urządzenia. Wyrażony w tym wypadku w mm/min.

 

#define DEFAULT_AXIS_STEPS_PER_UNIT {80,80,3200/1.25,96.96}
#define DEFAULT_MAX_FEEDRATE {1200, 1200, 4, 100} // (mm/sec)
#define DEFAULT_MAX_ACCELERATION {2000,2000,20,3000}

W te parametry zdarzy się pewnie zaglądnąć więcej niż jeden raz. Przede wszystkim przy okazji kalibracji ekstrudera.
Pierwsze ustawienie to ilość kroków na mm. Jak dokładnie je obliczyć odsyłam do osobnego wpisu.
Drugie ustawienie to maksymalny feedrate czyli prędkość ruchów urządzenia. Parametry te można dobrać doświadczalnie, po prostu obserwując do jakich prędkości maksymalnych drukarka 3d nie gubi kroków.
Trzecie ustawienie to maksymalna akceleracja, czyli przyspieszenie. Bardzo ważne ustawienie, w przypadku drukarek 3D nawet ważniejsze niż sama prędkość maksymalna.

 

#define DEFAULT_ACCELERATION 1200
#define DEFAULT_RETRACT_ACCELERATION 1200

Standardowa akceleracja czyli taka która będzie ustawiona przy każdorazowym włączeniu drukarki 3D.
Przy małym przyspieszeniu drukarka wykonując krótkie ruchy nawet nie zdąży się rozpędzić do docelowej prędkości a już zmieni kierunek i będzie rozpędzać się od nowa. Zatem akceleracja może nieraz znacząco przyspieszyć pracę drukarki, ważna jednak jest tu duża sztywność urządzenia. W przypadku wątłych drukarek t.j. Prusa i2 czy i3 z akrylu lub MDF nie należy przesadzać z tą wartością bo może ona pogorszyć jakość wydruku.

Niżej przyspieszenie dla retrakcji. Można popróbować z tym parametrem jeśli drukarka ma problem z ciągnącym się filamentem podczas przejazdów. Generalnie 1200 to wartość wystarczająca dla ekstruderów direct drive.

 

#define PLA_PREHEAT_HOTEND_TEMP 200
#define PLA_PREHEAT_HPB_TEMP 60
#define PLA_PREHEAT_FAN_SPEED 0 // Insert Value between 0 and 255

#define ABS_PREHEAT_HOTEND_TEMP 270
#define ABS_PREHEAT_HPB_TEMP 90
#define ABS_PREHEAT_FAN_SPEED 0 // Insert Value between 0 and 255

Przydatne głównie w wypadku posiadania wyświetlacza. Opcja „rozgrzej PLA” lub „preheat ABS” w menu pozwala na rozgrzanie wstępne stołu i głowicy do podanych wyżej wartości.

 

Oczywiście konfiguracja drukarki 3D opisana tutaj obejmuje jedynie te najważniejsze kwestie. W pliku konfiguracyjnym znajduje się wiele więcej opcji do edycji, jednak skupiłem się na najważniejszych czyli tych które pozwolą uruchomić drukarkę 3D i rozpocząć pracę z gorącym plastikiem 😉

Konfiguracja Firmware Marlin

Konfiguracja Marlin Firmware

Poniżej krótki opis jak powinna przebiegać konfiguracja Marlin Firmware. Są to najważniejsze ustawienia które pozwolą uruchomić drukarkę 3D. Po otworzeniu w środowisku Arduino pliku configuration.h naszym oczom ukazuje się spora ilość opcji pozwalających dostosować oprogramowanie do własnych potrzeb.

 

#define BAUDRATE 250000

Szybkość pracy portu do komunikacji z PC. Nie ma potrzeby ruszać chyba że pojawiają się jakieś problemy w komunikacji sterownik<->PC

 

#define MOTHERBOARD 33

Tutaj wybieramy elektronikę z której korzysta nasza drukarka 3D.

33 to RAMPS. Resztę możliwych sterowników do wyboru można zobaczyć w pliku boards.h

 

#define EXTRUDERS 1

Ustalamy ilość ekstruderów. W przypadku konfigurowania większej ilości ekstruderów należy również zmienić #define MOTHERBOARD na 34.

 

#define POWER_SUPPLY 1

Wybieramy rodzaj zasilacza:

1 – ATX

2 – Xbox 200W

W przypadku zasilaczy przemysłowych LED wybieramy 1. Przy wyborze zasilacza ATX warto pamiętać, że niektóre mogą nie działać prawidłowo bez obciążenia lini 5V lub odpowiednich modyfikacji. Lepiej ten problem opisaliśmy tutaj.

Modyfikacja zasilacza ATX – Printo3D.pl

 

#define TEMP_SENSOR_0 1
#define TEMP_SENSOR_1 0
#define TEMP_SENSOR_2 0
#define TEMP_SENSOR_BED 1

Wybieramy wejścia do których podłączone są termistory. W klasycznym wypadku (ekstruder+heatbed) wybieramy TEMP_SENSOR_0 dla głowicy oraz TEMP_SENSOR_BED dla stołu, stawiając przy nich „1”.

 

#define TEMP_RESIDENCY_TIME 10
#define TEMP_HYSTERESIS 3

Residency_time to czas liczony w sekundach do momentu aż sterownik uzna że temperatura jest ustabilizowana.

Histereza to krótko mówiąc widełki w których musi mieścić się temperatura. Wartość „3” oznacza że dla temp 190 st. C dopuszczalny zakres temperatur to 187-193 st. C.

 

#define HEATER_0_MINTEMP 5
#define HEATER_1_MINTEMP 5
#define HEATER_2_MINTEMP 5
#define BED_MINTEMP 5

Sekcja MINTEMP odpowiada za minimalną temperaturę przy której grzałki zostaną włączone. Jest to ważne ustawienie gdyż w przypadku uszkodzonego połączenia termistor<->sterownik oprogramownie nie pozwoli na dalsze grzanie i odetnie prąd od głowicy i stołu. Nie powinno się jednak podawać tutaj temperatur równych lub większych niż temp pomieszczenia w którym stoi drukarka gdyż wtedy ustawienie to traci swój sens i nie spełni swojej funkcji. 5 st. przy każdym jest odpowiednią wartością gdy drukarka stoi w temp. pokojowej.

 

#define HEATER_0_MAXTEMP 250
#define HEATER_1_MAXTEMP 250
#define HEATER_2_MAXTEMP 250
#define BED_MAXTEMP 120

Maksymalna temperatura której sterownik nie pozwoli przekroczyć.

 

#define MAX_BED_POWER 256

Maksymalny prąd który elektronika podaje na stół grzejny. Zakres od 0 – 255 gdzie 255 to pełna moc.

 

#define PREVENT_DANGEROUS_EXTRUDE
#define PREVENT_LENGTHY_EXTRUDE
#define EXTRUDE_MINTEMP 170
#define EXTRUDE_MAXLENGTH (X_MAX_LENGTH+Y_MAX_LENGTH)

Pierwsza linia zapobiega włączeniu silnika extrudera jeśli głowica nie osiągnie on określonej temperatury.

Druga zapobiega zbyt długiej ekstruzji.

Trzecia to minimalna temperatura po osiągnięciu której można wykonać ruch silnikiem ekstrudera.

Czwarta to parametr dla drugiej linijki – określa maksymalną długość ekstruzji.

 

To tyle w części pierwszej, drugą część konfiguracji drukarki 3D znajdziesz tutaj.

Kalibracja drukarki 3D (firmware Marlin)

Kalibracja drukarki 3D na przykładzie firmware Marlin.

Dokładna kalibracja drukarki 3D jest podstawą uzyskania wydruków dobrej jakości głównie w urządzeniach typu DIY – zrób to sam. O ile urządzenia z wyższych półek cenowych które z reguły są sprzedawane jako gotowe w formie „out of the box” i posiadają własne oprogramowanie lub presety do najpopularniejszych slicerów, o tyle urządzenia do samodzielnego montażu należy skonfigurować i skalibrować we własnym zakresie. Im więcej czasu i uwagi poświęci się temu procesowi tym lepszych efektów można oczekiwać.

 

Kwestia jakości druku 3D jest o tyle ciekawa, że podobne efekty można uzyskać na urządzeniach z różnych zakresów cenowych, z tą jednak różnicą, że nieco droższe drukarki 3D, w granicach 8-13 tyś. złotych kalibruje się stosunkowo szybciej od tanich drukarek 3D, lub w ogóle nie trzeba tego robić. Tanie urządzenia z reguły swoją niską cenę posiadają właśnie z uwagi na to, że montaż i kalibracja drukarki 3D to zadanie dla jej świeżo upieczonego właściciela.

Wszak w naszej ocenie nie jest to zadanie niemożliwe do wykonania, ba, jest nawet stosunkowo proste tyle tylko że może być czasochłonne. Mimo wszystko nie powinno zająć przeciętnemu użytkownikowi dłużej niż kilka godzin, gdzie większość tego czasu można siedzieć popijając kawę obserwując rezultaty.

Poniżej w kilku krokach opiszemy cały proces, oczywiście nie jest to jedyna z metod bo może być ich tyle co użytkowników, jednak wydaje się ona być najłatwiejsza i po nabraniu wprawy można w ten sposób szybko skalibrować każde inne urządzenie.

 

 

1. Kalibracja drukarki 3D – pierwsze kroki

Przede wszystkim aby zacząć musimy posiadać względnie dobrze wykalibrowaną ilość kroków ekstrudera na milimetr wypływającego plastiku. Tutaj warto podeprzeć się innym artykułem z naszej strony:

Ustawienia kroków silnika

Korzystając z ostatniego wzoru obliczamy przybliżoną wartość kroków silnika ekstrudera drukarki 3D:

oraz wpisujemy ją w pliku konfiguracyjnym oprogramowania (na przykładnie Marlin):

 #define DEFAULT_AXIS_STEPS_PER_UNIT {80,80,3200/1.25,100}

gdzie wartości w kolejności oznaczają X, Y, Z, E.

 

 

2. Przygotowanie modelu 3D do wydruku testowego

Posiadając konkretną wartość np. 100 można zacząć przygotowanie pliku .gcode dla drukarki 3D którą będziemy kalibrować. Dobrym wyborem do tego kroku jest program Slic3r. Najlepiej do tego celu w dowolnym programie graficznym wygenerować model sześcianu o bokach ok. 40 mm. Taką kostkę kalibracyjną taką posiadamy także w swoich zasobach do pobrania.

W programie tnącym ustawiamy:

  • wartość wypełnienia na 0%
  • brak górnych warstw (top solid layers w Slic3r)
  • 2 obrysy (perimeteres)
  • wysokość warstwy ok. 0.2 mm

Następnie w zakładce Advanced wybieramy parametr default extrusion width i ustawiamy rozmiar zgodny ze średnicą dyszy w drukarce 3D (np. 0.5 mm). Oznacza to mniej więcej tyle, że szerokość jednej ścieżki powinna mieć 0.5 mm, zaś przy dwóch obrysach (perimeters) ścianka sześcianu powinna mieć grubość 1 mm. W idealnym świecie..

 

 

3. Pierwszy wydruk kalibracyjny

Właściwie nie pozostaje nic innego jak uruchomić plik .gcode na drukarce i czekać na efekty. Nie jest nawet konieczne drukowanie całego elementu, wydruk można przerwać w połowie. Wysokość ścianek powinna być wystarczająca aby wykonać pomiar ich szerokości. Niczym innym jak suwmiarką kilkukrotnie mierzymy ścianki zapisując i uśredniając wartości.

Jeżeli pomiar wykazał przykładowo 1.12 mm oznacza to że ilość podawanego filamentu jest za duża (lub średnica dyszy jest inna niż założona 0.5 mm). Należy wtedy podzielić liczbę kroków na mm wyliczoną w pierwszym kroku przez wynik pomiaru, np:

 100 / 1.12 = 89.25

Wynik wpisujemy w plik konfiguracyjny firmware:

 #define DEFAULT_AXIS_STEPS_PER_UNIT {80,80,3200/1.25,89.25}

i wgrywamy na Arduino. Po tym zabiegu wykonujemy ponowny test drukując raz jeszcze kostkę kalibracyjną i wykonując pomiary. W razie konieczności przeliczamy ponownie ilość kroków / mm powtarzając krok 3.

Jedyne co pozostaje po wykonaniu opisanej kalibracji to dostosować jeszcze parametr default extrusion width, w wielu wypadkach lepsze jakościowo wyniki można uzyskać wpisując tam konkretną wartość większą niż średnica dyszy, np. 0.55 lub 0.56 mm. Ustawienie tego pola na auto (wpisując „0”) daje slic3r’owi „wolną rękę” przy ustawianiu szerokości ścieżki. Niestety nie zawsze się sprawdza, Slic3r (w wersji 1.2.9a) ma tendencję do ustawiania zawyżonych wartości, np. dla dyszy 0.5 obrys automatycznie jest ustawiony na ok. 0.84. Dlatego warto kontrolować ten parametr i obserwować wyniki, można uzyskać naprawdę niezłe rezultaty na urządzeniach za 2000-3000 zł nieraz porównywalne do droższych drukarek 3D.

 

Owocnej kalibracji!