wtorek, 29 kwietnia 2014

Trochę więcej o G-code

Jak pisałem kilka postów temu, wszystkie (lub prawie wszystkie) niskobudżetowe drukarki 3D sterowane są za pomocą G-code'u - listy testowych poleceń, w podstawowy sposób mówiących drukarce co ma robić żeby wydrukować dany model. Dla przykładu, początek instrukcji do drukowania królika wygląda tak:


Oczywiście nikt ręcznie nie pisałby całego G-code'u (instrukcje dla królika to plik tekstowy objętości prawie 4 MB) jednak podstawowe polecenia warto znać - w dalszej części tego posta napiszę dlaczego.

Reanimacja przerwanych wydruków

Kilka razy, po części z mojej winy zdarzyło mi się, że drukarka po godzinie pracy przerwała jakiś wydruk (zawiesiła się lub zrestartowała). Nie mogąc w prosty sposób wznowić drukowania i nie chcąc stracić połowy gotowego obiektu, wrzuciłem do edytora tekstowego drukowany G-code (zapisany na karcie SD drukarki) po czym usunąłem z niego wydrukowane już warstwy. Na szczęście na panelu LCD urządzenie wyświetla stan pracy (w tym położenie ekstrudera w osi Z) więc łatwo było znaleźć miejsce w G-codzie, w którym zaczynały się kolejne, jeszcze nie wydrukowane fragmenty.

Przy takiej reanimacji wydruku warto dopilnować, żeby drukarka nie wycofała ekstrudera do pozycji zerowej (polecenie auto home / G28). Grozi to rozjechaniem się wcześniej wydrukowanej części oraz kolejnych warstw - co nawet przy różnicy dziesiątej części milimetra będzie widoczne. Jeśli w drukarce był włączony podgrzewany stół, dobrze jest się upewnić czy w międzyczasie nie ostygł, co groziłoby odklejeniem materiału w trakcie druku brakującego fragmentu.

Fragment szpuli po nieudanej reanimacji

Zmiana filamentu

Parę dni temu po tym, jak po aktualizacji Ubuntu przestało mi działać sterowanie drukarką z komputera, postanowiłem usprawnić sobie proces poziomowania stołu oraz wymiany filamentu. Napisałem do tego 2 proste G-codowe skrypty. Pierwszy z nich wygląda tak:

M104 S190 ; ustaw temp. dyszy na 190 st. i kontunuuj
G28 ; ustaw ekstruder w pozycji zerowej
G1 Z20 F5000 ; podnies ekstruder o 20 mm
G1 X100 Y100 F15000 ; idz na srodek stolu (100:100) z predkoscia 15000 mm/min
M109 S190 ; ustaw temp. dyszy na 190 st. i czekaj az zostanie osiagnieta
G1 E-25 F100 ; wycofaj 25 mm filamentu z predkoscia 100 mm/min
M1 S60 ; poczekaj 60 sek
G1 E10 F50 ; wycisnij 25+10 mm filamentu
M1 S10 ; poczekaj 10 sek
G28 ustaw ekstruder w pozycji zerowej

https://github.com/Krzysztof-Matusiewicz/3d-printing/blob/master/PrintersPrograms/filchange.gcode

Składnia G-code'u jest trywialna - każda linia składa się z kodu polecenia (M104, G28, G1 itp) po którym następują jego parametry (współrzędne, wartość temperatury, czasu itp). Zapisanie takiego kodu w pliku na karcie SD i odpalenie go na drukarce (lub ew. przesłanie z komputera) powoduje wykonanie powyższej sekwencji. Pierwsza przerwa (60 sek) jest przeznaczona na wyjęcie starego filamentu, zmianę szpuli oraz włożenie nowego filamentu do ekstrudera. Druga - 10 sek - na usunięcie nadmiaru materiału wyciśniętego z dyszy.



Poziomowanie stołu

Poziomowanie stołu względem dyszy jest podstawową czynnością kalibracyjną drukarki i warto je wykonywać co jakiś czas - w zależności od modelu drukarki (te o mniej sztywnej konstrukcji będą wymagały tego częściej). Chodzi o to, żeby głowica w 4 rogach stołu w najniższej pozycji (Z=0) lekko go dotykała - co wymaga regulacji nachylenia stołu za pomocą 4 śrub ustawionych w rogach:


Ponieważ pojedyncza warstwa wydruku ma zwykle 0.1 - 0.3 mm, niedokładność ustawienia stołu względem dyszy już o 0.05 mm może mieć negatywny wpływ na jakość wydruku (przede wszystkim na odklejanie lub rozmazywanie pierwszej warstwy).

Jednym ze znanych sposobów na poziomowanie stołu jest wykorzystanie kartki papieru - w poszczególnych rogach obszaru roboczego należy ją wsunąć pod dyszę i odpowiednio wyregulować najbliższą śrubę. Odległość między głowicą a stołem powinna być taka, żeby wsunięciu papieru towarzyszył wyczuwalny opór (jednak kartka nie powinna ulec przedarciu):


Ponieważ ustawianie głowicy z panelu drukarki jest dość uciążliwe, poniższy G-code pozwala to zautomatyzować:

M140 S60 ustaw temp. stołu na 60 st. i kontunuuj
M104 S190 ustaw temp. dyszy na 190 st. i kontunuuj
G28 ustaw ekstruder w pozycji zerowej
G1 Z5 F5000 podnies ekstruder o 5 mm
M109 S190 ustaw temp. dyszy na 190 st. i czekaj az zostanie osiagnieta
G1 E-3 F50 wycofaj 3 mm filamentu z predkoscia 50 mm/min
M190 S60 ustaw temp. stołu na 60 st. i czekaj az zostanie osiagnieta

G28  ;  ustaw ekstruder w pozycji zerowej
M1 S30 poczekaj 30 sek

G1 Z5 F5000 podnies ekstruder o 5 mm
G1 X200 Y200 F15000 ; przesuń ekstruder do pozycji [200:200]
G1 Z0 F5000 ; opuść ekstruder
M1 S30 poczekaj 30 sek

G1 Z5 F5000
G1 X200 Y0 F15000
G1 Z0 F5000
M1 S30

G1 Z5 F5000
G1 X0 Y0 F15000
G1 Z0 F5000
M1 S30

G1 Z5 F5000
G1 X0 Y200 F15000
G1 E15 F50 wycisnij 3+15 mm filamentu
M1 S10 poczekaj 10 sek
G1 Z0 F5000 opuść ekstruder

https://github.com/Krzysztof-Matusiewicz/3d-printing/blob/master/PrintersPrograms/calibration.gcode


Zmiana koloru w trakcie wydruku

Zmiana filamentu w trakcie pracy drukarki jest jednym ze sposobów na druk w kilku kolorach - tak jak w przypadku tabliczki z numerem mieszkania którą wykonałem kilkanaście dni temu. Można wykorzystać opcję pauzy (wybierając ją z panelu drukarki lub z komputera, jeśli urządzenie jest do niego podłączone) lub, co jest bezpieczniejszym rozwiązaniem, umieścić odpowiednie polecenia wstrzymujące wydruk w G-codzie wykonywanego modelu:

; ... wlasciwy G-code do momentu zmiany koloru
G1 Z50 F5000 ; podnies ekstruder do Y=50 mm
G1 E-25 F100 ; wycofaj 25 mm filamentu z predkoscia 100 mm/min
M1 S60 ; poczekaj 60 sek
G1 E20 F50 ; wycisnij 25+20 mm filamentu z predkoscia 50mm/min
M1 S10 ; poczekaj 10 sek
; reszta wlasciwego G-code'u ...

Współrzędną Y, do której zostanie podniesiona dysza, trzeba dobrać odpowiednio do miejsca w którym zmieniany jest filament. Podniesienie jej jest o tyle istotne, że rozgrzana głowica zatrzymana nawet na chwilę w miejscu gdzie skończyła drukować spowoduje stopienie się materiału w jej najbliższej okolicy. Należy też zwrócić uwagę na linie "G1 E-25 F100" oraz "G1 E20 F100" - wartość przy E oznacza ilość filamentu która przeszła przez ekstruder od początku wydruku, lub ew. od zresetowania położenia silnika poleceniem "G92 E0". Powyższy kod najlepiej umieścić tuż przed zmianą warstwy, za komendą "G92 E0". I przede wszystkim warto wiedzieć co się robi - w najgorszym wypadku zły kod sterujący może nawet uszkodzić drukarkę.

Najczęściej używane polecenia

Lista najczęściej używanych kodów została przeniesiona na osobną stronę.

Brak komentarzy:

Prześlij komentarz