Konfiguracja Firmware Marlin cz. 1

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.

Regulacja vref stepsticków – skrót informacji

Regulacja vref stepsticków

Regulacja vref stepsticków typu A4988, DRV8825, TMC2100, TMC2208, TMC2130, LV8729. Jako że popełniliśmy już niejeden wpis dotyczący regulacji vref sterowników silników krokowych, chcielibyśmy usystematyzować te informacje aby były dostępne w jednym miejscu.

Oczywiście mamy pełną świadomość, że przy obecnym tempie rozwoju technologii druku 3D i elektroniki dane te mogą szybko ulec dezaktualizacji, mimo wszystko zebranie tych informacji z pewnością ułatwi wszystkim szybką diagnozę, regulację sterowników bez przeglądania wielu różnych stron internetowych.

Pozwolimy sobie zatem w tym wpisie na przekazanie tylko i wyłącznie surowych danych dotyczących każdego z tych sterowników, bez dodatkowego opisu „jak to zrobić”. Sami opisywaliśmy cały proces niejednokrotnie, a jest jeszcze wiele innych miejsc gdzie można zasięgnąć wiedzy.

Zatem poniżej przedstawiamy tabelkę z obecnie najpopularniejszymi sterownikami silników krokowych w formie stepsticków. Jeżeli pojawi się coś nowego, lub już się pojawiło, dajcie nam znać, postaramy się zaktualizować ten wpis.

A4988

V-REF = Prąd silnika * 8 * Rs

Przykład dla silnika 1.5A:
V-REF = 1.5 * 8 * 0.1 = 1,2 V

DRV8825

V-REF = Max prąd silnika / 2

Przykład dla silnika 1.5A:
V-REF = 1.5 / 2 = 0,75 V

TMC2100

V-REF = Max prąd silnika

Przykład dla silnika 1.5A:
V-REF = 1.5 V

TMC2208

V-REF = Max prąd silnika

Przykład dla silnika 1.5A:
V-REF = 1.5 V

TMC2130

V-REF = Max prąd silnika

Przykład dla silnika 1.5A:
V-REF = 1.5 V

LV8729

V-REF = Max prąd silnika / 2

Przykład dla silnika 1.5A:
V-REF = 1.5 / 2 = 0,75 V

Mamy nadzieję, że w ten sposób nieco rozjaśnimy sytuację z regulacją napięcia referencyjnego na popularnych w drukarkach 3D sterownikach silników krokowych.

Masz pytania? Napisz do nas 🙂

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!

Kalibracja drukarki 3D na przykładzie 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:

Drukarki 3D Grawires PrintO Wydruk 3D Rzeszów

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!

Konfiguracja drukarki 3D – Firmware Marlin cz. 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 😉

Ustawienia kroków silnika

Ustawienia kroków silnika mają duży wpływ na wydruki 3D więc można sporo zyskać odpowiednio konfigurując drukarkę 3D. Nie jest to trudna sprawa, wystarczy kilka obliczeń i to wszystko. Inaczej sprawa ma się z krokami silnika ekstrudera, ale o tym w innym wpisie.

Aby wpisać odpowiednie ustawienia kroków do firmware należy najpierw wykonać parę obliczeń. Nie jest to skomplikowana sprawa, warto jednak zrobić to poprawnie, w przeciwnym razie wydruki mogą nam wychodzić mniejsze, większe, lub owalne. Ustawienia kroków silnika można skonfigurować w tej linijce (firmware Marlin):

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

Wartości w podanym ustawieniu to odpowiednio: X, Y, Z, E. Teraz opiszę dokładniej jak obliczyć kroki dla poszczególnych osi, tak aby wydruki wychodziły w rzeczywistej skali (1:1) zgodnie z tym co mamy na ekranie komputera.

 

Oś X i Y

Ustawienia kroków silnika dla osi X i Y. Wartość zwykle jest taka sama, chyba że na silniki mamy założone różne zębatki o innej ilości zębów. Obliczamy je ze wzoru:

Obliczanie kroków silników osi X i Y
Obliczanie kroków silników osi X i Y

 

Jeśli mamy silnik o kroku 1.8º to ilość kroków na pełny obrót:  360 / 1.8  = 200.

Jeśli mamy silnik o kroku 0.9º to analogicznie:  360 / 0.9  = 400.

Mikrokrok ustawiamy na sterowniku najczęściej zworkami, najlepiej ustawić 16, silniki pracują wtedy dużo bardziej kulturalnie.

Skok paska zębatego najczęściej używanego w reprapach GT2 to 2mm.

Ilość zębów zębatki: dla zębatek GT2 16 lub 20.

XY = (200 * 16) / (2 * 20) = 3200 / 40 = 80

 

Oś Z

Obliczanie kroków silnika osi Z
Obliczanie kroków silnika osi Z

Ustawienia kroków silnika w osi Z są bardzo podobne, do wzoru należy podstawić skok gwintu śruby Z. W najczęściej używanych prętach gwintowanych M8 skok wynosi 1.25. Reszta analogicznie do osi X i Y.

Z = (200 * 16) / 1.25 = 3200 / 1.25

Ważne! W firmware Malin podstawiamy wartość w postaci “3200 / 1.25”!

Nie rozwiązujemy tego równania do końca, Marlin na chwilę obecną nie przyjmuje innej formy zapisu kroków osi Z.

 

 

Oś E – Ekstruder

Obliczanie kroków silnika osi E
Obliczanie kroków silnika osi E

Ustawienia kroków silnika ekstrudera sprawiają najwięcej problemów. Jednak po kilku próbach drukarka powinna być odpowiednio skalibrowana. Kilka uwag:

Przełożenie na zębatkach – Obliczamy stosunek ilości zębów dużego koła do małego (np. 47/9). Jeżeli mamy ekstruder typu “direct drive” podstawiamy 1.

Reszta jest właściwie jasna.

E = (200 * 16 * 1) / (3.14 * 9,87) = 3200 / 30,99 = 103,25 (ekstruder direct drive)

E = (200 * 16 * 47/9) / (3.14 * 8,1) = 16710 / 25,43 = 657,09 (ekstruder z przekładnią)

 

Pamiętajcie o kolejności wykonywania działań! 😉

 

Kalibracja Ekstrudera PID

Kalibracja ekstrudera, PID głowicy

We wpisie tym zostanie opisana kalibracja regulatora PID głowicy drukarki 3D z użyciem komend G-CODE.

Kalibracja ekstrudera to prosty zabieg który pozwoli dostosować regulator proporcjonalno-całkująco-różniczkujący w skrócie PID. Pozwala on na utrzymanie temperatury głowicy drukarki 3D na stałym poziomie, regulując jej wahania. Dla osób bardziej dociekliwych więcej o regulatorach PID można przeczytać np. tutaj.

Do czego przydaje się kalibracja głowicy drukującej a dokładniej regulatora PID? Ano po złożeniu drukarki 3D (lub kupnie gotowego urządzenia) właściwie i bez tego można otrzymać całkiem zadowalające wydruki. Jednak większość drukarzy z pewnością po jakimś czasie będzie czuło niedosyt i zacznie poszukiwanie rozwiązań poprawiających jakość wydruku. Wbrew pozorom jednostajna temperatura ekstrudera a dokładniej głowicy drukarki 3D ma całkiem spory wpływ na wydruk.

Jest to sprawa związana z gęstością materiału jakim jest filament i różnicą lepkości w różnych temperaturach. Przy niższej temperaturze lepkość filamentu może być odrobinę większa, przy wyższej zaś filament do drukarki 3D może być nieco bardziej płynny. Przy warstwach rzędu 0.1-0.2 mm i niewielkich głowicach np. 0.3 może to mieć jakiś wpływ. Badań nie przeprowadzaliśmy, ale skoro mamy jakiś regulator, to warto go “podregulować”.

Zatem do pracy.

Są dwie metody regulacji, obie w miarę proste. W pierwszej z nich wartości PID podajemy bezpośrednio G-code’m do firmware’u, w drugiej przepisujemy te dane po prostu do pliku configuration.h w środowisku Arduino. Aby kalibracja ekstrudera została przeprowadzona należycie najpierw musimy te wartości znaleźć.

Krok 1. Na zimnej głowicy w dowolnym oprogramowaniu (np. Pronterface – Printrun download) musimy uruchomić tzw. Autotuning PID za pomocą komendy M303.

Używamy jej w ten sposób: M303 S220 C6

gdzie: S230 – oznacza temperaturę w ºC

oraz: C6 – oznacza ilość powtórzeń cyklu

 

Jeżeli drukujemy najczęściej jednym typem materiału, warto rozważyć autokalibrację PID dla temperatur zbliżonych do temp. roboczych konkretnego filamentu. Dla PLA lepiej ustawić bliższą temu filamentowi temperaturę w granicach 200-220 ºC, dla ABS np. ok. 240-260 ºC.

Po 6 cyklu (może ich być mniej lecz dokładność raczej spadnie) w oknie programu pojawi się wyliczona wartość PID która zostanie oznaczona Kp, Ki, Kd.

I teraz 2 możliwości:

Krok 2a. Wpisujemy wartości Kp, Ki, Kd komendą M301.

Komendę M301 stosujemy w następujący sposób:

M301 P1 I2 D3

gdzie:

1 – Kp, 2 – Ki, 3 – Kd.

Czyli M301 P56.78 I1.34 D72.12

Krok 2b. Lub wpisujemy Kp, Ki, Kd bezpośrednio w pliku konfiguracyjnym (configuration.h)

Odszukujemy linijki:

#define DEFAULT_Kp 18.89
#define DEFAULT_Ki 1.15
#define DEFAULT_Kd 77.53

i podstawiamy wyliczone wartości.

Krok 3. Zatwierdzamy konfigurację.

W przypadku zapisywania konfiguracji G-Codem zapamiętujemy ustawienia za pomocą komendy M500. Twój firmware musi mieć włączoną obsługę EEPROM. Można jeszcze sprawdzić czy się wszystko zapamiętało za pomocą komendy M503.

Wybierając drugą metodę, po edycji pliku konfiguracyjnego wgrywamy po prostu nowe ustawienia do sterownika.

Drukarki 3D z serii Printo H3 proces autokalibracji PID mają mocno uproszczony. Wystarczy uruchomić funkcję z menu drukarki i poczekać na wynik. Całość zapisuje się automatycznie w pamięci EEPROM i po 2 minutach sprawa jest załatwiona.

I to by było wszystko w tym temacie. Jak widać kalibracja ekstrudera i regulatora PID nie jest aż taka trudna. Warto jeszcze pamiętać, że wszelkie zmiany i zabiegi przy głowicy takie jak owinięcie taśmą kaptonową, wymiany termistora czy grzałki, zamontowanie dodatkowego chłodzenia i tym podobne mogące mieć wpływ na temperaturę należy zakończyć ponowną regulacją.